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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.js +1061 -843
  2. package/dist/index.mjs +748 -530
  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,6 +8943,29 @@ import {
8943
8943
  FiSun,
8944
8944
  FiChevronDown as FiChevronDown4
8945
8945
  } from "react-icons/fi";
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
8946
8969
  function InSceneCreationForm({
8947
8970
  onSave,
8948
8971
  onCancel,
@@ -8963,7 +8986,8 @@ function InSceneCreationForm({
8963
8986
  onUploadFile,
8964
8987
  availableDatasets = [],
8965
8988
  sourceNodeDatasetId,
8966
- viewType
8989
+ viewType,
8990
+ create_google_doc_action
8967
8991
  }) {
8968
8992
  var _a;
8969
8993
  const [name, setName] = useState14("");
@@ -8983,6 +9007,7 @@ function InSceneCreationForm({
8983
9007
  sourceNodeDatasetId || ""
8984
9008
  );
8985
9009
  const [isDatasetDropdownOpen, setIsDatasetDropdownOpen] = useState14(false);
9010
+ const [isLoadingDocs, setIsLoadingDocs] = useState14(false);
8986
9011
  const datasetDropdownRef = useRef10(null);
8987
9012
  useEffect13(() => {
8988
9013
  if (sourceNodeDatasetId) setTargetDatasetId(sourceNodeDatasetId);
@@ -9121,6 +9146,36 @@ function InSceneCreationForm({
9121
9146
  setSelectedImageUrl(url);
9122
9147
  onImageChange == null ? void 0 : onImageChange(true, url);
9123
9148
  };
9149
+ const handleCreateGoogleDoc = async () => {
9150
+ if (!name.trim()) {
9151
+ alert("Por favor, insira um nome para o node antes de criar o documento.");
9152
+ return;
9153
+ }
9154
+ if (!create_google_doc_action) return;
9155
+ try {
9156
+ setIsLoadingDocs(true);
9157
+ const res = await create_google_doc_action(name);
9158
+ if (res.success) {
9159
+ const newProp = {
9160
+ id: uuidv45(),
9161
+ key: "Google Docs",
9162
+ type: "links",
9163
+ value: [{ id: uuidv45(), name: "Abrir Documento", value: res.link }]
9164
+ };
9165
+ setCustomProps((prev) => [...prev, newProp]);
9166
+ if (res.link) {
9167
+ window.open(res.link, "_blank");
9168
+ }
9169
+ } else {
9170
+ alert("Erro ao criar documento: " + res.error);
9171
+ }
9172
+ } catch (error) {
9173
+ console.error(error);
9174
+ alert("Erro ao processar cria\xE7\xE3o do documento.");
9175
+ } finally {
9176
+ setIsLoadingDocs(false);
9177
+ }
9178
+ };
9124
9179
  const handleSubmit = (e) => {
9125
9180
  e.preventDefault();
9126
9181
  if (!name.trim() || types.length === 0) {
@@ -9163,7 +9218,7 @@ function InSceneCreationForm({
9163
9218
  }
9164
9219
  };
9165
9220
  const selectedDatasetName = ((_a = availableDatasets.find((ds) => ds.id === targetDatasetId)) == null ? void 0 : _a.name) || "Selecione um Dataset...";
9166
- return /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement(
9221
+ return /* @__PURE__ */ React14.createElement(React14.Fragment, null, /* @__PURE__ */ React14.createElement(
9167
9222
  "div",
9168
9223
  {
9169
9224
  ref: refEl,
@@ -9177,25 +9232,25 @@ function InSceneCreationForm({
9177
9232
  onContextMenu: swallow,
9178
9233
  onDoubleClick: swallow
9179
9234
  },
9180
- /* @__PURE__ */ React13.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
9181
- /* @__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")),
9182
- /* @__PURE__ */ React13.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React13.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React13.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Tipo(s) do Node"), /* @__PURE__ */ React13.createElement("div", { className: "relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all" }, types.map((t, index) => /* @__PURE__ */ React13.createElement(
9235
+ /* @__PURE__ */ React14.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
9236
+ /* @__PURE__ */ React14.createElement("div", { className: "px-6 pt-5 pb-3" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React14.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-indigo-400/80 shadow-[0_0_18px_2px_rgba(99,102,241,0.55)]" }), /* @__PURE__ */ React14.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Criar & Conectar")), /* @__PURE__ */ React14.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Novo Node")),
9237
+ /* @__PURE__ */ React14.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React14.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Tipo(s) do Node"), /* @__PURE__ */ React14.createElement("div", { className: "relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all" }, types.map((t, index) => /* @__PURE__ */ React14.createElement(
9183
9238
  "span",
9184
9239
  {
9185
9240
  key: index,
9186
9241
  className: "flex items-center gap-1 bg-indigo-500/30 text-indigo-100 px-1.5 py-0.5 rounded-md text-xs font-medium border border-indigo-500/20"
9187
9242
  },
9188
9243
  t,
9189
- /* @__PURE__ */ React13.createElement(
9244
+ /* @__PURE__ */ React14.createElement(
9190
9245
  "button",
9191
9246
  {
9192
9247
  type: "button",
9193
9248
  onClick: () => handleRemoveType(index),
9194
9249
  className: "hover:text-white transition-colors"
9195
9250
  },
9196
- /* @__PURE__ */ React13.createElement(FiX3, { size: 12 })
9251
+ /* @__PURE__ */ React14.createElement(FiX3, { size: 12 })
9197
9252
  )
9198
- )), /* @__PURE__ */ React13.createElement(
9253
+ )), /* @__PURE__ */ React14.createElement(
9199
9254
  "input",
9200
9255
  {
9201
9256
  type: "text",
@@ -9217,7 +9272,7 @@ function InSceneCreationForm({
9217
9272
  autoComplete: "off",
9218
9273
  autoFocus: true
9219
9274
  }
9220
- ), showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React13.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-10 w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredTypes.map((suggestedType, index) => /* @__PURE__ */ React13.createElement(
9275
+ ), showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React14.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-10 w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredTypes.map((suggestedType, index) => /* @__PURE__ */ React14.createElement(
9221
9276
  "li",
9222
9277
  {
9223
9278
  key: index,
@@ -9228,7 +9283,7 @@ function InSceneCreationForm({
9228
9283
  }
9229
9284
  },
9230
9285
  suggestedType
9231
- ))))), /* @__PURE__ */ React13.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Nome do Node"), /* @__PURE__ */ React13.createElement(
9286
+ ))))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Nome do Node"), /* @__PURE__ */ React14.createElement(
9232
9287
  "input",
9233
9288
  {
9234
9289
  required: true,
@@ -9238,21 +9293,21 @@ function InSceneCreationForm({
9238
9293
  onChange: handleNameInputChange,
9239
9294
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-2 focus:ring-indigo-400/60"
9240
9295
  }
9241
- )), viewType === "view" && availableDatasets.length > 0 && /* @__PURE__ */ React13.createElement("div", { className: "space-y-1.5 relative", ref: datasetDropdownRef }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Criar Node no Dataset:"), /* @__PURE__ */ React13.createElement(
9296
+ )), viewType === "view" && availableDatasets.length > 0 && /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5 relative", ref: datasetDropdownRef }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Criar Node no Dataset:"), /* @__PURE__ */ React14.createElement(
9242
9297
  "button",
9243
9298
  {
9244
9299
  type: "button",
9245
9300
  onClick: () => setIsDatasetDropdownOpen(!isDatasetDropdownOpen),
9246
9301
  className: "w-full flex items-center justify-between bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 hover:bg-slate-700/70 transition-colors text-slate-200 text-left"
9247
9302
  },
9248
- /* @__PURE__ */ React13.createElement("span", { className: "truncate pr-2" }, selectedDatasetName),
9249
- /* @__PURE__ */ React13.createElement(
9303
+ /* @__PURE__ */ React14.createElement("span", { className: "truncate pr-2" }, selectedDatasetName),
9304
+ /* @__PURE__ */ React14.createElement(
9250
9305
  FiChevronDown4,
9251
9306
  {
9252
9307
  className: `flex-shrink-0 text-slate-400 transition-transform ${isDatasetDropdownOpen ? "rotate-180" : ""}`
9253
9308
  }
9254
9309
  )
9255
- ), isDatasetDropdownOpen && /* @__PURE__ */ React13.createElement("ul", { className: "custom-scrollbar absolute top-[66px] left-0 z-20 w-full max-h-48 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-xl py-1" }, availableDatasets.map((ds) => /* @__PURE__ */ React13.createElement(
9310
+ ), isDatasetDropdownOpen && /* @__PURE__ */ React14.createElement("ul", { className: "custom-scrollbar absolute top-[66px] left-0 z-20 w-full max-h-48 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-xl py-1" }, availableDatasets.map((ds) => /* @__PURE__ */ React14.createElement(
9256
9311
  "li",
9257
9312
  {
9258
9313
  key: ds.id,
@@ -9263,7 +9318,7 @@ function InSceneCreationForm({
9263
9318
  className: `px-3 py-2 text-sm cursor-pointer transition-colors ${targetDatasetId === ds.id ? "bg-indigo-600/40 text-indigo-200 font-medium" : "text-slate-300 hover:bg-white/5"}`
9264
9319
  },
9265
9320
  ds.name
9266
- )))), /* @__PURE__ */ React13.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React13.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React13.createElement(
9321
+ )))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React14.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React14.createElement(
9267
9322
  DescriptionDisplay,
9268
9323
  {
9269
9324
  description,
@@ -9274,7 +9329,7 @@ function InSceneCreationForm({
9274
9329
  onImageClick: handleImageClickFromText,
9275
9330
  onSaveDescription: (newDesc) => setDescription(newDesc)
9276
9331
  }
9277
- ), /* @__PURE__ */ React13.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React13.createElement(
9332
+ ), /* @__PURE__ */ React14.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React14.createElement(
9278
9333
  "button",
9279
9334
  {
9280
9335
  type: "button",
@@ -9282,17 +9337,17 @@ function InSceneCreationForm({
9282
9337
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
9283
9338
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
9284
9339
  },
9285
- /* @__PURE__ */ React13.createElement(FiEdit24, { size: 14 })
9286
- )), !description && /* @__PURE__ */ React13.createElement(
9340
+ /* @__PURE__ */ React14.createElement(FiEdit24, { size: 14 })
9341
+ )), !description && /* @__PURE__ */ React14.createElement(
9287
9342
  "div",
9288
9343
  {
9289
9344
  onClick: () => setIsDescriptionModalOpen(true),
9290
9345
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
9291
9346
  },
9292
9347
  "Adicionar descri\xE7\xE3o..."
9293
- ))), /* @__PURE__ */ React13.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React13.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
9348
+ ))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
9294
9349
  const isSelected = size === s;
9295
- return /* @__PURE__ */ React13.createElement(
9350
+ return /* @__PURE__ */ React14.createElement(
9296
9351
  "button",
9297
9352
  {
9298
9353
  key: s,
@@ -9300,14 +9355,14 @@ function InSceneCreationForm({
9300
9355
  onClick: () => handleSizeChange(s),
9301
9356
  className: "flex items-center gap-2 group cursor-pointer focus:outline-none"
9302
9357
  },
9303
- /* @__PURE__ */ React13.createElement(
9358
+ /* @__PURE__ */ React14.createElement(
9304
9359
  "div",
9305
9360
  {
9306
9361
  className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent group-hover:border-slate-500"}`
9307
9362
  },
9308
- isSelected && /* @__PURE__ */ React13.createElement(FiCheck7, { size: 12, className: "text-white" })
9363
+ isSelected && /* @__PURE__ */ React14.createElement(FiCheck7, { size: 12, className: "text-white" })
9309
9364
  ),
9310
- /* @__PURE__ */ React13.createElement(
9365
+ /* @__PURE__ */ React14.createElement(
9311
9366
  "span",
9312
9367
  {
9313
9368
  className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 group-hover:text-slate-300"}`
@@ -9315,13 +9370,13 @@ function InSceneCreationForm({
9315
9370
  s
9316
9371
  )
9317
9372
  );
9318
- }))), /* @__PURE__ */ React13.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React13.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React13.createElement("label", { className: "text-xs text-slate-300" }, "Cor e Brilho"), hasImages && /* @__PURE__ */ React13.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React13.createElement(
9373
+ }))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Cor e Brilho"), hasImages && /* @__PURE__ */ React14.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React14.createElement(
9319
9374
  "div",
9320
9375
  {
9321
9376
  className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}`
9322
9377
  },
9323
- useImageAsTexture && /* @__PURE__ */ React13.createElement(FiCheck7, { size: 12, className: "text-white" })
9324
- ), /* @__PURE__ */ React13.createElement(
9378
+ useImageAsTexture && /* @__PURE__ */ React14.createElement(FiCheck7, { size: 12, className: "text-white" })
9379
+ ), /* @__PURE__ */ React14.createElement(
9325
9380
  "input",
9326
9381
  {
9327
9382
  type: "checkbox",
@@ -9329,20 +9384,20 @@ function InSceneCreationForm({
9329
9384
  onChange: handleToggleImageMode,
9330
9385
  className: "hidden"
9331
9386
  }
9332
- ), /* @__PURE__ */ React13.createElement(
9387
+ ), /* @__PURE__ */ React14.createElement(
9333
9388
  "span",
9334
9389
  {
9335
9390
  className: `text-xs ${useImageAsTexture ? "text-indigo-300" : "text-slate-400 group-hover:text-slate-300"}`
9336
9391
  },
9337
9392
  "Usar imagem para representar o node"
9338
- ))), /* @__PURE__ */ React13.createElement(
9393
+ ))), /* @__PURE__ */ React14.createElement(
9339
9394
  ColorPicker,
9340
9395
  {
9341
9396
  color,
9342
9397
  onChange: handleColorInputChange,
9343
9398
  disabled: useImageAsTexture
9344
9399
  }
9345
- ), /* @__PURE__ */ React13.createElement("div", { className: "mt-3 flex items-center gap-3" }, /* @__PURE__ */ React13.createElement(FiSun, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React13.createElement(
9400
+ ), /* @__PURE__ */ React14.createElement("div", { className: "mt-3 flex items-center gap-3" }, /* @__PURE__ */ React14.createElement(FiSun, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React14.createElement(
9346
9401
  "input",
9347
9402
  {
9348
9403
  type: "range",
@@ -9354,22 +9409,33 @@ function InSceneCreationForm({
9354
9409
  className: "w-full h-1.5 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-indigo-500 hover:accent-indigo-400",
9355
9410
  title: `Intensidade do brilho: ${intensity}`
9356
9411
  }
9357
- ), /* @__PURE__ */ React13.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ React13.createElement(
9412
+ ), /* @__PURE__ */ React14.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ React14.createElement(
9358
9413
  "span",
9359
9414
  {
9360
9415
  className: `text-xs block mt-1 transition-opacity ${useImageAsTexture ? "opacity-40" : "text-slate-400"}`
9361
9416
  },
9362
9417
  useImageAsTexture ? "Cor da borda (definida pela imagem)" : "Selecione a cor e ajuste o brilho."
9363
- )), /* @__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(
9418
+ )), /* @__PURE__ */ React14.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React14.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-2" }, create_google_doc_action && /* @__PURE__ */ React14.createElement(
9419
+ "button",
9420
+ {
9421
+ type: "button",
9422
+ onClick: handleCreateGoogleDoc,
9423
+ disabled: isLoadingDocs,
9424
+ className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-transparent hover:bg-white/5 text-slate-300 border border-white/10 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
9425
+ title: "Criar Documento no Google Docs"
9426
+ },
9427
+ isLoadingDocs ? /* @__PURE__ */ React14.createElement(AiOutlineLoading3Quarters, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React14.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" }),
9428
+ isLoadingDocs ? "Criando..." : "Google Doc"
9429
+ ), /* @__PURE__ */ React14.createElement(
9364
9430
  "button",
9365
9431
  {
9366
9432
  type: "button",
9367
9433
  onClick: handleAddProp,
9368
9434
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors"
9369
9435
  },
9370
- /* @__PURE__ */ React13.createElement(FiPlus3, { size: 14 }),
9436
+ /* @__PURE__ */ React14.createElement(FiPlus3, { size: 14 }),
9371
9437
  " Adicionar"
9372
- )), /* @__PURE__ */ React13.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React13.createElement(
9438
+ ))), /* @__PURE__ */ React14.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React14.createElement(
9373
9439
  CustomPropertyDisplay,
9374
9440
  {
9375
9441
  key: prop.id,
@@ -9385,7 +9451,7 @@ function InSceneCreationForm({
9385
9451
  onSelectTexture: handleSelectTexture,
9386
9452
  onUploadFile
9387
9453
  }
9388
- )), /* @__PURE__ */ React13.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React13.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React13.createElement(
9454
+ )), /* @__PURE__ */ React14.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React14.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React14.createElement(
9389
9455
  "button",
9390
9456
  {
9391
9457
  type: "button",
@@ -9393,7 +9459,7 @@ function InSceneCreationForm({
9393
9459
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm"
9394
9460
  },
9395
9461
  "Cancelar"
9396
- ), /* @__PURE__ */ React13.createElement(
9462
+ ), /* @__PURE__ */ React14.createElement(
9397
9463
  "button",
9398
9464
  {
9399
9465
  type: "submit",
@@ -9401,7 +9467,7 @@ function InSceneCreationForm({
9401
9467
  },
9402
9468
  "Salvar"
9403
9469
  )))
9404
- ), isDescriptionModalOpen && /* @__PURE__ */ React13.createElement(
9470
+ ), isDescriptionModalOpen && /* @__PURE__ */ React14.createElement(
9405
9471
  DescriptionEditModal,
9406
9472
  {
9407
9473
  isOpen: isDescriptionModalOpen,
@@ -9419,7 +9485,7 @@ function InSceneCreationForm({
9419
9485
  }
9420
9486
 
9421
9487
  // src/components/InSceneVersionForm.jsx
9422
- import React14, { useState as useState15, useEffect as useEffect14, useRef as useRef11 } from "react";
9488
+ import React15, { useState as useState15, useEffect as useEffect14, useRef as useRef11 } from "react";
9423
9489
  import { v4 as uuidv46 } from "uuid";
9424
9490
  import { FiPlus as FiPlus4, FiMaximize2 as FiMaximize22, FiCheck as FiCheck8, FiEdit2 as FiEdit25 } from "react-icons/fi";
9425
9491
  function InSceneVersionForm({
@@ -9557,7 +9623,7 @@ function InSceneVersionForm({
9557
9623
  onOpenImageViewer([{ name: name2 || "Imagem", value: url }], 0);
9558
9624
  }
9559
9625
  };
9560
- return /* @__PURE__ */ React14.createElement(React14.Fragment, null, /* @__PURE__ */ React14.createElement(
9626
+ return /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(
9561
9627
  "div",
9562
9628
  {
9563
9629
  ref: refEl,
@@ -9571,9 +9637,9 @@ function InSceneVersionForm({
9571
9637
  onContextMenu: swallow,
9572
9638
  onDoubleClick: swallow
9573
9639
  },
9574
- /* @__PURE__ */ React14.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
9575
- /* @__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")),
9576
- /* @__PURE__ */ React14.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React14.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Tipo do Node (Fixo)"), /* @__PURE__ */ React14.createElement(
9640
+ /* @__PURE__ */ React15.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
9641
+ /* @__PURE__ */ React15.createElement("div", { className: "px-6 pt-5 pb-3" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React15.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-indigo-400/80 shadow-[0_0_18px_2px_rgba(99,102,241,0.55)]" }), /* @__PURE__ */ React15.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Criar Versionamento")), /* @__PURE__ */ React15.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Nova Vers\xE3o")),
9642
+ /* @__PURE__ */ React15.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React15.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Tipo do Node (Fixo)"), /* @__PURE__ */ React15.createElement(
9577
9643
  "input",
9578
9644
  {
9579
9645
  type: "text",
@@ -9581,7 +9647,7 @@ function InSceneVersionForm({
9581
9647
  disabled: true,
9582
9648
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 text-slate-400 cursor-not-allowed"
9583
9649
  }
9584
- )), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Nome do Node"), /* @__PURE__ */ React14.createElement(
9650
+ )), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Nome do Node"), /* @__PURE__ */ React15.createElement(
9585
9651
  "input",
9586
9652
  {
9587
9653
  required: true,
@@ -9591,7 +9657,7 @@ function InSceneVersionForm({
9591
9657
  onChange: handleNameInputChange,
9592
9658
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-2 focus:ring-indigo-400/60"
9593
9659
  }
9594
- )), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React14.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React14.createElement(
9660
+ )), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React15.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React15.createElement(
9595
9661
  DescriptionDisplay,
9596
9662
  {
9597
9663
  description,
@@ -9602,7 +9668,7 @@ function InSceneVersionForm({
9602
9668
  onImageClick: handleImageClickFromText,
9603
9669
  onSaveDescription: (newDesc) => setDescription(newDesc)
9604
9670
  }
9605
- ), /* @__PURE__ */ React14.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React14.createElement(
9671
+ ), /* @__PURE__ */ React15.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React15.createElement(
9606
9672
  "button",
9607
9673
  {
9608
9674
  type: "button",
@@ -9610,17 +9676,17 @@ function InSceneVersionForm({
9610
9676
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
9611
9677
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
9612
9678
  },
9613
- /* @__PURE__ */ React14.createElement(FiEdit25, { size: 14 })
9614
- )), !description && /* @__PURE__ */ React14.createElement(
9679
+ /* @__PURE__ */ React15.createElement(FiEdit25, { size: 14 })
9680
+ )), !description && /* @__PURE__ */ React15.createElement(
9615
9681
  "div",
9616
9682
  {
9617
9683
  onClick: () => setIsDescriptionModalOpen(true),
9618
9684
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
9619
9685
  },
9620
9686
  "Adicionar descri\xE7\xE3o..."
9621
- ))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
9687
+ ))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
9622
9688
  const isSelected = size === s;
9623
- return /* @__PURE__ */ React14.createElement(
9689
+ return /* @__PURE__ */ React15.createElement(
9624
9690
  "button",
9625
9691
  {
9626
9692
  key: s,
@@ -9628,14 +9694,14 @@ function InSceneVersionForm({
9628
9694
  onClick: () => handleSizeChange(s),
9629
9695
  className: "flex items-center gap-2 group cursor-pointer focus:outline-none"
9630
9696
  },
9631
- /* @__PURE__ */ React14.createElement(
9697
+ /* @__PURE__ */ React15.createElement(
9632
9698
  "div",
9633
9699
  {
9634
9700
  className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent group-hover:border-slate-500"}`
9635
9701
  },
9636
- isSelected && /* @__PURE__ */ React14.createElement(FiCheck8, { size: 12, className: "text-white" })
9702
+ isSelected && /* @__PURE__ */ React15.createElement(FiCheck8, { size: 12, className: "text-white" })
9637
9703
  ),
9638
- /* @__PURE__ */ React14.createElement(
9704
+ /* @__PURE__ */ React15.createElement(
9639
9705
  "span",
9640
9706
  {
9641
9707
  className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 group-hover:text-slate-300"}`
@@ -9643,13 +9709,13 @@ function InSceneVersionForm({
9643
9709
  s
9644
9710
  )
9645
9711
  );
9646
- }))), /* @__PURE__ */ React14.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React14.createElement("label", { className: "text-xs text-slate-300" }, "Cor do Node (Fixa)"), hasImages && /* @__PURE__ */ React14.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React14.createElement(
9712
+ }))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Cor do Node (Fixa)"), hasImages && /* @__PURE__ */ React15.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React15.createElement(
9647
9713
  "div",
9648
9714
  {
9649
9715
  className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}`
9650
9716
  },
9651
- useImageAsTexture && /* @__PURE__ */ React14.createElement(FiCheck8, { size: 12, className: "text-white" })
9652
- ), /* @__PURE__ */ React14.createElement(
9717
+ useImageAsTexture && /* @__PURE__ */ React15.createElement(FiCheck8, { size: 12, className: "text-white" })
9718
+ ), /* @__PURE__ */ React15.createElement(
9653
9719
  "input",
9654
9720
  {
9655
9721
  type: "checkbox",
@@ -9657,35 +9723,35 @@ function InSceneVersionForm({
9657
9723
  onChange: handleToggleImageMode,
9658
9724
  className: "hidden"
9659
9725
  }
9660
- ), /* @__PURE__ */ React14.createElement(
9726
+ ), /* @__PURE__ */ React15.createElement(
9661
9727
  "span",
9662
9728
  {
9663
9729
  className: `text-xs ${useImageAsTexture ? "text-indigo-300" : "text-slate-400 group-hover:text-slate-300"}`
9664
9730
  },
9665
9731
  "Usar imagem"
9666
- ))), /* @__PURE__ */ React14.createElement(
9732
+ ))), /* @__PURE__ */ React15.createElement(
9667
9733
  "div",
9668
9734
  {
9669
9735
  className: `flex items-center gap-3 bg-slate-900/60 p-2.5 rounded-lg border border-white/10 transition-opacity duration-200 ${useImageAsTexture ? "opacity-40 pointer-events-none grayscale" : "opacity-100"}`
9670
9736
  },
9671
- /* @__PURE__ */ React14.createElement(
9737
+ /* @__PURE__ */ React15.createElement(
9672
9738
  "div",
9673
9739
  {
9674
9740
  className: "h-8 w-12 rounded-md border border-white/10",
9675
9741
  style: { backgroundColor: fixedColor }
9676
9742
  }
9677
9743
  ),
9678
- /* @__PURE__ */ React14.createElement("span", { className: "text-xs text-slate-300" }, useImageAsTexture ? "Cor definida pela imagem." : "Cor herdada do node original.")
9679
- )), /* @__PURE__ */ React14.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React14.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais (*Date obrigat\xF3rio)"), /* @__PURE__ */ React14.createElement(
9744
+ /* @__PURE__ */ React15.createElement("span", { className: "text-xs text-slate-300" }, useImageAsTexture ? "Cor definida pela imagem." : "Cor herdada do node original.")
9745
+ )), /* @__PURE__ */ React15.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React15.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais (*Date obrigat\xF3rio)"), /* @__PURE__ */ React15.createElement(
9680
9746
  "button",
9681
9747
  {
9682
9748
  type: "button",
9683
9749
  onClick: handleAddProp,
9684
9750
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors"
9685
9751
  },
9686
- /* @__PURE__ */ React14.createElement(FiPlus4, { size: 14 }),
9752
+ /* @__PURE__ */ React15.createElement(FiPlus4, { size: 14 }),
9687
9753
  " Adicionar"
9688
- )), /* @__PURE__ */ React14.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React14.createElement(
9754
+ )), /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React15.createElement(
9689
9755
  CustomPropertyDisplay,
9690
9756
  {
9691
9757
  key: prop.id,
@@ -9701,7 +9767,7 @@ function InSceneVersionForm({
9701
9767
  onSelectTexture: handleSelectTexture,
9702
9768
  onUploadFile
9703
9769
  }
9704
- )), /* @__PURE__ */ React14.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React14.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React14.createElement(
9770
+ )), /* @__PURE__ */ React15.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React15.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React15.createElement(
9705
9771
  "button",
9706
9772
  {
9707
9773
  type: "button",
@@ -9709,7 +9775,7 @@ function InSceneVersionForm({
9709
9775
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm"
9710
9776
  },
9711
9777
  "Cancelar"
9712
- ), /* @__PURE__ */ React14.createElement(
9778
+ ), /* @__PURE__ */ React15.createElement(
9713
9779
  "button",
9714
9780
  {
9715
9781
  type: "submit",
@@ -9717,7 +9783,7 @@ function InSceneVersionForm({
9717
9783
  },
9718
9784
  "Salvar"
9719
9785
  )))
9720
- ), isDescriptionModalOpen && /* @__PURE__ */ React14.createElement(
9786
+ ), isDescriptionModalOpen && /* @__PURE__ */ React15.createElement(
9721
9787
  DescriptionEditModal,
9722
9788
  {
9723
9789
  isOpen: isDescriptionModalOpen,
@@ -9735,7 +9801,7 @@ function InSceneVersionForm({
9735
9801
  }
9736
9802
 
9737
9803
  // src/components/InSceneQuestForm.jsx
9738
- import React16, { useState as useState17, useRef as useRef12 } from "react";
9804
+ import React17, { useState as useState17, useRef as useRef12 } from "react";
9739
9805
  import { v4 as uuidv47 } from "uuid";
9740
9806
  import {
9741
9807
  FiPlus as FiPlus6,
@@ -9750,9 +9816,10 @@ import {
9750
9816
  FiRepeat,
9751
9817
  FiCopy as FiCopy3
9752
9818
  } from "react-icons/fi";
9819
+ import { AiOutlineLoading3Quarters as AiOutlineLoading3Quarters2 } from "react-icons/ai";
9753
9820
 
9754
9821
  // src/components/QuestReviewStackEditor.jsx
9755
- import React15, { useState as useState16 } from "react";
9822
+ import React16, { useState as useState16 } from "react";
9756
9823
  import {
9757
9824
  FiPlus as FiPlus5,
9758
9825
  FiX as FiX4,
@@ -9805,22 +9872,22 @@ function QuestReviewStackEditor({
9805
9872
  const search = searchQuery.toLowerCase();
9806
9873
  return (m.name || "").toLowerCase().includes(search) || (m.email || "").toLowerCase().includes(search);
9807
9874
  });
9808
- return /* @__PURE__ */ React15.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Review Stack"), !readOnly && !isAdding && /* @__PURE__ */ React15.createElement(
9875
+ return /* @__PURE__ */ React16.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Review Stack"), !readOnly && !isAdding && /* @__PURE__ */ React16.createElement(
9809
9876
  "button",
9810
9877
  {
9811
9878
  type: "button",
9812
9879
  onClick: () => setIsAdding(true),
9813
9880
  className: "flex items-center gap-1 px-2 py-1 text-[10px] bg-sky-500/20 text-sky-300 border border-sky-500/30 rounded hover:bg-sky-500/30 transition-colors"
9814
9881
  },
9815
- /* @__PURE__ */ React15.createElement(FiPlus5, { size: 10 }),
9882
+ /* @__PURE__ */ React16.createElement(FiPlus5, { size: 10 }),
9816
9883
  " Adicionar Camada"
9817
- )), isAdding && /* @__PURE__ */ React15.createElement("div", { className: "bg-slate-900/50 border border-sky-500/30 rounded-lg p-2 space-y-2 animate-in fade-in slide-in-from-top-1 duration-200" }, /* @__PURE__ */ React15.createElement("div", { className: "relative" }, /* @__PURE__ */ React15.createElement(
9884
+ )), isAdding && /* @__PURE__ */ React16.createElement("div", { className: "bg-slate-900/50 border border-sky-500/30 rounded-lg p-2 space-y-2 animate-in fade-in slide-in-from-top-1 duration-200" }, /* @__PURE__ */ React16.createElement("div", { className: "relative" }, /* @__PURE__ */ React16.createElement(
9818
9885
  FiSearch4,
9819
9886
  {
9820
9887
  className: "absolute left-2 top-1/2 -translate-y-1/2 text-slate-500",
9821
9888
  size: 12
9822
9889
  }
9823
- ), /* @__PURE__ */ React15.createElement(
9890
+ ), /* @__PURE__ */ React16.createElement(
9824
9891
  "input",
9825
9892
  {
9826
9893
  autoFocus: true,
@@ -9830,32 +9897,32 @@ function QuestReviewStackEditor({
9830
9897
  onChange: (e) => setSearchQuery(e.target.value),
9831
9898
  className: "w-full bg-slate-800 border border-white/10 rounded p-1.5 pl-7 text-xs focus:outline-none focus:ring-1 focus:ring-sky-400"
9832
9899
  }
9833
- ), /* @__PURE__ */ React15.createElement(
9900
+ ), /* @__PURE__ */ React16.createElement(
9834
9901
  "button",
9835
9902
  {
9836
9903
  onClick: () => setIsAdding(false),
9837
9904
  className: "absolute right-2 top-1/2 -translate-y-1/2 text-slate-500 hover:text-white"
9838
9905
  },
9839
- /* @__PURE__ */ React15.createElement(FiX4, { size: 14 })
9840
- )), /* @__PURE__ */ React15.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar space-y-1" }, filteredMembers.map((m) => /* @__PURE__ */ React15.createElement(
9906
+ /* @__PURE__ */ React16.createElement(FiX4, { size: 14 })
9907
+ )), /* @__PURE__ */ React16.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar space-y-1" }, filteredMembers.map((m) => /* @__PURE__ */ React16.createElement(
9841
9908
  "li",
9842
9909
  {
9843
9910
  key: m.id,
9844
9911
  onClick: () => handleAddReviewer(m.id),
9845
9912
  className: "px-2 py-1.5 hover:bg-white/5 rounded cursor-pointer text-xs flex items-center gap-2"
9846
9913
  },
9847
- /* @__PURE__ */ React15.createElement(FiUser, { size: 12, className: "text-slate-400" }),
9848
- /* @__PURE__ */ React15.createElement("span", { className: "truncate" }, m.name || m.email)
9849
- )), filteredMembers.length === 0 && /* @__PURE__ */ React15.createElement("li", { className: "text-[10px] text-slate-500 text-center py-2 italic font-light" }, "Nenhum membro encontrado"))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5" }, reviewStack.map((item, index) => {
9914
+ /* @__PURE__ */ React16.createElement(FiUser, { size: 12, className: "text-slate-400" }),
9915
+ /* @__PURE__ */ React16.createElement("span", { className: "truncate" }, m.name || m.email)
9916
+ )), filteredMembers.length === 0 && /* @__PURE__ */ React16.createElement("li", { className: "text-[10px] text-slate-500 text-center py-2 italic font-light" }, "Nenhum membro encontrado"))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, reviewStack.map((item, index) => {
9850
9917
  const member = viewMembers.find((m) => m.id === item.userId);
9851
9918
  const isCompleted = item.status === "completed";
9852
- return /* @__PURE__ */ React15.createElement(
9919
+ return /* @__PURE__ */ React16.createElement(
9853
9920
  "div",
9854
9921
  {
9855
9922
  key: index,
9856
9923
  className: `group relative flex items-center gap-3 p-2 rounded-lg border ${isCompleted ? "bg-green-500/5 border-green-500/20" : "bg-white/5 border-white/10"} hover:border-white/20 transition-all`
9857
9924
  },
9858
- /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col items-center gap-0.5 text-slate-500" }, /* @__PURE__ */ React15.createElement("span", { className: "text-[10px] font-bold opacity-50" }, index + 1), !readOnly && /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(
9925
+ /* @__PURE__ */ React16.createElement("div", { className: "flex flex-col items-center gap-0.5 text-slate-500" }, /* @__PURE__ */ React16.createElement("span", { className: "text-[10px] font-bold opacity-50" }, index + 1), !readOnly && /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
9859
9926
  "button",
9860
9927
  {
9861
9928
  type: "button",
@@ -9863,8 +9930,8 @@ function QuestReviewStackEditor({
9863
9930
  disabled: index === 0,
9864
9931
  className: "hover:text-sky-400 disabled:opacity-20"
9865
9932
  },
9866
- /* @__PURE__ */ React15.createElement(FiChevronUp, { size: 12 })
9867
- ), /* @__PURE__ */ React15.createElement(
9933
+ /* @__PURE__ */ React16.createElement(FiChevronUp, { size: 12 })
9934
+ ), /* @__PURE__ */ React16.createElement(
9868
9935
  "button",
9869
9936
  {
9870
9937
  type: "button",
@@ -9872,16 +9939,16 @@ function QuestReviewStackEditor({
9872
9939
  disabled: index === reviewStack.length - 1,
9873
9940
  className: "hover:text-sky-400 disabled:opacity-20"
9874
9941
  },
9875
- /* @__PURE__ */ React15.createElement(FiChevronDown5, { size: 12 })
9942
+ /* @__PURE__ */ React16.createElement(FiChevronDown5, { size: 12 })
9876
9943
  ))),
9877
- /* @__PURE__ */ React15.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15.createElement(
9944
+ /* @__PURE__ */ React16.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(
9878
9945
  "span",
9879
9946
  {
9880
9947
  className: `truncate text-sm font-medium ${isCompleted ? "text-green-300" : "text-slate-200"}`
9881
9948
  },
9882
9949
  (member == null ? void 0 : member.name) || (member == null ? void 0 : member.email) || "Unknown User"
9883
- ), 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")),
9884
- !readOnly && /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity" }, /* @__PURE__ */ React15.createElement(
9950
+ ), item.mandatory && /* @__PURE__ */ React16.createElement("span", { className: "flex-shrink-0 px-1.5 py-0.5 rounded-full bg-amber-500/20 text-amber-300 text-[8px] font-bold uppercase tracking-tighter border border-amber-500/30" }, "Obrigat\xF3rio")), /* @__PURE__ */ React16.createElement("p", { className: "text-[10px] text-slate-500 flex items-center gap-1" }, isCompleted ? "\u2713 Review Conclu\xEDda" : "\u23F3 Pendente")),
9951
+ !readOnly && /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity" }, /* @__PURE__ */ React16.createElement(
9885
9952
  "button",
9886
9953
  {
9887
9954
  type: "button",
@@ -9889,18 +9956,18 @@ function QuestReviewStackEditor({
9889
9956
  title: item.mandatory ? "Remover obrigatoriedade" : "Tornar obrigat\xF3rio",
9890
9957
  className: `p-1.5 rounded hover:bg-white/10 transition-colors ${item.mandatory ? "text-amber-400" : "text-slate-500"}`
9891
9958
  },
9892
- /* @__PURE__ */ React15.createElement(FiStar, { size: 14 })
9893
- ), /* @__PURE__ */ React15.createElement(
9959
+ /* @__PURE__ */ React16.createElement(FiStar, { size: 14 })
9960
+ ), /* @__PURE__ */ React16.createElement(
9894
9961
  "button",
9895
9962
  {
9896
9963
  type: "button",
9897
9964
  onClick: () => handleRemoveReviewer(index),
9898
9965
  className: "p-1.5 rounded hover:bg-red-500/20 text-slate-500 hover:text-red-400 transition-colors"
9899
9966
  },
9900
- /* @__PURE__ */ React15.createElement(FiX4, { size: 14 })
9967
+ /* @__PURE__ */ React16.createElement(FiX4, { size: 14 })
9901
9968
  ))
9902
9969
  );
9903
- }), reviewStack.length === 0 && !isAdding && /* @__PURE__ */ React15.createElement("div", { className: "py-6 border-2 border-dashed border-white/5 rounded-xl flex flex-col items-center justify-center gap-2" }, /* @__PURE__ */ React15.createElement("p", { className: "text-xs text-slate-500 font-light italic" }, "Nenhum revisor definido"), !readOnly && /* @__PURE__ */ React15.createElement(
9970
+ }), reviewStack.length === 0 && !isAdding && /* @__PURE__ */ React16.createElement("div", { className: "py-6 border-2 border-dashed border-white/5 rounded-xl flex flex-col items-center justify-center gap-2" }, /* @__PURE__ */ React16.createElement("p", { className: "text-xs text-slate-500 font-light italic" }, "Nenhum revisor definido"), !readOnly && /* @__PURE__ */ React16.createElement(
9904
9971
  "button",
9905
9972
  {
9906
9973
  type: "button",
@@ -9939,7 +10006,8 @@ function InSceneQuestForm({
9939
10006
  session = null,
9940
10007
  milestones = [],
9941
10008
  onUpdateMilestones = () => {
9942
- }
10009
+ },
10010
+ create_google_doc_action
9943
10011
  }) {
9944
10012
  var _a, _b;
9945
10013
  const [name, setName] = useState17("");
@@ -9967,16 +10035,17 @@ function InSceneQuestForm({
9967
10035
  const [isAssigneeDropdownOpen, setIsAssigneeDropdownOpen] = useState17(false);
9968
10036
  const [assigneeSearchQuery, setAssigneeSearchQuery] = useState17("");
9969
10037
  const [isNameCopied, setIsNameCopied] = useState17(false);
10038
+ const [isLoadingDocs, setIsLoadingDocs] = useState17(false);
9970
10039
  const [customProps, setCustomProps] = useState17([]);
9971
10040
  const [isDescriptionModalOpen, setIsDescriptionModalOpen] = useState17(false);
9972
10041
  const propsEndRef = useRef12(null);
9973
10042
  const [milestoneInput, setMilestoneInput] = useState17("");
9974
10043
  const [showMilestoneSuggestions, setShowMilestoneSuggestions] = useState17(false);
9975
- const activeMilestones = React16.useMemo(
10044
+ const activeMilestones = React17.useMemo(
9976
10045
  () => (milestones || []).filter((ms) => ms.status === "active"),
9977
10046
  [milestones]
9978
10047
  );
9979
- const filteredMilestones = React16.useMemo(() => {
10048
+ const filteredMilestones = React17.useMemo(() => {
9980
10049
  const search = milestoneInput.toLowerCase().trim();
9981
10050
  return activeMilestones.filter(
9982
10051
  (ms) => ms.name.toLowerCase().includes(search) && !milestoneIds.includes(ms.id)
@@ -10013,11 +10082,11 @@ function InSceneQuestForm({
10013
10082
  handleRemoveMilestone(milestoneIds[milestoneIds.length - 1]);
10014
10083
  }
10015
10084
  };
10016
- const dependencyQuests = React16.useMemo(
10085
+ const dependencyQuests = React17.useMemo(
10017
10086
  () => availableNodes.filter((n) => n.is_quest),
10018
10087
  [availableNodes]
10019
10088
  );
10020
- const filteredDependencies = React16.useMemo(() => {
10089
+ const filteredDependencies = React17.useMemo(() => {
10021
10090
  const search = dependencyInput.toLowerCase().trim();
10022
10091
  return dependencyQuests.filter((q) => {
10023
10092
  var _a2;
@@ -10054,6 +10123,36 @@ function InSceneQuestForm({
10054
10123
  console.error("Erro ao copiar nome:", err);
10055
10124
  });
10056
10125
  };
10126
+ const handleCreateGoogleDoc = async () => {
10127
+ if (!name.trim()) {
10128
+ alert("Por favor, insira um t\xEDtulo para a quest antes de criar o documento.");
10129
+ return;
10130
+ }
10131
+ if (!create_google_doc_action) return;
10132
+ try {
10133
+ setIsLoadingDocs(true);
10134
+ const res = await create_google_doc_action(standardizedName);
10135
+ if (res.success) {
10136
+ const newProp = {
10137
+ id: uuidv47(),
10138
+ key: "Google Docs",
10139
+ type: "links",
10140
+ value: [{ id: uuidv47(), name: "Abrir Documento", value: res.link }]
10141
+ };
10142
+ setCustomProps((prev) => [...prev, newProp]);
10143
+ if (res.link) {
10144
+ window.open(res.link, "_blank");
10145
+ }
10146
+ } else {
10147
+ alert("Erro ao criar documento: " + res.error);
10148
+ }
10149
+ } catch (error) {
10150
+ console.error(error);
10151
+ alert("Erro ao processar cria\xE7\xE3o do documento.");
10152
+ } finally {
10153
+ setIsLoadingDocs(false);
10154
+ }
10155
+ };
10057
10156
  const handleAddProp = () => {
10058
10157
  const newProp = createNewCustomProperty(customProps);
10059
10158
  setCustomProps([...customProps, newProp]);
@@ -10128,7 +10227,7 @@ function InSceneQuestForm({
10128
10227
  const swallow = (e) => e.stopPropagation();
10129
10228
  const currentUsedTypes = customProps.map((p) => p.type).filter((t) => UNIQUE_PROP_TYPES.includes(t));
10130
10229
  const availableImages = customProps.filter((p) => p.type === "images").flatMap((p) => Array.isArray(p.value) ? p.value : []).filter((img) => img.value && img.value.trim() !== "");
10131
- return /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
10230
+ return /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
10132
10231
  "div",
10133
10232
  {
10134
10233
  ref: refEl,
@@ -10140,7 +10239,7 @@ function InSceneQuestForm({
10140
10239
  onContextMenu: swallow,
10141
10240
  onDoubleClick: swallow
10142
10241
  },
10143
- /* @__PURE__ */ React16.createElement(
10242
+ /* @__PURE__ */ React17.createElement(
10144
10243
  "div",
10145
10244
  {
10146
10245
  className: "h-[2px]",
@@ -10149,7 +10248,7 @@ function InSceneQuestForm({
10149
10248
  }
10150
10249
  }
10151
10250
  ),
10152
- /* @__PURE__ */ React16.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React16.createElement("div", null, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React16.createElement(FiTarget, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React16.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Nova quest")), /* @__PURE__ */ React16.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Criar Quest")), /* @__PURE__ */ React16.createElement(
10251
+ /* @__PURE__ */ React17.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React17.createElement("div", null, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React17.createElement(FiTarget, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React17.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Nova quest")), /* @__PURE__ */ React17.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, "Criar Quest")), /* @__PURE__ */ React17.createElement(
10153
10252
  "button",
10154
10253
  {
10155
10254
  type: "button",
@@ -10159,7 +10258,7 @@ function InSceneQuestForm({
10159
10258
  },
10160
10259
  "\xD7"
10161
10260
  )),
10162
- /* @__PURE__ */ React16.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React16.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "T\xEDtulo da Quest"), /* @__PURE__ */ React16.createElement(
10261
+ /* @__PURE__ */ React17.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col max-h-[68vh]" }, /* @__PURE__ */ React17.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "T\xEDtulo da Quest"), /* @__PURE__ */ React17.createElement(
10163
10262
  "input",
10164
10263
  {
10165
10264
  required: true,
@@ -10173,14 +10272,14 @@ function InSceneQuestForm({
10173
10272
  },
10174
10273
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-2 focus:ring-indigo-400/60"
10175
10274
  }
10176
- ), /* @__PURE__ */ React16.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ React16.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ React16.createElement(
10275
+ ), /* @__PURE__ */ React17.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ React17.createElement(
10177
10276
  "p",
10178
10277
  {
10179
10278
  className: "text-xs text-indigo-300 font-medium truncate",
10180
10279
  title: standardizedName
10181
10280
  },
10182
10281
  standardizedName
10183
- ), /* @__PURE__ */ React16.createElement(
10282
+ ), /* @__PURE__ */ React17.createElement(
10184
10283
  "button",
10185
10284
  {
10186
10285
  type: "button",
@@ -10188,34 +10287,34 @@ function InSceneQuestForm({
10188
10287
  className: `p-1 rounded-md transition-all hover:bg-white/5 ${isNameCopied ? "text-green-400 scale-110" : "text-slate-500 hover:text-indigo-400"} flex-shrink-0`,
10189
10288
  title: isNameCopied ? "Nome Copiado!" : "Copiar nome formatado"
10190
10289
  },
10191
- isNameCopied ? /* @__PURE__ */ React16.createElement(FiCheck9, { size: 10 }) : /* @__PURE__ */ React16.createElement(FiCopy3, { size: 10 })
10192
- ))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Status da Quest"), /* @__PURE__ */ React16.createElement("div", { className: "relative" }, /* @__PURE__ */ React16.createElement(
10290
+ isNameCopied ? /* @__PURE__ */ React17.createElement(FiCheck9, { size: 10 }) : /* @__PURE__ */ React17.createElement(FiCopy3, { size: 10 })
10291
+ ))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Status da Quest"), /* @__PURE__ */ React17.createElement("div", { className: "relative" }, /* @__PURE__ */ React17.createElement(
10193
10292
  "button",
10194
10293
  {
10195
10294
  type: "button",
10196
10295
  onClick: () => setIsStatusDropdownOpen(!isStatusDropdownOpen),
10197
10296
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
10198
10297
  },
10199
- /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(
10298
+ /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(
10200
10299
  "span",
10201
10300
  {
10202
10301
  className: "w-3 h-3 rounded-full shadow-[0_0_8px_rgba(0,0,0,0.5)]",
10203
10302
  style: { backgroundColor: QUEST_STATUS_COLORS2[status] }
10204
10303
  }
10205
- ), /* @__PURE__ */ React16.createElement("span", { className: "text-slate-200 font-medium" }, status)),
10206
- /* @__PURE__ */ React16.createElement(
10304
+ ), /* @__PURE__ */ React17.createElement("span", { className: "text-slate-200 font-medium" }, status)),
10305
+ /* @__PURE__ */ React17.createElement(
10207
10306
  FiChevronDown6,
10208
10307
  {
10209
10308
  className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}`
10210
10309
  }
10211
10310
  )
10212
- ), isStatusDropdownOpen && /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
10311
+ ), isStatusDropdownOpen && /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
10213
10312
  "div",
