@likec4/diagram 1.44.0 → 1.45.0

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 (134) hide show
  1. package/bundle/index.js +18160 -17671
  2. package/dist/LikeC4Diagram.js +7 -5
  3. package/dist/LikeC4Diagram.props.d.ts +9 -8
  4. package/dist/LikeC4Styles.js +0 -3
  5. package/dist/LikeC4View.d.ts +3 -3
  6. package/dist/LikeC4View.js +7 -3
  7. package/dist/ReactLikeC4.d.ts +2 -2
  8. package/dist/base/Base.d.ts +1 -1
  9. package/dist/base/updateEdges.js +25 -15
  10. package/dist/base/updateNodes.d.ts +14 -0
  11. package/dist/base/updateNodes.js +51 -18
  12. package/dist/base-primitives/Markdown.d.ts +30 -4
  13. package/dist/base-primitives/Markdown.js +3 -2
  14. package/dist/base-primitives/compound/CompoundActionButton.d.ts +3 -2
  15. package/dist/base-primitives/compound/CompoundDetailsButton.d.ts +3 -2
  16. package/dist/base-primitives/edge/EdgeActionButton.d.ts +3 -2
  17. package/dist/base-primitives/edge/EdgeContainer.d.ts +1 -1
  18. package/dist/base-primitives/edge/EdgeContainer.js +4 -1
  19. package/dist/base-primitives/edge/EdgeLabel.d.ts +2 -2
  20. package/dist/base-primitives/edge/EdgePath.js +24 -4
  21. package/dist/base-primitives/element/ElementActionButtons.d.ts +3 -2
  22. package/dist/base-primitives/element/ElementActionButtons.js +2 -2
  23. package/dist/base-primitives/element/ElementData.d.ts +3 -3
  24. package/dist/base-primitives/element/ElementData.js +13 -7
  25. package/dist/base-primitives/element/ElementDetailsButton.d.ts +3 -2
  26. package/dist/base-primitives/element/ElementDetailsButton.js +3 -0
  27. package/dist/base-primitives/element/ElementShape.js +5 -5
  28. package/dist/base-primitives/element/ElementTags.d.ts +6 -4
  29. package/dist/context/DiagramFeatures.d.ts +1 -0
  30. package/dist/context/TagStylesContext.js +1 -1
  31. package/dist/custom/hooks.d.ts +2 -2
  32. package/dist/custom/index.js +1 -1
  33. package/dist/hooks/index.d.ts +2 -1
  34. package/dist/hooks/useDiagramCompareLayout.js +7 -2
  35. package/dist/hooks/useLikeC4Project.d.ts +6 -1
  36. package/dist/hooks/useLikeC4Project.js +14 -2
  37. package/dist/hooks/useMediaPrint.d.ts +6 -0
  38. package/dist/likec4diagram/DiagramXYFlow.js +11 -6
  39. package/dist/likec4diagram/custom/edges/EdgeDrifts.d.ts +6 -0
  40. package/dist/likec4diagram/custom/edges/EdgeDrifts.js +38 -0
  41. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +24 -14
  42. package/dist/likec4diagram/custom/edges/SequenceStepEdge.js +3 -1
  43. package/dist/likec4diagram/custom/edges/useControlPoints.js +3 -3
  44. package/dist/likec4diagram/custom/edges/useRelationshipEdgePath.js +5 -5
  45. package/dist/likec4diagram/custom/nodes/NodeDrifts.d.ts +6 -0
  46. package/dist/likec4diagram/custom/nodes/{ElementNodeDrifts.js → NodeDrifts.js} +8 -4
  47. package/dist/likec4diagram/custom/nodes/SequenceActorNode.js +4 -2
  48. package/dist/likec4diagram/custom/nodes/index.d.ts +1 -0
  49. package/dist/likec4diagram/custom/nodes/nodes.js +64 -23
  50. package/dist/likec4diagram/relationship-popover/RelationshipPopover.js +3 -3
  51. package/dist/likec4diagram/relationship-popover/actor.d.ts +1 -1
  52. package/dist/likec4diagram/state/DiagramActorProvider.d.ts +2 -2
  53. package/dist/likec4diagram/state/DiagramActorProvider.js +0 -1
  54. package/dist/likec4diagram/state/assign.d.ts +10 -6
  55. package/dist/likec4diagram/state/assign.js +17 -192
  56. package/dist/likec4diagram/state/createViewChange.js +15 -26
  57. package/dist/likec4diagram/state/diagram-api.d.ts +2 -6
  58. package/dist/likec4diagram/state/diagram-api.js +2 -10
  59. package/dist/likec4diagram/state/hotkeyActor.d.ts +0 -7
  60. package/dist/likec4diagram/state/hotkeyActor.js +1 -17
  61. package/dist/likec4diagram/state/machine.actions.d.ts +430 -746
  62. package/dist/likec4diagram/state/machine.actions.js +193 -284
  63. package/dist/likec4diagram/state/machine.actions.layout.d.ts +579 -0
  64. package/dist/likec4diagram/state/machine.actions.layout.js +129 -0
  65. package/dist/likec4diagram/state/machine.d.ts +17 -3712
  66. package/dist/likec4diagram/state/machine.js +59 -73
  67. package/dist/likec4diagram/state/machine.setup.d.ts +61 -18
  68. package/dist/likec4diagram/state/machine.setup.js +27 -5
  69. package/dist/likec4diagram/state/machine.state.initializing.d.ts +25 -0
  70. package/dist/likec4diagram/state/machine.state.initializing.js +5 -5
  71. package/dist/likec4diagram/state/machine.state.navigating.d.ts +5 -108
  72. package/dist/likec4diagram/state/machine.state.navigating.js +167 -34
  73. package/dist/likec4diagram/state/machine.state.ready.d.ts +2316 -2851
  74. package/dist/likec4diagram/state/machine.state.ready.focused.d.ts +386 -0
  75. package/dist/likec4diagram/state/machine.state.ready.focused.js +85 -0
  76. package/dist/likec4diagram/state/machine.state.ready.idle.d.ts +474 -0
  77. package/dist/likec4diagram/state/machine.state.ready.idle.js +96 -0
  78. package/dist/likec4diagram/state/machine.state.ready.js +144 -319
  79. package/dist/likec4diagram/state/machine.state.ready.printing.d.ts +128 -0
  80. package/dist/likec4diagram/state/machine.state.ready.printing.js +40 -0
  81. package/dist/likec4diagram/state/machine.state.ready.walkthrough.d.ts +511 -0
  82. package/dist/likec4diagram/state/machine.state.ready.walkthrough.js +177 -0
  83. package/dist/likec4diagram/state/mediaPrintActor.d.ts +12 -0
  84. package/dist/likec4diagram/state/mediaPrintActor.js +18 -0
  85. package/dist/likec4diagram/state/syncManualLayoutActor.d.ts +6 -240
  86. package/dist/likec4diagram/state/syncManualLayoutActor.js +150 -89
  87. package/dist/likec4diagram/state/types.d.ts +5 -7
  88. package/dist/likec4diagram/state/utils.d.ts +15 -2
  89. package/dist/likec4diagram/state/utils.js +43 -3
  90. package/dist/likec4diagram/types.d.ts +8 -13
  91. package/dist/likec4diagram/ui/notation/NotationPanel.css.js +5 -2
  92. package/dist/likec4diagram/useLayoutConstraints.js +107 -102
  93. package/dist/likec4diagram/xyflow-diagram/diagram-view.js +12 -15
  94. package/dist/likec4diagram/xyflow-sequence/sequence-layout.js +11 -8
  95. package/dist/navigationpanel/NavigationPanel.js +5 -1
  96. package/dist/navigationpanel/actor.d.ts +4 -204
  97. package/dist/navigationpanel/actor.js +1 -1
  98. package/dist/navigationpanel/controls/ToggleReadonly.js +8 -3
  99. package/dist/navigationpanel/walkthrough/DynamicViewControls.d.ts +66 -66
  100. package/dist/navigationpanel/walkthrough/WalkthroughPanel.js +4 -3
  101. package/dist/overlays/element-details/ElementDetailsCard.css.js +3 -3
  102. package/dist/overlays/element-details/MetadataValue.d.ts +2 -1
  103. package/dist/overlays/element-details/actor.d.ts +8 -83
  104. package/dist/overlays/element-details/actor.js +0 -8
  105. package/dist/overlays/overlay/Overlay.js +10 -10
  106. package/dist/overlays/overlaysActor.d.ts +7 -392
  107. package/dist/overlays/overlaysActor.js +67 -46
  108. package/dist/overlays/relationship-details/_types.d.ts +3 -4
  109. package/dist/overlays/relationship-details/actor.d.ts +6 -562
  110. package/dist/overlays/relationship-details/actor.js +1 -0
  111. package/dist/overlays/relationship-details/layout-to-xyflow.js +3 -5
  112. package/dist/overlays/relationship-details/layout.d.ts +3 -3
  113. package/dist/overlays/relationship-details/layout.js +4 -4
  114. package/dist/overlays/relationships-browser/_types.d.ts +2 -3
  115. package/dist/overlays/relationships-browser/actor.d.ts +7 -739
  116. package/dist/overlays/relationships-browser/layout.d.ts +2 -2
  117. package/dist/overlays/relationships-browser/layout.js +3 -3
  118. package/dist/overlays/relationships-browser/useViewToNodesEdges.js +0 -3
  119. package/dist/overlays/types.d.ts +12 -13
  120. package/dist/search/components/_shared.css.d.ts +1 -1
  121. package/dist/search/searchActor.d.ts +3 -66
  122. package/dist/shadowroot/ShadowRoot.d.ts +5 -7
  123. package/dist/shadowroot/ShadowRoot.js +7 -5
  124. package/dist/styles.css2.js +1 -1
  125. package/dist/utils/vector.d.ts +5 -0
  126. package/dist/utils/vector.js +7 -0
  127. package/dist/utils/view-bounds.js +7 -6
  128. package/dist/utils/xyflow.d.ts +4 -2
  129. package/dist/utils/xyflow.js +18 -50
  130. package/package.json +19 -18
  131. package/panda.buildinfo.json +17 -5
  132. package/styles-min.css +1 -1
  133. package/styles.css +1 -1
  134. package/dist/likec4diagram/custom/nodes/ElementNodeDrifts.d.ts +0 -4
