@likec4/diagram 1.31.0 → 1.32.1

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 (269) hide show
  1. package/bundle/{chunk-BBzMXzCg.js → chunk-DlHyKoeo.js} +1700 -1206
  2. package/bundle/custom.js +51 -47
  3. package/bundle/index.js +5495 -5428
  4. package/dist/LikeC4CustomColors.d.ts +2 -7
  5. package/dist/LikeC4CustomColors.js +17 -6
  6. package/dist/LikeC4Diagram.d.ts +3 -2
  7. package/dist/LikeC4Diagram.js +10 -14
  8. package/dist/LikeC4Diagram.props.d.ts +41 -24
  9. package/dist/LikeC4ModelProvider.d.ts +5 -4
  10. package/dist/StaticLikeC4Diagram.d.ts +3 -2
  11. package/dist/StaticLikeC4Diagram.js +2 -2
  12. package/dist/base/BaseXYFlow.js +5 -5
  13. package/dist/base/const.d.ts +1 -1
  14. package/dist/base/const.js +1 -1
  15. package/dist/base/index.d.ts +2 -1
  16. package/dist/base/primitives/compound/CompoundActionButton.js +2 -1
  17. package/dist/base/primitives/compound/CompoundDetailsButton.js +2 -1
  18. package/dist/base/primitives/compound/CompoundTitle.d.ts +1 -1
  19. package/dist/base/primitives/compound/CompoundTitle.js +2 -1
  20. package/dist/base/primitives/edge/EdgeContainer.d.ts +1 -1
  21. package/dist/base/primitives/edge/EdgeLabel.css.js +1 -0
  22. package/dist/base/primitives/edge/EdgeLabel.d.ts +3 -3
  23. package/dist/base/primitives/edge/EdgeLabel.js +6 -4
  24. package/dist/base/primitives/edge/EdgeLabelContainer.d.ts +1 -1
  25. package/dist/base/primitives/edge/EdgeMarkers.d.ts +1 -1
  26. package/dist/base/primitives/edge/EdgePath.d.ts +1 -1
  27. package/dist/base/primitives/element/ElementActionButtons.js +10 -9
  28. package/dist/base/primitives/element/ElementDetailsButton.js +2 -1
  29. package/dist/base/primitives/element/ElementShape.d.ts +1 -1
  30. package/dist/base/primitives/element/ElementTags.d.ts +14 -0
  31. package/dist/base/primitives/element/ElementTags.js +176 -0
  32. package/dist/base/primitives/element/ElementTitle.d.ts +5 -4
  33. package/dist/base/primitives/element/ElementTitle.js +6 -6
  34. package/dist/base/primitives/index.d.ts +1 -0
  35. package/dist/base/types.Base.d.ts +54 -0
  36. package/dist/base/types.Base.js +48 -0
  37. package/dist/base/types.d.ts +2 -52
  38. package/dist/bundle/LikeC4View.d.ts +2 -1
  39. package/dist/bundle/LikeC4View.js +22 -19
  40. package/dist/bundle/LikeC4View.props.d.ts +15 -4
  41. package/dist/bundle/ReactLikeC4.d.ts +4 -7
  42. package/dist/bundle/ReactLikeC4.js +10 -8
  43. package/dist/bundle/index.js +1 -1
  44. package/dist/components/ErrorFallback.d.ts +2 -0
  45. package/dist/components/ErrorFallback.js +29 -0
  46. package/dist/context/DiagramEventHandlers.d.ts +6 -5
  47. package/dist/context/DiagramFeatures.d.ts +2 -2
  48. package/dist/context/DiagramFeatures.js +3 -31
  49. package/dist/context/EnsureMantine.js +1 -1
  50. package/dist/context/IconRenderer.js +1 -4
  51. package/dist/context/RootContainer.js +5 -1
  52. package/dist/context/TagStylesContext.d.ts +7 -0
  53. package/dist/context/TagStylesContext.js +85 -0
  54. package/dist/custom/components.d.ts +1 -1
  55. package/dist/custom/customNodes.d.ts +32 -17
  56. package/dist/custom/hooks.d.ts +1 -1
  57. package/dist/hooks/index.d.ts +1 -1
  58. package/dist/hooks/useDiagram.d.ts +73 -38
  59. package/dist/hooks/useDiagram.js +7 -3
  60. package/dist/hooks/useMantinePortalProps.d.ts +2 -2
  61. package/dist/hooks/useSearchActor.d.ts +2 -0
  62. package/dist/hooks/useSearchActor.js +10 -0
  63. package/dist/hooks/useUpdateEffect.js +3 -0
  64. package/dist/hooks/useXYFlow.d.ts +39 -37
  65. package/dist/hooks/useXYFlow.js +5 -1
  66. package/dist/index.js +1 -1
  67. package/dist/likec4diagram/DiagramUI.js +7 -2
  68. package/dist/likec4diagram/DiagramXYFlow.d.ts +4 -3
  69. package/dist/likec4diagram/DiagramXYFlow.js +107 -110
  70. package/dist/likec4diagram/custom/edges/RelationshipEdge.d.ts +7 -6
  71. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +8 -0
  72. package/dist/likec4diagram/custom/edges/RelationshipsDropdownMenu.js +7 -5
  73. package/dist/likec4diagram/custom/index.d.ts +7 -6
  74. package/dist/likec4diagram/custom/nodes/nodes.js +39 -26
  75. package/dist/likec4diagram/custom/nodes/toolbar/_shared.d.ts +7 -7
  76. package/dist/likec4diagram/types.d.ts +5 -5
  77. package/dist/likec4diagram/ui/controls/Controls.js +12 -4
  78. package/dist/likec4diagram/ui/notation/NotationPanel.js +1 -1
  79. package/dist/likec4diagram/useViewToNodesEdges.d.ts +5 -3
  80. package/dist/likec4diagram/useViewToNodesEdges.js +20 -30
  81. package/dist/likec4model/LikeC4ModelContext.d.ts +2 -2
  82. package/dist/likec4model/index.d.ts +1 -1
  83. package/dist/likec4model/useLikeC4ElementsTree.js +1 -1
  84. package/dist/likec4model/useLikeC4Model.d.ts +23 -10
  85. package/dist/likec4model/useLikeC4Model.js +22 -7
  86. package/dist/overlays/Overlays.js +4 -27
  87. package/dist/overlays/element-details/ElementDetailsCard.d.ts +1 -1
  88. package/dist/overlays/element-details/ElementDetailsCard.js +19 -12
  89. package/dist/overlays/element-details/TabPanelDeployments.d.ts +1 -1
  90. package/dist/overlays/element-details/TabPanelDeployments.js +1 -1
  91. package/dist/overlays/element-details/TabPanelRelationships.d.ts +1 -1
  92. package/dist/overlays/element-details/TabPanelStructure.d.ts +1 -1
  93. package/dist/overlays/element-details/actor.d.ts +288 -286
  94. package/dist/overlays/overlay/Overlay.css.d.ts +57 -2
  95. package/dist/overlays/overlay/Overlay.css.js +76 -39
  96. package/dist/overlays/overlay/Overlay.d.ts +12 -0
  97. package/dist/overlays/overlay/Overlay.js +58 -27
  98. package/dist/overlays/overlaysActor.d.ts +1 -1
  99. package/dist/overlays/relationship-details/RelationshipDetails.d.ts +3 -2
  100. package/dist/overlays/relationship-details/RelationshipDetails.js +3 -3
  101. package/dist/overlays/relationship-details/_types.d.ts +2 -2
  102. package/dist/overlays/relationship-details/actor.js +7 -7
  103. package/dist/overlays/relationship-details/custom/edgeTypes.d.ts +3 -2
  104. package/dist/overlays/relationship-details/custom/nodeTypes.js +4 -0
  105. package/dist/overlays/relationship-details/hooks.d.ts +10 -9
  106. package/dist/overlays/relationship-details/layout-to-xyflow.js +1 -0
  107. package/dist/overlays/relationship-details/layout.js +3 -1
  108. package/dist/overlays/relationships-browser/RelationshipsBrowser.d.ts +3 -2
  109. package/dist/overlays/relationships-browser/SelectElement.js +1 -1
  110. package/dist/overlays/relationships-browser/_types.d.ts +2 -2
  111. package/dist/overlays/relationships-browser/actor.d.ts +1 -1
  112. package/dist/overlays/relationships-browser/actor.js +7 -7
  113. package/dist/overlays/relationships-browser/custom/edgeTypes.d.ts +3 -2
  114. package/dist/overlays/relationships-browser/custom/nodeTypes.d.ts +8 -5
  115. package/dist/overlays/relationships-browser/custom/nodeTypes.js +4 -0
  116. package/dist/overlays/relationships-browser/layout.d.ts +2 -2
  117. package/dist/overlays/relationships-browser/layout.js +10 -6
  118. package/dist/overlays/relationships-browser/useViewToNodesEdges.js +4 -3
  119. package/dist/search/Search.d.ts +4 -0
  120. package/dist/search/Search.js +173 -0
  121. package/dist/{likec4diagram/ui/search → search/components}/ElementsColumn.css.js +0 -1
  122. package/dist/search/components/ElementsColumn.d.ts +2 -0
  123. package/dist/{likec4diagram/ui/search → search/components}/ElementsColumn.js +26 -25
  124. package/dist/search/components/PickView.d.ts +4 -0
  125. package/dist/search/components/PickView.js +135 -0
  126. package/dist/search/components/SearchByTags.d.ts +1 -0
  127. package/dist/search/components/SearchByTags.js +119 -0
  128. package/dist/search/components/SearchInput.d.ts +2 -0
  129. package/dist/{likec4diagram/ui/search → search/components}/SearchInput.js +61 -40
  130. package/dist/{likec4diagram/ui/search → search/components}/ViewsColum.d.ts +3 -2
  131. package/dist/{likec4diagram/ui/search → search/components}/ViewsColum.js +25 -17
  132. package/dist/{likec4diagram/ui/search → search/components}/_shared.css.js +26 -35
  133. package/dist/{likec4diagram/ui/search/LikeC4Search.css.d.ts → search/components/styles.css.d.ts} +0 -2
  134. package/dist/search/components/styles.css.js +60 -0
  135. package/dist/search/components/utils.d.ts +5 -0
  136. package/dist/search/components/utils.js +58 -0
  137. package/dist/search/hooks.d.ts +10 -0
  138. package/dist/search/hooks.js +35 -0
  139. package/dist/search/searchActor.d.ts +90 -0
  140. package/dist/search/searchActor.js +75 -0
  141. package/dist/state/DiagramActorProvider.d.ts +9 -7
  142. package/dist/state/DiagramActorProvider.js +24 -18
  143. package/dist/state/assign.d.ts +0 -1
  144. package/dist/state/assign.js +9 -19
  145. package/dist/state/diagram-machine.d.ts +645 -183
  146. package/dist/state/diagram-machine.js +127 -60
  147. package/dist/state/syncManualLayoutActor.d.ts +2 -2
  148. package/dist/state/types.d.ts +2 -0
  149. package/dist/state/utils.d.ts +2 -0
  150. package/dist/state/utils.js +3 -0
  151. package/dist/styles-min.css +1 -1
  152. package/dist/styles-xyflow.css +1 -1
  153. package/dist/styles.css +1 -1
  154. package/dist/styles.css2.js +1 -1
  155. package/package.json +20 -19
  156. package/panda.buildinfo.json +171 -148
  157. package/src/LikeC4CustomColors.tsx +21 -6
  158. package/src/LikeC4Diagram.props.ts +48 -32
  159. package/src/LikeC4Diagram.tsx +19 -20
  160. package/src/LikeC4ModelProvider.tsx +6 -5
  161. package/src/StaticLikeC4Diagram.tsx +8 -6
  162. package/src/base/const.ts +1 -1
  163. package/src/base/index.ts +2 -1
  164. package/src/base/primitives/compound/CompoundActionButton.tsx +2 -1
  165. package/src/base/primitives/compound/CompoundDetailsButton.tsx +2 -1
  166. package/src/base/primitives/compound/CompoundTitle.tsx +3 -2
  167. package/src/base/primitives/edge/EdgeContainer.tsx +2 -1
  168. package/src/base/primitives/edge/EdgeLabel.css.ts +1 -0
  169. package/src/base/primitives/edge/EdgeLabel.tsx +20 -15
  170. package/src/base/primitives/edge/EdgeLabelContainer.tsx +1 -1
  171. package/src/base/primitives/edge/EdgeMarkers.tsx +2 -1
  172. package/src/base/primitives/edge/EdgePath.tsx +1 -1
  173. package/src/base/primitives/element/ElementActionButtons.tsx +11 -10
  174. package/src/base/primitives/element/ElementDetailsButton.tsx +2 -1
  175. package/src/base/primitives/element/ElementShape.tsx +2 -1
  176. package/src/base/primitives/element/ElementTags.tsx +182 -0
  177. package/src/base/primitives/element/ElementTitle.tsx +21 -15
  178. package/src/base/primitives/index.ts +1 -0
  179. package/src/base/types.Base.ts +104 -0
  180. package/src/base/types.ts +2 -99
  181. package/src/bundle/LikeC4View.props.ts +17 -4
  182. package/src/bundle/LikeC4View.tsx +27 -36
  183. package/src/bundle/ReactLikeC4.tsx +16 -36
  184. package/src/components/ErrorFallback.tsx +30 -0
  185. package/src/context/DiagramEventHandlers.tsx +5 -4
  186. package/src/context/DiagramFeatures.tsx +3 -22
  187. package/src/context/EnsureMantine.tsx +1 -1
  188. package/src/context/IconRenderer.tsx +1 -4
  189. package/src/context/RootContainer.tsx +9 -3
  190. package/src/context/TagStylesContext.tsx +96 -0
  191. package/src/custom/components.ts +2 -0
  192. package/src/custom/customNodes.tsx +29 -14
  193. package/src/custom/hooks.ts +2 -0
  194. package/src/hooks/index.ts +1 -1
  195. package/src/hooks/useCurrentViewId.ts +1 -4
  196. package/src/hooks/useDiagram.ts +104 -12
  197. package/src/hooks/useMantinePortalProps.ts +10 -1
  198. package/src/hooks/useSearchActor.ts +11 -0
  199. package/src/hooks/useUpdateEffect.ts +7 -4
  200. package/src/hooks/useXYFlow.ts +5 -0
  201. package/src/likec4diagram/DiagramUI.tsx +5 -0
  202. package/src/likec4diagram/DiagramXYFlow.tsx +118 -121
  203. package/src/likec4diagram/custom/edges/RelationshipEdge.tsx +9 -0
  204. package/src/likec4diagram/custom/edges/RelationshipsDropdownMenu.tsx +10 -9
  205. package/src/likec4diagram/custom/nodes/nodes.tsx +45 -43
  206. package/src/likec4diagram/custom/nodes/toolbar/_shared.tsx +11 -3
  207. package/src/likec4diagram/types.ts +5 -3
  208. package/src/likec4diagram/ui/controls/Controls.tsx +11 -4
  209. package/src/likec4diagram/ui/notation/NotationPanel.tsx +2 -2
  210. package/src/likec4diagram/useViewToNodesEdges.ts +34 -36
  211. package/src/likec4model/LikeC4ModelContext.ts +2 -2
  212. package/src/likec4model/index.ts +2 -0
  213. package/src/likec4model/useLikeC4ElementsTree.ts +1 -1
  214. package/src/likec4model/useLikeC4Model.ts +32 -16
  215. package/src/overlays/Overlays.tsx +5 -32
  216. package/src/overlays/element-details/ElementDetailsCard.tsx +25 -18
  217. package/src/overlays/element-details/TabPanelDeployments.tsx +3 -2
  218. package/src/overlays/element-details/TabPanelRelationships.tsx +2 -1
  219. package/src/overlays/element-details/TabPanelStructure.tsx +1 -1
  220. package/src/overlays/element-details/actor.ts +2 -2
  221. package/src/overlays/overlay/Overlay.css.ts +75 -38
  222. package/src/overlays/overlay/Overlay.tsx +61 -29
  223. package/src/overlays/overlaysActor.ts +1 -1
  224. package/src/overlays/relationship-details/RelationshipDetails.tsx +4 -4
  225. package/src/overlays/relationship-details/_types.ts +2 -1
  226. package/src/overlays/relationship-details/custom/nodeTypes.tsx +4 -0
  227. package/src/overlays/relationship-details/layout-to-xyflow.ts +1 -0
  228. package/src/overlays/relationship-details/layout.ts +3 -1
  229. package/src/overlays/relationships-browser/SelectElement.tsx +1 -1
  230. package/src/overlays/relationships-browser/_types.ts +2 -1
  231. package/src/overlays/relationships-browser/custom/nodeTypes.tsx +4 -0
  232. package/src/overlays/relationships-browser/layout.ts +12 -7
  233. package/src/overlays/relationships-browser/useViewToNodesEdges.ts +4 -4
  234. package/src/search/Search.tsx +220 -0
  235. package/src/{likec4diagram/ui/search → search/components}/ElementsColumn.css.ts +0 -29
  236. package/src/{likec4diagram/ui/search → search/components}/ElementsColumn.tsx +28 -29
  237. package/src/search/components/PickView.tsx +134 -0
  238. package/src/search/components/SearchByTags.tsx +112 -0
  239. package/src/{likec4diagram/ui/search → search/components}/SearchInput.tsx +72 -42
  240. package/src/{likec4diagram/ui/search → search/components}/ViewsColum.tsx +29 -22
  241. package/src/{likec4diagram/ui/search → search/components}/_shared.css.ts +26 -37
  242. package/src/{likec4diagram/ui/search/LikeC4Search.css.ts → search/components/styles.css.ts} +9 -36
  243. package/src/search/components/utils.ts +64 -0
  244. package/src/search/hooks.ts +38 -0
  245. package/src/search/searchActor.ts +99 -0
  246. package/src/state/DiagramActorProvider.tsx +37 -25
  247. package/src/state/assign.ts +10 -10
  248. package/src/state/diagram-machine.ts +123 -58
  249. package/src/state/syncManualLayoutActor.ts +1 -1
  250. package/src/state/types.ts +2 -0
  251. package/src/state/utils.ts +4 -0
  252. package/dist/base/types.js +0 -54
  253. package/dist/likec4diagram/ui/search/ElementsColumn.d.ts +0 -1
  254. package/dist/likec4diagram/ui/search/LikeC4Search.css.js +0 -87
  255. package/dist/likec4diagram/ui/search/LikeC4Search.d.ts +0 -2
  256. package/dist/likec4diagram/ui/search/LikeC4Search.js +0 -267
  257. package/dist/likec4diagram/ui/search/SearchInput.d.ts +0 -1
  258. package/dist/likec4diagram/ui/search/state.d.ts +0 -19
  259. package/dist/likec4diagram/ui/search/state.js +0 -63
  260. package/dist/likec4diagram/ui/search/utils.d.ts +0 -3
  261. package/dist/likec4diagram/ui/search/utils.js +0 -20
  262. package/src/likec4diagram/ui/search/LikeC4Search.tsx +0 -301
  263. package/src/likec4diagram/ui/search/state.ts +0 -78
  264. package/src/likec4diagram/ui/search/utils.ts +0 -20
  265. /package/dist/{likec4diagram/ui/search → search/components}/ElementsColumn.css.d.ts +0 -0
  266. /package/dist/{likec4diagram/ui/search → search/components}/ViewsColumn.css.d.ts +0 -0
  267. /package/dist/{likec4diagram/ui/search → search/components}/ViewsColumn.css.js +0 -0
  268. /package/dist/{likec4diagram/ui/search → search/components}/_shared.css.d.ts +0 -0
  269. /package/src/{likec4diagram/ui/search → search/components}/ViewsColumn.css.ts +0 -0