10214
10313
  {
10215
10314
  className: "fixed inset-0 z-40",
10216
10315
  onClick: () => setIsStatusDropdownOpen(false)
10217
10316
  }
10218
- ), /* @__PURE__ */ React16.createElement("ul", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-800 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden" }, Object.keys(QUEST_STATUS_COLORS2).map((s) => /* @__PURE__ */ React16.createElement(
10317
+ ), /* @__PURE__ */ React17.createElement("ul", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-800 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden" }, Object.keys(QUEST_STATUS_COLORS2).map((s) => /* @__PURE__ */ React17.createElement(
10219
10318
  "li",
10220
10319
  {
10221
10320
  key: s,
@@ -10226,7 +10325,7 @@ function InSceneQuestForm({
10226
10325
  },
10227
10326
  className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${status === s ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
10228
10327
  },
10229
- /* @__PURE__ */ React16.createElement(
10328
+ /* @__PURE__ */ React17.createElement(
10230
10329
  "span",
10231
10330
  {
10232
10331
  className: "w-3 h-3 rounded-full",
@@ -10234,11 +10333,11 @@ function InSceneQuestForm({
10234
10333
  }
10235
10334
  ),
10236
10335
  s
10237
- )))))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Milestones"), /* @__PURE__ */ React16.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all cursor-text` }, milestoneIds.map((id) => {
10336
+ )))))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Milestones"), /* @__PURE__ */ React17.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all cursor-text` }, milestoneIds.map((id) => {
10238
10337
  const ms = (milestones || []).find((m) => m.id === id);
10239
10338
  if (!ms) return null;
10240
- 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 })));
10241
- }), /* @__PURE__ */ React16.createElement(
10339
+ return /* @__PURE__ */ React17.createElement("span", { key: id, className: "flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border bg-sky-500/20 text-sky-200 border-sky-500/30" }, ms.name, /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: () => handleRemoveMilestone(id), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React17.createElement(FiX5, { size: 12 })));
10340
+ }), /* @__PURE__ */ React17.createElement(
10242
10341
  "input",
10243
10342
  {
10244
10343
  type: "text",
@@ -10257,7 +10356,7 @@ function InSceneQuestForm({
10257
10356
  placeholder: milestoneIds.length === 0 ? "Adicionar milestone..." : "",
10258
10357
  autoComplete: "off"
10259
10358
  }
10260
- ), showMilestoneSuggestions && filteredMilestones.length > 0 && /* @__PURE__ */ React16.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredMilestones.map((ms) => /* @__PURE__ */ React16.createElement(
10359
+ ), showMilestoneSuggestions && filteredMilestones.length > 0 && /* @__PURE__ */ React17.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredMilestones.map((ms) => /* @__PURE__ */ React17.createElement(
10261
10360
  "li",
10262
10361
  {
10263
10362
  key: ms.id,
@@ -10268,7 +10367,7 @@ function InSceneQuestForm({
10268
10367
  }
10269
10368
  },
10270
10369
  ms.name
10271
- ))), showMilestoneSuggestions && milestoneInput.trim() && !filteredMilestones.some((m) => m.name.toLowerCase() === milestoneInput.toLowerCase().trim()) && /* @__PURE__ */ React16.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, /* @__PURE__ */ React16.createElement(
10370
+ ))), showMilestoneSuggestions && milestoneInput.trim() && !filteredMilestones.some((m) => m.name.toLowerCase() === milestoneInput.toLowerCase().trim()) && /* @__PURE__ */ React17.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, /* @__PURE__ */ React17.createElement(
10272
10371
  "li",
10273
10372
  {
10274
10373
  className: "px-3 py-3 text-sm cursor-pointer hover:bg-indigo-600/50 flex flex-col gap-0.5",
@@ -10277,13 +10376,13 @@ function InSceneQuestForm({
10277
10376
  handleAddMilestone({ name: milestoneInput });
10278
10377
  }
10279
10378
  },
10280
- /* @__PURE__ */ React16.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
10281
- /* @__PURE__ */ React16.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
10282
- )))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Depend\xEAncias (Quest Chain)"), /* @__PURE__ */ React16.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all cursor-text` }, dependencyIds.map((id) => {
10379
+ /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
10380
+ /* @__PURE__ */ React17.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
10381
+ )))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Depend\xEAncias (Quest Chain)"), /* @__PURE__ */ React17.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all cursor-text` }, dependencyIds.map((id) => {
10283
10382
  const depNode = availableNodes.find((n) => String(n.id) === String(id));
10284
10383
  if (!depNode) return null;
10285
- 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 })));
10286
- }), /* @__PURE__ */ React16.createElement(
10384
+ return /* @__PURE__ */ React17.createElement("span", { key: id, className: "flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border bg-amber-500/20 text-amber-200 border-amber-500/30" }, depNode.raw_title || depNode.name, /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: () => handleRemoveDependency(id), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React17.createElement(FiX5, { size: 12 })));
10385
+ }), /* @__PURE__ */ React17.createElement(
10287
10386
  "input",
10288
10387
  {
10289
10388
  type: "text",
@@ -10302,7 +10401,7 @@ function InSceneQuestForm({
10302
10401
  placeholder: dependencyIds.length === 0 ? "Adicionar quest pr\xE9-requisito..." : "",
10303
10402
  autoComplete: "off"
10304
10403
  }
10305
- ), showDependencySuggestions && filteredDependencies.length > 0 && /* @__PURE__ */ React16.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredDependencies.map((q) => /* @__PURE__ */ React16.createElement(
10404
+ ), showDependencySuggestions && filteredDependencies.length > 0 && /* @__PURE__ */ React17.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredDependencies.map((q) => /* @__PURE__ */ React17.createElement(
10306
10405
  "li",
10307
10406
  {
10308
10407
  key: q.id,
@@ -10312,23 +10411,23 @@ function InSceneQuestForm({
10312
10411
  handleAddDependency(q);
10313
10412
  }
10314
10413
  },
10315
- /* @__PURE__ */ React16.createElement("span", { className: "truncate" }, q.raw_title || q.name),
10316
- /* @__PURE__ */ React16.createElement("span", { className: "text-[10px] text-slate-500" }, q.status || "Backlog")
10317
- ))))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Assignee (Respons\xE1vel)"), /* @__PURE__ */ React16.createElement("div", { className: "relative" }, /* @__PURE__ */ React16.createElement(
10414
+ /* @__PURE__ */ React17.createElement("span", { className: "truncate" }, q.raw_title || q.name),
10415
+ /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] text-slate-500" }, q.status || "Backlog")
10416
+ ))))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Assignee (Respons\xE1vel)"), /* @__PURE__ */ React17.createElement("div", { className: "relative" }, /* @__PURE__ */ React17.createElement(
10318
10417
  "button",
10319
10418
  {
10320
10419
  type: "button",
10321
10420
  onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
10322
10421
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
10323
10422
  },
10324
- /* @__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")),
10325
- /* @__PURE__ */ React16.createElement(
10423
+ /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(FiUser2, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React17.createElement("span", { className: "text-slate-200 font-medium" }, ((_a = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _a.name) || ((_b = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _b.email) || "Nenhum")),
10424
+ /* @__PURE__ */ React17.createElement(
10326
10425
  FiChevronDown6,
10327
10426
  {
10328
10427
  className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}`
10329
10428
  }
10330
10429
  )
10331
- ), isAssigneeDropdownOpen && /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(
10430
+ ), isAssigneeDropdownOpen && /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
10332
10431
  "div",
10333
10432
  {
10334
10433
  className: "fixed inset-0 z-40",
@@ -10337,7 +10436,7 @@ function InSceneQuestForm({
10337
10436
  setAssigneeSearchQuery("");
10338
10437
  }
10339
10438
  }
10340
- ), /* @__PURE__ */ React16.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React16.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(FiSearch5, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React16.createElement(
10439
+ ), /* @__PURE__ */ React17.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React17.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(FiSearch5, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React17.createElement(
10341
10440
  "input",
10342
10441
  {
10343
10442
  type: "text",
@@ -10348,7 +10447,7 @@ function InSceneQuestForm({
10348
10447
  className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
10349
10448
  onClick: (e) => e.stopPropagation()
10350
10449
  }
10351
- )), /* @__PURE__ */ React16.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React16.createElement(
10450
+ )), /* @__PURE__ */ React17.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React17.createElement(
10352
10451
  "li",
10353
10452
  {
10354
10453
  onClick: () => {
@@ -10362,7 +10461,7 @@ function InSceneQuestForm({
10362
10461
  ), viewMembers.filter((member) => {
10363
10462
  const search = assigneeSearchQuery.toLowerCase();
10364
10463
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
10365
- }).map((member) => /* @__PURE__ */ React16.createElement(
10464
+ }).map((member) => /* @__PURE__ */ React17.createElement(
10366
10465
  "li",
10367
10466
  {
10368
10467
  key: member.id,
@@ -10377,7 +10476,7 @@ function InSceneQuestForm({
10377
10476
  )), viewMembers.filter((member) => {
10378
10477
  const search = assigneeSearchQuery.toLowerCase();
10379
10478
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
10380
- }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React16.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), !questDate && /* @__PURE__ */ React16.createElement(
10479
+ }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React17.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), !questDate && /* @__PURE__ */ React17.createElement(
10381
10480
  "button",
10382
10481
  {
10383
10482
  type: "button",
@@ -10385,7 +10484,7 @@ function InSceneQuestForm({
10385
10484
  className: "text-[10px] text-indigo-400 hover:text-indigo-300 font-bold uppercase transition-colors"
10386
10485
  },
10387
10486
  "+ Adicionar"
10388
- )), questDate && /* @__PURE__ */ React16.createElement("div", { className: "p-3 bg-slate-900/60 rounded-xl border border-white/10 space-y-3 relative group" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ React16.createElement("div", { className: "flex-1 flex items-center gap-1 rounded-lg bg-slate-800/50 p-1" }, !questDate.confirmed ? ["Data", "Date Interval"].map((t) => /* @__PURE__ */ React16.createElement(
10487
+ )), questDate && /* @__PURE__ */ React17.createElement("div", { className: "p-3 bg-slate-900/60 rounded-xl border border-white/10 space-y-3 relative group" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ React17.createElement("div", { className: "flex-1 flex items-center gap-1 rounded-lg bg-slate-800/50 p-1" }, !questDate.confirmed ? ["Data", "Date Interval"].map((t) => /* @__PURE__ */ React17.createElement(
10389
10488
  "button",
10390
10489
  {
10391
10490
  key: t,
@@ -10403,7 +10502,7 @@ function InSceneQuestForm({
10403
10502
  className: `flex-1 text-[10px] px-2 py-1.5 rounded-md transition-colors ${questDate.type === t ? "bg-indigo-600 text-white font-semibold shadow" : "text-slate-400 hover:bg-slate-700/50"}`
10404
10503
  },
10405
10504
  t === "Date Interval" ? "Intervalo" : t
10406
- )) : /* @__PURE__ */ React16.createElement("div", { className: "flex-1 flex items-center gap-2 px-2 py-1.5" }, /* @__PURE__ */ React16.createElement(FiCalendar, { className: "text-indigo-400", size: 12 }), /* @__PURE__ */ React16.createElement("span", { className: "text-xs font-medium text-slate-200" }, questDate.type === "Data" ? questDate.value || "Sem data" : `${questDate.start || "In\xEDcio"} - ${questDate.end || "Fim"}`))), /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-1" }, !questDate.confirmed ? /* @__PURE__ */ React16.createElement(
10505
+ )) : /* @__PURE__ */ React17.createElement("div", { className: "flex-1 flex items-center gap-2 px-2 py-1.5" }, /* @__PURE__ */ React17.createElement(FiCalendar, { className: "text-indigo-400", size: 12 }), /* @__PURE__ */ React17.createElement("span", { className: "text-xs font-medium text-slate-200" }, questDate.type === "Data" ? questDate.value || "Sem data" : `${questDate.start || "In\xEDcio"} - ${questDate.end || "Fim"}`))), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-1" }, !questDate.confirmed ? /* @__PURE__ */ React17.createElement(
10407
10506
  "button",
10408
10507
  {
10409
10508
  type: "button",
@@ -10411,8 +10510,8 @@ function InSceneQuestForm({
10411
10510
  className: "w-8 h-8 grid place-items-center rounded-lg bg-green-500/10 text-green-400 hover:bg-green-500/20 transition-colors",
10412
10511
  title: "Confirmar data"
10413
10512
  },
10414
- /* @__PURE__ */ React16.createElement(FiCheck9, { size: 14 })
10415
- ) : /* @__PURE__ */ React16.createElement(
10513
+ /* @__PURE__ */ React17.createElement(FiCheck9, { size: 14 })
10514
+ ) : /* @__PURE__ */ React17.createElement(
10416
10515
  "button",
10417
10516
  {
10418
10517
  type: "button",
@@ -10420,8 +10519,8 @@ function InSceneQuestForm({
10420
10519
  className: "w-8 h-8 grid place-items-center rounded-lg bg-indigo-500/10 text-indigo-400 hover:bg-indigo-500/20 transition-colors",
10421
10520
  title: "Editar data"
10422
10521
  },
10423
- /* @__PURE__ */ React16.createElement(FiEdit26, { size: 14 })
10424
- ), /* @__PURE__ */ React16.createElement(
10522
+ /* @__PURE__ */ React17.createElement(FiEdit26, { size: 14 })
10523
+ ), /* @__PURE__ */ React17.createElement(
10425
10524
  "button",
10426
10525
  {
10427
10526
  type: "button",
@@ -10429,8 +10528,8 @@ function InSceneQuestForm({
10429
10528
  className: "w-8 h-8 grid place-items-center rounded-lg bg-red-500/10 text-red-400 hover:bg-red-500/20 transition-colors",
10430
10529
  title: "Remover data"
10431
10530
  },
10432
- /* @__PURE__ */ React16.createElement(FiX5, { size: 14 })
10433
- ))), !questDate.confirmed && /* @__PURE__ */ React16.createElement("div", { className: "animate-in fade-in slide-in-from-top-1 duration-200" }, questDate.type === "Data" && /* @__PURE__ */ React16.createElement(
10531
+ /* @__PURE__ */ React17.createElement(FiX5, { size: 14 })
10532
+ ))), !questDate.confirmed && /* @__PURE__ */ React17.createElement("div", { className: "animate-in fade-in slide-in-from-top-1 duration-200" }, questDate.type === "Data" && /* @__PURE__ */ React17.createElement(
10434
10533
  "input",
10435
10534
  {
10436
10535
  type: "text",
@@ -10450,7 +10549,7 @@ function InSceneQuestForm({
10450
10549
  maxLength: "10",
10451
10550
  className: "w-full bg-slate-800/70 p-2 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
10452
10551
  }
10453
- ), questDate.type === "Date Interval" && /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(
10552
+ ), questDate.type === "Date Interval" && /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(
10454
10553
  "input",
10455
10554
  {
10456
10555
  type: "text",
@@ -10470,7 +10569,7 @@ function InSceneQuestForm({
10470
10569
  maxLength: "10",
10471
10570
  className: "flex-1 bg-slate-800/70 p-2 text-xs rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
10472
10571
  }
10473
- ), /* @__PURE__ */ React16.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React16.createElement(
10572
+ ), /* @__PURE__ */ React17.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React17.createElement(
10474
10573
  "input",
10475
10574
  {
10476
10575
  type: "text",
@@ -10490,39 +10589,39 @@ function InSceneQuestForm({
10490
10589
  maxLength: "10",
10491
10590
  className: "flex-1 bg-slate-800/70 p-2 text-xs rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
10492
10591
  }
10493
- ))))), /* @__PURE__ */ React16.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React16.createElement(FiRepeat, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ React16.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ React16.createElement(
10592
+ ))))), /* @__PURE__ */ React17.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(FiRepeat, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ React17.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ React17.createElement(
10494
10593
  "button",
10495
10594
  {
10496
10595
  type: "button",
10497
10596
  onClick: () => setRecurrenceConfig((prev) => ({ ...prev, enabled: !prev.enabled })),
10498
10597
  className: `relative inline-flex h-5 w-9 items-center rounded-full transition-colors focus:outline-none ${recurrenceConfig.enabled ? "bg-indigo-600" : "bg-slate-700"} cursor-pointer`
10499
10598
  },
10500
- /* @__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"}` })
10501
- )), recurrenceConfig.enabled && /* @__PURE__ */ React16.createElement("div", { className: "space-y-4 p-3 rounded-xl bg-white/5 border border-white/5 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React16.createElement("div", { className: "grid grid-cols-2 gap-3" }, /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Tipo"), /* @__PURE__ */ React16.createElement(
10599
+ /* @__PURE__ */ React17.createElement("span", { className: `inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform ${recurrenceConfig.enabled ? "translate-x-4.5" : "translate-x-1"}` })
10600
+ )), recurrenceConfig.enabled && /* @__PURE__ */ React17.createElement("div", { className: "space-y-4 p-3 rounded-xl bg-white/5 border border-white/5 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React17.createElement("div", { className: "grid grid-cols-2 gap-3" }, /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Tipo"), /* @__PURE__ */ React17.createElement(
10502
10601
  "select",
10503
10602
  {
10504
10603
  value: recurrenceConfig.type,
10505
10604
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, type: e.target.value })),
10506
10605
  className: "w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none focus:ring-1 focus:ring-indigo-500/50"
10507
10606
  },
10508
- /* @__PURE__ */ React16.createElement("option", { value: "daily" }, "Di\xE1ria"),
10509
- /* @__PURE__ */ React16.createElement("option", { value: "weekly" }, "Semanal"),
10510
- /* @__PURE__ */ React16.createElement("option", { value: "custom" }, "Data Espec\xEDfica")
10511
- )), recurrenceConfig.type === "weekly" && /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Dia da Semana"), /* @__PURE__ */ React16.createElement(
10607
+ /* @__PURE__ */ React17.createElement("option", { value: "daily" }, "Di\xE1ria"),
10608
+ /* @__PURE__ */ React17.createElement("option", { value: "weekly" }, "Semanal"),
10609
+ /* @__PURE__ */ React17.createElement("option", { value: "custom" }, "Data Espec\xEDfica")
10610
+ )), recurrenceConfig.type === "weekly" && /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Dia da Semana"), /* @__PURE__ */ React17.createElement(
10512
10611
  "select",
10513
10612
  {
10514
10613
  value: recurrenceConfig.day_of_week,
10515
10614
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, day_of_week: parseInt(e.target.value, 10) })),
10516
10615
  className: "w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none focus:ring-1 focus:ring-indigo-500/50"
10517
10616
  },
10518
- /* @__PURE__ */ React16.createElement("option", { value: 1 }, "Segunda-feira"),
10519
- /* @__PURE__ */ React16.createElement("option", { value: 2 }, "Ter\xE7a-feira"),
10520
- /* @__PURE__ */ React16.createElement("option", { value: 3 }, "Quarta-feira"),
10521
- /* @__PURE__ */ React16.createElement("option", { value: 4 }, "Quinta-feira"),
10522
- /* @__PURE__ */ React16.createElement("option", { value: 5 }, "Sexta-feira"),
10523
- /* @__PURE__ */ React16.createElement("option", { value: 6 }, "S\xE1bado"),
10524
- /* @__PURE__ */ React16.createElement("option", { value: 0 }, "Domingo")
10525
- )), recurrenceConfig.type === "custom" && /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3xima Data"), /* @__PURE__ */ React16.createElement(
10617
+ /* @__PURE__ */ React17.createElement("option", { value: 1 }, "Segunda-feira"),
10618
+ /* @__PURE__ */ React17.createElement("option", { value: 2 }, "Ter\xE7a-feira"),
10619
+ /* @__PURE__ */ React17.createElement("option", { value: 3 }, "Quarta-feira"),
10620
+ /* @__PURE__ */ React17.createElement("option", { value: 4 }, "Quinta-feira"),
10621
+ /* @__PURE__ */ React17.createElement("option", { value: 5 }, "Sexta-feira"),
10622
+ /* @__PURE__ */ React17.createElement("option", { value: 6 }, "S\xE1bado"),
10623
+ /* @__PURE__ */ React17.createElement("option", { value: 0 }, "Domingo")
10624
+ )), recurrenceConfig.type === "custom" && /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3xima Data"), /* @__PURE__ */ React17.createElement(
10526
10625
  "input",
10527
10626
  {
10528
10627
  type: "text",
@@ -10531,23 +10630,23 @@ function InSceneQuestForm({
10531
10630
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, custom_date: e.target.value })),
10532
10631
  className: "w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none focus:ring-1 focus:ring-indigo-500/50"
10533
10632
  }
10534
- ))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3ximo Respons\xE1vel"), /* @__PURE__ */ React16.createElement("div", { className: "relative" }, /* @__PURE__ */ React16.createElement(
10633
+ ))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3ximo Respons\xE1vel"), /* @__PURE__ */ React17.createElement("div", { className: "relative" }, /* @__PURE__ */ React17.createElement(
10535
10634
  "select",
10536
10635
  {
10537
10636
  value: recurrenceConfig.next_assignee_id,
10538
10637
  onChange: (e) => setRecurrenceConfig((prev) => ({ ...prev, next_assignee_id: e.target.value })),
10539
10638
  className: "w-full bg-slate-900/50 border border-white/10 rounded-lg pl-8 pr-2 py-1.5 text-xs text-slate-200 appearance-none focus:outline-none focus:ring-1 focus:ring-indigo-500/50"
10540
10639
  },
10541
- /* @__PURE__ */ React16.createElement("option", { value: "" }, "Sem respons\xE1vel"),
10542
- viewMembers.map((member) => /* @__PURE__ */ React16.createElement("option", { key: member.id, value: member.id }, member.name || member.email))
10543
- ), /* @__PURE__ */ React16.createElement(FiUser2, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500" }), /* @__PURE__ */ React16.createElement(FiChevronDown6, { className: "absolute right-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500 pointer-events-none" }))))), /* @__PURE__ */ React16.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React16.createElement(
10640
+ /* @__PURE__ */ React17.createElement("option", { value: "" }, "Sem respons\xE1vel"),
10641
+ viewMembers.map((member) => /* @__PURE__ */ React17.createElement("option", { key: member.id, value: member.id }, member.name || member.email))
10642
+ ), /* @__PURE__ */ React17.createElement(FiUser2, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500" }), /* @__PURE__ */ React17.createElement(FiChevronDown6, { className: "absolute right-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500 pointer-events-none" }))))), /* @__PURE__ */ React17.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React17.createElement(
10544
10643
  QuestReviewStackEditor,
10545
10644
  {
10546
10645
  reviewStack,
10547
10646
  onChange: setReviewStack,
10548
10647
  viewMembers
10549
10648
  }
10550
- )), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React16.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React16.createElement(
10649
+ )), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React17.createElement("div", { className: "relative group min-h-[80px] bg-slate-800/70 p-2.5 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React17.createElement(
10551
10650
  DescriptionDisplay,
10552
10651
  {
10553
10652
  description,
@@ -10557,31 +10656,42 @@ function InSceneQuestForm({
10557
10656
  onMentionClick,
10558
10657
  onSaveDescription: (newDesc) => setDescription(newDesc)
10559
10658
  }
10560
- ), /* @__PURE__ */ React16.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React16.createElement(
10659
+ ), /* @__PURE__ */ React17.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React17.createElement(
10561
10660
  "button",
10562
10661
  {
10563
10662
  type: "button",
10564
10663
  onClick: () => setIsDescriptionModalOpen(true),
10565
10664
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors"
10566
10665
  },
10567
- /* @__PURE__ */ React16.createElement(FiEdit26, { size: 14 })
10568
- )), !description && /* @__PURE__ */ React16.createElement(
10666
+ /* @__PURE__ */ React17.createElement(FiEdit26, { size: 14 })
10667
+ )), !description && /* @__PURE__ */ React17.createElement(
10569
10668
  "div",
10570
10669
  {
10571
10670
  onClick: () => setIsDescriptionModalOpen(true),
10572
10671
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
10573
10672
  },
10574
10673
  "Adicionar descri\xE7\xE3o..."
10575
- ))), /* @__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(
10674
+ ))), /* @__PURE__ */ React17.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React17.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider" }, "Propriedades Adicionais"), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, create_google_doc_action && /* @__PURE__ */ React17.createElement(
10675
+ "button",
10676
+ {
10677
+ type: "button",
10678
+ onClick: handleCreateGoogleDoc,
10679
+ disabled: isLoadingDocs,
10680
+ className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-transparent hover:bg-white/5 text-slate-300 border border-white/10 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
10681
+ title: "Criar Documento no Google Docs"
10682
+ },
10683
+ isLoadingDocs ? /* @__PURE__ */ React17.createElement(AiOutlineLoading3Quarters2, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React17.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" }),
10684
+ isLoadingDocs ? "Criando..." : "Google Doc"
10685
+ ), /* @__PURE__ */ React17.createElement(
10576
10686
  "button",
10577
10687
  {
10578
10688
  type: "button",
10579
10689
  onClick: handleAddProp,
10580
10690
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors"
10581
10691
  },
10582
- /* @__PURE__ */ React16.createElement(FiPlus6, { size: 14 }),
10692
+ /* @__PURE__ */ React17.createElement(FiPlus6, { size: 14 }),
10583
10693
  " Adicionar"
10584
- )), /* @__PURE__ */ React16.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React16.createElement(
10694
+ ))), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, index) => /* @__PURE__ */ React17.createElement(
10585
10695
  CustomPropertyDisplay,
10586
10696
  {
10587
10697
  key: prop.id,
@@ -10594,7 +10704,7 @@ function InSceneQuestForm({
10594
10704
  ),
10595
10705
  onUploadFile
10596
10706
  }
10597
- )), /* @__PURE__ */ React16.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tamanho no Node (Size)"), /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => /* @__PURE__ */ React16.createElement(
10707
+ )), /* @__PURE__ */ React17.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tamanho no Node (Size)"), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => /* @__PURE__ */ React17.createElement(
10598
10708
  "button",