@@ -76,6 +76,11 @@ export declare class Vector implements VectorValue {
76
76
  * @returns A new vector that is the normalized version of this vector.
77
77
  */
78
78
  normalize(): Vector;
79
+ /**
80
+ * Rounds the components of the vector to the nearest integers.
81
+ * @returns A new vector with rounded components.
82
+ */
83
+ round(): Vector;
79
84
  }
80
85
  export declare function vector(source: VectorValue | Vector): Vector;
81
86
  export declare function vector(x: number, y: number): Vector;
@@ -106,6 +106,13 @@ class Vector {
106
106
  }
107
107
  return new Vector(this.x / len, this.y / len);
108
108
  }
109
+ /**
110
+ * Rounds the components of the vector to the nearest integers.
111
+ * @returns A new vector with rounded components.
112
+ */
113
+ round() {
114
+ return new Vector(Math.round(this.x), Math.round(this.y));
115
+ }
109
116
  }
110
117
  function vector(...args) {
111
118
  if (args.length === 1 && args[0] instanceof Vector) {
@@ -17,12 +17,6 @@ function calcEdgeBounds({ points, controlPoints, labelBBox }) {
17
17
  let minY = Infinity;
18
18
  let maxX = -Infinity;
19
19
  let maxY = -Infinity;
20
- for (const p of points) {
21
- minX = Math.min(minX, p[0]);
22
- minY = Math.min(minY, p[1]);
23
- maxX = Math.max(maxX, p[0]);
24
- maxY = Math.max(maxY, p[1]);
25
- }
26
20
  if (controlPoints) {
27
21
  for (const p of controlPoints) {
28
22
  minX = Math.min(minX, p.x);
@@ -30,6 +24,13 @@ function calcEdgeBounds({ points, controlPoints, labelBBox }) {
30
24
  maxX = Math.max(maxX, p.x);
31
25
  maxY = Math.max(maxY, p.y);
32
26
  }
27
+ } else {
28
+ for (const [x, y] of points) {
29
+ minX = Math.min(minX, x);
30
+ minY = Math.min(minY, y);
31
+ maxX = Math.max(maxX, x);
32
+ maxY = Math.max(maxY, y);
33
+ }
33
34
  }
34
35
  if (labelBBox) {
35
36
  minX = Math.min(minX, labelBBox.x);
@@ -1,6 +1,7 @@
1
1
  import { NonEmptyArray, Point, BBox } from '@likec4/core';
2
2
  import { InternalNode, Rect, XYPosition, Position } from '@xyflow/react';
3
3
  import { NodeHandle } from '@xyflow/system';
4
+ import { MouseEvent as ReactMouseEvent } from 'react';
4
5
  import { Vector } from './vector';
5
6
  export declare function distance(a: XYPosition, b: XYPosition): number;
6
7
  /**
@@ -28,6 +29,7 @@ export type MinimalInternalNode = {
28
29
  */
29
30
  export declare function extractMinimalInternalNode<N extends InternalNode>(nd: N): MinimalInternalNode;
30
31
  export declare function isEqualMinimalInternalNodes(a: MinimalInternalNode, b: MinimalInternalNode): boolean;
32
+ export declare function isEqualRects(a: Rect, b: Rect): boolean;
31
33
  export declare const nodeToRect: (nd: MinimalInternalNode) => Rect;
32
34
  export declare function getNodeCenter(node: MinimalInternalNode): XYPosition;
33
35
  /**
@@ -39,7 +41,7 @@ export declare function getNodeCenter(node: MinimalInternalNode): XYPosition;
39
41
  * @param nodeMargin the margin of the intersectionNode. The point will be placed at nodeMargin distance from the border of the node
40
42
  * @returns coordinates of the intersection point
41
43
  */
42
- export declare function getNodeIntersectionFromCenterToPoint(intersectionNode: MinimalInternalNode, target: XYPosition, nodeMargin?: number): Vector;
44
+ export declare function getNodeIntersectionFromCenterToPoint(intersectionNode: BBox, target: XYPosition, nodeMargin?: number): Vector;
43
45
  /**
44
46
  * Helper function returns the intersection point
45
47
  * of the line between the center of the intersectionNode and the target
@@ -60,7 +62,7 @@ export declare const isInside: (test: Rect, target: Rect) => boolean;
60
62
  export declare function bezierControlPoints(points: NonEmptyArray<Point>): XYPosition[];
61
63
  export declare function isSamePoint(a: XYPosition | Point, b: XYPosition | Point): boolean;
62
64
  export declare function distanceBetweenPoints(a: XYPosition, b: XYPosition): number;
63
- export declare function stopPropagation(e: React.MouseEvent): void;
65
+ export declare function stopPropagation(e: ReactMouseEvent): void;
64
66
  export declare function bezierPath(bezierSpline: NonEmptyArray<Point>): string;
65
67
  export declare function toXYFlowPosition(position: 'left' | 'right' | 'top' | 'bottom'): Position;
66
68
  export declare function createXYFlowNodeNandles(bbox: BBox): NodeHandle[];
@@ -1,68 +1,36 @@
1
- import '@likec4/core';
1
+ import { BBox } from '@likec4/core';
2
2
  import { invariant } from '@likec4/core/utils';
3
3
  import '@xyflow/react';
4
4
  import { getNodeDimensions } from '@xyflow/system';
5
5
  import { Bezier } from 'bezier-js';
6
- import { hasAtLeast, isNumber, isArray } from 'remeda';
6
+ import { isArray, hasAtLeast } from 'remeda';
7
7
  import { vector } from './vector.js';
8
8
 
9
- function extractMinimalInternalNode(nd) {
10
- const minimal = {
11
- internals: {
12
- positionAbsolute: nd.internals.positionAbsolute
13
- }
14
- };
15
- if (nd.measured) {
16
- minimal.measured = nd.measured;
17
- }
18
- if (isNumber(nd.width)) {
19
- minimal.width = nd.width;
20
- }
21
- if (isNumber(nd.height)) {
22
- minimal.height = nd.height;
23
- }
24
- if (isNumber(nd.initialWidth)) {
25
- minimal.initialWidth = nd.initialWidth;
26
- }
27
- if (isNumber(nd.initialHeight)) {
28
- minimal.initialHeight = nd.initialHeight;
29
- }
30
- return minimal;
31
- }
32
- function isEqualMinimalInternalNodes(a, b) {
33
- const posA = a.internals.positionAbsolute;
34
- const posB = b.internals.positionAbsolute;
35
- if (posA.x !== posB.x || posA.y !== posB.y) {
36
- return false;
37
- }
38
- const widthA = a.measured?.width ?? a.width ?? a.initialWidth ?? 0;
39
- const widthB = b.measured?.width ?? b.width ?? b.initialWidth ?? 0;
40
- if (widthA !== widthB) {
41
- return false;
42
- }
43
- const heightA = a.measured?.height ?? a.height ?? a.initialHeight ?? 0;
44
- const heightB = b.measured?.height ?? b.height ?? b.initialHeight ?? 0;
45
- return heightA === heightB;
9
+ function isEqualRects(a, b) {
10
+ return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
46
11
  }
12
+ const nodeToRect = (nd) => ({
13
+ x: Math.round(nd.internals.positionAbsolute.x),
14
+ y: Math.round(nd.internals.positionAbsolute.y),
15
+ width: nd.measured?.width ?? nd.width ?? nd.initialWidth ?? 0,
16
+ height: nd.measured?.height ?? nd.height ?? nd.initialHeight ?? 0
17
+ });
47
18
  function getNodeCenter(node) {
48
19
  const { width, height } = getNodeDimensions(node);
49
20
  const { x, y } = node.internals.positionAbsolute;
50
21
  return {
51
- x: x + width / 2,
52
- y: y + height / 2
22
+ x: Math.round(x + width / 2),
23
+ y: Math.round(y + height / 2)
53
24
  };
54
25
  }
55
26
  function getNodeIntersectionFromCenterToPoint(intersectionNode, target, nodeMargin = 0) {
56
- const nodeCenter = getNodeCenter(intersectionNode);
57
- const { width, height } = getNodeDimensions(intersectionNode);
27
+ const { width, height } = intersectionNode;
28
+ const nodeCenter = BBox.center(intersectionNode);
58
29
  const v = vector(target.x, target.y).subtract(nodeCenter);
59
- const xScale = (nodeMargin + (width || 0) / 2) / v.x;
60
- const yScale = (nodeMargin + (height || 0) / 2) / v.y;
30
+ const xScale = (nodeMargin + width / 2) / v.x;
31
+ const yScale = (nodeMargin + height / 2) / v.y;
61
32
  const scale = Math.min(Math.abs(xScale), Math.abs(yScale));
62
- return vector(v).multiply(scale).add(nodeCenter);
63
- }
64
- function getNodeIntersection(intersectionNode, targetNode) {
65
- return getNodeIntersectionFromCenterToPoint(intersectionNode, getNodeCenter(targetNode));
33
+ return vector(v).multiply(scale).add(nodeCenter).round();
66
34
  }
67
35
  function bezierControlPoints(points) {
68
36
  let [start, ...bezierPoints] = points;
@@ -114,4 +82,4 @@ function bezierPath(bezierSpline) {
114
82
  return path;
115
83
  }
116
84
 
117
- export { bezierControlPoints, bezierPath, extractMinimalInternalNode, getNodeCenter, getNodeIntersection, getNodeIntersectionFromCenterToPoint, isEqualMinimalInternalNodes, isSamePoint, stopPropagation };
85
+ export { bezierControlPoints, bezierPath, getNodeCenter, getNodeIntersectionFromCenterToPoint, isEqualRects, isSamePoint, nodeToRect, stopPropagation };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@likec4/diagram",
3
- "version": "1.44.0",
3
+ "version": "1.45.0",
4
4
  "license": "MIT",
5
5
  "bugs": "https://github.com/likec4/likec4/issues",
6
6
  "homepage": "https://likec4.dev",
@@ -65,30 +65,31 @@
65
65
  "@dagrejs/dagre": "1.1.5",
66
66
  "@floating-ui/dom": "^1.7.4",
67
67
  "@lume/kiwi": "^0.4.4",
68
- "@mantine/core": "8.3.7",
69
- "@mantine/hooks": "8.3.7",
68
+ "@mantine/core": "8.3.9",
69
+ "@mantine/hooks": "8.3.9",
70
70
  "@nanostores/react": "1.0.0",
71
+ "@nanostores/media-query": "0.1.2",
71
72
  "@react-hookz/web": "^25.2.0",
72
73
  "@xstate/react": "6.0.0",
73
- "@xyflow/react": "12.9.0",
74
- "@xyflow/system": "0.0.71",
74
+ "@xyflow/react": "12.9.3",
75
+ "@xyflow/system": "0.0.73",
75
76
  "immer": "^10.2.0",
76
77
  "bezier-js": "^6.1.4",
77
78
  "d3-shape": "^3.2.0",
78
- "fast-equals": "^5.3.2",
79
+ "fast-equals": "^5.3.3",
79
80
  "khroma": "2.1.0",
80
81
  "motion": "^12.23.24",
81
- "nanostores": "1.0.1",
82
+ "nanostores": "1.1.0",
82
83
  "react-error-boundary": "^6.0.0",
83
84
  "react-shadow": "^20.6.0",
84
85
  "remeda": "^2.32.0",
85
86
  "type-fest": "^4.41.0",
86
87
  "xstate": "5.24.0",
87
- "@likec4/core": "1.44.0",
88
- "@likec4/styles": "1.44.0"
88
+ "@likec4/core": "1.45.0",
89
+ "@likec4/styles": "1.45.0"
89
90
  },
90
91
  "peerDependencies": {
91
- "@pandacss/dev": "^1.4.3",
92
+ "@pandacss/dev": "^1.5.1",
92
93
  "@types/react": "^18.x || ^19.x",
93
94
  "@types/react-dom": "^18.x || ^19.x",
94
95
  "react": "^18.x || ^19.x",
@@ -106,27 +107,27 @@
106
107
  }
107
108
  },
108
109
  "devDependencies": {
109
- "@pandacss/dev": "^1.4.3",
110
+ "@pandacss/dev": "^1.5.1",
110
111
  "@statelyai/inspect": "^0.4.0",
111
112
  "@tabler/icons-react": "3.35.0",
112
113
  "@types/bezier-js": "^4.1.3",
113
114
  "@types/d3-shape": "^3.1.7",
114
115
  "@types/node": "~20.19.22",
115
- "@types/react": "19.2.2",
116
- "@types/react-dom": "19.2.2",
117
- "@vitejs/plugin-react": "^5.1.0",
118
- "oxlint": "1.28.0",
116
+ "@types/react": "19.2.6",
117
+ "@types/react-dom": "19.2.3",
118
+ "@vitejs/plugin-react": "^5.1.1",
119
+ "oxlint": "1.29.0",
119
120
  "postcss": "8.5.6",
120
121
  "react": "19.2.0",
121
122
  "react-dom": "19.2.0",
122
123
  "typescript": "5.9.3",
123
- "vite": "^7.2.2",
124
+ "vite": "^7.2.4",
124
125
  "vite-plugin-dts": "^4.5.4",
125
- "vitest": "4.0.8",
126
+ "vitest": "4.0.13",
126
127
  "wireit": "0.14.12",
127
128
  "zx": "8.8.5",
128
129
  "@likec4/devops": "1.42.0",
129
- "@likec4/tsconfig": "1.44.0"
130
+ "@likec4/tsconfig": "1.45.0"
130
131
  },
131
132
  "scripts": {
132
133
  "typecheck": "tsc --build --verbose",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "1.4.3",
2
+ "schemaVersion": "1.5.1",
3
3
  "styles": {
4
4
  "atomic": [
5
5
  "background]___[value:dots",
@@ -118,6 +118,7 @@
118
118
  "width]___[value:max-content]___[cond:@/sm",
119
119
  "maxWidth]___[value:calc(100vw - 2 * {spacing.md})]___[cond:@/sm",
120
120
  "maxWidth]___[value:calc(100cqw - 2 * {spacing.md})]___[cond:@/sm<___>xs",
121
+ "display]___[value:none]___[cond:_print",
121
122
  "mainAxis]___[value:4",
122
123
  "position]___[value:bottom-start",
123
124
  "layerStyle]___[value:likec4.panel",
@@ -216,6 +217,8 @@
216
217
  "transitionDelay]___[value:0s]___[cond:_hover",
217
218
  "lineClamp]___[value:5",
218
219
  "fill]___[value:none",
220
+ "visibility]___[value:hidden",
221
+ "offsetDistance]___[value:50%",
219
222
  "transition]___[value:none]___[cond:_reduceGraphics",
220
223
  "strokeWidth]___[value:calc(var(--xy-edge-stroke-width) + 2)",
221
224
  "strokeOpacity]___[value:0.08",
@@ -249,7 +252,6 @@
249
252
  "gap]___[value:1.5",
250
253
  "lineClamp]___[value:2",
251
254
  "lineClamp]___[value:3",
252
- "maxHeight]___[value:8rem ",
253
255
  "top]___[value:0.5",
254
256
  "right]___[value:0.5",
255
257
  "right]___[value:[5px]]___[cond:_shapeBrowser",
@@ -458,7 +460,7 @@
458
460
  "backgroundColor]___[value:mantine.colors.body",
459
461
  "backgroundColor]___[value:mantine.colors.dark[6]]___[cond:_dark",
460
462
  "border]___[value:none",
461
- "backgroundImage]___[value: linear-gradient(180deg, color-mix(in srgb, var(--likec4-palette-fill) 60%, transparent), color-mix(in srgb, var(--likec4-palette-fill) 20%, transparent) 8px, color-mix(in srgb, var(--likec4-palette-fill) 14%, transparent) 20px, transparent 80px ), linear-gradient(180deg, var(--likec4-palette-fill), var(--likec4-palette-fill) 4px, transparent 4px) ",
463
+ "backgroundImage]___[value: linear-gradient(180deg, color-mix(in oklab, var(--likec4-palette-fill) 60%, transparent), color-mix(in oklab, var(--likec4-palette-fill) 20%, transparent) 8px, color-mix(in oklab, var(--likec4-palette-fill) 14%, transparent) 20px, transparent 80px ), linear-gradient(180deg, var(--likec4-palette-fill), var(--likec4-palette-fill) 4px, transparent 4px) ",
462
464
  "display]___[value:none]___[cond:& .react-flow__attribution",
463
465
  "flex]___[value:0",
464
466
  "cursor]___[value:move",
@@ -768,6 +770,12 @@
768
770
  "transform]___[value:translateX(-50%)",
769
771
  "zIndex]___[value:903",
770
772
  "marginTop]___[value:[32px]]___[cond:& + &",
773
+ "stroke]___[value:likec4.compare.manual.outline",
774
+ "mixBlendMode]___[value:plus-lighter",
775
+ "strokeWidth]___[value:8px",
776
+ "strokeWidth]___[value:12px]___[cond:_whenHovered",
777
+ "strokeOpacity]___[value:0.3",
778
+ "strokeOpacity]___[value:0.5]___[cond:_whenHovered",
771
779
  "mixBlendMode]___[value:normal",
772
780
  "fill]___[value:var(--likec4-palette-relation-stroke)",
773
781
  "stroke]___[value:var(--likec4-palette-relation-stroke)",
@@ -775,7 +783,6 @@
775
783
  "strokeWidth]___[value:1",
776
784
  "cursor]___[value:grab",
777
785
  "pointerEvents]___[value:auto",
778
- "visibility]___[value:hidden",
779
786
  "fillOpacity]___[value:1]___[cond:_hover",
780
787
  "stroke]___[value:mantine.colors.primary.filledHover]___[cond:_hover",
781
788
  "strokeWidth]___[value:18]___[cond:_hover",
@@ -795,7 +802,7 @@
795
802
  "outlineOffset]___[value:1]___[cond:& + .likec4-element-shape",
796
803
  "borderWidth]___[value:1",
797
804
  "--_color]___[value:var(--likec4-palette-stroke)",
798
- "--_color]___[value:[color-mix(in srgb, var(--likec4-palette-hiContrast) 40%, var(--likec4-palette-fill))]]___[cond:_dark",
805
+ "--_color]___[value:[color-mix(in oklab, var(--likec4-palette-hiContrast) 40%, var(--likec4-palette-fill))]]___[cond:_dark",
799
806
  "borderColor]___[value:[var(--_color)/30]",
800
807
  "backgroundColor]___[value:var(--likec4-palette-fill)/15",
801
808
  "paddingLeft]___[value:2",
@@ -810,6 +817,11 @@
810
817
  "translateX]___[value:-1/2",
811
818
  "translateY]___[value:-1/2",
812
819
  "top]___[value:1",
820
+ "outlineColor]___[value:likec4.compare.manual.outline",
821
+ "outlineWidth]___[value:2px",
822
+ "outlineWidth]___[value:4px]___[cond:_light",
823
+ "outlineStyle]___[value:solid",
824
+ "outlineOffset]___[value:1",
813
825
  "right]___[value:0",
814
826
  "padding]___[value:2",
815
827
  "width]___[value:min-content",