@@ -1,7 +1,2 @@
1
- import { CustomColorDefinitions } from '@likec4/core';
2
- import { NamedExoticComponent } from 'react';
3
- interface LikeC4CustomColorsProperties {
4
- customColors: CustomColorDefinitions;
5
- }
6
- export declare const LikeC4CustomColors: NamedExoticComponent<LikeC4CustomColorsProperties>;
7
- export {};
1
+ import { MemoExoticComponent } from 'react';
2
+ export declare const LikeC4CustomColors: MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element | null>;
@@ -1,9 +1,10 @@
1
1
  import { jsx, Fragment } from 'react/jsx-runtime';
2
2
  import '@likec4/core';
3
3
  import { useMantineStyleNonce } from '@mantine/core';
4
- import { deepEqual } from 'fast-equals';
5
- import { memo } from 'react';
6
- import { entries } from 'remeda';
4
+ import { memo, useState } from 'react';
5
+ import { isEmpty, entries } from 'remeda';
6
+ import { useLikeC4Specification } from './likec4model/useLikeC4Model.js';
7
+ import { useUpdateEffect } from './hooks/useUpdateEffect.js';
7
8
 
8
9
  function toStyle(name, colors) {
9
10
  const darken = (color) => `color-mix(in srgb, ${color} 80%, black)`;
@@ -24,11 +25,21 @@ function toStyle(name, colors) {
24
25
  }
25
26
  `;
26
27
  }
27
- const LikeC4CustomColors = memo(({ customColors }) => {
28
- const styles = entries(customColors).map(([name, color]) => toStyle(name, color)).join("\n");
28
+ function generateCustomColorStyles(customColors) {
29
+ return entries(customColors).map(([name, color]) => toStyle(name, color)).join("\n").trim();
30
+ }
31
+ const LikeC4CustomColors = memo(() => {
32
+ const customColors = useLikeC4Specification().customColors ?? {};
33
+ const [styles, setStyles] = useState(() => generateCustomColorStyles(customColors));
34
+ useUpdateEffect(() => {
35
+ setStyles(generateCustomColorStyles(customColors));
36
+ }, [customColors]);
29
37
  const nonce = useMantineStyleNonce()?.();
38
+ if (isEmpty(customColors)) {
39
+ return null;
40
+ }
30
41
  return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("style", { type: "text/css", dangerouslySetInnerHTML: { __html: styles }, nonce }) });
31
- }, deepEqual);
42
+ });
32
43
  LikeC4CustomColors.displayName = "LikeC4CustomColors";
33
44
 
34
45
  export { LikeC4CustomColors };
@@ -1,4 +1,5 @@
1
+ import { Any } from '@likec4/core/types';
1
2
  import { PropsWithChildren } from 'react';
2
3
  import { LikeC4DiagramEventHandlers, LikeC4DiagramProperties } from './LikeC4Diagram.props';
3
- export type LikeC4DiagramProps = PropsWithChildren<LikeC4DiagramProperties & LikeC4DiagramEventHandlers>;
4
- export declare function LikeC4Diagram({ onCanvasClick, onCanvasContextMenu, onCanvasDblClick, onEdgeClick, onChange, onEdgeContextMenu, onNavigateTo, onNodeClick, onNodeContextMenu, onOpenSource, onBurgerMenuClick, view, className, fitView, fitViewPadding, readonly, pannable, zoomable, background, enableFocusMode, enableElementDetails, enableRelationshipDetails, enableRelationshipBrowser, nodesDraggable, nodesSelectable, controls, showDiagramTitle, showNotations, showNavigationButtons, enableDynamicViewWalkthrough, enableSearch, initialWidth, initialHeight, experimentalEdgeEditing, reduceGraphics, renderIcon, renderControls, where, reactFlowProps, renderNodes, children, }: LikeC4DiagramProps): import("react/jsx-runtime").JSX.Element;
4
+ export type LikeC4DiagramProps<A extends Any = Any> = PropsWithChildren<LikeC4DiagramProperties<A> & LikeC4DiagramEventHandlers<A>>;
5
+ export declare function LikeC4Diagram<A extends Any = Any>({ onCanvasClick, onCanvasContextMenu, onCanvasDblClick, onEdgeClick, onChange, onEdgeContextMenu, onNavigateTo, onNodeClick, onNodeContextMenu, onOpenSource, onBurgerMenuClick, view, className, fitView, fitViewPadding, readonly, pannable, zoomable, background, enableElementTags, enableFocusMode, enableElementDetails, enableRelationshipDetails, enableRelationshipBrowser, nodesDraggable, nodesSelectable, controls, showDiagramTitle, showNotations, showNavigationButtons, enableDynamicViewWalkthrough, enableSearch, initialWidth, initialHeight, experimentalEdgeEditing, reduceGraphics, renderIcon, renderControls, where, reactFlowProps, renderNodes, children, }: LikeC4DiagramProps<A>): import("react/jsx-runtime").JSX.Element;
@@ -1,13 +1,11 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { ReactFlowProvider } from '@xyflow/react';
3
3
  import { useRef } from 'react';
4
- import { isEmpty } from 'remeda';
5
4
  import { ControlsCustomLayoutProvider } from './context/ControlsCustomLayout.js';
6
5
  import { ReduceGraphicsContext } from './context/ReduceGraphics.js';
7
6
  import { LikeC4CustomColors } from './LikeC4CustomColors.js';
8
7
  import { LikeC4DiagramXYFlow } from './likec4diagram/DiagramXYFlow.js';
9
8
  import { DiagramActorProvider } from './state/DiagramActorProvider.js';
10
- import { useLikeC4Model } from './likec4model/useLikeC4Model.js';
11
9
  import { EnsureMantine } from './context/EnsureMantine.js';
12
10
  import { FramerMotionConfig } from './context/FramerMotionConfig.js';
13
11
  import { IconRendererProvider } from './context/IconRenderer.js';
@@ -35,6 +33,7 @@ function LikeC4Diagram({
35
33
  pannable = true,
36
34
  zoomable = true,
37
35
  background = "dots",
36
+ enableElementTags = false,
38
37
  enableFocusMode = false,
39
38
  enableElementDetails = false,
40
39
  enableRelationshipDetails = enableElementDetails,
@@ -58,9 +57,7 @@ function LikeC4Diagram({
58
57
  renderNodes,
59
58
  children
60
59
  }) {
61
- const hasLikec4model = !!useLikeC4Model();
62
60
  const initialRef = useRef(null);
63
- const isDynamicView = view.__ === "dynamic";
64
61
  if (initialRef.current == null) {
65
62
  initialRef.current = {
66
63
  defaultEdges: [],
@@ -87,13 +84,13 @@ function LikeC4Diagram({
87
84
  enableRelationshipBrowser,
88
85
  enableSearch,
89
86
  enableNavigationButtons: showNavigationButtons && !!onNavigateTo,
90
- enableDynamicViewWalkthrough: isDynamicView && enableDynamicViewWalkthrough,
87
+ enableDynamicViewWalkthrough: view._type === "dynamic" && enableDynamicViewWalkthrough,
91
88
  enableEdgeEditing: experimentalEdgeEditing,
92
89
  enableNotations: showNotations,
93
90
  enableVscode: !!onOpenSource,
94
91
  enableControls: controls,
95
92
  enableViewTitle: showDiagramTitle,
96
- enableLikeC4Model: hasLikec4model
93
+ enableElementTags
97
94
  },
98
95
  children: /* @__PURE__ */ jsx(
99
96
  DiagramEventHandlers,
@@ -112,7 +109,7 @@ function LikeC4Diagram({
112
109
  onBurgerMenuClick
113
110
  },
114
111
  children: /* @__PURE__ */ jsx(ReduceGraphicsContext, { reduceGraphics: isReducedGraphicsMode, children: /* @__PURE__ */ jsxs(RootContainer, { className, reduceGraphics: isReducedGraphicsMode, children: [
115
- !isEmpty(view.customColorDefinitions) && /* @__PURE__ */ jsx(LikeC4CustomColors, { customColors: view.customColorDefinitions }),
112
+ /* @__PURE__ */ jsx(LikeC4CustomColors, {}),
116
113
  /* @__PURE__ */ jsx(
117
114
  ReactFlowProvider,
118
115
  {
@@ -121,13 +118,12 @@ function LikeC4Diagram({
121
118
  children: /* @__PURE__ */ jsx(
122
119
  DiagramActorProvider,
123
120
  {
124
- input: {
125
- view,
126
- pannable,
127
- zoomable,
128
- nodesSelectable,
129
- fitViewPadding
130
- },
121
+ view,
122
+ zoomable,
123
+ pannable,
124
+ fitViewPadding,
125
+ nodesSelectable,
126
+ where: where ?? null,
131
127
  children: /* @__PURE__ */ jsx(ControlsCustomLayoutProvider, { value: renderControls ?? null, children: /* @__PURE__ */ jsx(
132
128
  LikeC4DiagramXYFlow,
133
129
  {
@@ -1,23 +1,24 @@
1
- import { DiagramEdge, DiagramNode, DiagramView, Fqn, RelationId, ViewChange, ViewId, WhereOperator } from '@likec4/core';
1
+ import { Any, DiagramEdge, DiagramNode, LayoutedView, ViewChange, WhereOperator } from '@likec4/core/types';
2
2
  import { ReactFlowProps as XYFlowProps } from '@xyflow/react';
3
3
  import { MouseEvent as ReactMouseEvent, ReactNode } from 'react';
4
+ import { SetRequired } from 'type-fest';
4
5
  import { ControlsCustomLayout } from './context/ControlsCustomLayout';
5
6
  import { CustomNodes } from './custom/customNodes';
7
+ import type * as aux from '@likec4/core/types/aux';
6
8
  export type { CustomNodes, WhereOperator };
7
- export type DiagramNodeWithNavigate<ID = ViewId> = Omit<DiagramNode, 'navigateTo'> & {
8
- navigateTo: ID;
9
- };
9
+ export type DiagramNodeWithNavigate<A extends Any> = SetRequired<DiagramNode<A>, 'navigateTo'>;
10
10
  type ElementIconRendererProps = {
11
11
  node: {
12
12
  id: string;
13
13
  title: string;
14
14
  icon?: string | null | undefined;
15
15
  };
16
+ className?: string;
16
17
  };
17
18
  export type ElementIconRenderer = (props: ElementIconRendererProps) => ReactNode;
18
- export type OnNavigateTo<ID = ViewId> = (to: ID, event?: ReactMouseEvent, element?: DiagramNodeWithNavigate<ID>) => void;
19
- export type OnNodeClick = (node: DiagramNode, event: ReactMouseEvent) => void;
20
- export type OnEdgeClick = (edge: DiagramEdge, event: ReactMouseEvent) => void;
19
+ export type OnNavigateTo<A extends Any> = (to: aux.ViewId<A>, event?: ReactMouseEvent, element?: DiagramNodeWithNavigate<A>) => void;
20
+ export type OnNodeClick<A extends Any> = (node: DiagramNode<A>, event: ReactMouseEvent) => void;
21
+ export type OnEdgeClick<A extends Any> = (edge: DiagramEdge<A>, event: ReactMouseEvent) => void;
21
22
  /**
22
23
  * On pane/canvas click (not on any node or edge)
23
24
  */
@@ -30,8 +31,8 @@ export type LikeC4ColorScheme = 'light' | 'dark';
30
31
  export type OverrideReactFlowProps = Pick<XYFlowProps, 'paneClickDistance' | 'nodeClickDistance' | 'selectionKeyCode' | 'panActivationKeyCode' | 'multiSelectionKeyCode' | 'zoomActivationKeyCode' | 'snapToGrid' | 'snapGrid' | 'onlyRenderVisibleElements' | 'nodesDraggable' | 'nodesFocusable' | 'elementsSelectable' | 'selectNodesOnDrag' | 'panOnDrag' | 'preventScrolling' | 'zoomOnScroll' | 'zoomOnPinch' | 'panOnScroll' | 'panOnScrollSpeed' | 'panOnScrollMode' | 'zoomOnDoubleClick' | 'nodeDragThreshold'>;
31
32
  export type PaddingUnit = 'px' | '%';
32
33
  export type PaddingWithUnit = `${number}${PaddingUnit}` | number;
33
- export interface LikeC4DiagramProperties {
34
- view: DiagramView;
34
+ export interface LikeC4DiagramProperties<A extends aux.Any> {
35
+ view: LayoutedView<A>;
35
36
  className?: string | undefined;
36
37
  /**
37
38
  * Enable/disable panning
@@ -72,7 +73,15 @@ export interface LikeC4DiagramProperties {
72
73
  * @default false if readonly
73
74
  */
74
75
  nodesDraggable?: boolean | undefined;
76
+ /**
77
+ * Initial width of the diagram
78
+ * (supposed to be used during SSR)
79
+ */
75
80
  initialWidth?: number | undefined;
81
+ /**
82
+ * Initial height of the diagram
83
+ * (supposed to be used during SSR)
84
+ */
76
85
  initialHeight?: number | undefined;
77
86
  /**
78
87
  * Background pattern
@@ -90,7 +99,9 @@ export interface LikeC4DiagramProperties {
90
99
  */
91
100
  showNavigationButtons?: undefined | boolean;
92
101
  /**
93
- * Display notations of the view
102
+ * Display notations in the bottom right corner
103
+ * (Active if only notations are present)
104
+ *
94
105
  * @default true
95
106
  */
96
107
  showNotations?: boolean | undefined;
@@ -125,6 +136,11 @@ export interface LikeC4DiagramProperties {
125
136
  * @default false
126
137
  */
127
138
  enableDynamicViewWalkthrough?: boolean | undefined;
139
+ /**
140
+ * Display element tags in the bottom left corner
141
+ * @default false
142
+ */
143
+ enableElementTags?: boolean | undefined;
128
144
  /**
129
145
  * Experimental feature to enable edge editing
130
146
  * @default false
@@ -132,8 +148,9 @@ export interface LikeC4DiagramProperties {
132
148
  experimentalEdgeEditing?: boolean | undefined;
133
149
  /**
134
150
  * Improve performance by hiding certain elements and reducing visual effects (disable mix-blend, shadows, animations)
151
+ * Enable it if you have a large or static view
135
152
  *
136
- * @default 'auto' - will be set to true if view has more then 3000 * 2000 pixels
153
+ * @default 'auto' - will be `true` if view has more then 3000 * 2000 pixels
137
154
  */
138
155
  reduceGraphics?: 'auto' | boolean | undefined;
139
156
  /**
@@ -152,33 +169,33 @@ export interface LikeC4DiagramProperties {
152
169
  /**
153
170
  * Dynamic filter, applies both to nodes and edges
154
171
  */
155
- where?: WhereOperator<string, string> | undefined;
172
+ where?: WhereOperator<A> | undefined;
156
173
  /**
157
174
  * Override ReactFlow props
158
175
  */
159
176
  reactFlowProps?: OverrideReactFlowProps | undefined;
160
177
  }
161
- export type OpenSourceParams = {
162
- element: Fqn;
178
+ export type OpenSourceParams<A extends aux.Any = aux.Any> = {
179
+ element: aux.Fqn<A>;
163
180
  property?: string;
164
181
  } | {
165
- relation: RelationId;
182
+ relation: aux.RelationId;
166
183
  } | {
167
- deployment: Fqn;
184
+ deployment: aux.DeploymentFqn<A>;
168
185
  property?: string;
169
186
  } | {
170
- view: ViewId;
187
+ view: aux.StrictViewId<A>;
171
188
  };
172
- export interface LikeC4DiagramEventHandlers {
189
+ export interface LikeC4DiagramEventHandlers<A extends aux.Any> {
173
190
  onChange?: OnChange | null | undefined;
174
- onNavigateTo?: OnNavigateTo | null | undefined;
175
- onNodeClick?: OnNodeClick | null | undefined;
176
- onNodeContextMenu?: OnNodeClick | null | undefined;
191
+ onNavigateTo?: OnNavigateTo<A> | null | undefined;
192
+ onNodeClick?: OnNodeClick<A> | null | undefined;
193
+ onNodeContextMenu?: OnNodeClick<A> | null | undefined;
177
194
  onCanvasContextMenu?: OnCanvasClick | null | undefined;
178
- onEdgeClick?: OnEdgeClick | null | undefined;
179
- onEdgeContextMenu?: OnEdgeClick | null | undefined;
195
+ onEdgeClick?: OnEdgeClick<A> | null | undefined;
196
+ onEdgeContextMenu?: OnEdgeClick<A> | null | undefined;
180
197
  onCanvasClick?: OnCanvasClick | null | undefined;
181
198
  onCanvasDblClick?: OnCanvasClick | null | undefined;
182
199
  onBurgerMenuClick?: null | undefined | (() => void);
183
- onOpenSource?: null | undefined | ((params: OpenSourceParams) => void);
200
+ onOpenSource?: null | undefined | ((params: OpenSourceParams<A>) => void);
184
201
  }
@@ -1,9 +1,10 @@
1
- import { AnyAux, LikeC4Model } from '@likec4/core/model';
1
+ import { LikeC4Model } from '@likec4/core/model';
2
+ import { Any, Unknown } from '@likec4/core/types';
2
3
  import { PropsWithChildren } from 'react';
3
- export type LikeC4ModelProviderProps = PropsWithChildren<{
4
- likec4model: LikeC4Model<AnyAux>;
4
+ export type LikeC4ModelProviderProps<A extends Any> = PropsWithChildren<{
5
+ likec4model: LikeC4Model<A>;
5
6
  }>;
6
7
  /**
7
8
  * Ensures LikeC4Model context
8
9
  */
9
- export declare function LikeC4ModelProvider({ children, likec4model, }: LikeC4ModelProviderProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function LikeC4ModelProvider<A extends Any = Unknown>({ children, likec4model, }: LikeC4ModelProviderProps<A>): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +1,4 @@
1
1
  import { LikeC4DiagramProperties } from './LikeC4Diagram.props';
2
- export type StaticLikeC4DiagramProps = Pick<LikeC4DiagramProperties, 'view' | 'className' | 'fitView' | 'fitViewPadding' | 'background' | 'enableElementDetails' | 'enableRelationshipDetails' | 'enableRelationshipBrowser' | 'reduceGraphics' | 'initialWidth' | 'initialHeight' | 'renderIcon' | 'renderNodes' | 'where'>;
3
- export declare function StaticLikeC4Diagram({ view, fitView, fitViewPadding, enableElementDetails, enableRelationshipDetails, enableRelationshipBrowser, background, ...rest }: StaticLikeC4DiagramProps): import("react/jsx-runtime").JSX.Element;
2
+ import type * as aux from '@likec4/core/types/aux';
3
+ export type StaticLikeC4DiagramProps<A extends aux.Any> = Pick<LikeC4DiagramProperties<A>, 'view' | 'className' | 'fitView' | 'fitViewPadding' | 'background' | 'enableElementDetails' | 'enableRelationshipDetails' | 'enableRelationshipBrowser' | 'enableElementTags' | 'reduceGraphics' | 'initialWidth' | 'initialHeight' | 'renderIcon' | 'renderNodes' | 'where'>;
4
+ export declare function StaticLikeC4Diagram<A extends aux.Any = aux.UnknownLayouted>({ view, fitView, fitViewPadding, enableRelationshipDetails, enableRelationshipBrowser, background, ...rest }: StaticLikeC4DiagramProps<A>): import("react/jsx-runtime").JSX.Element;
@@ -5,7 +5,6 @@ function StaticLikeC4Diagram({
5
5
  view,
6
6
  fitView = true,
7
7
  fitViewPadding = "8px",
8
- enableElementDetails = false,
9
8
  enableRelationshipDetails = false,
10
9
  enableRelationshipBrowser = enableRelationshipDetails,
11
10
  background = "transparent",
@@ -24,7 +23,7 @@ function StaticLikeC4Diagram({
24
23
  background,
25
24
  showDiagramTitle: false,
26
25
  showNotations: false,
27
- enableElementDetails,
26
+ enableElementDetails: false,
28
27
  enableRelationshipDetails,
29
28
  enableRelationshipBrowser,
30
29
  enableDynamicViewWalkthrough: false,
@@ -34,6 +33,7 @@ function StaticLikeC4Diagram({
34
33
  enableSearch: false,
35
34
  nodesSelectable: false,
36
35
  nodesDraggable: false,
36
+ enableElementTags: false,
37
37
  ...rest
38
38
  }
39
39
  );
@@ -8,7 +8,7 @@ import { useIsZoomTooSmall, useXYStoreApi } from '../hooks/useXYFlow.js';
8
8
  import { stopPropagation } from '../utils/xyflow.js';
9
9
  import { Background } from './Background.js';
10
10
  import { MinZoom, MaxZoom } from './const.js';
11
- import { Base } from './types.js';
11
+ import { setHovered } from './types.Base.js';
12
12
 
13
13
  const cssTransparentBg = css({
14
14
  background: "transparent !important",
@@ -121,7 +121,7 @@ const BaseXYFlow = ({
121
121
  onNodesChange([{
122
122
  id: node.id,
123
123
  type: "replace",
124
- item: Base.setHovered(node, true)
124
+ item: setHovered(node, true)
125
125
  }]);
126
126
  }
127
127
  }),
@@ -130,7 +130,7 @@ const BaseXYFlow = ({
130
130
  onNodesChange([{
131
131
  id: node.id,
132
132
  type: "replace",
133
- item: Base.setHovered(node, false)
133
+ item: setHovered(node, false)
134
134
  }]);
135
135
  }
136
136
  }),
@@ -139,7 +139,7 @@ const BaseXYFlow = ({
139
139
  onEdgesChange([{
140
140
  id: edge.id,
141
141
  type: "replace",
142
- item: Base.setHovered(edge, true)
142
+ item: setHovered(edge, true)
143
143
  }]);
144
144
  }
145
145
  }),
@@ -148,7 +148,7 @@ const BaseXYFlow = ({
148
148
  onEdgesChange([{
149
149
  id: edge.id,
150
150
  type: "replace",
151
- item: Base.setHovered(edge, false)
151
+ item: setHovered(edge, false)
152
152
  }]);
153
153
  }
154
154
  }),
@@ -5,4 +5,4 @@ export declare const ZIndexes: {
5
5
  readonly Max: 8;
6
6
  };
7
7
  export declare const MinZoom = 0.05;
8
- export declare const MaxZoom = 2;
8
+ export declare const MaxZoom = 3;
@@ -5,6 +5,6 @@ const ZIndexes = {
5
5
  Max: 8
6
6
  };
7
7
  const MinZoom = 0.05;
8
- const MaxZoom = 2;
8
+ const MaxZoom = 3;
9
9
 
10
10
  export { MaxZoom, MinZoom, ZIndexes };
@@ -1,2 +1,3 @@
1
1
  export { BaseXYFlow, type BaseXYFlowProps } from './BaseXYFlow';
2
- export { Base, type EdgeProps, type NodeProps, type NonOptional, type ReactFlowEdge, type ReactFlowNode, } from './types';
2
+ export { type EdgeProps, type NodeProps, type NonOptional, type ReactFlowEdge, type ReactFlowNode, } from './types';
3
+ export * as Base from './types.Base';
@@ -1,7 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { cx, css } from '@likec4/styles/css';
3
+ import { Box } from '@likec4/styles/jsx';
3
4
  import { actionBtn } from '@likec4/styles/recipes';
4
- import { Box, ActionIcon } from '@mantine/core';
5
+ import { ActionIcon } from '@mantine/core';
5
6
  import { useDebouncedValue } from '@mantine/hooks';
6
7
  import { IconZoomScan } from '@tabler/icons-react';
7
8
  import * as m from 'motion/react-m';
@@ -1,7 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { cx, css } from '@likec4/styles/css';
3
+ import { Box } from '@likec4/styles/jsx';
3
4
  import { actionBtn } from '@likec4/styles/recipes';
4
- import { Box, ActionIcon } from '@mantine/core';
5
+ import { ActionIcon } from '@mantine/core';
5
6
  import { useDebouncedValue } from '@mantine/hooks';
6
7
  import { IconId } from '@tabler/icons-react';
7
8
  import * as m from 'motion/react-m';
@@ -1,4 +1,4 @@
1
- import { DiagramNode } from '@likec4/core';
1
+ import { DiagramNode } from '@likec4/core/types';
2
2
  import { NodeProps } from '../../types';
3
3
  type Data = Pick<DiagramNode, 'color' | 'title' | 'icon' | 'style'>;
4
4
  type CompoundTitleProps = NodeProps<Data>;
@@ -1,6 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { cx, css } from '@likec4/styles/css';
3
- import { Box, Text } from '@mantine/core';
3
+ import { Box } from '@likec4/styles/jsx';
4
+ import { Text } from '@mantine/core';
4
5
  import { IconRenderer } from '../../../context/IconRenderer.js';
5
6
 
6
7
  const titleContainer = css({
@@ -1,4 +1,4 @@
1
- import { DiagramEdge } from '@likec4/core';
1
+ import { DiagramEdge } from '@likec4/core/types';
2
2
  import { PropsWithChildren } from 'react';
3
3
  import { UndefinedOnPartialDeep } from 'type-fest';
4
4
  import { EdgeProps } from '../../types';
@@ -57,6 +57,7 @@ const labelsva = sva({
57
57
  slots: ["root", "stepNumber", "labelContents", "labelText", "labelTechnology"],
58
58
  base: {
59
59
  root: {
60
+ pointerEvents: "all",
60
61
  fontFamily: "likec4.relation",
61
62
  padding: "3px 5px 5px 5px",
62
63
  display: "flex",
@@ -1,11 +1,11 @@
1
- import { DiagramEdge } from '@likec4/core';
1
+ import { DiagramEdge } from '@likec4/core/types';
2
2
  import { BoxProps } from '@likec4/styles/jsx';
3
- import { PropsWithChildren } from 'react';
3
+ import { PropsWithChildren, ForwardRefExoticComponent, RefAttributes } from 'react';
4
4
  import { UndefinedOnPartialDeep } from 'type-fest';
5
5
  import { EdgeProps } from '../../types';
6
6
  type Data = UndefinedOnPartialDeep<Pick<DiagramEdge, 'label' | 'technology'>>;
7
7
  type EdgeLabelProps = PropsWithChildren<BoxProps & {
8
8
  edgeProps: EdgeProps<Data>;
9
9
  }>;
10
- export declare function EdgeLabel({ edgeProps: { id, data: { label, technology, }, }, className, style, children, ...rest }: EdgeLabelProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare const EdgeLabel: ForwardRefExoticComponent<Omit<EdgeLabelProps, "ref"> & RefAttributes<HTMLDivElement>>;
11
11
  export {};
@@ -3,10 +3,11 @@ import { isStepEdgeId, extractStep } from '@likec4/core';
3
3
  import { cx } from '@likec4/styles/css';
4
4
  import { Box } from '@likec4/styles/jsx';
5
5
  import { Text } from '@mantine/core';
6
+ import { forwardRef } from 'react';
6
7
  import { isTruthy } from 'remeda';
7
8
  import { labelsva } from './EdgeLabel.css.js';
8
9
 
9
- function EdgeLabel({
10
+ const EdgeLabel = forwardRef(({
10
11
  edgeProps: {
11
12
  id,
12
13
  data: {
@@ -18,12 +19,12 @@ function EdgeLabel({
18
19
  style,
19
20
  children,
20
21
  ...rest
21
- }) {
22
+ }, ref) => {
22
23
  const stepNum = isStepEdgeId(id) ? extractStep(id) : null;
23
24
  const classes = labelsva({
24
25
  isStepEdge: stepNum !== null
25
26
  });
26
- return /* @__PURE__ */ jsxs(Box, { className: cx(classes.root, className), ...rest, children: [
27
+ return /* @__PURE__ */ jsxs(Box, { ref, className: cx(classes.root, className), ...rest, children: [
27
28
  stepNum !== null && /* @__PURE__ */ jsx(Box, { className: classes.stepNumber, children: stepNum }),
28
29
  /* @__PURE__ */ jsxs(Box, { className: classes.labelContents, children: [
29
30
  isTruthy(label) && /* @__PURE__ */ jsx(Text, { component: "div", className: classes.labelText, lineClamp: 5, children: label }),
@@ -31,6 +32,7 @@ function EdgeLabel({
31
32
  children
32
33
  ] })
33
34
  ] });
34
- }
35
+ });
36
+ EdgeLabel.displayName = "EdgeLabel";
35
37
 
36
38
  export { EdgeLabel };
@@ -1,4 +1,4 @@
1
- import { DiagramEdge } from '@likec4/core';
1
+ import { DiagramEdge } from '@likec4/core/types';
2
2
  import { HTMLAttributes } from 'react';
3
3
  import { UndefinedOnPartialDeep } from 'type-fest';
4
4
  import { EdgeProps } from '../../types';
@@ -1,4 +1,4 @@
1
- import { RelationshipArrowType } from '@likec4/core';
1
+ import { RelationshipArrowType } from '@likec4/core/types';
2
2
  import { SVGProps } from 'react';
3
3
  export declare const EdgeMarkers: {
4
4
  Arrow: (props: SVGProps<SVGMarkerElement>) => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,4 @@
1
- import { DiagramEdge } from '@likec4/core';
1
+ import { DiagramEdge } from '@likec4/core/types';
2
2
  import { PointerEventHandler, ForwardRefExoticComponent, RefAttributes } from 'react';
3
3
  import { UndefinedOnPartialDeep } from 'type-fest';
4
4
  import { EdgeProps } from '../../types';
@@ -1,7 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { css, cx } from '@likec4/styles/css';
3
+ import { Box } from '@likec4/styles/jsx';
3
4
  import { actionBtn } from '@likec4/styles/recipes';
4
- import { Box, ActionIcon } from '@mantine/core';
5
+ import { ActionIcon } from '@mantine/core';
5
6
  import { useId } from '@mantine/hooks';
6
7
  import * as m from 'motion/react-m';
7
8
  import { useIsZoomTooSmall } from '../../../hooks/useXYFlow.js';
@@ -9,11 +10,12 @@ import { stopPropagation } from '../../../utils/xyflow.js';
9
10
 
10
11
  const container = css({
11
12
  position: "absolute",
12
- top: `calc(100% - 28px)`,
13
- // transform: 'translateY(-100%)',
14
- left: 0,
15
- width: "100%",
16
- minHeight: "28px",
13
+ zIndex: 1,
14
+ top: `calc(100% - 30px)`,
15
+ transform: "translateX(-50%)",
16
+ left: `50%`,
17
+ width: "auto",
18
+ minHeight: "30px",
17
19
  display: "flex",
18
20
  justifyContent: "center",
19
21
  alignItems: "center",
@@ -40,14 +42,13 @@ function ElementActionButtons({
40
42
  return null;
41
43
  }
42
44
  return /* @__PURE__ */ jsx(Box, { className: container, children: /* @__PURE__ */ jsx(
43
- Box,
45
+ m.div,
44
46
  {
45
- component: m.div,
46
47
  layoutRoot: true,
47
48
  initial: false,
48
49
  style: {
49
50
  originY: 0,
50
- gap: "8px"
51
+ gap: 6
51
52
  },
52
53
  animate: {
53
54
  opacity: isHovered || selected ? 1 : 0.75,
@@ -1,7 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { cx, css } from '@likec4/styles/css';
3
+ import { Box } from '@likec4/styles/jsx';
3
4
  import { actionBtn } from '@likec4/styles/recipes';
4
- import { Box, ActionIcon } from '@mantine/core';
5
+ import { ActionIcon } from '@mantine/core';
5
6
  import { useId } from '@mantine/hooks';
6
7
  import { IconId } from '@tabler/icons-react';
7
8
  import * as m from 'motion/react-m';
@@ -1,4 +1,4 @@
1
- import { ElementShape, ElementStyle } from '@likec4/core';
1
+ import { ElementShape, ElementStyle } from '@likec4/core/types';
2
2
  export declare function cylinderSVGPath(diameter: number, height: number, tilt?: number): {
3
3
  path: string;
4
4
  ry: number;
@@ -0,0 +1,14 @@
1
+ import { BoxProps } from '@likec4/styles/jsx';
2
+ import { NodeProps } from '../../types';
3
+ import { ForwardRefExoticComponent, RefAttributes, MemoExoticComponent } from 'react';
4
+ export type ElementTagProps = {
5
+ tag: string;
6
+ } & Omit<BoxProps, 'children'>;
7
+ export declare const ElementTag: ForwardRefExoticComponent<Omit<ElementTagProps, "ref"> & RefAttributes<HTMLDivElement>>;
8
+ type Data = {
9
+ tags: readonly string[] | null | undefined;
10
+ width: number;
11
+ };
12
+ type ElementTagsProps = NodeProps<Data>;
13
+ export declare const ElementTags: MemoExoticComponent<({ id, data: { tags, width } }: ElementTagsProps) => import("react/jsx-runtime").JSX.Element | null>;
14
+ export {};