10599
10709
  {
10600
10710
  key: s,
@@ -10605,37 +10715,37 @@ function InSceneQuestForm({
10605
10715
  },
10606
10716
  className: "flex items-center gap-2 group cursor-pointer focus:outline-none"
10607
10717
  },
10608
- /* @__PURE__ */ React16.createElement(
10718
+ /* @__PURE__ */ React17.createElement(
10609
10719
  "div",
10610
10720
  {
10611
10721
  className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${size === s ? "bg-indigo-500 border-indigo-500" : "border-slate-600 bg-transparent group-hover:border-slate-500"}`
10612
10722
  },
10613
- size === s && /* @__PURE__ */ React16.createElement(FiCheck9, { size: 12, className: "text-white" })
10723
+ size === s && /* @__PURE__ */ React17.createElement(FiCheck9, { size: 12, className: "text-white" })
10614
10724
  ),
10615
- /* @__PURE__ */ React16.createElement(
10725
+ /* @__PURE__ */ React17.createElement(
10616
10726
  "span",
10617
10727
  {
10618
10728
  className: `text-sm capitalize transition-colors ${size === s ? "text-white font-medium" : "text-slate-400 group-hover:text-slate-300"}`
10619
10729
  },
10620
10730
  s
10621
10731
  )
10622
- )))), /* @__PURE__ */ React16.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React16.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tipos Adicionais"), /* @__PURE__ */ React16.createElement("div", { className: "relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all" }, types.map((t, index) => /* @__PURE__ */ React16.createElement(
10732
+ )))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Tipos Adicionais"), /* @__PURE__ */ React17.createElement("div", { className: "relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all" }, types.map((t, index) => /* @__PURE__ */ React17.createElement(
10623
10733
  "span",
10624
10734
  {
10625
10735
  key: index,
10626
10736
  className: `flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border ${t === "quest" ? "bg-sky-500/20 text-sky-200 border-sky-500/30" : "bg-indigo-500/30 text-indigo-100 border-indigo-500/20"}`
10627
10737
  },
10628
10738
  t,
10629
- t !== "quest" && /* @__PURE__ */ React16.createElement(
10739
+ t !== "quest" && /* @__PURE__ */ React17.createElement(
10630
10740
  "button",
10631
10741
  {
10632
10742
  type: "button",
10633
10743
  onClick: () => handleRemoveType(index),
10634
10744
  className: "hover:text-white transition-colors"
10635
10745
  },
10636
- /* @__PURE__ */ React16.createElement(FiX5, { size: 12 })
10746
+ /* @__PURE__ */ React17.createElement(FiX5, { size: 12 })
10637
10747
  )
10638
- )), /* @__PURE__ */ React16.createElement(
10748
+ )), /* @__PURE__ */ React17.createElement(
10639
10749
  "input",
10640
10750
  {
10641
10751
  type: "text",
@@ -10648,7 +10758,7 @@ function InSceneQuestForm({
10648
10758
  className: "flex-1 bg-transparent text-sm min-w-[80px] focus:outline-none text-slate-200",
10649
10759
  autoComplete: "off"
10650
10760
  }
10651
- )))), /* @__PURE__ */ React16.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React16.createElement(
10761
+ )))), /* @__PURE__ */ React17.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React17.createElement(
10652
10762
  "button",
10653
10763
  {
10654
10764
  type: "button",
@@ -10656,7 +10766,7 @@ function InSceneQuestForm({
10656
10766
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm"
10657
10767
  },
10658
10768
  "Cancelar"
10659
- ), /* @__PURE__ */ React16.createElement(
10769
+ ), /* @__PURE__ */ React17.createElement(
10660
10770
  "button",
10661
10771
  {
10662
10772
  type: "submit",
@@ -10664,7 +10774,7 @@ function InSceneQuestForm({
10664
10774
  },
10665
10775
  "Salvar Quest"
10666
10776
  )))
10667
- ), isDescriptionModalOpen && /* @__PURE__ */ React16.createElement(
10777
+ ), isDescriptionModalOpen && /* @__PURE__ */ React17.createElement(
10668
10778
  DescriptionEditModal,
10669
10779
  {
10670
10780
  isOpen: isDescriptionModalOpen,
@@ -10680,9 +10790,10 @@ function InSceneQuestForm({
10680
10790
  }
10681
10791
 
10682
10792
  // src/components/NodeDetailsPanel.jsx
10683
- import React17, { useState as useState18, useEffect as useEffect15, useRef as useRef13 } from "react";
10793
+ import React18, { useState as useState18, useEffect as useEffect15, useRef as useRef13 } from "react";
10684
10794
  import { v4 as uuidv48 } from "uuid";
10685
10795
  import { FiPlus as FiPlus7, FiMaximize2 as FiMaximize23, FiX as FiX6, FiCheck as FiCheck10, FiImage as FiImage3, FiEdit2 as FiEdit27, FiLoader as FiLoader2, FiBookOpen as FiBookOpen3, FiSun as FiSun2, FiLink as FiLink5, FiDatabase } from "react-icons/fi";
10796
+ import { AiOutlineLoading3Quarters as AiOutlineLoading3Quarters3 } from "react-icons/ai";
10686
10797
  function NodeDetailsPanel({
10687
10798
  node,
10688
10799
  onClose,
@@ -10701,7 +10812,8 @@ function NodeDetailsPanel({
10701
10812
  onIntensityChange,
10702
10813
  onUploadFile,
10703
10814
  userRole,
10704
- currentDatasetName
10815
+ currentDatasetName,
10816
+ create_google_doc_action
10705
10817
  }) {
10706
10818
  const [name, setName] = useState18((node == null ? void 0 : node.name) ?? "");
10707
10819
  const [types, setTypes] = useState18([]);
@@ -10717,6 +10829,7 @@ function NodeDetailsPanel({
10717
10829
  const [isReadMode, setIsReadMode] = useState18(false);
10718
10830
  const [existingSections, setExistingSections] = useState18((node == null ? void 0 : node.description_sections) || []);
10719
10831
  const [isSaving, setIsSaving] = useState18(false);
10832
+ const [isLoadingDocs, setIsLoadingDocs] = useState18(false);
10720
10833
  const [isLinkCopied, setIsLinkCopied] = useState18(false);
10721
10834
  const [useImageAsTexture, setUseImageAsTexture] = useState18(() => {
10722
10835
  if ((node == null ? void 0 : node.useImageAsTexture) === "true") return true;
@@ -10871,6 +10984,39 @@ function NodeDetailsPanel({
10871
10984
  triggerAutoSave({ customProps: newProps });
10872
10985
  }
10873
10986
  };
10987
+ const handleCreateGoogleDoc = async () => {
10988
+ if (!name.trim()) {
10989
+ alert("Por favor, insira um nome para o node antes de criar o documento.");
10990
+ return;
10991
+ }
10992
+ if (!create_google_doc_action) return;
10993
+ try {
10994
+ setIsLoadingDocs(true);
10995
+ const res = await create_google_doc_action(name);
10996
+ if (res.success) {
10997
+ const newProp = {
10998
+ id: uuidv48(),
10999
+ key: "Google Docs",
11000
+ type: "links",
11001
+ value: [{ id: uuidv48(), name: "Abrir Documento", value: res.link }]
11002
+ };
11003
+ const updatedProps = [...customProps, newProp];
11004
+ setCustomProps(updatedProps);
11005
+ setHasUnsavedChanges(true);
11006
+ triggerAutoSave({ customProps: updatedProps });
11007
+ if (res.link) {
11008
+ window.open(res.link, "_blank");
11009
+ }
11010
+ } else {
11011
+ alert("Erro ao criar documento: " + res.error);
11012
+ }
11013
+ } catch (error) {
11014
+ console.error(error);
11015
+ alert("Erro ao processar cria\xE7\xE3o do documento.");
11016
+ } finally {
11017
+ setIsLoadingDocs(false);
11018
+ }
11019
+ };
10874
11020
  const handleToggleImageMode = () => {
10875
11021
  setUseImageAsTexture(newValue);
10876
11022
  setHasUnsavedChanges(true);
@@ -10967,7 +11113,7 @@ function NodeDetailsPanel({
10967
11113
  onClose();
10968
11114
  };
10969
11115
  const currentUsedTypes = customProps.map((p) => p.type).filter((t) => UNIQUE_PROP_TYPES.includes(t));
10970
- return /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
11116
+ return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(
10971
11117
  "div",
10972
11118
  {
10973
11119
  className: `ui-overlay absolute group rounded-2xl border border-white/10 bg-slate-950/70 backdrop-blur-xl shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white overflow-hidden flex flex-col ${isResizing ? "transition-none" : "transition-all duration-300 ease-out"}`,
@@ -10980,7 +11126,7 @@ function NodeDetailsPanel({
10980
11126
  onContextMenu: swallow,
10981
11127
  onDoubleClick: swallow
10982
11128
  },
10983
- /* @__PURE__ */ React17.createElement(
11129
+ /* @__PURE__ */ React18.createElement(
10984
11130
  "div",
10985
11131
  {
10986
11132
  onPointerDown: (e) => {
@@ -10991,7 +11137,7 @@ function NodeDetailsPanel({
10991
11137
  title: "Arraste para redimensionar"
10992
11138
  }
10993
11139
  ),
10994
- isReadMode ? /* @__PURE__ */ React17.createElement(
11140
+ isReadMode ? /* @__PURE__ */ React18.createElement(
10995
11141
  DescriptionReadModePanel,
10996
11142
  {
10997
11143
  title: name || (node == null ? void 0 : node.name),
@@ -11012,23 +11158,23 @@ function NodeDetailsPanel({
11012
11158
  onImageClick: handleImageClickFromText,
11013
11159
  onSaveDescription: handleSaveDescriptionInline
11014
11160
  }
11015
- ) : /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }), /* @__PURE__ */ React17.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React17.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React17.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-indigo-400/80 shadow-[0_0_18px_2px_rgba(99,102,241,0.55)]" }), /* @__PURE__ */ React17.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes do Node"), /* @__PURE__ */ React17.createElement(
11161
+ ) : /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }), /* @__PURE__ */ React18.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React18.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React18.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-indigo-400/80 shadow-[0_0_18px_2px_rgba(99,102,241,0.55)]" }), /* @__PURE__ */ React18.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes do Node"), /* @__PURE__ */ React18.createElement(
11016
11162
  "button",
11017
11163
  {
11018
11164
  onClick: handleCopyLink,
11019
11165
  className: `ml-1 p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-indigo-400"}`,
11020
11166
  title: isLinkCopied ? "Link Copiado!" : "Copiar link para este Node"
11021
11167
  },
11022
- isLinkCopied ? /* @__PURE__ */ React17.createElement(FiCheck10, { size: 12 }) : /* @__PURE__ */ React17.createElement(FiLink5, { size: 12 })
11023
- )), /* @__PURE__ */ React17.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, name || (node == null ? void 0 : node.name))), /* @__PURE__ */ React17.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl disabled:opacity-50", title: "Cancelar" }, "\xD7")), /* @__PURE__ */ React17.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Tipos"), /* @__PURE__ */ React17.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, types.map((t, index) => /* @__PURE__ */ React17.createElement("span", { key: index, className: "flex items-center gap-1 bg-indigo-500/30 text-indigo-100 px-1.5 py-0.5 rounded-md text-xs font-medium border border-indigo-500/20" }, t, canEdit && /* @__PURE__ */ React17.createElement(
11168
+ isLinkCopied ? /* @__PURE__ */ React18.createElement(FiCheck10, { size: 12 }) : /* @__PURE__ */ React18.createElement(FiLink5, { size: 12 })
11169
+ )), /* @__PURE__ */ React18.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, name || (node == null ? void 0 : node.name))), /* @__PURE__ */ React18.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl disabled:opacity-50", title: "Cancelar" }, "\xD7")), /* @__PURE__ */ React18.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300" }, "Tipos"), /* @__PURE__ */ React18.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, types.map((t, index) => /* @__PURE__ */ React18.createElement("span", { key: index, className: "flex items-center gap-1 bg-indigo-500/30 text-indigo-100 px-1.5 py-0.5 rounded-md text-xs font-medium border border-indigo-500/20" }, t, canEdit && /* @__PURE__ */ React18.createElement(
11024
11170
  "button",
11025
11171
  {
11026
11172
  type: "button",
11027
11173
  onClick: () => handleRemoveType(index),
11028
11174
  className: "hover:text-white transition-colors"
11029
11175
  },
11030
- /* @__PURE__ */ React17.createElement(FiX6, { size: 12 })
11031
- ))), canEdit && /* @__PURE__ */ React17.createElement(
11176
+ /* @__PURE__ */ React18.createElement(FiX6, { size: 12 })
11177
+ ))), canEdit && /* @__PURE__ */ React18.createElement(
11032
11178
  "input",
11033
11179
  {
11034
11180
  type: "text",
@@ -11049,7 +11195,7 @@ function NodeDetailsPanel({
11049
11195
  placeholder: types.length === 0 ? "Ex.: Cliente" : "",
11050
11196
  autoComplete: "off"
11051
11197
  }
11052
- ), canEdit && showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React17.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-10 w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredTypes.map((suggestedType, index) => /* @__PURE__ */ React17.createElement(
11198
+ ), canEdit && showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React18.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-10 w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredTypes.map((suggestedType, index) => /* @__PURE__ */ React18.createElement(
11053
11199
  "li",
11054
11200
  {
11055
11201
  key: index,
@@ -11060,7 +11206,7 @@ function NodeDetailsPanel({
11060
11206
  }
11061
11207
  },
11062
11208
  suggestedType
11063
- ))))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Nome"), /* @__PURE__ */ React17.createElement(
11209
+ ))))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300" }, "Nome"), /* @__PURE__ */ React18.createElement(
11064
11210
  "input",
11065
11211
  {
11066
11212
  type: "text",
@@ -11069,7 +11215,7 @@ function NodeDetailsPanel({
11069
11215
  readOnly: !canEdit,
11070
11216
  className: `w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none ${canEdit ? "focus:ring-2 focus:ring-indigo-400/60" : "cursor-default text-slate-400"}`
11071
11217
  }
11072
- )), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React17.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React17.createElement(
11218
+ )), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React18.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React18.createElement(
11073
11219
  DescriptionDisplay,
11074
11220
  {
11075
11221
  description,
@@ -11081,7 +11227,7 @@ function NodeDetailsPanel({
11081
11227
  onImageClick: handleImageClickFromText,
11082
11228
  onSaveDescription: handleSaveDescriptionInline
11083
11229
  }
11084
- ), /* @__PURE__ */ React17.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React17.createElement(
11230
+ ), /* @__PURE__ */ React18.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React18.createElement(
11085
11231
  "button",
11086
11232
  {
11087
11233
  type: "button",
@@ -11089,8 +11235,8 @@ function NodeDetailsPanel({
11089
11235
  className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`,
11090
11236
  title: "Modo de Leitura"
11091
11237
  },
11092
- /* @__PURE__ */ React17.createElement(FiBookOpen3, { size: 14 })
11093
- ), canEdit && /* @__PURE__ */ React17.createElement(
11238
+ /* @__PURE__ */ React18.createElement(FiBookOpen3, { size: 14 })
11239
+ ), canEdit && /* @__PURE__ */ React18.createElement(
11094
11240
  "button",
11095
11241
  {
11096
11242
  type: "button",
@@ -11098,17 +11244,17 @@ function NodeDetailsPanel({
11098
11244
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
11099
11245
  title: "Editar descri\xE7\xE3o (Modo de Escrita)"
11100
11246
  },
11101
- /* @__PURE__ */ React17.createElement(FiEdit27, { size: 14 })
11102
- )), canEdit && !description && /* @__PURE__ */ React17.createElement(
11247
+ /* @__PURE__ */ React18.createElement(FiEdit27, { size: 14 })
11248
+ )), canEdit && !description && /* @__PURE__ */ React18.createElement(
11103
11249
  "div",
11104
11250
  {
11105
11251
  onClick: () => setIsDescriptionModalOpen(true),
11106
11252
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
11107
11253
  },
11108
11254
  "Adicionar descri\xE7\xE3o..."
11109
- ))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
11255
+ ))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300" }, "Size"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
11110
11256
  const isSelected = size === s;
11111
- return /* @__PURE__ */ React17.createElement(
11257
+ return /* @__PURE__ */ React18.createElement(
11112
11258
  "button",
11113
11259
  {
11114
11260
  key: s,
@@ -11116,10 +11262,10 @@ function NodeDetailsPanel({
11116
11262
  onClick: () => canEdit && handleSizeChange(s),
11117
11263
  className: `flex items-center gap-2 group focus:outline-none ${canEdit ? "cursor-pointer" : "cursor-default opacity-80"}`
11118
11264
  },
11119
- /* @__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" })),
11120
- /* @__PURE__ */ React17.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s)
11265
+ /* @__PURE__ */ React18.createElement("div", { className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent " + (canEdit ? "group-hover:border-slate-500" : "")}` }, isSelected && /* @__PURE__ */ React18.createElement(FiCheck10, { size: 12, className: "text-white" })),
11266
+ /* @__PURE__ */ React18.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s)
11121
11267
  );
11122
- }))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Cor e Brilho"), canEdit && hasImages && /* @__PURE__ */ React17.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React17.createElement("div", { className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}` }, useImageAsTexture && /* @__PURE__ */ React17.createElement(FiCheck10, { size: 12, className: "text-white" })), /* @__PURE__ */ React17.createElement(
11268
+ }))), /* @__PURE__ */ React18.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React18.createElement("label", { className: "text-xs text-slate-300" }, "Cor e Brilho"), canEdit && hasImages && /* @__PURE__ */ React18.createElement("label", { className: "flex items-center gap-2 cursor-pointer group" }, /* @__PURE__ */ React18.createElement("div", { className: `w-4 h-4 rounded border flex items-center justify-center transition-colors ${useImageAsTexture ? "bg-indigo-500 border-indigo-500" : "border-slate-500 bg-transparent"}` }, useImageAsTexture && /* @__PURE__ */ React18.createElement(FiCheck10, { size: 12, className: "text-white" })), /* @__PURE__ */ React18.createElement(
11123
11269
  "input",
11124
11270
  {
11125
11271
  type: "checkbox",
@@ -11127,14 +11273,14 @@ function NodeDetailsPanel({
11127
11273
  onChange: handleToggleImageMode,
11128
11274
  className: "hidden"
11129
11275
  }
11130
- ), /* @__PURE__ */ React17.createElement("span", { className: `text-xs ${useImageAsTexture ? "text-indigo-300" : "text-slate-400 group-hover:text-slate-300"}` }, "Usar imagem para representar o node"))), /* @__PURE__ */ React17.createElement(
11276
+ ), /* @__PURE__ */ React18.createElement("span", { className: `text-xs ${useImageAsTexture ? "text-indigo-300" : "text-slate-400 group-hover:text-slate-300"}` }, "Usar imagem para representar o node"))), /* @__PURE__ */ React18.createElement(
11131
11277
  ColorPicker,
11132
11278
  {
11133
11279
  color,
11134
11280
  onChange: handleColorChange,
11135
11281
  disabled: !canEdit || useImageAsTexture
11136
11282
  }
11137
- ), /* @__PURE__ */ React17.createElement("div", { className: "mt-3 flex items-center gap-3" }, /* @__PURE__ */ React17.createElement(FiSun2, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React17.createElement(
11283
+ ), /* @__PURE__ */ React18.createElement("div", { className: "mt-3 flex items-center gap-3" }, /* @__PURE__ */ React18.createElement(FiSun2, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React18.createElement(
11138
11284
  "input",
11139
11285
  {
11140
11286
  type: "range",
@@ -11147,7 +11293,27 @@ function NodeDetailsPanel({
11147
11293
  className: `w-full h-1.5 bg-slate-700 rounded-lg appearance-none ${canEdit ? "cursor-pointer accent-indigo-500 hover:accent-indigo-400" : "cursor-default accent-slate-500"}`,
11148
11294
  title: `Intensidade do brilho: ${intensity}`
11149
11295
  }
11150
- ), /* @__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"), canEdit && /* @__PURE__ */ React17.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__ */ React17.createElement(FiPlus7, { size: 14 }), " Adicionar")), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React17.createElement(
11296
+ ), /* @__PURE__ */ React18.createElement("span", { className: "text-xs text-slate-400 w-6 text-right" }, intensity)), /* @__PURE__ */ React18.createElement("span", { className: `text-xs block mt-1 transition-opacity ${useImageAsTexture ? "opacity-40" : "text-slate-400"}` }, useImageAsTexture ? "Cor da borda (definida pela imagem)" : "Ajuste a cor e a intensidade do brilho.")), /* @__PURE__ */ React18.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React18.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, canEdit && create_google_doc_action && /* @__PURE__ */ React18.createElement(
11297
+ "button",
11298
+ {
11299
+ type: "button",
11300
+ onClick: handleCreateGoogleDoc,
11301
+ disabled: isLoadingDocs,
11302
+ className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-transparent hover:bg-white/5 text-slate-300 border border-white/10 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
11303
+ title: "Criar Documento no Google Docs"
11304
+ },
11305
+ isLoadingDocs ? /* @__PURE__ */ React18.createElement(AiOutlineLoading3Quarters3, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React18.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" }),
11306
+ isLoadingDocs ? "Criando..." : "Google Doc"
11307
+ ), canEdit && /* @__PURE__ */ React18.createElement(
11308
+ "button",
11309
+ {
11310
+ type: "button",
11311
+ onClick: handleAddProp,
11312
+ className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors"
11313
+ },
11314
+ /* @__PURE__ */ React18.createElement(FiPlus7, { size: 14 }),
11315
+ " Adicionar"
11316
+ ))), /* @__PURE__ */ React18.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React18.createElement(
11151
11317
  CustomPropertyDisplay,
11152
11318
  {
11153
11319
  key: prop.id,
@@ -11162,7 +11328,7 @@ function NodeDetailsPanel({
11162
11328
  onUploadFile: canEdit ? onUploadFile : void 0,
11163
11329
  readOnly: !canEdit
11164
11330
  }
11165
- )), /* @__PURE__ */ React17.createElement("div", { ref: propsEndRef }))), currentDatasetName && /* @__PURE__ */ React17.createElement("div", { className: "pt-3 mt-4 border-t border-white/10 flex items-center justify-end gap-2 text-xs text-slate-400" }, /* @__PURE__ */ React17.createElement("span", { className: "truncate text-right" }, /* @__PURE__ */ React17.createElement("span", { className: "text-slate-200 font-medium" }, currentDatasetName)))), /* @__PURE__ */ React17.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React17.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm disabled:opacity-50" }, canEdit ? "Cancelar" : "Fechar"), canEdit && /* @__PURE__ */ React17.createElement(
11331
+ )), /* @__PURE__ */ React18.createElement("div", { ref: propsEndRef }))), currentDatasetName && /* @__PURE__ */ React18.createElement("div", { className: "pt-3 mt-4 border-t border-white/10 flex items-center justify-end gap-2 text-xs text-slate-400" }, /* @__PURE__ */ React18.createElement("span", { className: "truncate text-right" }, /* @__PURE__ */ React18.createElement("span", { className: "text-slate-200 font-medium" }, currentDatasetName)))), /* @__PURE__ */ React18.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React18.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm disabled:opacity-50" }, canEdit ? "Cancelar" : "Fechar"), canEdit && /* @__PURE__ */ React18.createElement(
11166
11332
  "button",
11167
11333
  {
11168
11334
  onClick: () => handleSave(false),
@@ -11171,10 +11337,10 @@ function NodeDetailsPanel({
11171
11337
  ${isSaving ? "bg-slate-700 text-slate-300 cursor-wait" : "bg-gradient-to-tr from-indigo-600 to-indigo-400 hover:from-indigo-500 hover:to-indigo-300 text-white"}
11172
11338
  `
11173
11339
  },
11174
- isSaving && /* @__PURE__ */ React17.createElement(FiLoader2, { className: "animate-spin" }),
11340
+ isSaving && /* @__PURE__ */ React18.createElement(FiLoader2, { className: "animate-spin" }),
11175
11341
  isSaving ? "Salvando..." : "Salvar"
11176
11342
  )))
11177
- ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React17.createElement(
11343
+ ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React18.createElement(
11178
11344
  DescriptionEditModal,
11179
11345
  {
11180
11346
  isOpen: isDescriptionModalOpen,
@@ -11195,12 +11361,12 @@ function NodeDetailsPanel({
11195
11361
  }
11196
11362
 
11197
11363
  // src/components/QuestDetailsPanel.jsx
11198
- import React19, { useState as useState19, useEffect as useEffect16, useRef as useRef14 } from "react";
11364
+ import React20, { useState as useState19, useEffect as useEffect16, useRef as useRef14 } from "react";
11199
11365
  import { v4 as uuidv49 } from "uuid";
11200
11366
  import { FiPlus as FiPlus8, FiX as FiX7, FiCheck as FiCheck11, FiEdit2 as FiEdit28, FiLoader as FiLoader3, FiBookOpen as FiBookOpen4, FiLink as FiLink7, FiTarget as FiTarget3, FiChevronDown as FiChevronDown7, FiUser as FiUser3, FiSearch as FiSearch7, FiRepeat as FiRepeat2, FiCalendar as FiCalendar2, FiImage as FiImage4, FiCopy as FiCopy4 } from "react-icons/fi";
11201
11367
 
11202
11368
  // src/components/QuestTimeline.jsx
11203
- import React18 from "react";
11369
+ import React19 from "react";
11204
11370
  import {
11205
11371
  FiGitCommit,
11206
11372
  FiUserPlus,
@@ -11239,25 +11405,25 @@ function QuestTimeline({
11239
11405
  }).format(date);
11240
11406
  };
11241
11407
  if (timeline.length === 0) {
11242
- return /* @__PURE__ */ React18.createElement("div", { className: "py-6 flex flex-col items-center justify-center gap-2 border border-white/5 bg-white/5 rounded-xl" }, /* @__PURE__ */ React18.createElement(FiAlertCircle, { className: "text-slate-600", size: 16 }), /* @__PURE__ */ React18.createElement("p", { className: "text-[10px] text-slate-500 font-light uppercase tracking-widest" }, "Nenhum hist\xF3rico dispon\xEDvel"));
11408
+ return /* @__PURE__ */ React19.createElement("div", { className: "py-6 flex flex-col items-center justify-center gap-2 border border-white/5 bg-white/5 rounded-xl" }, /* @__PURE__ */ React19.createElement(FiAlertCircle, { className: "text-slate-600", size: 16 }), /* @__PURE__ */ React19.createElement("p", { className: "text-[10px] text-slate-500 font-light uppercase tracking-widest" }, "Nenhum hist\xF3rico dispon\xEDvel"));
11243
11409
  }
11244
- return /* @__PURE__ */ React18.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React18.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider flex items-center gap-2" }, "Hist\xF3rico (Timeline)"), /* @__PURE__ */ React18.createElement("div", { className: "relative pl-10 space-y-6 before:content-[''] before:absolute before:left-[21px] before:top-2 before:bottom-2 before:w-[2px] before:bg-white/5" }, sortedTimeline.map((event, index) => {
11410
+ return /* @__PURE__ */ React19.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-xs text-slate-400 font-medium uppercase tracking-wider flex items-center gap-2" }, "Hist\xF3rico (Timeline)"), /* @__PURE__ */ React19.createElement("div", { className: "relative pl-10 space-y-6 before:content-[''] before:absolute before:left-[21px] before:top-2 before:bottom-2 before:w-[2px] before:bg-white/5" }, sortedTimeline.map((event, index) => {
11245
11411
  const config = DEFAULT_ICON_CONFIG;
11246
11412
  const Icon = config.icon;
11247
11413
  const actorName = getMemberName(event.actorId);
11248
- return /* @__PURE__ */ React18.createElement("div", { key: event.id || index, className: "relative animate-in fade-in slide-in-from-left-2 duration-300", style: { animationDelay: `${index * 50}ms` } }, /* @__PURE__ */ React18.createElement("div", { className: `absolute -left-[35px] top-0 w-8 h-8 rounded-full ${config.bg} flex items-center justify-center ring-4 ring-slate-950 border border-white/5` }, /* @__PURE__ */ React18.createElement(Icon, { className: config.iconColor || config.color, size: 14 })), /* @__PURE__ */ React18.createElement("div", { className: "group space-y-1" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React18.createElement("span", { className: "text-xs font-semibold text-slate-200" }, actorName), canEdit && onAddNote && /* @__PURE__ */ React18.createElement(
11414
+ return /* @__PURE__ */ React19.createElement("div", { key: event.id || index, className: "relative animate-in fade-in slide-in-from-left-2 duration-300", style: { animationDelay: `${index * 50}ms` } }, /* @__PURE__ */ React19.createElement("div", { className: `absolute -left-[35px] top-0 w-8 h-8 rounded-full ${config.bg} flex items-center justify-center ring-4 ring-slate-950 border border-white/5` }, /* @__PURE__ */ React19.createElement(Icon, { className: config.iconColor || config.color, size: 14 })), /* @__PURE__ */ React19.createElement("div", { className: "group space-y-1" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement("span", { className: "text-xs font-semibold text-slate-200" }, actorName), canEdit && onAddNote && /* @__PURE__ */ React19.createElement(
11249
11415
  "button",
11250
11416
  {
11251
11417
  onClick: () => onAddNote(event),
11252
11418
  className: "opacity-0 group-hover:opacity-100 p-1 rounded-md hover:bg-white/5 text-slate-500 hover:text-indigo-400 transition-all",
11253
11419
  title: "Adicionar detalhe/anexo a esta etapa"
11254
11420
  },
11255
- /* @__PURE__ */ React18.createElement(FiPlusCircle, { size: 12 })
11256
- )), /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-slate-500 tabular-nums" }, formatDate(event.timestamp))), /* @__PURE__ */ React18.createElement("p", { className: "text-sm text-slate-400 leading-relaxed" }, event.description), event.notes && /* @__PURE__ */ React18.createElement("div", { className: "mt-1 py-1 px-2 rounded bg-indigo-500/5 border-l-2 border-indigo-500/30" }, /* @__PURE__ */ React18.createElement("p", { className: "text-[11px] text-slate-300 italic whitespace-pre-wrap" }, event.notes)), (event.from_status || event.to_status) && /* @__PURE__ */ React18.createElement("div", { className: "flex items-center gap-1.5 py-1 px-2 rounded-md bg-white/5 border border-white/5 w-fit mt-2" }, /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-slate-500" }, event.from_status || "?"), /* @__PURE__ */ React18.createElement(FiArrowRight, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ React18.createElement("span", { className: "text-[10px] text-indigo-300 font-bold" }, event.to_status || "?")), event.metadata && Object.keys(event.metadata).length > 0 && /* @__PURE__ */ React18.createElement("div", { className: "mt-2 text-[10px] grid grid-cols-2 gap-2 p-2 bg-slate-900/50 rounded border border-white/5" }, Object.entries(event.metadata).map(([key, value]) => {
11421
+ /* @__PURE__ */ React19.createElement(FiPlusCircle, { size: 12 })
11422
+ )), /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-slate-500 tabular-nums" }, formatDate(event.timestamp))), /* @__PURE__ */ React19.createElement("p", { className: "text-sm text-slate-400 leading-relaxed" }, event.description), event.notes && /* @__PURE__ */ React19.createElement("div", { className: "mt-1 py-1 px-2 rounded bg-indigo-500/5 border-l-2 border-indigo-500/30" }, /* @__PURE__ */ React19.createElement("p", { className: "text-[11px] text-slate-300 italic whitespace-pre-wrap" }, event.notes)), (event.from_status || event.to_status) && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-1.5 py-1 px-2 rounded-md bg-white/5 border border-white/5 w-fit mt-2" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-slate-500" }, event.from_status || "?"), /* @__PURE__ */ React19.createElement(FiArrowRight, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-indigo-300 font-bold" }, event.to_status || "?")), event.metadata && Object.keys(event.metadata).length > 0 && /* @__PURE__ */ React19.createElement("div", { className: "mt-2 text-[10px] grid grid-cols-2 gap-2 p-2 bg-slate-900/50 rounded border border-white/5" }, Object.entries(event.metadata).map(([key, value]) => {
11257
11423
  const isAssigneeId = key.toLowerCase().includes("assignee_id") || key.toLowerCase().includes("respons\xE1vel") || key.toLowerCase().includes("assignee id");
11258
11424
  const displayValue = isAssigneeId && typeof value === "string" ? getMemberName(value) : typeof value === "string" ? value : JSON.stringify(value);
11259
- 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));
11260
- })), event.links && event.links.length > 0 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.links.map((link, lIdx) => /* @__PURE__ */ React18.createElement(
11425
+ return /* @__PURE__ */ React19.createElement("div", { key, className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React19.createElement("span", { className: "text-slate-500 capitalize" }, key.replace(/_/g, " ")), /* @__PURE__ */ React19.createElement("span", { className: `${isAssigneeId ? "text-indigo-300 font-medium" : "text-slate-300"} truncate font-mono` }, displayValue));
11426
+ })), event.links && event.links.length > 0 && /* @__PURE__ */ React19.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.links.map((link, lIdx) => /* @__PURE__ */ React19.createElement(
11261
11427
  "a",
11262
11428
  {
11263
11429
  key: lIdx,
@@ -11266,9 +11432,9 @@ function QuestTimeline({
11266
11432
  rel: "noopener noreferrer",
11267
11433
  className: "flex items-center gap-1.5 px-2 py-1 rounded bg-white/5 border border-white/5 hover:bg-white/10 transition-colors text-[10px] text-sky-400 font-medium"
11268
11434
  },
11269
- /* @__PURE__ */ React18.createElement(FiLink6, { size: 10 }),
11435
+ /* @__PURE__ */ React19.createElement(FiLink6, { size: 10 }),
11270
11436
  link.name || "Link"
11271
- ))), event.images && event.images.length > 0 && /* @__PURE__ */ React18.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.images.map((img, iIdx) => /* @__PURE__ */ React18.createElement(
11437
+ ))), event.images && event.images.length > 0 && /* @__PURE__ */ React19.createElement("div", { className: "flex flex-wrap gap-2 mt-2" }, event.images.map((img, iIdx) => /* @__PURE__ */ React19.createElement(
11272
11438
  "button",
11273
11439
  {
11274
11440
  key: iIdx,
@@ -11276,13 +11442,14 @@ function QuestTimeline({
11276
11442
  onClick: () => onOpenImageViewer == null ? void 0 : onOpenImageViewer(event.images, iIdx),
11277
11443
  className: "relative w-12 h-12 rounded border border-white/10 overflow-hidden hover:border-sky-500/50 transition-colors group/img"
11278
11444
  },
11279
- /* @__PURE__ */ React18.createElement("img", { src: img.value, alt: img.name, className: "w-full h-full object-cover" }),
11280
- /* @__PURE__ */ React18.createElement("div", { className: "absolute inset-0 bg-slate-900/40 opacity-0 group-hover/img:opacity-100 flex items-center justify-center transition-opacity" }, /* @__PURE__ */ React18.createElement(FiSearch6, { size: 12, className: "text-white" }))
11445
+ /* @__PURE__ */ React19.createElement("img", { src: img.value, alt: img.name, className: "w-full h-full object-cover" }),
11446
+ /* @__PURE__ */ React19.createElement("div", { className: "absolute inset-0 bg-slate-900/40 opacity-0 group-hover/img:opacity-100 flex items-center justify-center transition-opacity" }, /* @__PURE__ */ React19.createElement(FiSearch6, { size: 12, className: "text-white" }))
11281
11447
  )))));
11282
11448
  })));
11283
11449
  }
11284
11450
 
11285
11451
  // src/components/QuestDetailsPanel.jsx
11452
+ import { AiOutlineLoading3Quarters as AiOutlineLoading3Quarters4 } from "react-icons/ai";
11286
11453
  var QUEST_STATUS_COLORS3 = {
11287
11454
  "Backlog": "#64748b",
11288
11455
  "In Progress": "#eab308",
@@ -11311,7 +11478,8 @@ function QuestDetailsPanel({
11311
11478
  milestones = [],
11312
11479
  onUpdateMilestones = () => {
11313
11480
  },
11314
- onFocusNode
11481
+ onFocusNode,
11482
+ create_google_doc_action
11315
11483
  }) {
11316
11484
  var _a, _b;
11317
11485
  const initialRawTitle = (node == null ? void 0 : node.raw_title) || (((_a = node == null ? void 0 : node.name) == null ? void 0 : _a.includes(" - \xBB ")) ? node.name.split(" - \xBB ")[1] : node == null ? void 0 : node.name) || "";
@@ -11345,6 +11513,7 @@ function QuestDetailsPanel({
11345
11513
  const [isSaving, setIsSaving] = useState19(false);
11346
11514
  const [isLinkCopied, setIsLinkCopied] = useState19(false);
11347
11515
  const [isNameCopied, setIsNameCopied] = useState19(false);
11516
+ const [isLoadingDocs, setIsLoadingDocs] = useState19(false);
11348
11517
  const [hasUnsavedChanges, setHasUnsavedChanges] = useState19(false);
11349
11518
  const [questDate, setQuestDate] = useState19((node == null ? void 0 : node.Date) || null);
11350
11519
  const [noteText, setNoteText] = useState19("");
@@ -11370,11 +11539,11 @@ function QuestDetailsPanel({
11370
11539
  const [showMilestoneSuggestions, setShowMilestoneSuggestions] = useState19(false);
11371
11540
  const [dependencyInput, setDependencyInput] = useState19("");
11372
11541
  const [showDependencySuggestions, setShowDependencySuggestions] = useState19(false);
11373
- const activeMilestones = React19.useMemo(
11542
+ const activeMilestones = React20.useMemo(
11374
11543
  () => (milestones || []).filter((ms) => ms.status === "active"),
11375
11544
  [milestones]
11376
11545
  );
11377
- const filteredMilestones = React19.useMemo(() => {
11546
+ const filteredMilestones = React20.useMemo(() => {
11378
11547
  const search = milestoneInput.toLowerCase().trim();
11379
11548
  return activeMilestones.filter(
11380
11549
  (ms) => ms.name.toLowerCase().includes(search) && !milestoneIds.includes(ms.id)
@@ -11413,11 +11582,11 @@ function QuestDetailsPanel({
11413
11582
  handleRemoveMilestone(milestoneIds[milestoneIds.length - 1]);
11414
11583
  }
11415
11584
  };
11416
- const dependencyQuests = React19.useMemo(
11585
+ const dependencyQuests = React20.useMemo(
11417
11586
  () => availableNodes.filter((n) => n.is_quest && String(n.id) !== String(node == null ? void 0 : node.id)),
11418
11587
  [availableNodes, node == null ? void 0 : node.id]
11419
11588
  );
11420
- const filteredDependencies = React19.useMemo(() => {
11589
+ const filteredDependencies = React20.useMemo(() => {
11421
11590
  const search = dependencyInput.toLowerCase().trim();
11422
11591
  return dependencyQuests.filter((q) => {
11423
11592
  var _a2;
@@ -11447,7 +11616,7 @@ function QuestDetailsPanel({
11447
11616
  handleRemoveDependency(dependencyIds[dependencyIds.length - 1]);
11448
11617
  }
11449
11618
  };
11450
- const blockedStatus = React19.useMemo(
11619
+ const blockedStatus = React20.useMemo(
11451
11620
  () => isQuestBlocked({ ...node, dependency_ids: dependencyIds }, availableNodes),
11452
11621
  [node, dependencyIds, availableNodes]
11453
11622
  );
@@ -11745,6 +11914,39 @@ ${noteText}` : noteText : entry.notes,
11745
11914
  triggerAutoSave({ customProps: newProps });
11746
11915
  }
11747
11916
  };
11917
+ const handleCreateGoogleDoc = async () => {
11918
+ if (!rawTitle.trim()) {
11919
+ alert("Por favor, insira um t\xEDtulo para a quest antes de criar o documento.");
11920
+ return;
11921
+ }
11922
+ if (!create_google_doc_action) return;
11923
+ try {
11924
+ setIsLoadingDocs(true);
11925
+ const res = await create_google_doc_action(standardizedName);
11926
+ if (res.success) {
11927
+ const newProp = {
11928
+ id: uuidv49(),
11929
+ key: "Google Docs",
11930
+ type: "links",
11931
+ value: [{ id: uuidv49(), name: "Abrir Documento", value: res.link }]
11932
+ };
11933
+ const updatedProps = [...customProps, newProp];
11934
+ setCustomProps(updatedProps);
11935
+ setHasUnsavedChanges(true);
11936
+ triggerAutoSave({ customProps: updatedProps });
11937
+ if (res.link) {
11938
+ window.open(res.link, "_blank");
11939
+ }
11940
+ } else {
11941
+ alert("Erro ao criar documento: " + res.error);
11942
+ }
11943
+ } catch (error) {
11944
+ console.error(error);
11945
+ alert("Erro ao processar cria\xE7\xE3o do documento.");
11946
+ } finally {
11947
+ setIsLoadingDocs(false);
11948
+ }
11949
+ };
11748
11950
  const handleSaveDescriptionInline = (newDescription) => {
11749
11951
  setDescription(newDescription);
11750
11952
  setHasUnsavedChanges(true);
@@ -11825,7 +12027,7 @@ ${noteText}` : noteText : entry.notes,
11825
12027
  const currentUsedTypes = customProps.map((p) => p.type).filter((t) => UNIQUE_PROP_TYPES.includes(t));
11826
12028
  const assigneeMember = viewMembers.find((m) => m.id === assigneeId);
11827
12029
  const isAssigneeUndefined = assigneeId && !assigneeMember;
11828
- return /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement(
12030
+ return /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement(
11829
12031
  "div",
11830
12032
  {
11831
12033
  className: `ui-overlay absolute group rounded-2xl border border-white/10 bg-slate-950/70 backdrop-blur-xl shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white overflow-hidden flex flex-col ${isResizing ? "transition-none" : "transition-all duration-300 ease-out"}`,
@@ -11838,11 +12040,11 @@ ${noteText}` : noteText : entry.notes,
11838
12040
  onContextMenu: swallow,
11839
12041
  onDoubleClick: swallow
11840
12042
  },
11841
- /* @__PURE__ */ React19.createElement("div", { onPointerDown: (e) => {
12043
+ /* @__PURE__ */ React20.createElement("div", { onPointerDown: (e) => {
11842
12044
  e.stopPropagation();
11843
12045
  handleResize(e);
11844
12046
  }, className: "absolute left-0 top-0 bottom-0 w-2 cursor-col-resize hover:bg-indigo-500/50 z-[2000] transition-colors", title: "Arraste para redimensionar" }),
11845
- isReadMode ? /* @__PURE__ */ React19.createElement(
12047
+ isReadMode ? /* @__PURE__ */ React20.createElement(
11846
12048
  DescriptionReadModePanel,
11847
12049
  {
11848
12050
  title: standardizedName || (node == null ? void 0 : node.name),
@@ -11863,7 +12065,7 @@ ${noteText}` : noteText : entry.notes,
11863
12065
  onImageClick: handleImageClickFromText,
11864
12066
  onSaveDescription: handleSaveDescriptionInline
11865
12067
  }
11866
- ) : /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "h-[2px]", style: { background: `linear-gradient(to right, transparent, ${QUEST_STATUS_COLORS3[status]}, transparent)` } }), /* @__PURE__ */ React19.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React19.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React19.createElement(FiTarget3, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React19.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Quest"), /* @__PURE__ */ React19.createElement("button", { onClick: handleCopyLink, className: `ml-1 p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-sky-400"}`, title: isLinkCopied ? "Link Copiado!" : "Copiar link para esta Quest" }, isLinkCopied ? /* @__PURE__ */ React19.createElement(FiCheck11, { size: 12 }) : /* @__PURE__ */ React19.createElement(FiLink7, { size: 12 }))), /* @__PURE__ */ React19.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, standardizedName || (node == null ? void 0 : node.name))), /* @__PURE__ */ React19.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl disabled:opacity-50", title: "Cancelar" }, "\xD7")), /* @__PURE__ */ React19.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "T\xEDtulo da Quest"), /* @__PURE__ */ React19.createElement(
12068
+ ) : /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "h-[2px]", style: { background: `linear-gradient(to right, transparent, ${QUEST_STATUS_COLORS3[status]}, transparent)` } }), /* @__PURE__ */ React20.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React20.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React20.createElement(FiTarget3, { className: "text-sky-400", size: 14 }), /* @__PURE__ */ React20.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Quest"), /* @__PURE__ */ React20.createElement("button", { onClick: handleCopyLink, className: `ml-1 p-1 transition-colors ${isLinkCopied ? "text-green-400" : "text-slate-400 hover:text-sky-400"}`, title: isLinkCopied ? "Link Copiado!" : "Copiar link para esta Quest" }, isLinkCopied ? /* @__PURE__ */ React20.createElement(FiCheck11, { size: 12 }) : /* @__PURE__ */ React20.createElement(FiLink7, { size: 12 }))), /* @__PURE__ */ React20.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, standardizedName || (node == null ? void 0 : node.name))), /* @__PURE__ */ React20.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl disabled:opacity-50", title: "Cancelar" }, "\xD7")), /* @__PURE__ */ React20.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "T\xEDtulo da Quest"), /* @__PURE__ */ React20.createElement(
11867
12069
  "input",
11868
12070
  {
11869
12071
  type: "text",
@@ -11872,7 +12074,7 @@ ${noteText}` : noteText : entry.notes,
11872
12074
  readOnly: !canEdit,
11873
12075
  className: `w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 focus:outline-none ${canEdit ? "focus:ring-2 focus:ring-indigo-400/60" : "cursor-default text-slate-400"}`
11874
12076
  }
11875
- ), /* @__PURE__ */ React19.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ React19.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName), /* @__PURE__ */ React19.createElement(
12077
+ ), /* @__PURE__ */ React20.createElement("div", { className: "pt-1 flex items-center gap-1.5 min-w-0" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500 tracking-wider" }), /* @__PURE__ */ React20.createElement("p", { className: "text-xs text-indigo-300 font-medium truncate", title: standardizedName }, standardizedName), /* @__PURE__ */ React20.createElement(
11876
12078
  "button",
11877
12079
  {
11878
12080
  type: "button",
@@ -11880,8 +12082,8 @@ ${noteText}` : noteText : entry.notes,
11880
12082
  className: `p-1 rounded-md transition-all hover:bg-white/5 ${isNameCopied ? "text-green-400 scale-110" : "text-slate-500 hover:text-indigo-400"} flex-shrink-0`,
11881
12083
  title: isNameCopied ? "Nome Copiado!" : "Copiar nome formatado"
11882
12084
  },
11883
- isNameCopied ? /* @__PURE__ */ React19.createElement(FiCheck11, { size: 10 }) : /* @__PURE__ */ React19.createElement(FiCopy4, { size: 10 })
11884
- ))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), canEdit && !questDate && /* @__PURE__ */ React19.createElement(
12085
+ isNameCopied ? /* @__PURE__ */ React20.createElement(FiCheck11, { size: 10 }) : /* @__PURE__ */ React20.createElement(FiCopy4, { size: 10 })
12086
+ ))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Prazo / Data"), canEdit && !questDate && /* @__PURE__ */ React20.createElement(
11885
12087
  "button",
