@lv-x-software-house/x_view 1.2.5-dev.2 → 1.2.5-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -10628,6 +10628,7 @@ function XViewScene({
10628
10628
  });
10629
10629
  const [isImportModalOpen, setIsImportModalOpen] = (0, import_react26.useState)(false);
10630
10630
  const [importSuccessMessage, setImportSuccessMessage] = (0, import_react26.useState)("");
10631
+ const [invalidTargetError, setInvalidTargetError] = (0, import_react26.useState)(null);
10631
10632
  const [highlightedNodeId, setHighlightedNodeId] = (0, import_react26.useState)(null);
10632
10633
  const [isAncestryBoardOpen, setIsAncestryBoardOpen] = (0, import_react26.useState)(false);
10633
10634
  const [ancestryBoardData, setAncestryBoardData] = (0, import_react26.useState)([]);
@@ -14304,6 +14305,9 @@ function XViewScene({
14304
14305
  }, 300);
14305
14306
  } else {
14306
14307
  setHasFocusedInitial(true);
14308
+ setInvalidTargetError(
14309
+ "O link aponta para um item que n\xE3o foi encontrado ou foi exclu\xEDdo."
14310
+ );
14307
14311
  }
14308
14312
  }
14309
14313
  }, [
@@ -14326,6 +14330,9 @@ function XViewScene({
14326
14330
  }, 300);
14327
14331
  } else {
14328
14332
  setHasOpenedInitialAncestry(true);
14333
+ setInvalidTargetError(
14334
+ "O link aponta para uma ancestralidade que n\xE3o foi encontrada ou foi exclu\xEDda."
14335
+ );
14329
14336
  }
14330
14337
  }
14331
14338
  }, [
@@ -14935,6 +14942,83 @@ function XViewScene({
14935
14942
  currentViewName: viewParams == null ? void 0 : viewParams.name,
14936
14943
  currentAncestries: ancestryDataRef.current || []
14937
14944
  }
14945
+ ),
14946
+ invalidTargetError && /* @__PURE__ */ import_react26.default.createElement(
14947
+ "div",
14948
+ {
14949
+ className: "ui-overlay",
14950
+ style: {
14951
+ position: "fixed",
14952
+ top: "24px",
14953
+ left: "50%",
14954
+ transform: "translateX(-50%)",
14955
+ zIndex: 1e4,
14956
+ padding: "16px 24px",
14957
+ background: "rgba(30, 20, 20, 0.85)",
14958
+ backdropFilter: "blur(12px)",
14959
+ WebkitBackdropFilter: "blur(12px)",
14960
+ border: "1px solid rgba(255, 70, 70, 0.35)",
14961
+ borderRadius: "16px",
14962
+ boxShadow: "0 12px 40px rgba(0,0,0,0.5), 0 0 30px rgba(255, 50, 50, 0.1)",
14963
+ color: "#ffa0a0",
14964
+ display: "flex",
14965
+ alignItems: "center",
14966
+ gap: "16px",
14967
+ fontFamily: "Inter, sans-serif",
14968
+ animation: "fadeInDown 0.5s cubic-bezier(0.16, 1, 0.3, 1)"
14969
+ }
14970
+ },
14971
+ /* @__PURE__ */ import_react26.default.createElement("style", null, `
14972
+ @keyframes fadeInDown {
14973
+ from { opacity: 0; transform: translate(-50%, -20px); }
14974
+ to { opacity: 1; transform: translate(-50%, 0); }
14975
+ }
14976
+ `),
14977
+ /* @__PURE__ */ import_react26.default.createElement(
14978
+ "svg",
14979
+ {
14980
+ width: "20",
14981
+ height: "20",
14982
+ viewBox: "0 0 24 24",
14983
+ fill: "none",
14984
+ stroke: "currentColor",
14985
+ strokeWidth: "2",
14986
+ strokeLinecap: "round",
14987
+ strokeLinejoin: "round"
14988
+ },
14989
+ /* @__PURE__ */ import_react26.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
14990
+ /* @__PURE__ */ import_react26.default.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
14991
+ /* @__PURE__ */ import_react26.default.createElement("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
14992
+ ),
14993
+ /* @__PURE__ */ import_react26.default.createElement("span", { style: { fontSize: "14px", fontWeight: 500 } }, invalidTargetError),
14994
+ /* @__PURE__ */ import_react26.default.createElement(
14995
+ "button",
14996
+ {
14997
+ onClick: () => setInvalidTargetError(null),
14998
+ style: {
14999
+ background: "rgba(255, 255, 255, 0.1)",
15000
+ border: "none",
15001
+ color: "white",
15002
+ padding: "4px 10px",
15003
+ borderRadius: "8px",
15004
+ cursor: "pointer",
15005
+ fontSize: "12px",
15006
+ fontWeight: 600,
15007
+ transition: "all 0.2s",
15008
+ marginLeft: "8px",
15009
+ border: "1px solid rgba(255,255,255,0.1)"
15010
+ },
15011
+ onMouseOver: (e) => {
15012
+ e.currentTarget.style.background = "rgba(255, 255, 255, 0.15)";
15013
+ e.currentTarget.style.transform = "translateY(-1px)";
15014
+ },
15015
+ onMouseOut: (e) => {
15016
+ e.currentTarget.style.background = "rgba(255, 255, 255, 0.1)";
15017
+ e.currentTarget.style.transform = "translateY(0)";
15018
+ }
15019
+ },
15020
+ "Fechar"
15021
+ )
14938
15022
  )
14939
15023
  );
14940
15024
  }
package/dist/index.mjs CHANGED
@@ -10634,6 +10634,7 @@ function XViewScene({
10634
10634
  });