11886
12088
  {
11887
12089
  type: "button",
@@ -11892,7 +12094,7 @@ ${noteText}` : noteText : entry.notes,
11892
12094
  className: "text-[10px] text-indigo-400 hover:text-indigo-300 font-bold uppercase transition-colors"
11893
12095
  },
11894
12096
  "+ Adicionar"
11895
- )), questDate && /* @__PURE__ */ React19.createElement("div", { className: "p-3 bg-slate-900/60 rounded-xl border border-white/10 space-y-3 relative group" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ React19.createElement("div", { className: `flex-1 flex items-center gap-1 rounded-lg bg-slate-800/50 p-1 ${!canEdit ? "opacity-70 pointer-events-none" : ""}` }, !questDate.confirmed ? ["Data", "Date Interval"].map((t) => /* @__PURE__ */ React19.createElement(
12097
+ )), questDate && /* @__PURE__ */ React20.createElement("div", { className: "p-3 bg-slate-900/60 rounded-xl border border-white/10 space-y-3 relative group" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ React20.createElement("div", { className: `flex-1 flex items-center gap-1 rounded-lg bg-slate-800/50 p-1 ${!canEdit ? "opacity-70 pointer-events-none" : ""}` }, !questDate.confirmed ? ["Data", "Date Interval"].map((t) => /* @__PURE__ */ React20.createElement(
11896
12098
  "button",
11897
12099
  {
11898
12100
  key: t,
@@ -11911,7 +12113,7 @@ ${noteText}` : noteText : entry.notes,
11911
12113
  className: `flex-1 text-[10px] px-2 py-1.5 rounded-md transition-colors ${questDate.type === t ? "bg-indigo-600 text-white font-semibold shadow" : "text-slate-400 hover:bg-slate-700/50"}`
11912
12114
  },
11913
12115
  t === "Date Interval" ? "Intervalo" : t
11914
- )) : /* @__PURE__ */ React19.createElement("div", { className: "flex-1 flex items-center gap-2 px-2 py-1.5" }, /* @__PURE__ */ React19.createElement(FiCalendar2, { className: "text-indigo-400", size: 12 }), /* @__PURE__ */ React19.createElement("span", { className: "text-xs font-medium text-slate-200" }, questDate.type === "Data" ? questDate.value || "Sem data" : `${questDate.start || "In\xEDcio"} - ${questDate.end || "Fim"}`))), canEdit && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-1" }, !questDate.confirmed ? /* @__PURE__ */ React19.createElement(
12116
+ )) : /* @__PURE__ */ React20.createElement("div", { className: "flex-1 flex items-center gap-2 px-2 py-1.5" }, /* @__PURE__ */ React20.createElement(FiCalendar2, { className: "text-indigo-400", size: 12 }), /* @__PURE__ */ React20.createElement("span", { className: "text-xs font-medium text-slate-200" }, questDate.type === "Data" ? questDate.value || "Sem data" : `${questDate.start || "In\xEDcio"} - ${questDate.end || "Fim"}`))), canEdit && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-1" }, !questDate.confirmed ? /* @__PURE__ */ React20.createElement(
11915
12117
  "button",
11916
12118
  {
11917
12119
  type: "button",
@@ -11922,8 +12124,8 @@ ${noteText}` : noteText : entry.notes,
11922
12124
  className: "w-8 h-8 grid place-items-center rounded-lg bg-green-500/10 text-green-400 hover:bg-green-500/20 transition-colors",
11923
12125
  title: "Confirmar data"
11924
12126
  },
11925
- /* @__PURE__ */ React19.createElement(FiCheck11, { size: 14 })
11926
- ) : /* @__PURE__ */ React19.createElement(
12127
+ /* @__PURE__ */ React20.createElement(FiCheck11, { size: 14 })
12128
+ ) : /* @__PURE__ */ React20.createElement(
11927
12129
  "button",
11928
12130
  {
11929
12131
  type: "button",
@@ -11934,8 +12136,8 @@ ${noteText}` : noteText : entry.notes,
11934
12136
  className: "w-8 h-8 grid place-items-center rounded-lg bg-indigo-500/10 text-indigo-400 hover:bg-indigo-500/20 transition-colors",
11935
12137
  title: "Editar data"
11936
12138
  },
11937
- /* @__PURE__ */ React19.createElement(FiEdit28, { size: 14 })
11938
- ), /* @__PURE__ */ React19.createElement(
12139
+ /* @__PURE__ */ React20.createElement(FiEdit28, { size: 14 })
12140
+ ), /* @__PURE__ */ React20.createElement(
11939
12141
  "button",
11940
12142
  {
11941
12143
  type: "button",
@@ -11946,8 +12148,8 @@ ${noteText}` : noteText : entry.notes,
11946
12148
  className: "w-8 h-8 grid place-items-center rounded-lg bg-red-500/10 text-red-400 hover:bg-red-500/20 transition-colors",
11947
12149
  title: "Remover data"
11948
12150
  },
11949
- /* @__PURE__ */ React19.createElement(FiX7, { size: 14 })
11950
- ))), !questDate.confirmed && canEdit && /* @__PURE__ */ React19.createElement("div", { className: "animate-in fade-in slide-in-from-top-1 duration-200" }, questDate.type === "Data" && /* @__PURE__ */ React19.createElement(
12151
+ /* @__PURE__ */ React20.createElement(FiX7, { size: 14 })
12152
+ ))), !questDate.confirmed && canEdit && /* @__PURE__ */ React20.createElement("div", { className: "animate-in fade-in slide-in-from-top-1 duration-200" }, questDate.type === "Data" && /* @__PURE__ */ React20.createElement(
11951
12153
  "input",
11952
12154
  {
11953
12155
  type: "text",
@@ -11968,7 +12170,7 @@ ${noteText}` : noteText : entry.notes,
11968
12170
  maxLength: "10",
11969
12171
  className: "w-full bg-slate-800/70 p-2 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
11970
12172
  }
11971
- ), questDate.type === "Date Interval" && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(
12173
+ ), questDate.type === "Date Interval" && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(
11972
12174
  "input",
11973
12175
  {
11974
12176
  type: "text",
@@ -11989,7 +12191,7 @@ ${noteText}` : noteText : entry.notes,
11989
12191
  maxLength: "10",
11990
12192
  className: "flex-1 bg-slate-800/70 p-2 text-xs rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
11991
12193
  }
11992
- ), /* @__PURE__ */ React19.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React19.createElement(
12194
+ ), /* @__PURE__ */ React20.createElement("span", { className: "text-slate-500" }, "-"), /* @__PURE__ */ React20.createElement(
11993
12195
  "input",
11994
12196
  {
11995
12197
  type: "text",
@@ -12010,11 +12212,11 @@ ${noteText}` : noteText : entry.notes,
12010
12212
  maxLength: "10",
12011
12213
  className: "flex-1 bg-slate-800/70 p-2 text-xs rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-400/60"
12012
12214
  }
12013
- ))))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Milestones"), /* @__PURE__ */ React19.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, milestoneIds.map((id) => {
12215
+ ))))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Milestones"), /* @__PURE__ */ React20.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, milestoneIds.map((id) => {
12014
12216
  const ms = (milestones || []).find((m) => m.id === id);
12015
12217
  if (!ms) return null;
12016
- 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 })));
12017
- }), canEdit && /* @__PURE__ */ React19.createElement(
12218
+ return /* @__PURE__ */ React20.createElement("span", { key: id, className: "flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border bg-sky-500/20 text-sky-200 border-sky-500/30" }, ms.name, canEdit && /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: () => handleRemoveMilestone(id), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React20.createElement(FiX7, { size: 12 })));
12219
+ }), canEdit && /* @__PURE__ */ React20.createElement(
12018
12220
  "input",
12019
12221
  {
12020
12222
  type: "text",
@@ -12035,7 +12237,7 @@ ${noteText}` : noteText : entry.notes,
12035
12237
  placeholder: milestoneIds.length === 0 ? "Adicionar milestone..." : "",
12036
12238
  autoComplete: "off"
12037
12239
  }
12038
- ), canEdit && showMilestoneSuggestions && filteredMilestones.length > 0 && /* @__PURE__ */ React19.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredMilestones.map((ms) => /* @__PURE__ */ React19.createElement(
12240
+ ), canEdit && showMilestoneSuggestions && filteredMilestones.length > 0 && /* @__PURE__ */ React20.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredMilestones.map((ms) => /* @__PURE__ */ React20.createElement(
12039
12241
  "li",
12040
12242
  {
12041
12243
  key: ms.id,
@@ -12046,7 +12248,7 @@ ${noteText}` : noteText : entry.notes,
12046
12248
  }
12047
12249
  },
12048
12250
  ms.name
12049
- ))), canEdit && showMilestoneSuggestions && milestoneInput.trim() && !filteredMilestones.some((m) => m.name.toLowerCase() === milestoneInput.toLowerCase().trim()) && /* @__PURE__ */ React19.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, /* @__PURE__ */ React19.createElement(
12251
+ ))), canEdit && showMilestoneSuggestions && milestoneInput.trim() && !filteredMilestones.some((m) => m.name.toLowerCase() === milestoneInput.toLowerCase().trim()) && /* @__PURE__ */ React20.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-[100] w-full mt-1 rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, /* @__PURE__ */ React20.createElement(
12050
12252
  "li",
12051
12253
  {
12052
12254
  className: "px-3 py-3 text-sm cursor-pointer hover:bg-indigo-600/50 flex flex-col gap-0.5",
@@ -12055,9 +12257,9 @@ ${noteText}` : noteText : entry.notes,
12055
12257
  handleAddMilestone({ name: milestoneInput });
12056
12258
  }
12057
12259
  },
12058
- /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
12059
- /* @__PURE__ */ React19.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
12060
- )))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ React19.createElement("div", { className: "relative" }, /* @__PURE__ */ React19.createElement(
12260
+ /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] uppercase font-bold text-slate-500" }, "Criar novo milestone"),
12261
+ /* @__PURE__ */ React20.createElement("span", { className: "text-white" }, '"', milestoneInput, '"')
12262
+ )))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Status da Quest"), /* @__PURE__ */ React20.createElement("div", { className: "relative" }, /* @__PURE__ */ React20.createElement(
12061
12263
  "button",
12062
12264
  {
12063
12265
  type: "button",
@@ -12065,12 +12267,12 @@ ${noteText}` : noteText : entry.notes,
12065
12267
  disabled: !canEdit,
12066
12268
  className: `w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 transition-colors flex items-center justify-between ${canEdit ? "hover:border-white/20 focus:ring-2 focus:ring-indigo-400/60 cursor-pointer" : "cursor-default opacity-80"}`
12067
12269
  },
12068
- /* @__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)),
12069
- canEdit && /* @__PURE__ */ React19.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}` })
12070
- ), isStatusDropdownOpen && canEdit && /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsStatusDropdownOpen(false) }), /* @__PURE__ */ React19.createElement("ul", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-800 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden" }, Object.keys(QUEST_STATUS_COLORS3).map((s) => {
12270
+ /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement("span", { className: "w-3 h-3 rounded-full shadow-[0_0_8px_rgba(0,0,0,0.5)]", style: { backgroundColor: QUEST_STATUS_COLORS3[status] } }), /* @__PURE__ */ React20.createElement("span", { className: "text-slate-200 font-medium" }, status)),
12271
+ canEdit && /* @__PURE__ */ React20.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}` })
12272
+ ), isStatusDropdownOpen && canEdit && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "fixed inset-0 z-40", onClick: () => setIsStatusDropdownOpen(false) }), /* @__PURE__ */ React20.createElement("ul", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-800 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden" }, Object.keys(QUEST_STATUS_COLORS3).map((s) => {
12071
12273
  const isBacklog = s === "Backlog";
12072
12274
  const isDisabled = !isBacklog && blockedStatus.isBlocked;
12073
- return /* @__PURE__ */ React19.createElement(
12275
+ return /* @__PURE__ */ React20.createElement(
12074
12276
  "li",
12075
12277
  {
12076
12278
  key: s,
@@ -12083,22 +12285,22 @@ ${noteText}` : noteText : entry.notes,
12083
12285
  className: `px-3 py-2.5 text-sm transition-colors flex items-center justify-between ${status === s ? "bg-indigo-500/20 text-white" : "text-slate-300"} ${isDisabled ? "opacity-40 cursor-not-allowed grayscale" : "cursor-pointer hover:bg-white/5 hover:text-white"}`,
12084
12286
  title: isDisabled ? `Bloqueado por depend\xEAncias: ${blockedStatus.pendingDependencies.map((d) => d.raw_title || d.name).join(", ")}` : ""
12085
12287
  },
12086
- /* @__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),
12087
- isDisabled && /* @__PURE__ */ React19.createElement(FiRepeat2, { className: "text-amber-400/60 rotate-180", size: 12 })
12288
+ /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement("span", { className: "w-3 h-3 rounded-full", style: { backgroundColor: QUEST_STATUS_COLORS3[s] } }), s),
12289
+ isDisabled && /* @__PURE__ */ React20.createElement(FiRepeat2, { className: "text-amber-400/60 rotate-180", size: 12 })
12088
12290
  );
12089
- }))))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), canEdit ? /* @__PURE__ */ React19.createElement("div", { className: "relative" }, /* @__PURE__ */ React19.createElement(
12291
+ }))))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), canEdit ? /* @__PURE__ */ React20.createElement("div", { className: "relative" }, /* @__PURE__ */ React20.createElement(
12090
12292
  "button",
12091
12293
  {
12092
12294
  type: "button",
12093
12295
  onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
12094
12296
  className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
12095
12297
  },
12096
- /* @__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")),
12097
- /* @__PURE__ */ React19.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
12098
- ), isAssigneeDropdownOpen && /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
12298
+ /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiUser3, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React20.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
12299
+ /* @__PURE__ */ React20.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
12300
+ ), isAssigneeDropdownOpen && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
12099
12301
  setIsAssigneeDropdownOpen(false);
12100
12302
  setAssigneeSearchQuery("");
12101
- } }), /* @__PURE__ */ React19.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React19.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiSearch7, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React19.createElement(
12303
+ } }), /* @__PURE__ */ React20.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React20.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiSearch7, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React20.createElement(
12102
12304
  "input",
12103
12305
  {
12104
12306
  type: "text",
@@ -12109,7 +12311,7 @@ ${noteText}` : noteText : entry.notes,
12109
12311
  className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
12110
12312
  onClick: (e) => e.stopPropagation()
12111
12313
  }
12112
- )), /* @__PURE__ */ React19.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React19.createElement(
12314
+ )), /* @__PURE__ */ React20.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React20.createElement(
12113
12315
  "li",
12114
12316
  {
12115
12317
  onClick: () => {
@@ -12127,7 +12329,7 @@ ${noteText}` : noteText : entry.notes,
12127
12329
  className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${!assigneeId ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
12128
12330
  },
12129
12331
  "Nenhum"
12130
- ), isAssigneeUndefined && /* @__PURE__ */ React19.createElement(
12332
+ ), isAssigneeUndefined && /* @__PURE__ */ React20.createElement(
12131
12333
  "li",
12132
12334
  {
12133
12335
  onClick: () => {
@@ -12140,7 +12342,7 @@ ${noteText}` : noteText : entry.notes,
12140
12342
  ), viewMembers.filter((member) => {
12141
12343
  const search = assigneeSearchQuery.toLowerCase();
12142
12344
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
12143
- }).map((member) => /* @__PURE__ */ React19.createElement(
12345
+ }).map((member) => /* @__PURE__ */ React20.createElement(
12144
12346
  "li",
12145
12347
  {
12146
12348
  key: member.id,
@@ -12162,7 +12364,7 @@ ${noteText}` : noteText : entry.notes,
12162
12364
  )), viewMembers.filter((member) => {
12163
12365
  const search = assigneeSearchQuery.toLowerCase();
12164
12366
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
12165
- }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React19.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ React19.createElement("div", { className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 text-slate-400 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiUser3, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ React19.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiRepeat2, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ React19.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ React19.createElement(
12367
+ }).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React20.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ React20.createElement("div", { className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 text-slate-400 flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiUser3, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ React20.createElement("div", { className: "pt-4 border-t border-white/5 mt-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiRepeat2, { className: `w-3.5 h-3.5 ${recurrenceConfig.enabled ? "text-indigo-400" : "text-slate-500"}` }), /* @__PURE__ */ React20.createElement("span", { className: "text-xs text-slate-300 font-medium uppercase tracking-wider" }, "Recorr\xEAncia")), /* @__PURE__ */ React20.createElement(
12166
12368
  "button",
12167
12369
  {
12168
12370
  type: "button",
@@ -12173,8 +12375,8 @@ ${noteText}` : noteText : entry.notes,
12173
12375
  },
12174
12376
  className: `relative inline-flex h-5 w-9 items-center rounded-full transition-colors focus:outline-none ${recurrenceConfig.enabled ? "bg-indigo-600" : "bg-slate-700"} ${canEdit ? "cursor-pointer" : "cursor-default opacity-60"}`
12175
12377
  },
12176
- /* @__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"}` })
12177
- )), recurrenceConfig.enabled && /* @__PURE__ */ React19.createElement("div", { className: "space-y-4 p-3 rounded-xl bg-white/5 border border-white/5 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React19.createElement("div", { className: "grid grid-cols-2 gap-3" }, /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Tipo"), /* @__PURE__ */ React19.createElement(
12378
+ /* @__PURE__ */ React20.createElement("span", { className: `inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform ${recurrenceConfig.enabled ? "translate-x-4.5" : "translate-x-1"}` })
12379
+ )), recurrenceConfig.enabled && /* @__PURE__ */ React20.createElement("div", { className: "space-y-4 p-3 rounded-xl bg-white/5 border border-white/5 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React20.createElement("div", { className: "grid grid-cols-2 gap-3" }, /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Tipo"), /* @__PURE__ */ React20.createElement(
12178
12380
  "select",
12179
12381
  {
12180
12382
  disabled: !canEdit,
@@ -12185,10 +12387,10 @@ ${noteText}` : noteText : entry.notes,
12185
12387
  },
12186
12388
  className: `w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none ${canEdit ? "focus:ring-1 focus:ring-indigo-500/50" : "opacity-70"}`
12187
12389
  },
12188
- /* @__PURE__ */ React19.createElement("option", { value: "daily" }, "Di\xE1ria"),
12189
- /* @__PURE__ */ React19.createElement("option", { value: "weekly" }, "Semanal"),
12190
- /* @__PURE__ */ React19.createElement("option", { value: "custom" }, "Data Espec\xEDfica")
12191
- )), recurrenceConfig.type === "weekly" && /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Dia da Semana"), /* @__PURE__ */ React19.createElement(
12390
+ /* @__PURE__ */ React20.createElement("option", { value: "daily" }, "Di\xE1ria"),
12391
+ /* @__PURE__ */ React20.createElement("option", { value: "weekly" }, "Semanal"),
12392
+ /* @__PURE__ */ React20.createElement("option", { value: "custom" }, "Data Espec\xEDfica")
12393
+ )), recurrenceConfig.type === "weekly" && /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Dia da Semana"), /* @__PURE__ */ React20.createElement(
12192
12394
  "select",
12193
12395
  {
12194
12396
  disabled: !canEdit,
@@ -12199,14 +12401,14 @@ ${noteText}` : noteText : entry.notes,
12199
12401
  },
12200
12402
  className: `w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none ${canEdit ? "focus:ring-1 focus:ring-indigo-500/50" : "opacity-70"}`
12201
12403
  },
12202
- /* @__PURE__ */ React19.createElement("option", { value: 1 }, "Segunda-feira"),
12203
- /* @__PURE__ */ React19.createElement("option", { value: 2 }, "Ter\xE7a-feira"),
12204
- /* @__PURE__ */ React19.createElement("option", { value: 3 }, "Quarta-feira"),
12205
- /* @__PURE__ */ React19.createElement("option", { value: 4 }, "Quinta-feira"),
12206
- /* @__PURE__ */ React19.createElement("option", { value: 5 }, "Sexta-feira"),
12207
- /* @__PURE__ */ React19.createElement("option", { value: 6 }, "S\xE1bado"),
12208
- /* @__PURE__ */ React19.createElement("option", { value: 0 }, "Domingo")
12209
- )), recurrenceConfig.type === "custom" && /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3xima Data"), /* @__PURE__ */ React19.createElement(
12404
+ /* @__PURE__ */ React20.createElement("option", { value: 1 }, "Segunda-feira"),
12405
+ /* @__PURE__ */ React20.createElement("option", { value: 2 }, "Ter\xE7a-feira"),
12406
+ /* @__PURE__ */ React20.createElement("option", { value: 3 }, "Quarta-feira"),
12407
+ /* @__PURE__ */ React20.createElement("option", { value: 4 }, "Quinta-feira"),
12408
+ /* @__PURE__ */ React20.createElement("option", { value: 5 }, "Sexta-feira"),
12409
+ /* @__PURE__ */ React20.createElement("option", { value: 6 }, "S\xE1bado"),
12410
+ /* @__PURE__ */ React20.createElement("option", { value: 0 }, "Domingo")
12411
+ )), recurrenceConfig.type === "custom" && /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3xima Data"), /* @__PURE__ */ React20.createElement(
12210
12412
  "input",
12211
12413
  {
12212
12414
  readOnly: !canEdit,
@@ -12219,7 +12421,7 @@ ${noteText}` : noteText : entry.notes,
12219
12421
  },
12220
12422
  className: `w-full bg-slate-900/50 border border-white/10 rounded-lg px-2 py-1.5 text-xs text-slate-200 focus:outline-none ${canEdit ? "focus:ring-1 focus:ring-indigo-500/50" : "text-slate-400"}`
12221
12423
  }
12222
- ))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3ximo Respons\xE1vel"), /* @__PURE__ */ React19.createElement("div", { className: "relative" }, /* @__PURE__ */ React19.createElement(
12424
+ ))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Pr\xF3ximo Respons\xE1vel"), /* @__PURE__ */ React20.createElement("div", { className: "relative" }, /* @__PURE__ */ React20.createElement(
12223
12425
  "select",
12224
12426
  {
12225
12427
  disabled: !canEdit,
@@ -12230,9 +12432,9 @@ ${noteText}` : noteText : entry.notes,
12230
12432
  },
12231
12433
  className: `w-full bg-slate-900/50 border border-white/10 rounded-lg pl-8 pr-2 py-1.5 text-xs text-slate-200 appearance-none focus:outline-none ${canEdit ? "focus:ring-1 focus:ring-indigo-500/50" : "opacity-70"}`
12232
12434
  },
12233
- /* @__PURE__ */ React19.createElement("option", { value: "" }, "Sem respons\xE1vel"),
12234
- viewMembers.map((member) => /* @__PURE__ */ React19.createElement("option", { key: member.id, value: member.id }, member.name || member.email))
12235
- ), /* @__PURE__ */ React19.createElement(FiUser3, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500" }), /* @__PURE__ */ React19.createElement(FiChevronDown7, { className: "absolute right-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500 pointer-events-none" }))))), /* @__PURE__ */ React19.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React19.createElement(
12435
+ /* @__PURE__ */ React20.createElement("option", { value: "" }, "Sem respons\xE1vel"),
12436
+ viewMembers.map((member) => /* @__PURE__ */ React20.createElement("option", { key: member.id, value: member.id }, member.name || member.email))
12437
+ ), /* @__PURE__ */ React20.createElement(FiUser3, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500" }), /* @__PURE__ */ React20.createElement(FiChevronDown7, { className: "absolute right-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-slate-500 pointer-events-none" }))))), /* @__PURE__ */ React20.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React20.createElement(
12236
12438
  QuestReviewStackEditor,
12237
12439
  {
12238
12440
  reviewStack,
@@ -12243,19 +12445,19 @@ ${noteText}` : noteText : entry.notes,
12243
12445
  viewMembers,
12244
12446
  readOnly: !canEdit
12245
12447
  }
12246
- )), status === "Review" && canEdit && /* @__PURE__ */ React19.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React19.createElement("div", { className: "bg-slate-900/40 rounded-xl p-4 border border-white/5 space-y-3" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "A\xE7\xF5es de Review"), /* @__PURE__ */ React19.createElement("span", { className: "px-2 py-0.5 rounded-full bg-purple-500/10 text-purple-300 text-[10px] font-medium border border-purple-500/20" }, "Em Revis\xE3o")), /* @__PURE__ */ React19.createElement("p", { className: "text-xs text-slate-400 leading-relaxed" }, "Selecione o respons\xE1vel abaixo para retornar o ciclo para opera\xE7\xE3o."), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 flex flex-col" }, /* @__PURE__ */ React19.createElement("label", { className: "text-[10px] text-slate-400 font-medium ml-0.5" }, "Retornar para:"), /* @__PURE__ */ React19.createElement("div", { className: "relative" }, /* @__PURE__ */ React19.createElement(
12448
+ )), status === "Review" && canEdit && /* @__PURE__ */ React20.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React20.createElement("div", { className: "bg-slate-900/40 rounded-xl p-4 border border-white/5 space-y-3" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React20.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "A\xE7\xF5es de Review"), /* @__PURE__ */ React20.createElement("span", { className: "px-2 py-0.5 rounded-full bg-purple-500/10 text-purple-300 text-[10px] font-medium border border-purple-500/20" }, "Em Revis\xE3o")), /* @__PURE__ */ React20.createElement("p", { className: "text-xs text-slate-400 leading-relaxed" }, "Selecione o respons\xE1vel abaixo para retornar o ciclo para opera\xE7\xE3o."), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 flex flex-col" }, /* @__PURE__ */ React20.createElement("label", { className: "text-[10px] text-slate-400 font-medium ml-0.5" }, "Retornar para:"), /* @__PURE__ */ React20.createElement("div", { className: "relative" }, /* @__PURE__ */ React20.createElement(
12247
12449
  "button",
12248
12450
  {
12249
12451
  type: "button",
12250
12452
  onClick: () => setIsReturnDropdownOpen(!isReturnDropdownOpen),
12251
12453
  className: "w-full bg-slate-800/80 p-2 text-xs rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-1 focus:ring-purple-400/50 transition-colors flex items-center justify-between"
12252
12454
  },
12253
- /* @__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...")),
12254
- /* @__PURE__ */ React19.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
12255
- ), isReturnDropdownOpen && /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
12455
+ /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiUser3, { className: "text-slate-400", size: 12 }), /* @__PURE__ */ React20.createElement("span", { className: "text-slate-200 font-medium" }, ((_b = viewMembers.find((m) => String(m.id) === String(returnAssigneeId))) == null ? void 0 : _b.name) || "Selecionar respons\xE1vel...")),
12456
+ /* @__PURE__ */ React20.createElement(FiChevronDown7, { className: `text-slate-400 transition-transform duration-200 ${isReturnDropdownOpen ? "rotate-180" : ""}`, size: 14 })
12457
+ ), isReturnDropdownOpen && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
12256
12458
  setIsReturnDropdownOpen(false);
12257
12459
  setReturnSearchQuery("");
12258
- } }), /* @__PURE__ */ React19.createElement("div", { className: "absolute bottom-full left-0 mb-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React19.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiSearch7, { className: "text-slate-500", size: 12 }), /* @__PURE__ */ React19.createElement(
12460
+ } }), /* @__PURE__ */ React20.createElement("div", { className: "absolute bottom-full left-0 mb-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React20.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiSearch7, { className: "text-slate-500", size: 12 }), /* @__PURE__ */ React20.createElement(
12259
12461
  "input",
12260
12462
  {
12261
12463
  type: "text",
@@ -12266,10 +12468,10 @@ ${noteText}` : noteText : entry.notes,
12266
12468
  className: "bg-transparent border-none outline-none text-[10px] text-white placeholder-slate-500 w-full",
12267
12469
  onClick: (e) => e.stopPropagation()
12268
12470
  }
12269
- )), /* @__PURE__ */ React19.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar" }, viewMembers.filter((member) => {
12471
+ )), /* @__PURE__ */ React20.createElement("ul", { className: "max-h-32 overflow-y-auto custom-scrollbar" }, viewMembers.filter((member) => {
12270
12472
  const search = returnSearchQuery.toLowerCase();
12271
12473
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
12272
- }).map((member) => /* @__PURE__ */ React19.createElement(
12474
+ }).map((member) => /* @__PURE__ */ React20.createElement(
12273
12475
  "li",
12274
12476
  {
12275
12477
  key: member.id,
@@ -12284,7 +12486,7 @@ ${noteText}` : noteText : entry.notes,
12284
12486
  )), viewMembers.filter((member) => {
12285
12487
  const search = returnSearchQuery.toLowerCase();
12286
12488
  return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
12287
- }).length === 0 && /* @__PURE__ */ React19.createElement("li", { className: "px-3 py-4 text-[10px] text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ React19.createElement(
12489
+ }).length === 0 && /* @__PURE__ */ React20.createElement("li", { className: "px-3 py-4 text-[10px] text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ React20.createElement(
12288
12490
  "button",
12289
12491
  {
12290
12492
  type: "button",
@@ -12292,13 +12494,13 @@ ${noteText}` : noteText : entry.notes,
12292
12494
  disabled: isSaving || !returnAssigneeId,
12293
12495
  className: `w-full h-10 flex items-center justify-center gap-2 rounded-lg text-xs font-semibold border transition-all active:scale-[0.98] disabled:opacity-40 disabled:grayscale-[0.5] disabled:cursor-not-allowed ${!returnAssigneeId ? "bg-slate-800 text-slate-500 border-white/5" : "bg-slate-800 hover:bg-slate-700 text-purple-300 border-purple-500/20 hover:border-purple-500/40"}`
12294
12496
  },
12295
- /* @__PURE__ */ React19.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React19.createElement("path", { d: "M12 19V5M5 12l7 7 7-7" })),
12497
+ /* @__PURE__ */ React20.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React20.createElement("path", { d: "M12 19V5M5 12l7 7 7-7" })),
12296
12498
  "Retornar para Opera\xE7\xE3o"
12297
- ))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React19.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React19.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ React19.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => setIsReadMode(true), className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`, title: "Modo de Leitura" }, /* @__PURE__ */ React19.createElement(FiBookOpen4, { size: 14 })), canEdit && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => setIsDescriptionModalOpen(true), className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors", title: "Editar descri\xE7\xE3o (Modo de Escrita)" }, /* @__PURE__ */ React19.createElement(FiEdit28, { size: 14 }))), canEdit && !description && /* @__PURE__ */ React19.createElement("div", { onClick: () => setIsDescriptionModalOpen(true), className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text" }, "Adicionar descri\xE7\xE3o..."))), /* @__PURE__ */ React19.createElement("div", { className: "pt-2 border-t border-white/5 space-y-3" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React19.createElement(FiLink7, { className: "text-indigo-400", size: 14 }), /* @__PURE__ */ React19.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Depend\xEAncias (Quest Chain)"))), /* @__PURE__ */ React19.createElement("div", { className: `relative w-full bg-slate-900/60 p-2 min-h-[42px] flex flex-wrap gap-2 rounded-xl border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/40" : ""} transition-all` }, dependencyIds.map((depId) => {
12499
+ ))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React20.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React20.createElement(DescriptionDisplay, { description, savedSections: existingSections, availableNodes, availableAncestries, onOpenReference, onMentionClick, onImageClick: handleImageClickFromText, onSaveDescription: handleSaveDescriptionInline }), /* @__PURE__ */ React20.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: () => setIsReadMode(true), className: `p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors ${canEdit ? "border-r border-white/5" : ""}`, title: "Modo de Leitura" }, /* @__PURE__ */ React20.createElement(FiBookOpen4, { size: 14 })), canEdit && /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: () => setIsDescriptionModalOpen(true), className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors", title: "Editar descri\xE7\xE3o (Modo de Escrita)" }, /* @__PURE__ */ React20.createElement(FiEdit28, { size: 14 }))), canEdit && !description && /* @__PURE__ */ React20.createElement("div", { onClick: () => setIsDescriptionModalOpen(true), className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text" }, "Adicionar descri\xE7\xE3o..."))), /* @__PURE__ */ React20.createElement("div", { className: "pt-2 border-t border-white/5 space-y-3" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(FiLink7, { className: "text-indigo-400", size: 14 }), /* @__PURE__ */ React20.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Depend\xEAncias (Quest Chain)"))), /* @__PURE__ */ React20.createElement("div", { className: `relative w-full bg-slate-900/60 p-2 min-h-[42px] flex flex-wrap gap-2 rounded-xl border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/40" : ""} transition-all` }, dependencyIds.map((depId) => {
12298
12500
  const depNode = availableNodes.find((n) => String(n.id) === String(depId));
12299
12501
  if (!depNode) return null;
12300
12502
  const isDone = depNode.status === "Done";
12301
- return /* @__PURE__ */ React19.createElement(
12503
+ return /* @__PURE__ */ React20.createElement(
12302
12504
  "span",
12303
12505
  {
12304
12506
  key: depId,
@@ -12306,9 +12508,9 @@ ${noteText}` : noteText : entry.notes,
12306
12508
  className: `flex items-center gap-2 px-2 py-1 rounded-lg text-xs font-medium border cursor-pointer hover:brightness-110 transition-all ${isDone ? "bg-green-500/10 text-green-300 border-green-500/20" : "bg-amber-500/10 text-amber-300 border-amber-500/20"}`,
12307
12509
  title: isDone ? `Pronta - Clique para focar` : `Pendente - Clique para focar`
12308
12510
  },
12309
- /* @__PURE__ */ React19.createElement("span", { className: `w-1.5 h-1.5 rounded-full ${isDone ? "bg-green-400" : "bg-amber-400 animate-pulse"}` }),
12511
+ /* @__PURE__ */ React20.createElement("span", { className: `w-1.5 h-1.5 rounded-full ${isDone ? "bg-green-400" : "bg-amber-400 animate-pulse"}` }),
12310
12512
  depNode.raw_title || depNode.name,
12311
- canEdit && /* @__PURE__ */ React19.createElement(
12513
+ canEdit && /* @__PURE__ */ React20.createElement(
12312
12514
  "button",
12313
12515
  {
12314
12516
  type: "button",
@@ -12318,10 +12520,10 @@ ${noteText}` : noteText : entry.notes,
12318
12520
  },
12319
12521
  className: "hover:text-white transition-colors opacity-60 hover:opacity-100 Ml-1"
12320
12522
  },
12321
- /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })
12523
+ /* @__PURE__ */ React20.createElement(FiX7, { size: 12 })
12322
12524
  )
12323
12525
  );
12324
- }), canEdit && /* @__PURE__ */ React19.createElement("div", { className: "flex-1 min-w-[120px] relative" }, /* @__PURE__ */ React19.createElement(
12526
+ }), canEdit && /* @__PURE__ */ React20.createElement("div", { className: "flex-1 min-w-[120px] relative" }, /* @__PURE__ */ React20.createElement(
12325
12527
  "input",
12326
12528
  {
12327
12529
  type: "text",
@@ -12338,7 +12540,7 @@ ${noteText}` : noteText : entry.notes,
12338
12540
  placeholder: dependencyIds.length === 0 ? "Adicionar Quest de Origem..." : "",
12339
12541
  autoComplete: "off"
12340
12542
  }
12341
- ), showDependencySuggestions && /* @__PURE__ */ React19.createElement("ul", { className: "absolute top-full left-0 z-[100] w-full mt-2 max-h-48 overflow-y-auto rounded-xl bg-slate-900 border border-white/10 shadow-2xl custom-scrollbar py-1" }, filteredDependencies.length > 0 ? filteredDependencies.map((q) => /* @__PURE__ */ React19.createElement(
12543
+ ), showDependencySuggestions && /* @__PURE__ */ React20.createElement("ul", { className: "absolute top-full left-0 z-[100] w-full mt-2 max-h-48 overflow-y-auto rounded-xl bg-slate-900 border border-white/10 shadow-2xl custom-scrollbar py-1" }, filteredDependencies.length > 0 ? filteredDependencies.map((q) => /* @__PURE__ */ React20.createElement(
12342
12544
  "li",
12343
12545
  {
12344
12546
  key: q.id,
@@ -12348,9 +12550,20 @@ ${noteText}` : noteText : entry.notes,
12348
12550
  handleAddDependency(q);
12349
12551
  }
12350
12552
  },
12351
- /* @__PURE__ */ React19.createElement("span", { className: "truncate" }, q.raw_title || q.name),
12352
- /* @__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")
12353
- )) : /* @__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"), 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(
12553
+ /* @__PURE__ */ React20.createElement("span", { className: "truncate" }, q.raw_title || q.name),
12554
+ /* @__PURE__ */ React20.createElement("span", { className: `text-[10px] px-1.5 py-0.5 rounded border ${q.status === "Done" ? "text-green-400 border-green-500/30" : "text-slate-500 border-white/5"}` }, q.status || "Backlog")
12555
+ )) : /* @__PURE__ */ React20.createElement("li", { className: "px-3 py-3 text-[10px] text-slate-500 italic text-center" }, "Nenhuma outra quest dispon\xEDvel")))), blockedStatus.isBlocked && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2 px-3 py-2 bg-amber-500/5 rounded-lg border border-amber-500/10 animate-in fade-in slide-in-from-top-1" }, /* @__PURE__ */ React20.createElement(FiRepeat2, { className: "text-amber-400 animate-spin-slow", size: 12 }), /* @__PURE__ */ React20.createElement("p", { className: "text-[10px] text-amber-200/80 font-medium" }, "Esta quest est\xE1 bloqueada por ", blockedStatus.pendingDependencies.length, " tarefa(s) pendente(s)."))), /* @__PURE__ */ React20.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React20.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, canEdit && create_google_doc_action && /* @__PURE__ */ React20.createElement(
12556
+ "button",
12557
+ {
12558
+ type: "button",
12559
+ onClick: handleCreateGoogleDoc,
12560
+ disabled: isLoadingDocs,
12561
+ className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-transparent hover:bg-white/5 text-slate-300 border border-white/10 transition-all disabled:opacity-50 disabled:cursor-not-allowed group",
12562
+ title: "Criar Documento no Google Docs"
12563
+ },
12564
+ isLoadingDocs ? /* @__PURE__ */ React20.createElement(AiOutlineLoading3Quarters4, { className: "animate-spin", size: 14 }) : /* @__PURE__ */ React20.createElement(GoogleDocsIcon_default, { size: 14, className: "group-hover:scale-110 transition-transform" }),
12565
+ isLoadingDocs ? "Criando..." : "Google Doc"
12566
+ ), canEdit && /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: handleAddProp, className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors" }, /* @__PURE__ */ React20.createElement(FiPlus8, { size: 14 }), " Adicionar"))), /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React20.createElement(CustomPropertyDisplay, { key: prop.id, prop, onUpdate: canEdit ? (updatedProp) => handleUpdateProp(idx, updatedProp) : void 0, onRemove: canEdit ? () => handleRemoveProp(idx) : void 0, onOpenImageViewer, unavailableTypes: currentUsedTypes.filter((t) => t !== prop.type), isTextureMode: false, onUploadFile: canEdit ? onUploadFile : void 0, readOnly: !canEdit })), /* @__PURE__ */ React20.createElement("div", { ref: propsEndRef }))), /* @__PURE__ */ React20.createElement("div", { className: "pt-6 border-t border-white/10 mt-6" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between mb-4" }, /* @__PURE__ */ React20.createElement("h3", { className: "text-[11px] uppercase font-bold text-slate-500 tracking-wider" }, "Hist\xF3rico & Notas"), /* @__PURE__ */ React20.createElement(
12354
12567
  "button",
12355
12568
  {
12356
12569
  type: "button",
@@ -12369,12 +12582,12 @@ ${noteText}` : noteText : entry.notes,
12369
12582
  },
12370
12583
  className: "flex items-center gap-1.5 px-2 py-1 text-[10px] rounded-md bg-white/5 hover:bg-white/10 border border-white/10 transition-colors text-slate-300"
12371
12584
  },
12372
- isNoteFormOpen && !editingEntryId ? /* @__PURE__ */ React19.createElement(FiX7, { size: 12 }) : /* @__PURE__ */ React19.createElement(FiPlus8, { size: 12 }),
12585
+ isNoteFormOpen && !editingEntryId ? /* @__PURE__ */ React20.createElement(FiX7, { size: 12 }) : /* @__PURE__ */ React20.createElement(FiPlus8, { size: 12 }),
12373
12586
  isNoteFormOpen && !editingEntryId ? "Cancelar" : "Nova Nota"
12374
- )), isNoteFormOpen && /* @__PURE__ */ React19.createElement("div", { id: "quest-note-form", className: "mb-6 p-4 rounded-xl bg-white/5 border border-white/5 space-y-3 animate-in fade-in slide-in-from-top-2 border-l-4 border-l-indigo-500/40" }, editingEntryId && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between mb-2 pb-2 border-b border-white/5" }, /* @__PURE__ */ React19.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-indigo-400 font-bold uppercase tracking-wider" }, "Adicionando \xE0 etapa:"), /* @__PURE__ */ React19.createElement("span", { className: "text-xs text-slate-300 italic truncate max-w-[250px]" }, editingEntryLabel)), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => {
12587
+ )), isNoteFormOpen && /* @__PURE__ */ React20.createElement("div", { id: "quest-note-form", className: "mb-6 p-4 rounded-xl bg-white/5 border border-white/5 space-y-3 animate-in fade-in slide-in-from-top-2 border-l-4 border-l-indigo-500/40" }, editingEntryId && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between mb-2 pb-2 border-b border-white/5" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] text-indigo-400 font-bold uppercase tracking-wider" }, "Adicionando \xE0 etapa:"), /* @__PURE__ */ React20.createElement("span", { className: "text-xs text-slate-300 italic truncate max-w-[250px]" }, editingEntryLabel)), /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: () => {
12375
12588
  setIsNoteFormOpen(false);
12376
12589
  setEditingEntryId(null);
12377
- }, className: "text-slate-500 hover:text-white" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 14 }))), /* @__PURE__ */ React19.createElement(
12590
+ }, className: "text-slate-500 hover:text-white" }, /* @__PURE__ */ React20.createElement(FiX7, { size: 14 }))), /* @__PURE__ */ React20.createElement(
12378
12591
  "textarea",
12379
12592
  {
12380
12593
  value: noteText,
@@ -12382,7 +12595,7 @@ ${noteText}` : noteText : entry.notes,
12382
12595
  placeholder: editingEntryId ? "Adicione uma observa\xE7\xE3o a esta etapa..." : "Escreva uma observa\xE7\xE3o no hist\xF3rico...",
12383
12596
  className: "w-full bg-slate-900/50 p-3 text-sm rounded-lg border border-white/10 focus:outline-none focus:ring-1 focus:ring-indigo-500/50 min-h-[80px] resize-none"
12384
12597
  }
12385
- ), /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Links"), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: addLinkToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ React19.createElement(FiPlus8, { size: 10 }), " Adicionar Link")), noteLinks.length > 0 && /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, noteLinks.map((link) => /* @__PURE__ */ React19.createElement("div", { key: link.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ React19.createElement(
12598
+ ), /* @__PURE__ */ React20.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Links"), /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: addLinkToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ React20.createElement(FiPlus8, { size: 10 }), " Adicionar Link")), noteLinks.length > 0 && /* @__PURE__ */ React20.createElement("div", { className: "space-y-2" }, noteLinks.map((link) => /* @__PURE__ */ React20.createElement("div", { key: link.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ React20.createElement(
12386
12599
  "input",
12387
12600
  {
12388
12601
  type: "text",
@@ -12391,7 +12604,7 @@ ${noteText}` : noteText : entry.notes,
12391
12604
  onChange: (e) => updateLinkInNote(link.id, "name", e.target.value),
12392
12605
  className: "w-1/3 bg-slate-950/50 border border-white/5 rounded px-2 py-1 text-[10px] focus:outline-none focus:border-indigo-500/50"
12393
12606
  }
12394
- ), /* @__PURE__ */ React19.createElement(
12607
+ ), /* @__PURE__ */ React20.createElement(
12395
12608
  "input",
12396
12609
  {
12397
12610
  type: "text",
@@ -12400,7 +12613,7 @@ ${noteText}` : noteText : entry.notes,
12400
12613
  onChange: (e) => updateLinkInNote(link.id, "value", e.target.value),
12401
12614
  className: "flex-1 bg-slate-950/50 border border-white/5 rounded px-2 py-1 text-[10px] focus:outline-none focus:border-indigo-500/50"
12402
12615
  }
12403
- ), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => removeLinkFromNote(link.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })))))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React19.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Imagens (URLs)"), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: addImageToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ React19.createElement(FiPlus8, { size: 10 }), " Adicionar Imagem")), noteImages.length > 0 && /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, noteImages.map((img) => /* @__PURE__ */ React19.createElement("div", { key: img.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ React19.createElement("div", { className: "flex-1 flex items-center gap-2 bg-slate-950/50 border border-white/5 rounded px-2 py-1" }, /* @__PURE__ */ React19.createElement(FiImage4, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ React19.createElement(
12616
+ ), /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: () => removeLinkFromNote(link.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ React20.createElement(FiX7, { size: 12 })))))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[10px] text-slate-500 uppercase font-bold tracking-tight" }, "Imagens (URLs)"), /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: addImageToNote, className: "text-indigo-400 hover:text-indigo-300 text-[10px] flex items-center gap-1 font-medium" }, /* @__PURE__ */ React20.createElement(FiPlus8, { size: 10 }), " Adicionar Imagem")), noteImages.length > 0 && /* @__PURE__ */ React20.createElement("div", { className: "space-y-2" }, noteImages.map((img) => /* @__PURE__ */ React20.createElement("div", { key: img.id, className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-1" }, /* @__PURE__ */ React20.createElement("div", { className: "flex-1 flex items-center gap-2 bg-slate-950/50 border border-white/5 rounded px-2 py-1" }, /* @__PURE__ */ React20.createElement(FiImage4, { size: 10, className: "text-slate-600" }), /* @__PURE__ */ React20.createElement(
12404
12617
  "input",
12405
12618
  {
12406
12619
  type: "text",
@@ -12409,7 +12622,7 @@ ${noteText}` : noteText : entry.notes,
12409
12622
  onChange: (e) => updateImageInNote(img.id, e.target.value),
12410
12623
  className: "flex-1 bg-transparent text-[10px] focus:outline-none"
12411
12624
  }
12412
- )), /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => removeImageFromNote(img.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })))))), /* @__PURE__ */ React19.createElement("div", { className: "flex justify-end gap-2 pt-2" }, /* @__PURE__ */ React19.createElement(
12625
+ )), /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: () => removeImageFromNote(img.id), className: "text-slate-600 hover:text-red-400 transition-colors" }, /* @__PURE__ */ React20.createElement(FiX7, { size: 12 })))))), /* @__PURE__ */ React20.createElement("div", { className: "flex justify-end gap-2 pt-2" }, /* @__PURE__ */ React20.createElement(
12413
12626
  "button",
12414
12627
  {
12415
12628
  type: "button",
@@ -12418,7 +12631,7 @@ ${noteText}` : noteText : entry.notes,
12418
12631
  className: "px-3 py-1.5 rounded-lg bg-indigo-600 hover:bg-indigo-500 text-white text-xs font-semibold transition-colors disabled:opacity-50"
12419
12632
  },
12420
12633
  editingEntryId ? "Salvar nesta Etapa" : "Adicionar ao Hist\xF3rico"
12421
- ))), /* @__PURE__ */ React19.createElement(
12634
+ ))), /* @__PURE__ */ React20.createElement(
12422
12635
  QuestTimeline,
12423
12636
  {
12424
12637
  timeline,
@@ -12427,10 +12640,10 @@ ${noteText}` : noteText : entry.notes,
12427
12640
  canEdit,
12428
12641
  onAddNote: handleOpenNoteForEntry
12429
12642
  }
12430
- )), /* @__PURE__ */ React19.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Tamanho no Node (Size)"), /* @__PURE__ */ React19.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
12643
+ )), /* @__PURE__ */ React20.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Tamanho no Node (Size)"), /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-5" }, ["small", "medium", "large"].map((s) => {
12431
12644
  const isSelected = size === s;
12432
- 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));
12433
- }))), /* @__PURE__ */ React19.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React19.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ React19.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, types.map((t, index) => /* @__PURE__ */ React19.createElement("span", { key: index, className: `flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border ${t === "quest" ? "bg-sky-500/20 text-sky-200 border-sky-500/30" : "bg-indigo-500/30 text-indigo-100 border-indigo-500/20"}` }, t, canEdit && t !== "quest" && /* @__PURE__ */ React19.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React19.createElement(FiX7, { size: 12 })))), canEdit && /* @__PURE__ */ React19.createElement(
12645
+ return /* @__PURE__ */ React20.createElement("button", { key: s, type: "button", onClick: () => canEdit && handleSizeChange(s), className: `flex items-center gap-2 group focus:outline-none ${canEdit ? "cursor-pointer" : "cursor-default opacity-80"}` }, /* @__PURE__ */ React20.createElement("div", { className: `w-4 h-4 rounded-[4px] border flex items-center justify-center transition-all duration-200 ${isSelected ? "bg-indigo-500 border-indigo-500 shadow-[0_0_10px_rgba(99,102,241,0.4)]" : "border-slate-600 bg-transparent " + (canEdit ? "group-hover:border-slate-500" : "")}` }, isSelected && /* @__PURE__ */ React20.createElement(FiCheck11, { size: 12, className: "text-white" })), /* @__PURE__ */ React20.createElement("span", { className: `text-sm capitalize transition-colors ${isSelected ? "text-white font-medium" : "text-slate-400 " + (canEdit ? "group-hover:text-slate-300" : "")}` }, s));
12646
+ }))), /* @__PURE__ */ React20.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React20.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ React20.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, types.map((t, index) => /* @__PURE__ */ React20.createElement("span", { key: index, className: `flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border ${t === "quest" ? "bg-sky-500/20 text-sky-200 border-sky-500/30" : "bg-indigo-500/30 text-indigo-100 border-indigo-500/20"}` }, t, canEdit && t !== "quest" && /* @__PURE__ */ React20.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React20.createElement(FiX7, { size: 12 })))), canEdit && /* @__PURE__ */ React20.createElement(
12434
12647
  "input",
12435
12648
  {
12436
12649
  type: "text",
@@ -12451,11 +12664,11 @@ ${noteText}` : noteText : entry.notes,
12451
12664
  placeholder: "",
12452
12665
  autoComplete: "off"
12453
12666
  }
12454
- ), canEdit && showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React19.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-10 w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredTypes.map((suggestedType, index) => /* @__PURE__ */ React19.createElement("li", { key: index, className: "px-3 py-2 text-sm text-slate-200 cursor-pointer hover:bg-indigo-600/50", onMouseDown: (e) => {
12667
+ ), canEdit && showTypeSuggestions && filteredTypes.length > 0 && /* @__PURE__ */ React20.createElement("ul", { className: "custom-scrollbar absolute top-full left-0 z-10 w-full mt-1 max-h-40 overflow-y-auto rounded-lg bg-slate-800 border border-white/10 shadow-lg" }, filteredTypes.map((suggestedType, index) => /* @__PURE__ */ React20.createElement("li", { key: index, className: "px-3 py-2 text-sm text-slate-200 cursor-pointer hover:bg-indigo-600/50", onMouseDown: (e) => {
12455
12668
  e.preventDefault();
12456
12669
  handleAddType(suggestedType);
12457
- } }, 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")))
12458
- ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React19.createElement(
12670
+ } }, suggestedType))))), currentDatasetName && /* @__PURE__ */ React20.createElement("div", { className: "pt-3 mt-4 border-t border-white/10 flex items-center justify-end gap-2 text-xs text-slate-400" }, /* @__PURE__ */ React20.createElement("span", { className: "truncate text-right" }, /* @__PURE__ */ React20.createElement("span", { className: "text-slate-200 font-medium" }, currentDatasetName)))), /* @__PURE__ */ React20.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React20.createElement("button", { onClick: handleCancel, disabled: isSaving, className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm disabled:opacity-50" }, canEdit ? "Cancelar" : "Fechar"), canEdit && /* @__PURE__ */ React20.createElement("button", { onClick: () => handleSave(false), disabled: isSaving, className: `px-4 py-2 rounded-lg transition-all font-semibold text-sm shadow-[0_8px_24px_rgba(99,102,241,0.35)] flex items-center gap-2 ${isSaving ? "bg-slate-700 text-slate-300 cursor-wait" : "bg-gradient-to-tr from-indigo-600 to-indigo-400 hover:from-indigo-500 hover:to-indigo-300 text-white"}` }, isSaving && /* @__PURE__ */ React20.createElement(FiLoader3, { className: "animate-spin" }), isSaving ? "Salvando..." : "Salvar Quest")))
12671
+ ), isDescriptionModalOpen && canEdit && /* @__PURE__ */ React20.createElement(
12459
12672
  DescriptionEditModal,
12460
12673
  {
12461
12674
  isOpen: isDescriptionModalOpen,
@@ -12475,7 +12688,7 @@ ${noteText}` : noteText : entry.notes,
12475
12688
  }
12476
12689
 
12477
12690
  // src/components/MultiNodeContextMenu.jsx
12478
- import React20, { useLayoutEffect as useLayoutEffect3, useRef as useRef15, useState as useState20, useEffect as useEffect17 } from "react";
12691
+ import React21, { useLayoutEffect as useLayoutEffect3, useRef as useRef15, useState as useState20, useEffect as useEffect17 } from "react";
12479
12692
  function MultiNodeContextMenu({
12480
12693
  data,
12481
12694
  userRole,
@@ -12517,7 +12730,7 @@ function MultiNodeContextMenu({
12517
12730
  const baseButtonClass = "w-full flex items-center gap-2.5 px-2 py-1.5 text-left text-sm rounded-md hover:bg-indigo-500/20 text-slate-200 hover:text-white transition-colors duration-150 truncate";
12518
12731
  const deleteButtonClass = "w-full flex items-center gap-2.5 px-2 py-1.5 text-left text-sm rounded-md hover:bg-red-500/25 text-red-400 hover:text-red-300 transition-colors duration-150 truncate";
12519
12732
  const nodeCount = data.nodeIds.size;
12520
- return /* @__PURE__ */ React20.createElement(
12733
+ return /* @__PURE__ */ React21.createElement(
12521
12734
  "div",
12522
12735
  {
12523
12736
  ref: menuRef,
@@ -12531,27 +12744,27 @@ function MultiNodeContextMenu({
12531
12744
  onContextMenu: swallow,
12532
12745
  onDoubleClick: swallow
12533
12746
  },
12534
- /* @__PURE__ */ React20.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
12535
- /* @__PURE__ */ React20.createElement("div", { className: "p-1.5" }, isConfirmingDelete ? /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-3 p-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col items-center text-center gap-2" }, /* @__PURE__ */ React20.createElement("div", { className: "w-10 h-10 rounded-full bg-red-500/20 flex items-center justify-center text-red-400 mb-1" }, /* @__PURE__ */ React20.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React20.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React20.createElement("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }))), /* @__PURE__ */ React20.createElement("p", { className: "text-sm text-slate-200" }, "Excluir ", /* @__PURE__ */ React20.createElement("strong", null, nodeCount, " Nodes"), "?"), /* @__PURE__ */ React20.createElement("p", { className: "text-[11px] text-slate-400 leading-tight" }, "Esta a\xE7\xE3o \xE9 irrevers\xEDvel. Todas as conex\xF5es associadas a eles ser\xE3o apagadas.")), /* @__PURE__ */ React20.createElement("div", { className: "flex gap-2 mt-1" }, /* @__PURE__ */ React20.createElement(
12747
+ /* @__PURE__ */ React21.createElement("div", { className: "h-[2px] bg-gradient-to-r from-indigo-400/0 via-indigo-400/70 to-indigo-400/0" }),
12748
+ /* @__PURE__ */ React21.createElement("div", { className: "p-1.5" }, isConfirmingDelete ? /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3 p-2" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col items-center text-center gap-2" }, /* @__PURE__ */ React21.createElement("div", { className: "w-10 h-10 rounded-full bg-red-500/20 flex items-center justify-center text-red-400 mb-1" }, /* @__PURE__ */ React21.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React21.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React21.createElement("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }))), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-200" }, "Excluir ", /* @__PURE__ */ React21.createElement("strong", null, nodeCount, " Nodes"), "?"), /* @__PURE__ */ React21.createElement("p", { className: "text-[11px] text-slate-400 leading-tight" }, "Esta a\xE7\xE3o \xE9 irrevers\xEDvel. Todas as conex\xF5es associadas a eles ser\xE3o apagadas.")), /* @__PURE__ */ React21.createElement("div", { className: "flex gap-2 mt-1" }, /* @__PURE__ */ React21.createElement(
12536
12749
  "button",
12537
12750
  {
12538
12751
  onClick: () => setIsConfirmingDelete(false),
12539
12752
  className: "flex-1 px-2 py-2 text-xs font-medium bg-white/10 hover:bg-white/20 rounded-md text-white transition-colors"
12540
12753
  },
12541
12754
  "Cancelar"
12542
- ), /* @__PURE__ */ React20.createElement(
12755
+ ), /* @__PURE__ */ React21.createElement(
12543
12756
  "button",
12544
12757
  {
12545
12758
  onClick: () => onDeleteNodes(data.nodeIds),
12546
12759
  className: "flex-1 px-2 py-2 text-xs font-medium bg-red-500 hover:bg-red-600 rounded-md text-white transition-colors"
12547
12760
  },
12548
12761
  "Excluir"
12549
- ))) : /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2 px-2 pt-1 pb-2" }, /* @__PURE__ */ React20.createElement("span", { className: "inline-flex h-2 w-2 rounded-full bg-indigo-400/80 shadow-[0_0_12px_1px_rgba(99,102,241,0.5)]" }), /* @__PURE__ */ React20.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "A\xE7\xF5es em Grupo (", nodeCount, " Nodes)")), /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React20.createElement("button", { onClick: () => onDismissNodes(data.nodeIds), className: baseButtonClass, title: "Remover da visualiza\xE7\xE3o" }, /* @__PURE__ */ React20.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React20.createElement("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }), /* @__PURE__ */ React20.createElement("path", { d: "M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68" }), /* @__PURE__ */ React20.createElement("path", { d: "M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61" }), /* @__PURE__ */ React20.createElement("line", { x1: "2", y1: "2", x2: "22", y2: "22" })), /* @__PURE__ */ React20.createElement("span", null, "Dismiss (", nodeCount, ")")), /* @__PURE__ */ React20.createElement("button", { onClick: () => onDismissOtherNodes(data.nodeIds), className: baseButtonClass, title: "Remover outros da visualiza\xE7\xE3o" }, /* @__PURE__ */ React20.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React20.createElement("circle", { cx: "12", cy: "12", r: "3" }), /* @__PURE__ */ React20.createElement("path", { d: "M3 7V5a2 2 0 0 1 2-2h2" }), /* @__PURE__ */ React20.createElement("path", { d: "M17 3h2a2 2 0 0 1 2 2v2" }), /* @__PURE__ */ React20.createElement("path", { d: "M21 17v2a2 2 0 0 1-2 2h-2" }), /* @__PURE__ */ React20.createElement("path", { d: "M7 21H5a2 2 0 0 1-2-2v-2" })), /* @__PURE__ */ React20.createElement("span", null, "Dismiss other nodes")), canDelete && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("div", { className: "my-1 h-px w-full bg-white/10" }), /* @__PURE__ */ React20.createElement("button", { onClick: () => setIsConfirmingDelete(true), className: deleteButtonClass, title: "Excluir Nodes" }, /* @__PURE__ */ React20.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React20.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React20.createElement("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }), /* @__PURE__ */ React20.createElement("line", { x1: "10", y1: "11", x2: "10", y2: "17" }), /* @__PURE__ */ React20.createElement("line", { x1: "14", y1: "11", x2: "14", y2: "17" })), /* @__PURE__ */ React20.createElement("span", null, "Excluir Nodes (", nodeCount, ")"))))))
12762
+ ))) : /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 px-2 pt-1 pb-2" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex h-2 w-2 rounded-full bg-indigo-400/80 shadow-[0_0_12px_1px_rgba(99,102,241,0.5)]" }), /* @__PURE__ */ React21.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "A\xE7\xF5es em Grupo (", nodeCount, " Nodes)")), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React21.createElement("button", { onClick: () => onDismissNodes(data.nodeIds), className: baseButtonClass, title: "Remover da visualiza\xE7\xE3o" }, /* @__PURE__ */ React21.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React21.createElement("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }), /* @__PURE__ */ React21.createElement("path", { d: "M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68" }), /* @__PURE__ */ React21.createElement("path", { d: "M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61" }), /* @__PURE__ */ React21.createElement("line", { x1: "2", y1: "2", x2: "22", y2: "22" })), /* @__PURE__ */ React21.createElement("span", null, "Dismiss (", nodeCount, ")")), /* @__PURE__ */ React21.createElement("button", { onClick: () => onDismissOtherNodes(data.nodeIds), className: baseButtonClass, title: "Remover outros da visualiza\xE7\xE3o" }, /* @__PURE__ */ React21.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React21.createElement("circle", { cx: "12", cy: "12", r: "3" }), /* @__PURE__ */ React21.createElement("path", { d: "M3 7V5a2 2 0 0 1 2-2h2" }), /* @__PURE__ */ React21.createElement("path", { d: "M17 3h2a2 2 0 0 1 2 2v2" }), /* @__PURE__ */ React21.createElement("path", { d: "M21 17v2a2 2 0 0 1-2 2h-2" }), /* @__PURE__ */ React21.createElement("path", { d: "M7 21H5a2 2 0 0 1-2-2v-2" })), /* @__PURE__ */ React21.createElement("span", null, "Dismiss other nodes")), canDelete && /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "my-1 h-px w-full bg-white/10" }), /* @__PURE__ */ React21.createElement("button", { onClick: () => setIsConfirmingDelete(true), className: deleteButtonClass, title: "Excluir Nodes" }, /* @__PURE__ */ React21.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React21.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React21.createElement("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }), /* @__PURE__ */ React21.createElement("line", { x1: "10", y1: "11", x2: "10", y2: "17" }), /* @__PURE__ */ React21.createElement("line", { x1: "14", y1: "11", x2: "14", y2: "17" })), /* @__PURE__ */ React21.createElement("span", null, "Excluir Nodes (", nodeCount, ")"))))))
12550
12763
  );