10635
10635
  const [isImportModalOpen, setIsImportModalOpen] = useState25(false);
10636
10636
  const [importSuccessMessage, setImportSuccessMessage] = useState25("");
10637
+ const [invalidTargetError, setInvalidTargetError] = useState25(null);
10637
10638
  const [highlightedNodeId, setHighlightedNodeId] = useState25(null);
10638
10639
  const [isAncestryBoardOpen, setIsAncestryBoardOpen] = useState25(false);
10639
10640
  const [ancestryBoardData, setAncestryBoardData] = useState25([]);
@@ -14310,6 +14311,9 @@ function XViewScene({
14310
14311
  }, 300);
14311
14312
  } else {
14312
14313
  setHasFocusedInitial(true);
14314
+ setInvalidTargetError(
14315
+ "O link aponta para um item que n\xE3o foi encontrado ou foi exclu\xEDdo."
14316
+ );
14313
14317
  }
14314
14318
  }
14315
14319
  }, [
@@ -14332,6 +14336,9 @@ function XViewScene({
14332
14336
  }, 300);
14333
14337
  } else {
14334
14338
  setHasOpenedInitialAncestry(true);
14339
+ setInvalidTargetError(
14340
+ "O link aponta para uma ancestralidade que n\xE3o foi encontrada ou foi exclu\xEDda."
14341
+ );
14335
14342
  }
14336
14343
  }
14337
14344
  }, [
@@ -14941,6 +14948,83 @@ function XViewScene({
14941
14948
  currentViewName: viewParams == null ? void 0 : viewParams.name,
14942
14949
  currentAncestries: ancestryDataRef.current || []
14943
14950
  }
14951
+ ),
14952
+ invalidTargetError && /* @__PURE__ */ React25.createElement(
14953
+ "div",
14954
+ {
14955
+ className: "ui-overlay",
14956
+ style: {
14957
+ position: "fixed",
14958
+ top: "24px",
14959
+ left: "50%",
14960
+ transform: "translateX(-50%)",
14961
+ zIndex: 1e4,
14962
+ padding: "16px 24px",
14963
+ background: "rgba(30, 20, 20, 0.85)",
14964
+ backdropFilter: "blur(12px)",
14965
+ WebkitBackdropFilter: "blur(12px)",
14966
+ border: "1px solid rgba(255, 70, 70, 0.35)",
14967
+ borderRadius: "16px",
14968
+ boxShadow: "0 12px 40px rgba(0,0,0,0.5), 0 0 30px rgba(255, 50, 50, 0.1)",
14969
+ color: "#ffa0a0",
14970
+ display: "flex",
14971
+ alignItems: "center",
14972
+ gap: "16px",
14973
+ fontFamily: "Inter, sans-serif",
14974
+ animation: "fadeInDown 0.5s cubic-bezier(0.16, 1, 0.3, 1)"
14975
+ }
14976
+ },
14977
+ /* @__PURE__ */ React25.createElement("style", null, `
14978
+ @keyframes fadeInDown {
14979
+ from { opacity: 0; transform: translate(-50%, -20px); }
14980
+ to { opacity: 1; transform: translate(-50%, 0); }
14981
+ }
14982
+ `),
14983
+ /* @__PURE__ */ React25.createElement(
14984
+ "svg",
14985
+ {
14986
+ width: "20",
14987
+ height: "20",
14988
+ viewBox: "0 0 24 24",
14989
+ fill: "none",
14990
+ stroke: "currentColor",
14991
+ strokeWidth: "2",
14992
+ strokeLinecap: "round",
14993
+ strokeLinejoin: "round"
14994
+ },
14995
+ /* @__PURE__ */ React25.createElement("circle", { cx: "12", cy: "12", r: "10" }),
14996
+ /* @__PURE__ */ React25.createElement("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
14997
+ /* @__PURE__ */ React25.createElement("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
14998
+ ),
14999
+ /* @__PURE__ */ React25.createElement("span", { style: { fontSize: "14px", fontWeight: 500 } }, invalidTargetError),
15000
+ /* @__PURE__ */ React25.createElement(
15001
+ "button",
15002
+ {
15003
+ onClick: () => setInvalidTargetError(null),
15004
+ style: {
15005
+ background: "rgba(255, 255, 255, 0.1)",
15006
+ border: "none",
15007
+ color: "white",
15008
+ padding: "4px 10px",
15009
+ borderRadius: "8px",
15010
+ cursor: "pointer",
15011
+ fontSize: "12px",
15012
+ fontWeight: 600,
15013
+ transition: "all 0.2s",
15014
+ marginLeft: "8px",
15015
+ border: "1px solid rgba(255,255,255,0.1)"
15016
+ },
15017
+ onMouseOver: (e) => {
15018
+ e.currentTarget.style.background = "rgba(255, 255, 255, 0.15)";
15019
+ e.currentTarget.style.transform = "translateY(-1px)";
15020
+ },
15021
+ onMouseOut: (e) => {
15022
+ e.currentTarget.style.background = "rgba(255, 255, 255, 0.1)";
15023
+ e.currentTarget.style.transform = "translateY(0)";
15024
+ }
15025
+ },
15026
+ "Fechar"
15027
+ )
14944
15028
  )
14945
15029
  );
14946
15030
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lv-x-software-house/x_view",
3
- "version": "1.2.5-dev.2",
3
+ "version": "1.2.5-dev.3",
4
4
  "description": "Pacote privado contendo os componentes e lógica de renderização 3D do X View.",
5
5
  "author": "iv.x - Engenharia de Software - ivxsoftwarehouse@gmail.com",
6
6
  "license": "UNLICENSED",