12551
12764
  }
12552
12765
 
12553
12766
  // src/components/RelationshipDetailsPanel.jsx
12554
- import React21, { useState as useState21, useEffect as useEffect18, useRef as useRef16, useMemo as useMemo9 } from "react";
12767
+ import React22, { useState as useState21, useEffect as useEffect18, useRef as useRef16, useMemo as useMemo9 } from "react";
12555
12768
  import { v4 as uuidv410 } from "uuid";
12556
12769
  import { FiPlus as FiPlus9, FiEdit2 as FiEdit29, FiLoader as FiLoader4, FiBookOpen as FiBookOpen5 } from "react-icons/fi";
12557
12770
  function RelationshipDetailsPanel({
@@ -12691,7 +12904,7 @@ function RelationshipDetailsPanel({
12691
12904
  onOpenImageViewer([{ name: name2 || "Imagem", value: url }], 0);
12692
12905
  }
12693
12906
  };
12694
- return /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement(
12907
+ return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(
12695
12908
  "div",
12696
12909
  {
12697
12910
  className: `ui-overlay absolute group rounded-2xl border border-white/10 bg-slate-950/70 backdrop-blur-xl shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white overflow-hidden transition-all duration-300 ease-out
@@ -12706,7 +12919,7 @@ function RelationshipDetailsPanel({
12706
12919
  onContextMenu: swallow,
12707
12920
  onDoubleClick: swallow
12708
12921
  },
12709
- isReadMode ? /* @__PURE__ */ React21.createElement(
12922
+ isReadMode ? /* @__PURE__ */ React22.createElement(
12710
12923
  DescriptionReadModePanel,
12711
12924
  {
12712
12925
  title: name || "Rela\xE7\xE3o",
@@ -12727,7 +12940,7 @@ function RelationshipDetailsPanel({
12727
12940
  onImageClick: handleImageClickFromText,
12728
12941
  onSaveDescription: handleSaveDescriptionInline
12729
12942
  }
12730
- ) : /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "h-[2px] bg-gradient-to-r from-teal-400/0 via-teal-400/70 to-teal-400/0" }), /* @__PURE__ */ React21.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React21.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-teal-400/80 shadow-[0_0_18px_2px_rgba(45,212,191,0.55)]" }), /* @__PURE__ */ React21.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Rela\xE7\xE3o")), /* @__PURE__ */ React21.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, name || "Rela\xE7\xE3o")), /* @__PURE__ */ React21.createElement(
12943
+ ) : /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement("div", { className: "h-[2px] bg-gradient-to-r from-teal-400/0 via-teal-400/70 to-teal-400/0" }), /* @__PURE__ */ React22.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React22.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React22.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React22.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-teal-400/80 shadow-[0_0_18px_2px_rgba(45,212,191,0.55)]" }), /* @__PURE__ */ React22.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Rela\xE7\xE3o")), /* @__PURE__ */ React22.createElement("h2", { className: "text-xl sm:text-2xl font-semibold tracking-tight" }, name || "Rela\xE7\xE3o")), /* @__PURE__ */ React22.createElement(
12731
12944
  "button",
12732
12945
  {
12733
12946
  onClick: onClose,
@@ -12736,7 +12949,7 @@ function RelationshipDetailsPanel({
12736
12949
  title: "Fechar"
12737
12950
  },
12738
12951
  "\xD7"
12739
- )), /* @__PURE__ */ React21.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React21.createElement("label", { className: "text-xs text-slate-300" }, "Nome da Rela\xE7\xE3o"), /* @__PURE__ */ React21.createElement(
12952
+ )), /* @__PURE__ */ React22.createElement("div", { className: "px-6 pb-28 overflow-y-auto overscroll-contain space-y-4 max-h-[68vh] custom-scrollbar" }, /* @__PURE__ */ React22.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React22.createElement("label", { className: "text-xs text-slate-300" }, "Nome da Rela\xE7\xE3o"), /* @__PURE__ */ React22.createElement(
12740
12953
  "input",
12741
12954
  {
12742
12955
  type: "text",
@@ -12751,7 +12964,7 @@ function RelationshipDetailsPanel({
12751
12964
  ${!canEdit ? "opacity-50 cursor-not-allowed" : ""}
12752
12965
  `
12753
12966
  }
12754
- )), /* @__PURE__ */ React21.createElement("div", { className: "rounded-xl border border-white/8 bg-slate-800/30 p-3 space-y-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(
12967
+ )), /* @__PURE__ */ React22.createElement("div", { className: "rounded-xl border border-white/8 bg-slate-800/30 p-3 space-y-3" }, /* @__PURE__ */ React22.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React22.createElement(
12755
12968
  "svg",
12756
12969
  {
12757
12970
  xmlns: "http://www.w3.org/2000/svg",
@@ -12765,9 +12978,9 @@ function RelationshipDetailsPanel({
12765
12978
  strokeLinejoin: "round",
12766
12979
  className: "text-violet-400 flex-shrink-0"
12767
12980
  },
12768
- /* @__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" }),
12769
- /* @__PURE__ */ React21.createElement("line", { x1: "7", y1: "7", x2: "7.01", y2: "7" })
12770
- ), /* @__PURE__ */ React21.createElement("p", { className: "text-xs font-medium text-violet-300/80 uppercase tracking-wider" }, "Labels de Agrupamento")), /* @__PURE__ */ React21.createElement("p", { className: "text-[11px] text-slate-400 leading-relaxed" }, "Labels agrupam conex\xF5es no menu de Conex\xF5es. Cada lado da conex\xE3o pode ter sua pr\xF3pria label."), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React21.createElement("label", { className: "text-[11px] text-slate-400" }, "Label do Source"), /* @__PURE__ */ React21.createElement(
12981
+ /* @__PURE__ */ React22.createElement("path", { d: "M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z" }),
12982
+ /* @__PURE__ */ React22.createElement("line", { x1: "7", y1: "7", x2: "7.01", y2: "7" })
12983
+ ), /* @__PURE__ */ React22.createElement("p", { className: "text-xs font-medium text-violet-300/80 uppercase tracking-wider" }, "Labels de Agrupamento")), /* @__PURE__ */ React22.createElement("p", { className: "text-[11px] text-slate-400 leading-relaxed" }, "Labels agrupam conex\xF5es no menu de Conex\xF5es. Cada lado da conex\xE3o pode ter sua pr\xF3pria label."), /* @__PURE__ */ React22.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React22.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React22.createElement("label", { className: "text-[11px] text-slate-400" }, "Label do Source"), /* @__PURE__ */ React22.createElement(
12771
12984
  "input",
12772
12985
  {
12773
12986
  type: "text",
@@ -12784,7 +12997,7 @@ function RelationshipDetailsPanel({
12784
12997
  ${!canEdit ? "opacity-50 cursor-not-allowed" : ""}
12785
12998
  `
12786
12999
  }
12787
- )), /* @__PURE__ */ React21.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React21.createElement("label", { className: "text-[11px] text-slate-400" }, "Label do Target"), /* @__PURE__ */ React21.createElement(
13000
+ )), /* @__PURE__ */ React22.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React22.createElement("label", { className: "text-[11px] text-slate-400" }, "Label do Target"), /* @__PURE__ */ React22.createElement(
12788
13001
  "input",
12789
13002
  {
12790
13003
  type: "text",
@@ -12801,7 +13014,7 @@ function RelationshipDetailsPanel({
12801
13014
  ${!canEdit ? "opacity-50 cursor-not-allowed" : ""}
12802
13015
  `
12803
13016
  }
12804
- )))), /* @__PURE__ */ React21.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React21.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React21.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React21.createElement(
13017
+ )))), /* @__PURE__ */ React22.createElement("div", { className: "space-y-1.5 relative" }, /* @__PURE__ */ React22.createElement("label", { className: "text-xs text-slate-300" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React22.createElement("div", { className: "relative group min-h-[60px] bg-slate-800/40 rounded-lg border border-white/10 hover:border-white/20 transition-colors" }, /* @__PURE__ */ React22.createElement(
12805
13018
  DescriptionDisplay,
12806
13019
  {
12807
13020
  description,
@@ -12813,7 +13026,7 @@ function RelationshipDetailsPanel({
12813
13026
  onImageClick: handleImageClickFromText,
12814
13027
  onSaveDescription: handleSaveDescriptionInline
12815
13028
  }
12816
- ), /* @__PURE__ */ React21.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React21.createElement(
13029
+ ), /* @__PURE__ */ React22.createElement("div", { className: "absolute top-0 right-0 flex bg-slate-900/50 rounded-bl-lg backdrop-blur-sm opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity overflow-hidden border-b border-l border-white/5" }, /* @__PURE__ */ React22.createElement(
12817
13030
  "button",
12818
13031
  {
12819
13032
  type: "button",
@@ -12821,8 +13034,8 @@ function RelationshipDetailsPanel({
12821
13034
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors border-r border-white/5",
12822
13035
  title: "Modo de Leitura"
12823
13036
  },
12824
- /* @__PURE__ */ React21.createElement(FiBookOpen5, { size: 14 })
12825
- ), canEdit && /* @__PURE__ */ React21.createElement(
13037
+ /* @__PURE__ */ React22.createElement(FiBookOpen5, { size: 14 })
13038
+ ), canEdit && /* @__PURE__ */ React22.createElement(
12826
13039
  "button",
12827
13040
  {
12828
13041
  type: "button",
@@ -12830,24 +13043,24 @@ function RelationshipDetailsPanel({
12830
13043
  className: "p-2 text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
12831
13044
  title: "Editar descri\xE7\xE3o"
12832
13045
  },
12833
- /* @__PURE__ */ React21.createElement(FiEdit29, { size: 14 })
12834
- )), !description && canEdit && /* @__PURE__ */ React21.createElement(
13046
+ /* @__PURE__ */ React22.createElement(FiEdit29, { size: 14 })
13047
+ )), !description && canEdit && /* @__PURE__ */ React22.createElement(
12835
13048
  "div",
12836
13049
  {
12837
13050
  onClick: () => setIsDescriptionModalOpen(true),
12838
13051
  className: "absolute inset-0 flex items-center justify-center text-xs text-slate-500 cursor-text"
12839
13052
  },
12840
13053
  "Adicionar descri\xE7\xE3o..."
12841
- ))), /* @__PURE__ */ React21.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), canEdit && /* @__PURE__ */ React21.createElement(
13054
+ ))), /* @__PURE__ */ React22.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React22.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React22.createElement("h3", { className: "text-sm font-medium" }, "Propriedades Adicionais"), canEdit && /* @__PURE__ */ React22.createElement(
12842
13055
  "button",
12843
13056
  {
12844
13057
  type: "button",
12845
13058
  onClick: handleAddProp,
12846
13059
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-md bg-slate-800/70 hover:bg-slate-700/70 border border-white/10 transition-colors"
12847
13060
  },
12848
- /* @__PURE__ */ React21.createElement(FiPlus9, { size: 14 }),
13061
+ /* @__PURE__ */ React22.createElement(FiPlus9, { size: 14 }),
12849
13062
  " Adicionar"
12850
- )), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React21.createElement(
13063
+ )), /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop, idx) => /* @__PURE__ */ React22.createElement(
12851
13064
  CustomPropertyDisplay,
12852
13065
  {
12853
13066
  key: prop.id,
@@ -12861,7 +13074,7 @@ function RelationshipDetailsPanel({
12861
13074
  onUploadFile,
12862
13075
  disabled: !canEdit
12863
13076
  }
12864
- )), /* @__PURE__ */ React21.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React21.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React21.createElement(
13077
+ )), /* @__PURE__ */ React22.createElement("div", { ref: propsEndRef })))), /* @__PURE__ */ React22.createElement("div", { className: "sticky bottom-0 z-10 bg-gradient-to-t from-slate-950/80 via-slate-950/50 to-transparent px-6 py-4 border-t border-white/10 flex justify-end gap-3" }, /* @__PURE__ */ React22.createElement(
12865
13078
  "button",
12866
13079
  {
12867
13080
  onClick: onClose,
@@ -12869,7 +13082,7 @@ function RelationshipDetailsPanel({
12869
13082
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm disabled:opacity-50"
12870
13083
  },
12871
13084
  canEdit ? "Cancelar" : "Fechar"
12872
- ), canEdit && /* @__PURE__ */ React21.createElement(
13085
+ ), canEdit && /* @__PURE__ */ React22.createElement(
12873
13086
  "button",
12874
13087
  {
12875
13088
  onClick: () => handleSave(false),
@@ -12878,10 +13091,10 @@ function RelationshipDetailsPanel({
12878
13091
  ${isSaving ? "bg-slate-700 text-slate-300 cursor-wait" : "bg-gradient-to-tr from-teal-600 to-teal-400 hover:from-teal-500 hover:to-teal-300 text-white"}
12879
13092
  `
12880
13093
  },
12881
- isSaving && /* @__PURE__ */ React21.createElement(FiLoader4, { className: "animate-spin" }),
13094
+ isSaving && /* @__PURE__ */ React22.createElement(FiLoader4, { className: "animate-spin" }),
12882
13095
  isSaving ? "Salvando..." : "Salvar"
12883
13096
  )))
12884
- ), isDescriptionModalOpen && /* @__PURE__ */ React21.createElement(
13097
+ ), isDescriptionModalOpen && /* @__PURE__ */ React22.createElement(
12885
13098
  DescriptionEditModal,
12886
13099
  {
12887
13100
  isOpen: isDescriptionModalOpen,
@@ -12903,7 +13116,7 @@ function RelationshipDetailsPanel({
12903
13116
  }
12904
13117
 
12905
13118
  // src/components/RelationshipContextMenu.jsx
12906
- import React22, { useLayoutEffect as useLayoutEffect4, useRef as useRef17, useState as useState22, useEffect as useEffect19, useMemo as useMemo10 } from "react";
13119
+ import React23, { useLayoutEffect as useLayoutEffect4, useRef as useRef17, useState as useState22, useEffect as useEffect19, useMemo as useMemo10 } from "react";
12907
13120
  function RelationshipContextMenu({
12908
13121
  data,
12909
13122
  userRole,
@@ -12960,7 +13173,7 @@ function RelationshipContextMenu({
12960
13173
  const dangerButtonClass = "w-full flex items-center gap-2.5 px-2 py-1.5 text-left text-sm rounded-md hover:bg-rose-500/20 text-rose-300 hover:text-rose-100 transition-colors duration-150 truncate";
12961
13174
  const canUpdate = ability.can("update", "Connection");
12962
13175
  const canDelete = ability.can("delete", "Connection");
12963
- return /* @__PURE__ */ React22.createElement(
13176
+ return /* @__PURE__ */ React23.createElement(
12964
13177
  "div",
12965
13178
  {
12966
13179
  ref: menuRef,
@@ -12974,29 +13187,29 @@ function RelationshipContextMenu({
12974
13187
  onContextMenu: swallow,
12975
13188
  onDoubleClick: swallow
12976
13189
  },
12977
- /* @__PURE__ */ React22.createElement("div", { className: "h-[2px] bg-gradient-to-r from-teal-400/0 via-teal-400/70 to-teal-400/0" }),
12978
- /* @__PURE__ */ React22.createElement("div", { className: "p-1.5" }, isConfirmingDelete ? /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col gap-3 p-2" }, /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col items-center text-center gap-2" }, /* @__PURE__ */ React22.createElement("div", { className: "w-10 h-10 rounded-full bg-rose-500/20 flex items-center justify-center text-rose-400 mb-1" }, /* @__PURE__ */ React22.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React22.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React22.createElement("path", { d: "M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }), /* @__PURE__ */ React22.createElement("path", { d: "M10 11v6" }), /* @__PURE__ */ React22.createElement("path", { d: "M14 11v6" }), /* @__PURE__ */ React22.createElement("path", { d: "M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" }))), /* @__PURE__ */ React22.createElement("p", { className: "text-sm text-slate-200" }, "Excluir rela\xE7\xE3o?"), /* @__PURE__ */ React22.createElement("p", { className: "text-[11px] text-slate-400 leading-tight break-words" }, "Desconectar ", /* @__PURE__ */ React22.createElement("strong", null, sourceName), " de ", /* @__PURE__ */ React22.createElement("strong", null, targetName), ".")), /* @__PURE__ */ React22.createElement("div", { className: "flex gap-2 mt-1" }, /* @__PURE__ */ React22.createElement(
13190
+ /* @__PURE__ */ React23.createElement("div", { className: "h-[2px] bg-gradient-to-r from-teal-400/0 via-teal-400/70 to-teal-400/0" }),
13191
+ /* @__PURE__ */ React23.createElement("div", { className: "p-1.5" }, isConfirmingDelete ? /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col gap-3 p-2" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col items-center text-center gap-2" }, /* @__PURE__ */ React23.createElement("div", { className: "w-10 h-10 rounded-full bg-rose-500/20 flex items-center justify-center text-rose-400 mb-1" }, /* @__PURE__ */ React23.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.createElement("polyline", { points: "3 6 5 6 21 6" }), /* @__PURE__ */ React23.createElement("path", { d: "M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }), /* @__PURE__ */ React23.createElement("path", { d: "M10 11v6" }), /* @__PURE__ */ React23.createElement("path", { d: "M14 11v6" }), /* @__PURE__ */ React23.createElement("path", { d: "M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" }))), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-200" }, "Excluir rela\xE7\xE3o?"), /* @__PURE__ */ React23.createElement("p", { className: "text-[11px] text-slate-400 leading-tight break-words" }, "Desconectar ", /* @__PURE__ */ React23.createElement("strong", null, sourceName), " de ", /* @__PURE__ */ React23.createElement("strong", null, targetName), ".")), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-2 mt-1" }, /* @__PURE__ */ React23.createElement(
12979
13192
  "button",
12980
13193
  {
12981
13194
  onClick: () => setIsConfirmingDelete(false),
12982
13195
  className: "flex-1 px-2 py-2 text-xs font-medium bg-white/10 hover:bg-white/20 rounded-md text-white transition-colors"
12983
13196
  },
12984
13197
  "Cancelar"
12985
- ), /* @__PURE__ */ React22.createElement(
13198
+ ), /* @__PURE__ */ React23.createElement(
12986
13199
  "button",
12987
13200
  {
12988
13201
  onClick: () => onDelete == null ? void 0 : onDelete(data.linkObject),
12989
13202
  className: "flex-1 px-2 py-2 text-xs font-medium bg-rose-600 hover:bg-rose-500 rounded-md text-white transition-colors"
12990
13203
  },
12991
13204
  "Excluir"
12992
- ))) : /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement("div", { className: "flex items-center gap-2 px-2 pt-1 pb-2" }, /* @__PURE__ */ React22.createElement("span", { className: "inline-flex h-2 w-2 rounded-full bg-teal-400/80 shadow-[0_0_12px_1px_rgba(45,212,191,0.5)]" }), /* @__PURE__ */ React22.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Rela\xE7\xE3o")), /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col gap-1" }, canUpdate && /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(
13205
+ ))) : /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2 px-2 pt-1 pb-2" }, /* @__PURE__ */ React23.createElement("span", { className: "inline-flex h-2 w-2 rounded-full bg-teal-400/80 shadow-[0_0_12px_1px_rgba(45,212,191,0.5)]" }), /* @__PURE__ */ React23.createElement("p", { className: "text-[11px] uppercase tracking-wider text-slate-400" }, "Rela\xE7\xE3o")), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col gap-1" }, canUpdate && /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(
12993
13206
  "button",
12994
13207
  {
12995
13208
  onClick: () => onRelinkSource == null ? void 0 : onRelinkSource(data.linkObject),
12996
13209
  className: baseButtonClass,
12997
13210
  title: "Desconectar ponta ligada ao Source"
12998
13211
  },
12999
- /* @__PURE__ */ React22.createElement(
13212
+ /* @__PURE__ */ React23.createElement(
13000
13213
  "svg",
13001
13214
  {
13002
13215
  xmlns: "http://www.w3.org/2000/svg",
@@ -13009,18 +13222,18 @@ function RelationshipContextMenu({
13009
13222
  strokeLinecap: "round",
13010
13223
  strokeLinejoin: "round"
13011
13224
  },
13012
- /* @__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" }),
13013
- /* @__PURE__ */ React22.createElement("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.72-1.72" })
13225
+ /* @__PURE__ */ React23.createElement("path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.72" }),
13226
+ /* @__PURE__ */ React23.createElement("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.72-1.72" })
13014
13227
  ),
13015
- /* @__PURE__ */ React22.createElement("span", null, "Desconectar Source (", sourceName, ")")
13016
- ), /* @__PURE__ */ React22.createElement(
13228
+ /* @__PURE__ */ React23.createElement("span", null, "Desconectar Source (", sourceName, ")")
13229
+ ), /* @__PURE__ */ React23.createElement(
13017
13230
  "button",
13018
13231
  {
13019
13232
  onClick: () => onRelinkTarget == null ? void 0 : onRelinkTarget(data.linkObject),
13020
13233
  className: baseButtonClass,
13021
13234
  title: "Desconectar ponta ligada ao Target"
13022
13235
  },
13023
- /* @__PURE__ */ React22.createElement(
13236
+ /* @__PURE__ */ React23.createElement(
13024
13237
  "svg",
13025
13238
  {
13026
13239
  xmlns: "http://www.w3.org/2000/svg",
@@ -13033,21 +13246,21 @@ function RelationshipContextMenu({
13033
13246
  strokeLinecap: "round",
13034
13247
  strokeLinejoin: "round"
13035
13248
  },
13036
- /* @__PURE__ */ React22.createElement("polyline", { points: "16 3 21 3 21 8" }),
13037
- /* @__PURE__ */ React22.createElement("line", { x1: "4", y1: "20", x2: "21", y2: "3" }),
13038
- /* @__PURE__ */ React22.createElement("polyline", { points: "21 16 21 21 16 21" }),
13039
- /* @__PURE__ */ React22.createElement("line", { x1: "15", y1: "15", x2: "21", y2: "21" }),
13040
- /* @__PURE__ */ React22.createElement("line", { x1: "4", y1: "4", x2: "9", y2: "9" })
13249
+ /* @__PURE__ */ React23.createElement("polyline", { points: "16 3 21 3 21 8" }),
13250
+ /* @__PURE__ */ React23.createElement("line", { x1: "4", y1: "20", x2: "21", y2: "3" }),
13251
+ /* @__PURE__ */ React23.createElement("polyline", { points: "21 16 21 21 16 21" }),
13252
+ /* @__PURE__ */ React23.createElement("line", { x1: "15", y1: "15", x2: "21", y2: "21" }),
13253
+ /* @__PURE__ */ React23.createElement("line", { x1: "4", y1: "4", x2: "9", y2: "9" })
13041
13254
  ),
13042
- /* @__PURE__ */ React22.createElement("span", null, "Desconectar Target (", targetName, ")")
13043
- ), /* @__PURE__ */ React22.createElement("div", { className: "h-[1px] my-1 mx-1 bg-white/10" })), /* @__PURE__ */ React22.createElement(
13255
+ /* @__PURE__ */ React23.createElement("span", null, "Desconectar Target (", targetName, ")")
13256
+ ), /* @__PURE__ */ React23.createElement("div", { className: "h-[1px] my-1 mx-1 bg-white/10" })), /* @__PURE__ */ React23.createElement(
13044
13257
  "button",
13045
13258
  {
13046
13259
  onClick: () => onOpenDetails == null ? void 0 : onOpenDetails(data.linkObject),
13047
13260
  className: baseButtonClass,
13048
13261
  title: "Abrir detalhes da rela\xE7\xE3o"
13049
13262
  },
13050
- /* @__PURE__ */ React22.createElement(
13263
+ /* @__PURE__ */ React23.createElement(
13051
13264
  "svg",
13052
13265
  {
13053
13266
  xmlns: "http://www.w3.org/2000/svg",
@@ -13060,19 +13273,19 @@ function RelationshipContextMenu({
13060
13273
  strokeLinecap: "round",
13061
13274
  strokeLinejoin: "round"
13062
13275
  },
13063
- /* @__PURE__ */ React22.createElement("circle", { cx: "12", cy: "12", r: "10" }),
13064
- /* @__PURE__ */ React22.createElement("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
13065
- /* @__PURE__ */ React22.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "8" })
13276
+ /* @__PURE__ */ React23.createElement("circle", { cx: "12", cy: "12", r: "10" }),
13277
+ /* @__PURE__ */ React23.createElement("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
13278
+ /* @__PURE__ */ React23.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "8" })
13066
13279
  ),
13067
- /* @__PURE__ */ React22.createElement("span", null, "Abrir Detalhes")
13068
- ), canDelete && /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement("div", { className: "h-[1px] my-1 mx-1 bg-white/10" }), /* @__PURE__ */ React22.createElement(
13280
+ /* @__PURE__ */ React23.createElement("span", null, "Abrir Detalhes")
13281
+ ), canDelete && /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", { className: "h-[1px] my-1 mx-1 bg-white/10" }), /* @__PURE__ */ React23.createElement(
13069
13282
  "button",
13070
13283
  {
13071
13284
  onClick: () => setIsConfirmingDelete(true),
13072
13285
  className: dangerButtonClass,
13073
13286
  title: "Excluir esta conex\xE3o"
13074
13287
  },
13075
- /* @__PURE__ */ React22.createElement(
13288
+ /* @__PURE__ */ React23.createElement(
13076
13289
  "svg",
13077
13290
  {
13078
13291
  xmlns: "http://www.w3.org/2000/svg",
@@ -13085,19 +13298,19 @@ function RelationshipContextMenu({
13085
13298
  strokeLinecap: "round",
13086
13299
  strokeLinejoin: "round"
13087
13300
  },
13088
- /* @__PURE__ */ React22.createElement("polyline", { points: "3 6 5 6 21 6" }),
13089
- /* @__PURE__ */ React22.createElement("path", { d: "M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }),
13090
- /* @__PURE__ */ React22.createElement("path", { d: "M10 11v6" }),
13091
- /* @__PURE__ */ React22.createElement("path", { d: "M14 11v6" }),
13092
- /* @__PURE__ */ React22.createElement("path", { d: "M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" })
13301
+ /* @__PURE__ */ React23.createElement("polyline", { points: "3 6 5 6 21 6" }),
13302
+ /* @__PURE__ */ React23.createElement("path", { d: "M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }),
13303
+ /* @__PURE__ */ React23.createElement("path", { d: "M10 11v6" }),
13304
+ /* @__PURE__ */ React23.createElement("path", { d: "M14 11v6" }),
13305
+ /* @__PURE__ */ React23.createElement("path", { d: "M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" })
13093
13306
  ),
13094
- /* @__PURE__ */ React22.createElement("span", null, "Excluir conex\xE3o (", sourceName, " \u2192 ", targetName, ")")
13307
+ /* @__PURE__ */ React23.createElement("span", null, "Excluir conex\xE3o (", sourceName, " \u2192 ", targetName, ")")
13095
13308
  )))))
13096
13309
  );
13097
13310
  }
13098
13311
 
13099
13312
  // src/components/LoadingScreen.jsx
13100
- import React23 from "react";
13313
+ import React24 from "react";
13101
13314
  var styles = {
13102
13315
  loadingOverlay: {
13103
13316
  position: "fixed",
@@ -13129,11 +13342,11 @@ var styles = {
13129
13342
  `
13130
13343
  };
13131
13344
  function LoadingScreen() {
13132
- return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("style", null, styles.keyframes), /* @__PURE__ */ React23.createElement("div", { style: styles.loadingOverlay }, /* @__PURE__ */ React23.createElement("div", { style: styles.spinner })));
13345
+ return /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement("style", null, styles.keyframes), /* @__PURE__ */ React24.createElement("div", { style: styles.loadingOverlay }, /* @__PURE__ */ React24.createElement("div", { style: styles.spinner })));
13133
13346
  }
13134
13347
 
13135
13348
  // src/components/ImportParentFileModal.jsx
13136
- import React24, { useEffect as useEffect20, useState as useState23 } from "react";
13349
+ import React25, { useEffect as useEffect20, useState as useState23 } from "react";
13137
13350
  function ImportParentFileModal({
13138
13351
  isOpen,
13139
13352
  onClose,
@@ -13214,13 +13427,13 @@ function ImportParentFileModal({
13214
13427
  const swallow = (e) => e.stopPropagation();
13215
13428
  const currentList = activeTab === "databases" ? availableDbs : availableViews;
13216
13429
  const emptyMessage = activeTab === "databases" ? "Nenhum novo arquivo parent dispon\xEDvel." : "Nenhuma view dispon\xEDvel para importa\xE7\xE3o.";
13217
- return /* @__PURE__ */ React24.createElement(
13430
+ return /* @__PURE__ */ React25.createElement(
13218
13431
  "div",
13219
13432
  {
13220
13433
  className: "ui-overlay fixed inset-0 z-[1200] flex items-center justify-center bg-black/60 backdrop-blur-sm",
13221
13434
  onClick: onClose
13222
13435
  },
13223
- /* @__PURE__ */ React24.createElement(
13436
+ /* @__PURE__ */ React25.createElement(
13224
13437
  "div",
13225
13438
  {
13226
13439
  className: "ui-overlay relative rounded-2xl border border-white/10 bg-slate-950/80 shadow-[0_20px_80px_rgba(0,0,0,0.6)] text-white w-[min(92vw,500px)] flex flex-col max-h-[85vh]",
@@ -13232,14 +13445,14 @@ function ImportParentFileModal({
13232
13445
  onContextMenu: swallow,
13233
13446
  onDoubleClick: swallow
13234
13447
  },
13235
- /* @__PURE__ */ React24.createElement("div", { className: "flex items-center justify-between px-6 py-4 border-b border-white/10 flex-shrink-0" }, /* @__PURE__ */ React24.createElement("h2", { className: "text-lg font-semibold" }, "Importar"), /* @__PURE__ */ React24.createElement(
13448
+ /* @__PURE__ */ React25.createElement("div", { className: "flex items-center justify-between px-6 py-4 border-b border-white/10 flex-shrink-0" }, /* @__PURE__ */ React25.createElement("h2", { className: "text-lg font-semibold" }, "Importar"), /* @__PURE__ */ React25.createElement(
13236
13449
  "button",
13237
13450
  {
13238
13451
  onClick: onClose,
13239
13452
  className: "p-2 rounded-md text-slate-400 hover:text-white hover:bg-white/10 transition-colors",
13240
13453
  title: "Fechar"
13241
13454
  },
13242
- /* @__PURE__ */ React24.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React24.createElement(
13455
+ /* @__PURE__ */ React25.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-5 w-5", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React25.createElement(
13243
13456
  "path",
13244
13457
  {
13245
13458
  fillRule: "evenodd",
@@ -13248,14 +13461,14 @@ function ImportParentFileModal({
13248
13461
  }
13249
13462
  ))
13250
13463
  )),
13251
- /* @__PURE__ */ React24.createElement("div", { className: "flex px-6 border-b border-white/10 bg-white/5 flex-shrink-0" }, /* @__PURE__ */ React24.createElement(
13464
+ /* @__PURE__ */ React25.createElement("div", { className: "flex px-6 border-b border-white/10 bg-white/5 flex-shrink-0" }, /* @__PURE__ */ React25.createElement(
13252
13465
  "button",
13253
13466
  {
13254
13467
  onClick: () => setActiveTab("databases"),
13255
13468
  className: `flex-1 py-3 text-sm font-medium border-b-2 transition-colors ${activeTab === "databases" ? "border-indigo-500 text-white" : "border-transparent text-slate-400 hover:text-slate-200"}`
13256
13469
  },
13257
13470
  "Arquivos Parent"
13258
- ), /* @__PURE__ */ React24.createElement(
13471
+ ), /* @__PURE__ */ React25.createElement(
13259
13472
  "button",
13260
13473
  {
13261
13474
  onClick: () => setActiveTab("views"),
@@ -13263,24 +13476,24 @@ function ImportParentFileModal({
13263
13476
  },
13264
13477
  "Views (Ancestralidades)"
13265
13478
  )),
13266
- /* @__PURE__ */ React24.createElement("div", { className: "p-6 overflow-y-auto custom-scrollbar flex-grow min-h-[200px]" }, isLoading ? /* @__PURE__ */ React24.createElement("div", { className: "flex items-center justify-center h-40" }, /* @__PURE__ */ React24.createElement("div", { className: "w-8 h-8 border-4 border-t-indigo-500 border-slate-700 rounded-full animate-spin" })) : /* @__PURE__ */ React24.createElement("div", { className: "space-y-2" }, currentList.length > 0 ? currentList.map((item) => /* @__PURE__ */ React24.createElement(
13479
+ /* @__PURE__ */ React25.createElement("div", { className: "p-6 overflow-y-auto custom-scrollbar flex-grow min-h-[200px]" }, isLoading ? /* @__PURE__ */ React25.createElement("div", { className: "flex items-center justify-center h-40" }, /* @__PURE__ */ React25.createElement("div", { className: "w-8 h-8 border-4 border-t-indigo-500 border-slate-700 rounded-full animate-spin" })) : /* @__PURE__ */ React25.createElement("div", { className: "space-y-2" }, currentList.length > 0 ? currentList.map((item) => /* @__PURE__ */ React25.createElement(
13267
13480
  "div",
13268
13481
  {
13269
13482
  key: item.id,
13270
13483
  onClick: () => setSelectedItem(item),
13271
13484
  className: `px-4 py-3 rounded-lg border cursor-pointer transition-all duration-150 flex flex-col gap-1 ${(selectedItem == null ? void 0 : selectedItem.id) === item.id ? "bg-indigo-600 border-indigo-500 shadow-lg" : "bg-slate-800/60 border-white/10 hover:border-white/20 hover:bg-slate-800"}`
13272
13485
  },
13273
- /* @__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")),
13274
- 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)
13275
- )) : /* @__PURE__ */ React24.createElement("p", { className: "text-slate-400 text-center py-10" }, emptyMessage))),
13276
- /* @__PURE__ */ React24.createElement("div", { className: "px-6 py-4 border-t border-white/10 flex justify-end gap-3 flex-shrink-0 bg-slate-900/50" }, /* @__PURE__ */ React24.createElement(
13486
+ /* @__PURE__ */ React25.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React25.createElement("span", { className: "font-medium text-slate-100" }, item.name), activeTab === "views" && /* @__PURE__ */ React25.createElement("span", { className: "text-[10px] px-1.5 py-0.5 rounded bg-black/30 text-indigo-300 border border-indigo-500/30" }, "VIEW")),
13487
+ item.description && /* @__PURE__ */ React25.createElement("p", { className: `text-xs ${(selectedItem == null ? void 0 : selectedItem.id) === item.id ? "text-indigo-200" : "text-slate-400"}` }, item.description)
13488
+ )) : /* @__PURE__ */ React25.createElement("p", { className: "text-slate-400 text-center py-10" }, emptyMessage))),
13489
+ /* @__PURE__ */ React25.createElement("div", { className: "px-6 py-4 border-t border-white/10 flex justify-end gap-3 flex-shrink-0 bg-slate-900/50" }, /* @__PURE__ */ React25.createElement(
13277
13490
  "button",
13278
13491
  {
13279
13492
  onClick: onClose,
13280
13493
  className: "px-4 py-2 rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-sm text-slate-300"
13281
13494
  },
13282
13495
  "Cancelar"
13283
- ), /* @__PURE__ */ React24.createElement(
13496
+ ), /* @__PURE__ */ React25.createElement(
13284
13497
  "button",
13285
13498
  {
13286
13499
  onClick: handleConfirm,
@@ -13294,7 +13507,7 @@ function ImportParentFileModal({
13294
13507
  }
13295
13508
 
13296
13509
  // src/components/AncestryLinkDetailsPanel.jsx
13297
- import React25, { useState as useState24 } from "react";
13510
+ import React26, { useState as useState24 } from "react";
13298
13511
  import { FiBookOpen as FiBookOpen6 } from "react-icons/fi";
13299
13512
  function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenReference, onMentionClick, onUploadFile, onHighlight }) {
13300
13513
  var _a, _b, _c, _d;
@@ -13305,7 +13518,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13305
13518
  const sourceName = ((_b = (_a = data.sourceNode) == null ? void 0 : _a.userData) == null ? void 0 : _b.name) || "Origem";
13306
13519
  const targetName = ((_d = (_c = data.targetNode) == null ? void 0 : _c.userData) == null ? void 0 : _d.name) || "Destino";
13307
13520
  const [isReadMode, setIsReadMode] = useState24(false);
13308
- React25.useEffect(() => {
13521
+ React26.useEffect(() => {
13309
13522
  return () => {
13310
13523
  if (onHighlight) onHighlight(null);
13311
13524
  };
@@ -13316,14 +13529,14 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13316
13529
  onOpenImageViewer([{ name: name || "Imagem", value: url }], 0);
13317
13530
  }
13318
13531
  };
13319
- return /* @__PURE__ */ React25.createElement(
13532
+ return /* @__PURE__ */ React26.createElement(
13320
13533
  "div",
13321
13534
  {
13322
13535
  className: "ui-overlay fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-[1200]",
13323
13536
  onClick: onClose,
13324
13537
  onPointerDown: swallow
13325
13538
  },
13326
- /* @__PURE__ */ React25.createElement(
13539
+ /* @__PURE__ */ React26.createElement(
13327
13540
  "div",
13328
13541
  {
13329
13542
  className: `relative group rounded-2xl border border-white/10 bg-slate-950/80 shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white overflow-hidden flex flex-col max-h-[calc(100vh-4rem)] transition-all duration-300 ease-out
@@ -13331,7 +13544,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13331
13544
  `,
13332
13545
  onClick: swallow
13333
13546
  },
13334
- isReadMode ? /* @__PURE__ */ React25.createElement(
13547
+ isReadMode ? /* @__PURE__ */ React26.createElement(
13335
13548
  DescriptionReadModePanel,
13336
13549
  {
13337
13550
  title: `${sourceName} \u2794 ${targetName}`,
@@ -13343,7 +13556,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13343
13556
  onMentionClick,
13344
13557
  onImageClick: handleImageClickFromText
13345
13558
  }
13346
- ) : /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement("div", { className: "h-[2px] bg-gradient-to-r from-blue-500/0 via-blue-500/70 to-blue-500/0" }), /* @__PURE__ */ React25.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React25.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React25.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React25.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-blue-500/80 shadow-[0_0_18px_2px_rgba(59,130,246,0.55)]" }), /* @__PURE__ */ React25.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Ancestralidade")), /* @__PURE__ */ React25.createElement("h2", { className: "text-lg font-semibold tracking-tight flex items-center gap-2" }, /* @__PURE__ */ React25.createElement(
13559
+ ) : /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement("div", { className: "h-[2px] bg-gradient-to-r from-blue-500/0 via-blue-500/70 to-blue-500/0" }), /* @__PURE__ */ React26.createElement("div", { className: "px-6 pt-5 pb-3 flex items-start justify-between gap-4" }, /* @__PURE__ */ React26.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React26.createElement("div", { className: "flex items-center gap-2 mb-1" }, /* @__PURE__ */ React26.createElement("span", { className: "inline-flex h-2.5 w-2.5 rounded-full bg-blue-500/80 shadow-[0_0_18px_2px_rgba(59,130,246,0.55)]" }), /* @__PURE__ */ React26.createElement("p", { className: "text-xs/relaxed text-slate-300" }, "Detalhes da Ancestralidade")), /* @__PURE__ */ React26.createElement("h2", { className: "text-lg font-semibold tracking-tight flex items-center gap-2" }, /* @__PURE__ */ React26.createElement(
13347
13560
  "span",
13348
13561
  {
13349
13562
  className: "truncate max-w-[150px] cursor-help hover:text-blue-400 transition-colors",
@@ -13351,7 +13564,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13351
13564
  onMouseLeave: () => onHighlight == null ? void 0 : onHighlight(null)
13352
13565
  },
13353
13566
  sourceName
13354
- ), /* @__PURE__ */ React25.createElement("span", { className: "text-slate-500 text-sm" }, "\u2794"), /* @__PURE__ */ React25.createElement(
13567
+ ), /* @__PURE__ */ React26.createElement("span", { className: "text-slate-500 text-sm" }, "\u2794"), /* @__PURE__ */ React26.createElement(
13355
13568
  "span",
13356
13569
  {
13357
13570
  className: "truncate max-w-[150px] cursor-help hover:text-blue-400 transition-colors",
@@ -13359,15 +13572,15 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13359
13572
  onMouseLeave: () => onHighlight == null ? void 0 : onHighlight(null)
13360
13573
  },
13361
13574
  targetName
13362
- ))), /* @__PURE__ */ React25.createElement("button", { onClick: onClose, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl", title: "Fechar" }, "\xD7")), /* @__PURE__ */ React25.createElement("div", { className: "px-6 pb-6 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, description && /* @__PURE__ */ React25.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React25.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React25.createElement("label", { className: "text-xs text-slate-300 font-medium" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React25.createElement(
13575
+ ))), /* @__PURE__ */ React26.createElement("button", { onClick: onClose, className: "w-9 h-9 flex-shrink-0 grid place-content-center rounded-lg border border-white/15 bg-transparent hover:bg-white/5 transition-colors text-xl", title: "Fechar" }, "\xD7")), /* @__PURE__ */ React26.createElement("div", { className: "px-6 pb-6 overflow-y-auto overscroll-contain space-y-4 custom-scrollbar" }, description && /* @__PURE__ */ React26.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React26.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React26.createElement("label", { className: "text-xs text-slate-300 font-medium" }, "Descri\xE7\xE3o"), /* @__PURE__ */ React26.createElement(
13363
13576
  "button",
13364
13577
  {
13365
13578
  onClick: () => setIsReadMode(true),
13366
13579
  className: "p-1 text-slate-400 hover:text-white transition-colors",
13367
13580
  title: "Modo de Leitura"
13368
13581
  },
13369
- /* @__PURE__ */ React25.createElement(FiBookOpen6, { size: 14 })
13370
- )), /* @__PURE__ */ React25.createElement("div", { className: "bg-slate-800/40 rounded-lg border border-white/10 p-1 relative group" }, /* @__PURE__ */ React25.createElement(
13582
+ /* @__PURE__ */ React26.createElement(FiBookOpen6, { size: 14 })
13583
+ )), /* @__PURE__ */ React26.createElement("div", { className: "bg-slate-800/40 rounded-lg border border-white/10 p-1 relative group" }, /* @__PURE__ */ React26.createElement(
13371
13584
  DescriptionDisplay,
13372
13585
  {
13373
13586
  description,
@@ -13376,7 +13589,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13376
13589
  onMentionClick,
13377
13590
  onImageClick: handleImageClickFromText
13378
13591
  }
13379
- ))), customProps.length > 0 && /* @__PURE__ */ React25.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React25.createElement("label", { className: "text-xs text-slate-300 font-medium mb-2 block" }, "Propriedades"), /* @__PURE__ */ React25.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop) => /* @__PURE__ */ React25.createElement(
13592
+ ))), customProps.length > 0 && /* @__PURE__ */ React26.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React26.createElement("label", { className: "text-xs text-slate-300 font-medium mb-2 block" }, "Propriedades"), /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col gap-3" }, customProps.map((prop) => /* @__PURE__ */ React26.createElement(
13380
13593
  CustomPropertyDisplay,
13381
13594
  {
13382
13595
  key: prop.id,
@@ -13385,13 +13598,13 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
13385
13598
  onOpenImageViewer,
13386
13599
  onUploadFile
13387
13600
  }
13388
- )))), !description && customProps.length === 0 && /* @__PURE__ */ React25.createElement("div", { className: "py-8 text-center text-slate-500 text-sm italic border border-dashed border-white/10 rounded-lg" }, "Nenhum detalhe adicional dispon\xEDvel para esta conex\xE3o."), /* @__PURE__ */ React25.createElement("div", { className: "mt-4 p-3 bg-blue-500/10 border border-blue-500/20 rounded-lg text-xs text-blue-200/80 text-center" }, 'Para editar esta conex\xE3o, utilize o menu "Editar Ancestralidade".')))
13601
+ )))), !description && customProps.length === 0 && /* @__PURE__ */ React26.createElement("div", { className: "py-8 text-center text-slate-500 text-sm italic border border-dashed border-white/10 rounded-lg" }, "Nenhum detalhe adicional dispon\xEDvel para esta conex\xE3o."), /* @__PURE__ */ React26.createElement("div", { className: "mt-4 p-3 bg-blue-500/10 border border-blue-500/20 rounded-lg text-xs text-blue-200/80 text-center" }, 'Para editar esta conex\xE3o, utilize o menu "Editar Ancestralidade".')))
13389
13602
  )
13390
13603
  );
13391
13604
  }
13392
13605
 
13393
13606
  // src/components/Boards.jsx
13394
- import React28, {
13607
+ import React29, {
13395
13608
  useState as useState27,
13396
13609
  useMemo as useMemo12,
13397
13610
  useEffect as useEffect23,
@@ -13421,10 +13634,10 @@ import {
13421
13634
  import { v4 as uuidv411 } from "uuid";
13422
13635
 
13423
13636
  // src/components/RichGroupEditor.jsx
13424
- import React27, { useEffect as useEffect22, useRef as useRef19, useState as useState26, useCallback as useCallback4 } from "react";
13637
+ import React28, { useEffect as useEffect22, useRef as useRef19, useState as useState26, useCallback as useCallback4 } from "react";
13425
13638
 
13426
13639
  // src/components/MentionPopover.jsx
13427
- import React26, { useEffect as useEffect21, useRef as useRef18, useState as useState25, useMemo as useMemo11 } from "react";
13640
+ import React27, { useEffect as useEffect21, useRef as useRef18, useState as useState25, useMemo as useMemo11 } from "react";
13428
13641
  import { FiLayers as FiLayers6, FiCheckSquare as FiCheckSquare3, FiGitBranch as FiGitBranch3, FiBox } from "react-icons/fi";
13429
13642
  var TYPE_CONFIG = {
13430
13643
  ancestry: { Icon: FiLayers6, color: "text-indigo-400", label: "Ancestralidade" },
@@ -13472,7 +13685,7 @@ function MentionPopover({ query, items, position, onSelect, onClose }) {
13472
13685
  if (el) el.scrollIntoView({ block: "nearest" });
13473
13686
  }
13474
13687
  }, [activeIndex]);
13475
- return /* @__PURE__ */ React26.createElement(
13688
+ return /* @__PURE__ */ React27.createElement(
13476
13689
  "div",
13477
13690
  {
13478
13691
  style: { top: position.top, left: position.left, position: "fixed", zIndex: 9999 },
@@ -13480,10 +13693,10 @@ function MentionPopover({ query, items, position, onSelect, onClose }) {
13480
13693
  ref: listRef,
13481
13694
  onMouseDown: (e) => e.preventDefault()
13482
13695
  },
13483
- filtered.length === 0 ? /* @__PURE__ */ React26.createElement("div", { className: "px-4 py-3 text-xs text-slate-500" }, "Nenhum resultado para", " ", /* @__PURE__ */ React26.createElement("span", { className: "text-slate-300 font-medium" }, '"', query, '"')) : filtered.map((item, idx) => {
13696
+ filtered.length === 0 ? /* @__PURE__ */ React27.createElement("div", { className: "px-4 py-3 text-xs text-slate-500" }, "Nenhum resultado para", " ", /* @__PURE__ */ React27.createElement("span", { className: "text-slate-300 font-medium" }, '"', query, '"')) : filtered.map((item, idx) => {
13484
13697
  const config = TYPE_CONFIG[item.type] || TYPE_CONFIG.node;
13485
13698
  const { Icon } = config;
13486
- return /* @__PURE__ */ React26.createElement(
13699
+ return /* @__PURE__ */ React27.createElement(
13487
13700
  "div",
13488
13701
  {
13489
13702
  key: item.id,
@@ -13494,9 +13707,9 @@ function MentionPopover({ query, items, position, onSelect, onClose }) {
13494
13707
  onMouseEnter: () => setActiveIndex(idx),
13495
13708
  className: `flex items-center gap-2.5 px-3 py-2 cursor-pointer text-sm transition-colors duration-100 ${idx === activeIndex ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5"}`
13496
13709
  },
13497
- /* @__PURE__ */ React26.createElement(Icon, { size: 13, className: config.color }),
13498
- /* @__PURE__ */ React26.createElement("span", { className: "flex-1 truncate font-medium" }, item.searchLabel || "Sem Nome"),
13499
- /* @__PURE__ */ React26.createElement("span", { className: "text-[9px] px-1.5 py-0.5 rounded-full bg-white/5 text-slate-500 border border-white/5 uppercase tracking-wide shrink-0" }, config.label)
13710
+ /* @__PURE__ */ React27.createElement(Icon, { size: 13, className: config.color }),
13711
+ /* @__PURE__ */ React27.createElement("span", { className: "flex-1 truncate font-medium" }, item.searchLabel || "Sem Nome"),
13712
+ /* @__PURE__ */ React27.createElement("span", { className: "text-[9px] px-1.5 py-0.5 rounded-full bg-white/5 text-slate-500 border border-white/5 uppercase tracking-wide shrink-0" }, config.label)
13500
13713
  );
13501
13714
  })
13502
13715
  );
@@ -13566,7 +13779,7 @@ function domToContent(el) {
13566
13779
  el.childNodes.forEach(walk);
13567
13780
  return segments;
13568
13781
  }
13569
- var RichGroupEditor = React27.memo(function RichGroupEditor2({
13782
+ var RichGroupEditor = React28.memo(function RichGroupEditor2({
13570
13783
  content,
13571
13784
  onChange,
13572
13785
  onMentionClick,
@@ -13752,7 +13965,7 @@ var RichGroupEditor = React27.memo(function RichGroupEditor2({
13752
13965
  }
13753
13966
  setMentionState(null);
13754
13967
  }, []);
13755
- return /* @__PURE__ */ React27.createElement("div", { className: "relative" }, isEmpty && !readOnly && /* @__PURE__ */ React27.createElement("div", { className: "absolute top-0 left-0 text-sm text-slate-600 pointer-events-none select-none" }, placeholder || "Escreva sobre este grupo\u2026 ou digite @ para mencionar"), /* @__PURE__ */ React27.createElement(
13968
+ return /* @__PURE__ */ React28.createElement("div", { className: "relative" }, isEmpty && !readOnly && /* @__PURE__ */ React28.createElement("div", { className: "absolute top-0 left-0 text-sm text-slate-600 pointer-events-none select-none" }, placeholder || "Escreva sobre este grupo\u2026 ou digite @ para mencionar"), /* @__PURE__ */ React28.createElement(
13756
13969
  "div",
13757
13970
  {
13758
13971
  ref: editorRef,
@@ -13766,7 +13979,7 @@ var RichGroupEditor = React27.memo(function RichGroupEditor2({
13766
13979
  className: `w-full min-h-[1.5rem] max-h-[250px] overflow-y-auto text-sm text-slate-200 focus:outline-none leading-relaxed ${!readOnly ? "cursor-text" : "cursor-default"}`,
13767
13980
  style: { overflowWrap: "break-word", wordBreak: "break-word" }
13768
13981
  }
13769
- ), mentionState && !readOnly && /* @__PURE__ */ React27.createElement(
13982
+ ), mentionState && !readOnly && /* @__PURE__ */ React28.createElement(
13770
13983
  MentionPopover,
13771
13984
  {
13772
13985
  query: mentionState.query,
@@ -13784,9 +13997,9 @@ var RichGroupEditor_default = RichGroupEditor;
13784
13997
  // src/components/Boards.jsx
13785
13998
  var Tooltip = ({ text, children }) => {
13786
13999
  if (!text) return children;
13787
- return /* @__PURE__ */ React28.createElement("div", { className: "relative group/tooltip" }, children, /* @__PURE__ */ React28.createElement("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-slate-900 border border-white/10 text-white text-[10px] rounded opacity-0 group-hover/tooltip:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-[3000] shadow-2xl" }, text));
14000
+ return /* @__PURE__ */ React29.createElement("div", { className: "relative group/tooltip" }, children, /* @__PURE__ */ React29.createElement("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-slate-900 border border-white/10 text-white text-[10px] rounded opacity-0 group-hover/tooltip:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-[3000] shadow-2xl" }, text));
13788
14001
  };
13789
- var BoardItem = React28.memo(
14002
+ var BoardItem = React29.memo(
13790
14003
  ({
13791
14004
  item,
13792
14005
  index,
@@ -13832,20 +14045,20 @@ var BoardItem = React28.memo(
13832
14045
  onUpdate(item.id, { ...item, color: newColor });
13833
14046
  };
13834
14047
  if (isFolder) {
13835
- return /* @__PURE__ */ React28.createElement("div", { className: "relative group/item animate-in fade-in zoom-in duration-300 w-[calc(16.66%-14px)] min-w-[160px] h-14 flex-shrink-0" }, /* @__PURE__ */ React28.createElement(
14048
+ return /* @__PURE__ */ React29.createElement("div", { className: "relative group/item animate-in fade-in zoom-in duration-300 w-[calc(16.66%-14px)] min-w-[160px] h-14 flex-shrink-0" }, /* @__PURE__ */ React29.createElement(
13836
14049
  "div",
13837
14050
  {
13838
14051
  onClick: () => onEnterFolder(item.id),
13839
14052
  className: "h-full flex items-center gap-3 px-3 py-2 bg-white/5 hover:bg-white/10 border border-white/10 hover:border-white/20 rounded-xl cursor-pointer transition-all duration-300 group/folder relative"
13840
14053
  },
13841
- /* @__PURE__ */ React28.createElement(
14054
+ /* @__PURE__ */ React29.createElement(
13842
14055
  "div",
13843
14056
  {
13844
14057
  className: "absolute inset-y-0 left-0 w-1 opacity-0 group-hover/folder:opacity-100 transition-opacity rounded-l-xl",
13845
14058
  style: { background: `linear-gradient(to right, ${item.color || "#6366f1"}33, transparent)` }
13846
14059
  }
13847
14060
  ),
13848
- /* @__PURE__ */ React28.createElement(
14061
+ /* @__PURE__ */ React29.createElement(
13849
14062
  "div",
13850
14063
  {
13851
14064
  className: "w-9 h-9 rounded-lg flex items-center justify-center group-hover/folder:scale-105 transition-all duration-300 shadow-inner shrink-0",
@@ -13855,9 +14068,9 @@ var BoardItem = React28.memo(
13855
14068
  color: item.color || "#6366f1"
13856
14069
  }
13857
14070
  },
13858
- /* @__PURE__ */ React28.createElement(FiFolder3, { size: 18 })
14071
+ /* @__PURE__ */ React29.createElement(FiFolder3, { size: 18 })
13859
14072
  ),
13860
- /* @__PURE__ */ React28.createElement("div", { className: "flex-1 min-w-0 flex flex-col justify-center" }, canEdit ? /* @__PURE__ */ React28.createElement(
14073
+ /* @__PURE__ */ React29.createElement("div", { className: "flex-1 min-w-0 flex flex-col justify-center" }, canEdit ? /* @__PURE__ */ React29.createElement(
13861
14074
  "input",
13862
14075
  {
13863
14076
  type: "text",
@@ -13867,8 +14080,8 @@ var BoardItem = React28.memo(
13867
14080
  className: "bg-transparent border-none outline-none text-xs font-semibold text-slate-200 w-full focus:text-white placeholder:text-slate-600 truncate",
13868
14081
  placeholder: "Nome..."
13869
14082
  }
13870
- ) : /* @__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")),
13871
- canEdit && /* @__PURE__ */ React28.createElement("div", { className: "absolute inset-y-0 right-1.5 opacity-0 group-hover/folder:opacity-100 transition-all duration-300 z-10 flex items-center" }, /* @__PURE__ */ React28.createElement("div", { className: "flex bg-slate-950/90 backdrop-blur-md p-1 rounded-lg border border-white/10 shadow-2xl items-center" }, /* @__PURE__ */ React28.createElement("div", { className: "px-1", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React28.createElement(
14083
+ ) : /* @__PURE__ */ React29.createElement("span", { className: "text-xs font-semibold text-slate-200 block truncate" }, item.name), /* @__PURE__ */ React29.createElement("span", { className: "text-[9px] text-slate-500 uppercase tracking-widest font-bold" }, ((_a = item.children) == null ? void 0 : _a.length) || 0, " itens")),
14084
+ canEdit && /* @__PURE__ */ React29.createElement("div", { className: "absolute inset-y-0 right-1.5 opacity-0 group-hover/folder:opacity-100 transition-all duration-300 z-10 flex items-center" }, /* @__PURE__ */ React29.createElement("div", { className: "flex bg-slate-950/90 backdrop-blur-md p-1 rounded-lg border border-white/10 shadow-2xl items-center" }, /* @__PURE__ */ React29.createElement("div", { className: "px-1", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React29.createElement(
13872
14085
  ColorPicker,
13873
14086
  {
13874
14087
  isCompact: true,
@@ -13876,7 +14089,7 @@ var BoardItem = React28.memo(
13876
14089
  onChange: handleColorChange,
13877
14090
  disabled: !canEdit
13878
14091
  }
13879
- )), /* @__PURE__ */ React28.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Subir" }, /* @__PURE__ */ React28.createElement(
14092
+ )), /* @__PURE__ */ React29.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Subir" }, /* @__PURE__ */ React29.createElement(
13880
14093
  "button",
13881
14094
  {
13882
14095
  onClick: (e) => {
@@ -13886,8 +14099,8 @@ var BoardItem = React28.memo(
13886
14099
  disabled: !canMoveUp,
13887
14100
  className: `p-1 rounded transition-colors ${!canMoveUp ? "text-slate-800 cursor-not-allowed" : "text-slate-400 hover:text-white hover:bg-white/10"}`
13888
14101
  },
13889
- /* @__PURE__ */ React28.createElement(FiArrowUp, { size: 14 })
13890
- )), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React28.createElement(
14102
+ /* @__PURE__ */ React29.createElement(FiArrowUp, { size: 14 })
14103
+ )), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React29.createElement(
13891
14104
  "button",
13892
14105
  {
13893
14106
  onClick: (e) => {
@@ -13897,8 +14110,8 @@ var BoardItem = React28.memo(
13897
14110
  disabled: !canMoveDown,
13898
14111
  className: `p-1 rounded transition-colors ${!canMoveDown ? "text-slate-800 cursor-not-allowed" : "text-slate-400 hover:text-white hover:bg-white/10"}`
13899
14112
  },
13900
- /* @__PURE__ */ React28.createElement(FiArrowDown, { size: 14 })
13901
- )), /* @__PURE__ */ React28.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), showIndentUp && /* @__PURE__ */ React28.createElement(Tooltip, { text: getIndentUpTooltip() }, /* @__PURE__ */ React28.createElement(
14113
+ /* @__PURE__ */ React29.createElement(FiArrowDown, { size: 14 })
14114
+ )), /* @__PURE__ */ React29.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), showIndentUp && /* @__PURE__ */ React29.createElement(Tooltip, { text: getIndentUpTooltip() }, /* @__PURE__ */ React29.createElement(
13902
14115
  "button",
13903
14116
  {
13904
14117
  onClick: (e) => {
@@ -13907,8 +14120,8 @@ var BoardItem = React28.memo(
13907
14120
  },
13908
14121
  className: "p-1 text-slate-400 hover:text-white hover:bg-white/10 rounded transition-colors"
13909
14122
  },
13910
- /* @__PURE__ */ React28.createElement(FiArrowLeft3, { size: 14 })
13911
- )), showIndentDown && /* @__PURE__ */ React28.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React28.createElement(
14123
+ /* @__PURE__ */ React29.createElement(FiArrowLeft3, { size: 14 })
14124
+ )), showIndentDown && /* @__PURE__ */ React29.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React29.createElement(
13912
14125
  "button",
13913
14126
  {
13914
14127
  onClick: (e) => {
@@ -13917,8 +14130,8 @@ var BoardItem = React28.memo(
13917
14130
  },
13918
14131
  className: "p-1 text-slate-400 hover:text-white hover:bg-white/10 rounded transition-colors"
13919
14132
  },
13920
- /* @__PURE__ */ React28.createElement(FiArrowRight2, { size: 14 })
13921
- )), !isAtRoot && /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Desaninhar / Recuar n\xEDvel" }, /* @__PURE__ */ React28.createElement(
14133
+ /* @__PURE__ */ React29.createElement(FiArrowRight2, { size: 14 })
14134
+ )), !isAtRoot && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Desaninhar / Recuar n\xEDvel" }, /* @__PURE__ */ React29.createElement(
13922
14135
  "button",
13923
14136
  {
13924
14137
  onClick: (e) => {
@@ -13927,8 +14140,8 @@ var BoardItem = React28.memo(
13927
14140
  },
13928
14141
  className: `p-1 rounded text-slate-400 hover:text-white hover:bg-white/10 transition-colors`
13929
14142
  },
13930
- /* @__PURE__ */ React28.createElement(FiCornerUpLeft3, { size: 14 })
13931
- ))), /* @__PURE__ */ React28.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Remover Pasta" }, /* @__PURE__ */ React28.createElement(
14143
+ /* @__PURE__ */ React29.createElement(FiCornerUpLeft3, { size: 14 })
14144
+ ))), /* @__PURE__ */ React29.createElement("div", { className: "w-px h-4 bg-white/5 mx-0.5 self-center" }), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Remover Pasta" }, /* @__PURE__ */ React29.createElement(
13932
14145
  "button",
13933
14146
  {
13934
14147
  onClick: (e) => {
@@ -13937,11 +14150,11 @@ var BoardItem = React28.memo(
13937
14150
  },
13938
14151
  className: "p-1 text-slate-500 hover:text-red-400 hover:bg-red-500/10 rounded transition-colors"
13939
14152
  },
13940
- /* @__PURE__ */ React28.createElement(FiTrash23, { size: 14 })
14153
+ /* @__PURE__ */ React29.createElement(FiTrash23, { size: 14 })
13941
14154
  ))))
13942
14155
  ));
13943
14156
  }
13944
- return /* @__PURE__ */ React28.createElement("div", { className: "w-full flex flex-col gap-2 mb-3 pl-4 border-l border-white/10 relative group/item animate-in fade-in slide-in-from-left-2 duration-300" }, /* @__PURE__ */ React28.createElement("div", { className: "absolute -left-[1px] top-4 w-2 h-px bg-white/20" }), /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col gap-2 py-2 px-3 transition-all duration-200 hover:bg-white/5 border-l-2 border-transparent hover:border-white/20" }, /* @__PURE__ */ React28.createElement(
14157
+ return /* @__PURE__ */ React29.createElement("div", { className: "w-full flex flex-col gap-2 mb-3 pl-4 border-l border-white/10 relative group/item animate-in fade-in slide-in-from-left-2 duration-300" }, /* @__PURE__ */ React29.createElement("div", { className: "absolute -left-[1px] top-4 w-2 h-px bg-white/20" }), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col gap-2 py-2 px-3 transition-all duration-200 hover:bg-white/5 border-l-2 border-transparent hover:border-white/20" }, /* @__PURE__ */ React29.createElement(
13945
14158
  RichGroupEditor_default,
13946
14159
  {
13947
14160
  content: item.content,
@@ -13951,61 +14164,61 @@ var BoardItem = React28.memo(
13951
14164
  readOnly: !canEdit,
13952
14165
  placeholder: "Escreva sobre este grupo de texto\u2026 ou @ para mencionar"
13953
14166
  }
13954
- ), canEdit && /* @__PURE__ */ React28.createElement("div", { className: "flex items-center justify-between pt-2 mt-1 border-t border-white/5 opacity-40 group-hover/item:opacity-100 transition-opacity" }, /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React28.createElement(
14167
+ ), canEdit && /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between pt-2 mt-1 border-t border-white/5 opacity-40 group-hover/item:opacity-100 transition-opacity" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React29.createElement(
13955
14168
  "button",
13956
14169
  {
13957
14170
  onClick: () => onAddSubgroup(item.id, "text_group"),
13958
14171
  className: "flex items-center gap-1 px-1.5 py-1 text-[10px] uppercase font-bold tracking-wider text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors",
13959
14172
  title: "Criar Subgrupo de Texto"
13960
14173
  },
13961
- /* @__PURE__ */ React28.createElement(FiPlus10, { size: 12 }),
13962
- /* @__PURE__ */ React28.createElement("span", null, "Subgrupo")
13963
- )), /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React28.createElement(Tooltip, { text: "Subir" }, /* @__PURE__ */ React28.createElement(
14174
+ /* @__PURE__ */ React29.createElement(FiPlus10, { size: 12 }),
14175
+ /* @__PURE__ */ React29.createElement("span", null, "Subgrupo")
14176
+ )), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React29.createElement(Tooltip, { text: "Subir" }, /* @__PURE__ */ React29.createElement(
13964
14177
  "button",
13965
14178
  {
13966
14179
  onClick: () => onMoveUp(item.id),
13967
14180
  disabled: !canMoveUp,
13968
14181
  className: `p-1.5 rounded transition-colors ${!canMoveUp ? "text-slate-800 cursor-not-allowed" : "text-slate-500 hover:text-white hover:bg-white/10"}`
13969
14182
  },
13970
- /* @__PURE__ */ React28.createElement(FiArrowUp, { size: 14 })
13971
- )), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React28.createElement(
14183
+ /* @__PURE__ */ React29.createElement(FiArrowUp, { size: 14 })
14184
+ )), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Descer" }, /* @__PURE__ */ React29.createElement(
13972
14185
  "button",
13973
14186
  {
13974
14187
  onClick: () => onMoveDown(item.id),
13975
14188
  disabled: !canMoveDown,
13976
14189
  className: `p-1.5 rounded transition-colors ${!canMoveDown ? "text-slate-800 cursor-not-allowed" : "text-slate-500 hover:text-white hover:bg-white/10"}`
13977
14190
  },
13978
- /* @__PURE__ */ React28.createElement(FiArrowDown, { size: 14 })
13979
- )), /* @__PURE__ */ React28.createElement("div", { className: "w-px h-3 bg-white/10 mx-1" }), showIndentUp && /* @__PURE__ */ React28.createElement(Tooltip, { text: getIndentUpTooltip() }, /* @__PURE__ */ React28.createElement(
14191
+ /* @__PURE__ */ React29.createElement(FiArrowDown, { size: 14 })
14192
+ )), /* @__PURE__ */ React29.createElement("div", { className: "w-px h-3 bg-white/10 mx-1" }), showIndentUp && /* @__PURE__ */ React29.createElement(Tooltip, { text: getIndentUpTooltip() }, /* @__PURE__ */ React29.createElement(
13980
14193
  "button",
13981
14194
  {
13982
14195
  onClick: () => onIndent(item.id),
13983
14196
  className: "p-1.5 text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors"
13984
14197
  },
13985
- /* @__PURE__ */ React28.createElement(FiArrowLeft3, { size: 14 })
13986
- )), showIndentDown && /* @__PURE__ */ React28.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React28.createElement(
14198
+ /* @__PURE__ */ React29.createElement(FiArrowLeft3, { size: 14 })
14199
+ )), showIndentDown && /* @__PURE__ */ React29.createElement(Tooltip, { text: getIndentDownTooltip() }, /* @__PURE__ */ React29.createElement(
13987
14200
  "button",
13988
14201
  {
13989
14202
  onClick: () => onIndentDown(item.id),
13990
14203
  className: "p-1.5 text-slate-500 hover:text-white hover:bg-white/10 rounded transition-colors"
13991
14204
  },
13992
- /* @__PURE__ */ React28.createElement(FiArrowRight2, { size: 14 })
13993
- )), !isAtRoot && /* @__PURE__ */ React28.createElement(Tooltip, { text: "Desaninhar / Recuar n\xEDvel" }, /* @__PURE__ */ React28.createElement(
14205
+ /* @__PURE__ */ React29.createElement(FiArrowRight2, { size: 14 })
14206
+ )), !isAtRoot && /* @__PURE__ */ React29.createElement(Tooltip, { text: "Desaninhar / Recuar n\xEDvel" }, /* @__PURE__ */ React29.createElement(
13994
14207
  "button",
13995
14208
  {
13996
14209
  onClick: () => onOutdent(item.id),
13997
14210
  disabled: !onOutdent,
13998
14211
  className: `p-1.5 rounded transition-colors ${!onOutdent ? "text-slate-800 cursor-not-allowed" : "text-slate-500 hover:text-white hover:bg-white/10"}`
13999
14212
  },
14000
- /* @__PURE__ */ React28.createElement(FiCornerUpLeft3, { size: 14 })
14001
- )), /* @__PURE__ */ React28.createElement("div", { className: "w-px h-3 bg-white/10 mx-1" }), /* @__PURE__ */ React28.createElement(Tooltip, { text: "Remover Grupo de Texto" }, /* @__PURE__ */ React28.createElement(
14213
+ /* @__PURE__ */ React29.createElement(FiCornerUpLeft3, { size: 14 })
14214
+ )), /* @__PURE__ */ React29.createElement("div", { className: "w-px h-3 bg-white/10 mx-1" }), /* @__PURE__ */ React29.createElement(Tooltip, { text: "Remover Grupo de Texto" }, /* @__PURE__ */ React29.createElement(
14002
14215
  "button",
14003
14216
  {
14004
14217
  onClick: () => onDelete(item.id),
14005
14218
  className: "p-1.5 text-slate-600 hover:text-red-400 hover:bg-red-500/10 rounded transition-colors"
14006
14219
  },
14007
- /* @__PURE__ */ React28.createElement(FiTrash23, { size: 14 })
14008
- ))))), item.children && item.children.length > 0 && /* @__PURE__ */ React28.createElement("div", { className: "ml-2" }, item.children.map((child, idx) => /* @__PURE__ */ React28.createElement(
14220
+ /* @__PURE__ */ React29.createElement(FiTrash23, { size: 14 })
14221
+ ))))), item.children && item.children.length > 0 && /* @__PURE__ */ React29.createElement("div", { className: "ml-2" }, item.children.map((child, idx) => /* @__PURE__ */ React29.createElement(
14009
14222
  BoardItem,
14010
14223
  {
14011
14224
  key: child.id,
@@ -14331,72 +14544,72 @@ function Boards({
14331
14544
  setNavigationStack([]);
14332
14545
  }, []);
14333
14546
  if (!isOpen) return null;
14334
- return /* @__PURE__ */ React28.createElement(
14547
+ return /* @__PURE__ */ React29.createElement(
14335
14548
  "div",
14336
14549
  {
14337
14550
  className: "fixed inset-0 z-[2200] bg-black/80 backdrop-blur-sm flex items-center justify-center p-2",
14338
14551
  onClick: onClose
14339
14552
  },
14340
- /* @__PURE__ */ React28.createElement(
14553
+ /* @__PURE__ */ React29.createElement(
14341
14554
  "div",
14342
14555
  {
14343
14556
  className: "bg-slate-950 border border-white/10 rounded-xl w-full max-w-[calc(100vw-32px)] h-[97vh] flex flex-col shadow-2xl overflow-hidden animate-in fade-in zoom-in-95 duration-200",
14344
14557
  onClick: (e) => e.stopPropagation()
14345
14558
  },
14346
- /* @__PURE__ */ React28.createElement("div", { className: "h-14 px-4 border-b border-white/10 bg-slate-900/90 flex items-center justify-between shrink-0" }, /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React28.createElement("h3", { className: "text-base font-semibold text-white flex items-center gap-2 whitespace-nowrap" }, /* @__PURE__ */ React28.createElement(FiLayers7, { className: "text-indigo-400" }), "Boards"), saveStatus !== "idle" && /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-2 duration-300" }, /* @__PURE__ */ React28.createElement("div", { className: "w-px h-4 bg-white/10 mx-1" }), /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-1.5 px-2 py-0.5 rounded-full bg-slate-900/50 border border-white/5" }, saveStatus === "saving" && /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(
14559
+ /* @__PURE__ */ React29.createElement("div", { className: "h-14 px-4 border-b border-white/10 bg-slate-900/90 flex items-center justify-between shrink-0" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-base font-semibold text-white flex items-center gap-2 whitespace-nowrap" }, /* @__PURE__ */ React29.createElement(FiLayers7, { className: "text-indigo-400" }), "Boards"), saveStatus !== "idle" && /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2 animate-in fade-in slide-in-from-left-2 duration-300" }, /* @__PURE__ */ React29.createElement("div", { className: "w-px h-4 bg-white/10 mx-1" }), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1.5 px-2 py-0.5 rounded-full bg-slate-900/50 border border-white/5" }, saveStatus === "saving" && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(
14347
14560
  FiLoader5,
14348
14561
  {
14349
14562
  className: "animate-spin text-indigo-400",
14350
14563
  size: 12
14351
14564
  }
14352
- ), /* @__PURE__ */ React28.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-indigo-300" }, "Salvando")), saveStatus === "saved" && /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(FiCheckCircle, { className: "text-emerald-400", size: 12 }), /* @__PURE__ */ React28.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-slate-400" }, "Salvo")), saveStatus === "error" && /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement("span", { className: "w-2 h-2 rounded-full bg-red-500" }), /* @__PURE__ */ React28.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-red-400" }, "Erro"))))), /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-3" }, canEdit && /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(
14565
+ ), /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-indigo-300" }, "Salvando")), saveStatus === "saved" && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(FiCheckCircle, { className: "text-emerald-400", size: 12 }), /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-slate-400" }, "Salvo")), saveStatus === "error" && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("span", { className: "w-2 h-2 rounded-full bg-red-500" }), /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] uppercase tracking-wide font-medium text-red-400" }, "Erro"))))), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3" }, canEdit && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(
14353
14566
  "button",
14354
14567
  {
14355
14568
  onClick: () => handleAddItem("folder"),
14356
14569
  className: "flex items-center gap-2 px-3 py-1.5 bg-white/5 hover:bg-white/10 border border-white/10 hover:border-white/20 backdrop-blur-sm text-slate-200 hover:text-white rounded-md transition-all duration-200 text-xs font-medium shadow-sm"
14357
14570
  },
14358
- /* @__PURE__ */ React28.createElement(FiPlus10, { size: 14, className: "text-amber-400" }),
14359
- /* @__PURE__ */ React28.createElement("span", { className: "hidden sm:inline" }, "Pasta")
14360
- ), /* @__PURE__ */ React28.createElement(
14571
+ /* @__PURE__ */ React29.createElement(FiPlus10, { size: 14, className: "text-amber-400" }),
14572
+ /* @__PURE__ */ React29.createElement("span", { className: "hidden sm:inline" }, "Pasta")
14573
+ ), /* @__PURE__ */ React29.createElement(
14361
14574
  "button",
14362
14575
  {
14363
14576
  onClick: () => handleAddItem("text_group"),
14364
14577
  className: "flex items-center gap-2 px-3 py-1.5 bg-white/5 hover:bg-white/10 border border-white/10 hover:border-white/20 backdrop-blur-sm text-slate-200 hover:text-white rounded-md transition-all duration-200 text-xs font-medium shadow-sm"
14365
14578
  },
14366
- /* @__PURE__ */ React28.createElement(FiPlus10, { size: 14, className: "text-indigo-400" }),
14367
- /* @__PURE__ */ React28.createElement("span", { className: "hidden sm:inline" }, "Texto")
14368
- )), /* @__PURE__ */ React28.createElement(
14579
+ /* @__PURE__ */ React29.createElement(FiPlus10, { size: 14, className: "text-indigo-400" }),
14580
+ /* @__PURE__ */ React29.createElement("span", { className: "hidden sm:inline" }, "Texto")
14581
+ )), /* @__PURE__ */ React29.createElement(
14369
14582
  "button",
14370
14583
  {
14371
14584
  onClick: onClose,
14372
14585
  className: "w-8 h-8 rounded-lg flex items-center justify-center text-slate-400 hover:text-white hover:bg-white/10 transition-colors"
14373
14586
  },
14374
- /* @__PURE__ */ React28.createElement(FiX8, { size: 16 })
14587
+ /* @__PURE__ */ React29.createElement(FiX8, { size: 16 })
14375
14588
  ))),
14376
- /* @__PURE__ */ React28.createElement("div", { className: "h-10 px-6 bg-slate-900/40 border-b border-white/5 flex items-center gap-2 text-[10px] uppercase font-bold tracking-widest text-slate-500 overflow-x-auto no-scrollbar whitespace-nowrap" }, /* @__PURE__ */ React28.createElement(
14589
+ /* @__PURE__ */ React29.createElement("div", { className: "h-10 px-6 bg-slate-900/40 border-b border-white/5 flex items-center gap-2 text-[10px] uppercase font-bold tracking-widest text-slate-500 overflow-x-auto no-scrollbar whitespace-nowrap" }, /* @__PURE__ */ React29.createElement(
14377
14590
  "button",
14378
14591
  {
14379
14592
  onClick: navigateHome,
14380
14593
  className: `hover:text-white transition-colors flex items-center gap-1 ${navigationStack.length === 0 ? "text-indigo-400" : ""}`
14381
14594
  },
14382
14595
  "Home"
14383
- ), currentPath.map((folder, idx) => /* @__PURE__ */ React28.createElement(React28.Fragment, { key: folder.id }, /* @__PURE__ */ React28.createElement(FiChevronRight7, { size: 10, className: "shrink-0" }), /* @__PURE__ */ React28.createElement(
14596
+ ), currentPath.map((folder, idx) => /* @__PURE__ */ React29.createElement(React29.Fragment, { key: folder.id }, /* @__PURE__ */ React29.createElement(FiChevronRight7, { size: 10, className: "shrink-0" }), /* @__PURE__ */ React29.createElement(
14384
14597
  "button",
14385
14598
  {
14386
14599
  onClick: () => navigateToBreadcrumb(idx),
14387
14600
  className: `hover:text-white transition-colors ${idx === currentPath.length - 1 ? "text-indigo-400" : ""}`
14388
14601
  },
14389
14602
  folder.name || "Sem Nome"
14390
- ))), navigationStack.length > 0 && /* @__PURE__ */ React28.createElement("div", { className: "ml-auto" }, /* @__PURE__ */ React28.createElement(
14603
+ ))), navigationStack.length > 0 && /* @__PURE__ */ React29.createElement("div", { className: "ml-auto" }, /* @__PURE__ */ React29.createElement(
14391
14604
  "button",
14392
14605
  {
14393
14606
  onClick: navigateUp,
14394
14607
  className: "flex items-center gap-1 px-2 py-1 rounded bg-white/5 hover:bg-white/10 text-slate-400 hover:text-white transition-all"
14395
14608
  },
14396
- /* @__PURE__ */ React28.createElement(FiArrowLeft3, { size: 10 }),
14397
- /* @__PURE__ */ React28.createElement("span", null, "Voltar")
14609
+ /* @__PURE__ */ React29.createElement(FiArrowLeft3, { size: 10 }),
14610
+ /* @__PURE__ */ React29.createElement("span", null, "Voltar")
14398
14611
  ))),
14399
- /* @__PURE__ */ React28.createElement("div", { className: "flex-1 overflow-y-auto overflow-x-hidden custom-scrollbar bg-slate-950/30 p-6 flex flex-wrap gap-4 items-start content-start" }, currentBoardItems.length === 0 ? /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col items-center justify-center h-full text-slate-500 gap-3 border-2 border-dashed border-white/5 rounded-xl bg-slate-900/20" }, /* @__PURE__ */ React28.createElement(FiLayers7, { size: 24, className: "opacity-20" }), /* @__PURE__ */ React28.createElement("p", { className: "text-xs text-center px-4" }, canEdit ? /* @__PURE__ */ React28.createElement(React28.Fragment, null, "Esta pasta est\xE1 vazia.", /* @__PURE__ */ React28.createElement("br", null), "Use os bot\xF5es acima para criar conte\xFAdo.") : /* @__PURE__ */ React28.createElement(React28.Fragment, null, "Nenhum conte\xFAdo dispon\xEDvel nesta pasta."))) : currentBoardItems.map((item, index) => /* @__PURE__ */ React28.createElement(
14612
+ /* @__PURE__ */ React29.createElement("div", { className: "flex-1 overflow-y-auto overflow-x-hidden custom-scrollbar bg-slate-950/30 p-6 flex flex-wrap gap-4 items-start content-start" }, currentBoardItems.length === 0 ? /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col items-center justify-center h-full text-slate-500 gap-3 border-2 border-dashed border-white/5 rounded-xl bg-slate-900/20" }, /* @__PURE__ */ React29.createElement(FiLayers7, { size: 24, className: "opacity-20" }), /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-center px-4" }, canEdit ? /* @__PURE__ */ React29.createElement(React29.Fragment, null, "Esta pasta est\xE1 vazia.", /* @__PURE__ */ React29.createElement("br", null), "Use os bot\xF5es acima para criar conte\xFAdo.") : /* @__PURE__ */ React29.createElement(React29.Fragment, null, "Nenhum conte\xFAdo dispon\xEDvel nesta pasta."))) : currentBoardItems.map((item, index) => /* @__PURE__ */ React29.createElement(
14400
14613
  BoardItem,
14401
14614
  {
14402
14615
  key: item.id,
@@ -14419,13 +14632,13 @@ function Boards({
14419
14632
  isAtRoot: navigationStack.length === 0
14420
14633
  }
14421
14634
  ))),
14422
- /* @__PURE__ */ React28.createElement("div", { className: "px-5 py-2 border-t border-white/10 bg-slate-950/50 text-xs text-slate-500 flex justify-end flex-shrink-0" }, /* @__PURE__ */ React28.createElement("span", null, currentBoardItems.length, " itens nesta visualiza\xE7\xE3o"))
14635
+ /* @__PURE__ */ React29.createElement("div", { className: "px-5 py-2 border-t border-white/10 bg-slate-950/50 text-xs text-slate-500 flex justify-end flex-shrink-0" }, /* @__PURE__ */ React29.createElement("span", null, currentBoardItems.length, " itens nesta visualiza\xE7\xE3o"))
14423
14636
  )
14424
14637
  );
14425
14638
  }
14426
14639
 
14427
14640
  // src/components/MilestoneManager.jsx
14428
- import React29, { useState as useState28 } from "react";
14641
+ import React30, { useState as useState28 } from "react";
14429
14642
  import { FiTarget as FiTarget4, FiPlus as FiPlus11, FiTrash2 as FiTrash24, FiX as FiX9, FiCheck as FiCheck12, FiPauseCircle, FiPlayCircle } from "react-icons/fi";
14430
14643
  function MilestoneManager({
14431
14644
  isOpen,
@@ -14459,27 +14672,27 @@ function MilestoneManager({
14459
14672
  };
14460
14673
  if (!isOpen) return null;
14461
14674
  const swallow = (e) => e.stopPropagation();
14462
- return /* @__PURE__ */ React29.createElement(
14675
+ return /* @__PURE__ */ React30.createElement(
14463
14676
  "div",
14464
14677
  {
14465
14678
  className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-slate-950/40 backdrop-blur-sm animate-in fade-in duration-300",
14466
14679
  onClick: onClose
14467
14680
  },
14468
- /* @__PURE__ */ React29.createElement(
14681
+ /* @__PURE__ */ React30.createElement(
14469
14682
  "div",
14470
14683
  {
14471
14684
  className: "w-full max-w-lg bg-slate-900/90 backdrop-blur-xl border border-white/10 rounded-2xl shadow-2xl flex flex-col max-h-[85vh] animate-in zoom-in-95 duration-300",
14472
14685
  onClick: swallow
14473
14686
  },
14474
- /* @__PURE__ */ React29.createElement("div", { className: "px-6 py-4 border-b border-white/10 flex items-center justify-between" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React29.createElement("div", { className: "p-2 rounded-lg bg-indigo-500/20 text-indigo-400" }, /* @__PURE__ */ React29.createElement(FiTarget4, { size: 20 })), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h2", { className: "text-lg font-semibold text-slate-100" }, "Milestones"), /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-400" }, "Gerencie os marcos do seu cen\xE1rio"))), /* @__PURE__ */ React29.createElement(
14687
+ /* @__PURE__ */ React30.createElement("div", { className: "px-6 py-4 border-b border-white/10 flex items-center justify-between" }, /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React30.createElement("div", { className: "p-2 rounded-lg bg-indigo-500/20 text-indigo-400" }, /* @__PURE__ */ React30.createElement(FiTarget4, { size: 20 })), /* @__PURE__ */ React30.createElement("div", null, /* @__PURE__ */ React30.createElement("h2", { className: "text-lg font-semibold text-slate-100" }, "Milestones"), /* @__PURE__ */ React30.createElement("p", { className: "text-xs text-slate-400" }, "Gerencie os marcos do seu cen\xE1rio"))), /* @__PURE__ */ React30.createElement(
14475
14688
  "button",
14476
14689
  {
14477
14690
  onClick: onClose,
14478
14691
  className: "p-2 rounded-full hover:bg-white/10 text-slate-400 hover:text-white transition-colors"
14479
14692
  },
14480
- /* @__PURE__ */ React29.createElement(FiX9, { size: 20 })
14693
+ /* @__PURE__ */ React30.createElement(FiX9, { size: 20 })
14481
14694
  )),
14482
- /* @__PURE__ */ React29.createElement("div", { className: "px-6 py-5 bg-white/5 border-b border-white/5" }, /* @__PURE__ */ React29.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React29.createElement(
14695
+ /* @__PURE__ */ React30.createElement("div", { className: "px-6 py-5 bg-white/5 border-b border-white/5" }, /* @__PURE__ */ React30.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React30.createElement(
14483
14696
  "input",
14484
14697
  {
14485
14698
  type: "text",
@@ -14489,47 +14702,47 @@ function MilestoneManager({
14489
14702
  placeholder: "Adicionar novo milestone...",
14490
14703
  className: "flex-1 bg-slate-800/50 border border-white/10 rounded-xl px-4 py-2.5 text-sm text-slate-100 placeholder:text-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/40 focus:border-indigo-500/50 transition-all shadow-inner"
14491
14704
  }
14492
- ), /* @__PURE__ */ React29.createElement(
14705
+ ), /* @__PURE__ */ React30.createElement(
14493
14706
  "button",
14494
14707
  {
14495
14708
  onClick: handleAddMilestone,
14496
14709
  disabled: !newMilestoneName.trim(),
14497
14710
  className: "px-4 py-2.5 rounded-xl bg-indigo-600 hover:bg-indigo-500 disabled:opacity-30 disabled:cursor-not-allowed text-white text-sm font-medium transition-all flex items-center gap-2 shadow-lg shadow-indigo-500/20 active:scale-95"
14498
14711
  },
14499
- /* @__PURE__ */ React29.createElement(FiPlus11, { size: 18 }),
14712
+ /* @__PURE__ */ React30.createElement(FiPlus11, { size: 18 }),
14500
14713
  "Adicionar"
14501
14714
  ))),
14502
- /* @__PURE__ */ React29.createElement("div", { className: "flex-1 overflow-y-auto px-6 py-4 custom-scrollbar" }, milestones.length > 0 ? /* @__PURE__ */ React29.createElement("div", { className: "space-y-3" }, milestones.map((ms) => /* @__PURE__ */ React29.createElement(
14715
+ /* @__PURE__ */ React30.createElement("div", { className: "flex-1 overflow-y-auto px-6 py-4 custom-scrollbar" }, milestones.length > 0 ? /* @__PURE__ */ React30.createElement("div", { className: "space-y-3" }, milestones.map((ms) => /* @__PURE__ */ React30.createElement(
14503
14716
  "div",
14504
14717
  {
14505
14718
  key: ms.id,
14506
14719
  className: `group flex items-center justify-between p-4 rounded-xl border transition-all duration-200 ${ms.status === "active" ? "bg-slate-800/40 border-indigo-500/20 hover:border-indigo-500/40" : "bg-slate-900/40 border-white/5 opacity-60 grayscale-[0.3]"}`
14507
14720
  },
14508
- /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ React29.createElement(
14721
+ /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ React30.createElement(
14509
14722
  "div",
14510
14723
  {
14511
14724
  className: `w-2 h-2 rounded-full shrink-0 ${ms.status === "active" ? "bg-indigo-400 shadow-[0_0_8px_rgba(129,140,248,0.6)]" : "bg-slate-600"}`
14512
14725
  }
14513
- ), /* @__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"))),
14514
- /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
14726
+ ), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React30.createElement("span", { className: `text-sm font-medium truncate ${ms.status === "active" ? "text-slate-100" : "text-slate-400 line-through"}` }, ms.name), /* @__PURE__ */ React30.createElement("span", { className: "text-[10px] text-slate-500 uppercase tracking-wider" }, ms.status === "active" ? "Ativo" : "Inativo"))),
14727
+ /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React30.createElement(
14515
14728
  "button",
14516
14729
  {
14517
14730
  onClick: () => handleToggleMilestoneStatus(ms.id),
14518
14731
  className: `p-2 rounded-lg transition-all ${ms.status === "active" ? "hover:bg-slate-700 text-slate-400" : "hover:bg-indigo-500/20 text-indigo-400"}`,
14519
14732
  title: ms.status === "active" ? "Inativar" : "Ativar"
14520
14733
  },
14521
- ms.status === "active" ? /* @__PURE__ */ React29.createElement(FiPauseCircle, { size: 18 }) : /* @__PURE__ */ React29.createElement(FiPlayCircle, { size: 18 })
14522
- ), /* @__PURE__ */ React29.createElement(
14734
+ ms.status === "active" ? /* @__PURE__ */ React30.createElement(FiPauseCircle, { size: 18 }) : /* @__PURE__ */ React30.createElement(FiPlayCircle, { size: 18 })
14735
+ ), /* @__PURE__ */ React30.createElement(
14523
14736
  "button",
14524
14737
  {
14525
14738
  onClick: () => handleRemoveMilestone(ms.id),
14526
14739
  className: "p-2 rounded-lg hover:bg-red-500/20 text-slate-500 hover:text-red-400 transition-all",
14527
14740
  title: "Remover"
14528
14741
  },
14529
- /* @__PURE__ */ React29.createElement(FiTrash24, { size: 18 })
14742
+ /* @__PURE__ */ React30.createElement(FiTrash24, { size: 18 })
14530
14743
  ))
14531
- ))) : /* @__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."))),
14532
- /* @__PURE__ */ React29.createElement("div", { className: "px-6 py-4 border-t border-white/5 bg-slate-900/50 flex items-center justify-between rounded-b-2xl" }, /* @__PURE__ */ React29.createElement("div", { className: "flex gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] text-slate-500 uppercase tracking-widest" }, "Total:"), /* @__PURE__ */ React29.createElement("span", { className: "text-xs font-bold text-slate-300" }, milestones.length)), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] text-slate-500 uppercase tracking-widest" }, "Ativos:"), /* @__PURE__ */ React29.createElement("span", { className: "text-xs font-bold text-indigo-400" }, milestones.filter((m) => m.status === "active").length))))
14744
+ ))) : /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col items-center justify-center py-12 text-center" }, /* @__PURE__ */ React30.createElement("div", { className: "p-4 rounded-full bg-slate-800/30 text-slate-600 mb-4" }, /* @__PURE__ */ React30.createElement(FiTarget4, { size: 40 })), /* @__PURE__ */ React30.createElement("h3", { className: "text-slate-400 font-medium" }, "Nenhum milestone definido"), /* @__PURE__ */ React30.createElement("p", { className: "text-xs text-slate-600 max-w-[200px] mt-1 italic" }, "Defina marcos importantes para orientar o progresso do projeto."))),
14745
+ /* @__PURE__ */ React30.createElement("div", { className: "px-6 py-4 border-t border-white/5 bg-slate-900/50 flex items-center justify-between rounded-b-2xl" }, /* @__PURE__ */ React30.createElement("div", { className: "flex gap-4" }, /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React30.createElement("span", { className: "text-[10px] text-slate-500 uppercase tracking-widest" }, "Total:"), /* @__PURE__ */ React30.createElement("span", { className: "text-xs font-bold text-slate-300" }, milestones.length)), /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ React30.createElement("span", { className: "text-[10px] text-slate-500 uppercase tracking-widest" }, "Ativos:"), /* @__PURE__ */ React30.createElement("span", { className: "text-xs font-bold text-indigo-400" }, milestones.filter((m) => m.status === "active").length))))
14533
14746
  )
14534
14747
  );
14535
14748
  }
@@ -14613,7 +14826,8 @@ function XViewScene({
14613
14826
  upload_file_action,
14614
14827
  delete_file_action,
14615
14828
  check_user_permission,
14616
- get_view_members
14829
+ get_view_members,
14830
+ create_google_doc_action
14617
14831
  }) {
14618
14832
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
14619
14833
  const { data: session, status } = useSession();
@@ -19218,10 +19432,10 @@ function XViewScene({
19218
19432
  // <-- handleCancelQuest adicionado aqui
19219
19433
  ]);
19220
19434
  if (isLoading || status === "loading" || permissionStatus === "loading") {
19221
- return /* @__PURE__ */ React30.createElement(LoadingScreen, null);
19435
+ return /* @__PURE__ */ React31.createElement(LoadingScreen, null);
19222
19436
  }
19223
19437
  if (permissionStatus === "denied") {
19224
- return /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col items-center justify-center min-h-screen w-full bg-slate-950 text-white" }, /* @__PURE__ */ React30.createElement("div", { className: "bg-slate-900/50 p-8 rounded-2xl border border-slate-800 shadow-2xl text-center max-w-md" }, /* @__PURE__ */ React30.createElement("div", { className: "mb-4 text-red-500" }, /* @__PURE__ */ React30.createElement(
19438
+ return /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col items-center justify-center min-h-screen w-full bg-slate-950 text-white" }, /* @__PURE__ */ React31.createElement("div", { className: "bg-slate-900/50 p-8 rounded-2xl border border-slate-800 shadow-2xl text-center max-w-md" }, /* @__PURE__ */ React31.createElement("div", { className: "mb-4 text-red-500" }, /* @__PURE__ */ React31.createElement(
19225
19439
  "svg",
19226
19440
  {
19227
19441
  xmlns: "http://www.w3.org/2000/svg",
@@ -19231,7 +19445,7 @@ function XViewScene({
19231
19445
  stroke: "currentColor",
19232
19446
  className: "w-16 h-16 mx-auto"
19233
19447
  },
19234
- /* @__PURE__ */ React30.createElement(
19448
+ /* @__PURE__ */ React31.createElement(
19235
19449
  "path",
19236
19450
  {
19237
19451
  strokeLinecap: "round",
@@ -19239,13 +19453,13 @@ function XViewScene({
19239
19453
  d: "M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"
19240
19454
  }
19241
19455
  )
19242
- )), /* @__PURE__ */ React30.createElement("h2", { className: "text-2xl font-bold mb-2" }, "Acesso Negado"), /* @__PURE__ */ React30.createElement("p", { className: "text-slate-400 mb-6" }, "Voc\xEA n\xE3o tem permiss\xE3o para acessar este conte\xFAdo. Solicite acesso ao propriet\xE1rio ou verifique se est\xE1 na conta correta."), /* @__PURE__ */ React30.createElement(
19456
+ )), /* @__PURE__ */ React31.createElement("h2", { className: "text-2xl font-bold mb-2" }, "Acesso Negado"), /* @__PURE__ */ React31.createElement("p", { className: "text-slate-400 mb-6" }, "Voc\xEA n\xE3o tem permiss\xE3o para acessar este conte\xFAdo. Solicite acesso ao propriet\xE1rio ou verifique se est\xE1 na conta correta."), /* @__PURE__ */ React31.createElement(
19243
19457
  "button",
19244
19458
  {
19245
19459
  onClick: handleNavigateBack,
19246
19460
  className: "flex items-center justify-center gap-2 w-full py-3 px-4 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition-colors font-medium"
19247
19461
  },
19248
- /* @__PURE__ */ React30.createElement(
19462
+ /* @__PURE__ */ React31.createElement(
19249
19463
  "svg",
19250
19464
  {
19251
19465
  xmlns: "http://www.w3.org/2000/svg",
@@ -19255,7 +19469,7 @@ function XViewScene({
19255
19469
  stroke: "currentColor",
19256
19470
  className: "w-5 h-5"
19257
19471
  },
19258
- /* @__PURE__ */ React30.createElement(
19472
+ /* @__PURE__ */ React31.createElement(
19259
19473
  "path",
19260
19474
  {
19261
19475
  strokeLinecap: "round",
@@ -19267,7 +19481,7 @@ function XViewScene({
19267
19481
  "Voltar para o X.View"
19268
19482
  )));
19269
19483
  }
19270
- return /* @__PURE__ */ React30.createElement(
19484
+ return /* @__PURE__ */ React31.createElement(
19271
19485
  "div",
19272
19486
  {
19273
19487
  ref: mountRef,
@@ -19279,7 +19493,7 @@ function XViewScene({
19279
19493
  cursor: stateRef.current.connection.isActive || stateRef.current.relink.isActive || ancestryMode.isActive ? "crosshair" : creationMode.isActive ? "default" : "grab"
19280
19494
  }
19281
19495
  },
19282
- userPermissionRole !== "link_viewer" && /* @__PURE__ */ React30.createElement(
19496
+ userPermissionRole !== "link_viewer" && /* @__PURE__ */ React31.createElement(
19283
19497
  XViewSidebar,
19284
19498
  {
19285
19499
  dbNodes: searchableDbNodes,
@@ -19304,7 +19518,7 @@ function XViewScene({
19304
19518
  onOpenMilestoneManager: () => setIsMilestoneManagerOpen(true)
19305
19519
  }
19306
19520
  ),
19307
- creationMode.isActive && /* @__PURE__ */ React30.createElement(
19521
+ creationMode.isActive && /* @__PURE__ */ React31.createElement(
19308
19522
  InSceneCreationForm,
19309
19523
  {
19310
19524
  onSave: (data) => userActionHandlers.handleSaveNode(actionHandlerContext, data),
@@ -19333,10 +19547,11 @@ function XViewScene({
19333
19547
  sourceNodeDatasetId,
19334
19548
  viewType: viewParams == null ? void 0 : viewParams.type,
19335
19549
  availableNodes: allAvailableNodes,
19336
- availableAncestries: allAvailableAncestries
19550
+ availableAncestries: allAvailableAncestries,
19551
+ create_google_doc_action
19337
19552
  }
19338
19553
  ),
19339
- versionMode.isActive && /* @__PURE__ */ React30.createElement(
19554
+ versionMode.isActive && /* @__PURE__ */ React31.createElement(
19340
19555
  InSceneVersionForm,
19341
19556
  {
19342
19557
  onSave: (data) => userActionHandlers.handleSaveVersionNode(actionHandlerContext, data),
@@ -19362,7 +19577,7 @@ function XViewScene({
19362
19577
  availableAncestries: allAvailableAncestries
19363
19578
  }
19364
19579
  ),
19365
- questMode.isActive && /* @__PURE__ */ React30.createElement(
19580
+ questMode.isActive && /* @__PURE__ */ React31.createElement(
19366
19581
  InSceneQuestForm,
19367
19582
  {
19368
19583
  onSave: (data) => handleSaveQuestNode(actionHandlerContext, data),
@@ -19387,10 +19602,11 @@ function XViewScene({
19387
19602
  questCounter: ((_h = sceneDataRef.current) == null ? void 0 : _h.quest_counter) || 1,
19388
19603
  viewMembers,
19389
19604
  milestones: ((_i = sceneDataRef.current) == null ? void 0 : _i.milestones) || [],
19390
- onUpdateMilestones: handleUpdateMilestones
19605
+ onUpdateMilestones: handleUpdateMilestones,
19606
+ create_google_doc_action
19391
19607
  }
19392
19608
  ),
19393
- readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ React30.createElement(
19609
+ readingMode.isActive && readingMode.ancestry && /* @__PURE__ */ React31.createElement(
19394
19610
  "div",
19395
19611
  {
19396
19612
  className: `ui-overlay absolute group rounded-2xl border border-white/10 bg-slate-950/70 backdrop-blur-xl shadow-[0_20px_80px_rgba(0,0,0,0.6)] ring-1 ring-white/10 text-white overflow-hidden flex flex-col ${isReadModeResizing ? "transition-none" : "transition-all duration-300 ease-out"}`,
@@ -19403,7 +19619,7 @@ function XViewScene({
19403
19619
  maxWidth: "92vw"
19404
19620
  }
19405
19621
  },
19406
- /* @__PURE__ */ React30.createElement(
19622
+ /* @__PURE__ */ React31.createElement(
19407
19623
  "div",
19408
19624
  {
19409
19625
  onPointerDown: (e) => {
@@ -19414,7 +19630,7 @@ function XViewScene({
19414
19630
  title: "Arraste para redimensionar"
19415
19631
  }
19416
19632
  ),
19417
- /* @__PURE__ */ React30.createElement(
19633
+ /* @__PURE__ */ React31.createElement(
19418
19634
  DescriptionReadModePanel,
19419
19635
  {
19420
19636
  key: readingMode.branchStack.length > 0 ? readingMode.branchStack[readingMode.branchStack.length - 1].branchId : readingMode.ancestry.ancestry_id,
@@ -19449,7 +19665,7 @@ function XViewScene({
19449
19665
  }
19450
19666
  )
19451
19667
  ),
19452
- ancestryMode.isActive && ancestryMode.tree && /* @__PURE__ */ React30.createElement(
19668
+ ancestryMode.isActive && ancestryMode.tree && /* @__PURE__ */ React31.createElement(
19453
19669
  CreateAncestryPanel,
19454
19670
  {
19455
19671
  ancestryMode,
@@ -19485,7 +19701,7 @@ function XViewScene({
19485
19701
  onRenderAbstractionTree: (data, targetId) => handleRenderAbstractionTree(data, targetId)
19486
19702
  }
19487
19703
  ),
19488
- editingAncestryRel.visible && /* @__PURE__ */ React30.createElement(
19704
+ editingAncestryRel.visible && /* @__PURE__ */ React31.createElement(
19489
19705
  AncestryRelationshipPanel,
19490
19706
  {
19491
19707
  data: editingAncestryRel.data,
@@ -19499,7 +19715,7 @@ function XViewScene({
19499
19715
  onUploadFile: upload_file_action
19500
19716
  }
19501
19717
  ),
19502
- detailsNode && detailsNode.is_quest && /* @__PURE__ */ React30.createElement(
19718
+ detailsNode && detailsNode.is_quest && /* @__PURE__ */ React31.createElement(
19503
19719
  QuestDetailsPanel,
19504
19720
  {
19505
19721
  node: detailsNode,
@@ -19522,10 +19738,11 @@ function XViewScene({
19522
19738
  viewMembers,
19523
19739
  currentUser: session == null ? void 0 : session.user,
19524
19740
  milestones: ((_j = sceneDataRef.current) == null ? void 0 : _j.milestones) || [],
19525
- onUpdateMilestones: handleUpdateMilestones
19741
+ onUpdateMilestones: handleUpdateMilestones,
19742
+ create_google_doc_action
19526
19743
  }
19527
19744
  ),
19528
- detailsNode && !detailsNode.is_quest && /* @__PURE__ */ React30.createElement(
19745
+ detailsNode && !detailsNode.is_quest && /* @__PURE__ */ React31.createElement(
19529
19746
  NodeDetailsPanel,
19530
19747
  {
19531
19748
  node: detailsNode,
@@ -19554,10 +19771,11 @@ function XViewScene({
19554
19771
  onIntensityChange: handleDetailNodeIntensityChange,
19555
19772
  onUploadFile: upload_file_action,
19556
19773
  userRole: userPermissionRole,
19557
- currentDatasetName: detailsNodeDatasetInfo == null ? void 0 : detailsNodeDatasetInfo.datasetName
19774
+ currentDatasetName: detailsNodeDatasetInfo == null ? void 0 : detailsNodeDatasetInfo.datasetName,
19775
+ create_google_doc_action
19558
19776
  }
19559
19777
  ),
19560
- detailsLink && /* @__PURE__ */ React30.createElement(
19778
+ detailsLink && /* @__PURE__ */ React31.createElement(
19561
19779
  RelationshipDetailsPanel,
19562
19780
  {
19563
19781
  link: detailsLink,
@@ -19572,7 +19790,7 @@ function XViewScene({
19572
19790
  onHighlight: handleReadModeHighlight
19573
19791
  }
19574
19792
  ),
19575
- ancestryLinkDetails && /* @__PURE__ */ React30.createElement(
19793
+ ancestryLinkDetails && /* @__PURE__ */ React31.createElement(
19576
19794
  AncestryLinkDetailsPanel,
19577
19795
  {
19578
19796
  data: ancestryLinkDetails,
@@ -19584,7 +19802,7 @@ function XViewScene({
19584
19802
  onHighlight: handleReadModeHighlight
19585
19803
  }
19586
19804
  ),
19587
- /* @__PURE__ */ React30.createElement(
19805
+ /* @__PURE__ */ React31.createElement(
19588
19806
  "div",
19589
19807
  {
19590
19808
  ref: tooltipRef,
@@ -19611,7 +19829,7 @@ function XViewScene({
19611
19829
  }
19612
19830
  }
19613
19831
  ),
19614
- /* @__PURE__ */ React30.createElement(
19832
+ /* @__PURE__ */ React31.createElement(
19615
19833
  ContextMenu,
19616
19834
  {
19617
19835
  data: contextMenu,
@@ -19649,7 +19867,7 @@ function XViewScene({
19649
19867
  onFinishQuest: handleFinishQuestQuick
19650
19868
  }
19651
19869
  ),
19652
- /* @__PURE__ */ React30.createElement(
19870
+ /* @__PURE__ */ React31.createElement(
19653
19871
  MultiNodeContextMenu,
19654
19872
  {
19655
19873
  data: multiContextMenu,
@@ -19669,7 +19887,7 @@ function XViewScene({
19669
19887
  )
19670
19888
  }
19671
19889
  ),
19672
- /* @__PURE__ */ React30.createElement(
19890
+ /* @__PURE__ */ React31.createElement(
19673
19891
  RelationshipContextMenu,
19674
19892
  {
19675
19893
  data: relationshipMenu,
@@ -19687,14 +19905,14 @@ function XViewScene({
19687
19905
  onDelete: (data) => userActionHandlers.handleDeleteLink(actionHandlerContext, data)
19688
19906
  }
19689
19907
  ),
19690
- /* @__PURE__ */ React30.createElement(
19908
+ /* @__PURE__ */ React31.createElement(
19691
19909
  ImageViewer,
19692
19910
  {
19693
19911
  data: imageViewer,
19694
19912
  onClose: () => setImageViewer({ ...imageViewer, visible: false })
19695
19913
  }
19696
19914
  ),
19697
- /* @__PURE__ */ React30.createElement(
19915
+ /* @__PURE__ */ React31.createElement(
19698
19916
  Boards,
19699
19917
  {
19700
19918
  isOpen: isBoardsOpen,
@@ -19707,7 +19925,7 @@ function XViewScene({
19707
19925
  userRole: userPermissionRole
19708
19926
  }
19709
19927
  ),
19710
- /* @__PURE__ */ React30.createElement(
19928
+ /* @__PURE__ */ React31.createElement(
19711
19929
  MilestoneManager,
19712
19930
  {
19713
19931
  isOpen: isMilestoneManagerOpen,
@@ -19716,7 +19934,7 @@ function XViewScene({
19716
19934
  onUpdateMilestones: handleUpdateMilestones
19717
19935
  }
19718
19936
  ),
19719
- /* @__PURE__ */ React30.createElement(
19937
+ /* @__PURE__ */ React31.createElement(
19720
19938
  ImportParentFileModal,
19721
19939
  {
19722
19940
  isOpen: isImportModalOpen,
@@ -19729,7 +19947,7 @@ function XViewScene({
19729
19947
  currentAncestries: ancestryDataRef.current || []
19730
19948
  }
19731
19949
  ),
19732
- invalidTargetError && /* @__PURE__ */ React30.createElement(
19950
+ invalidTargetError && /* @__PURE__ */ React31.createElement(
19733
19951
  "div",
19734
19952
  {
19735
19953
  className: "ui-overlay",
@@ -19754,13 +19972,13 @@ function XViewScene({
19754
19972
  animation: "fadeInDown 0.5s cubic-bezier(0.16, 1, 0.3, 1)"
19755
19973
  }
19756
19974
  },
19757
- /* @__PURE__ */ React30.createElement("style", null, `
19975
+ /* @__PURE__ */ React31.createElement("style", null, `
19758
19976
  @keyframes fadeInDown {
19759
19977
  from { opacity: 0; transform: translate(-50%, -20px); }
19760
19978
  to { opacity: 1; transform: translate(-50%, 0); }
19761
19979
  }
19762
19980
  `),
19763
- /* @__PURE__ */ React30.createElement(
19981
+ /* @__PURE__ */ React31.createElement(
19764
19982
  "svg",
19765
19983
  {
19766
19984
  width: "20",
@@ -19772,12 +19990,12 @@ function XViewScene({
19772
19990
  strokeLinecap: "round",
19773
19991
  strokeLinejoin: "round"
19774
19992
  },
19775
- /* @__PURE__ */ React30.createElement("circle", { cx: "12", cy: "12", r: "10" }),
19776
- /* @__PURE__ */ React30.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
19777
- /* @__PURE__ */ React30.createElement("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
19993
+ /* @__PURE__ */ React31.createElement("circle", { cx: "12", cy: "12", r: "10" }),
19994
+ /* @__PURE__ */ React31.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
19995
+ /* @__PURE__ */ React31.createElement("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
19778
19996
  ),
19779
- /* @__PURE__ */ React30.createElement("span", { style: { fontSize: "14px", fontWeight: 500 } }, invalidTargetError),
19780
- /* @__PURE__ */ React30.createElement(
19997
+ /* @__PURE__ */ React31.createElement("span", { style: { fontSize: "14px", fontWeight: 500 } }, invalidTargetError),
19998
+ /* @__PURE__ */ React31.createElement(
19781
19999
  "button",
19782
20000
  {
19783
20001
  onClick: () => setInvalidTargetError(null),