@likec4/diagram 1.24.0 → 1.25.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 (285) hide show
  1. package/dist/LikeC4Diagram.css.d.ts +3 -0
  2. package/dist/LikeC4Diagram.d.ts +3 -2
  3. package/dist/LikeC4Diagram.js +74 -60
  4. package/dist/LikeC4Diagram.props.d.ts +11 -0
  5. package/dist/StaticLikeC4Diagram.d.ts +1 -1
  6. package/dist/base/BaseXYFlow.d.ts +1 -1
  7. package/dist/base/BaseXYFlow.js +25 -5
  8. package/dist/base/const.d.ts +4 -4
  9. package/dist/base/const.js +4 -4
  10. package/dist/base/primitives/compound/CompoundActionButton.css.d.ts +0 -1
  11. package/dist/base/primitives/compound/CompoundActionButton.css.js +2 -3
  12. package/dist/base/primitives/compound/CompoundActionButton.js +9 -15
  13. package/dist/base/primitives/compound/CompoundDetailsButton.css.js +1 -2
  14. package/dist/base/primitives/compound/CompoundDetailsButton.js +8 -14
  15. package/dist/base/primitives/compound/CompoundNodeContainer.css.d.ts +0 -1
  16. package/dist/base/primitives/compound/CompoundNodeContainer.css.js +2 -4
  17. package/dist/base/primitives/compound/CompoundNodeContainer.js +37 -24
  18. package/dist/base/primitives/compound/CompoundTitle.css.js +2 -1
  19. package/dist/base/primitives/compound/CompoundTitle.js +1 -1
  20. package/dist/base/primitives/customNode.js +1 -1
  21. package/dist/base/primitives/edge/EdgeContainer.d.ts +2 -1
  22. package/dist/base/primitives/edge/EdgeContainer.js +21 -17
  23. package/dist/base/primitives/edge/EdgeLabel.css.d.ts +0 -1
  24. package/dist/base/primitives/edge/EdgeLabel.css.js +1 -5
  25. package/dist/base/primitives/edge/EdgeLabel.js +9 -12
  26. package/dist/base/primitives/edge/EdgePath.js +13 -5
  27. package/dist/base/primitives/edge/edge.css.d.ts +1 -1
  28. package/dist/base/primitives/edge/edge.css.js +2 -4
  29. package/dist/base/primitives/element/ElementActionButtons.css.js +1 -0
  30. package/dist/base/primitives/element/ElementActionButtons.js +4 -3
  31. package/dist/base/primitives/element/ElementDetailsButton.css.js +1 -2
  32. package/dist/base/primitives/element/ElementDetailsButton.js +9 -15
  33. package/dist/base/primitives/element/ElementNodeContainer.css.js +1 -0
  34. package/dist/base/primitives/element/ElementShape.css.js +3 -2
  35. package/dist/base/primitives/element/ElementShape.js +2 -3
  36. package/dist/base/primitives/element/ElementTitle.css.d.ts +2 -0
  37. package/dist/base/primitives/element/ElementTitle.css.js +2 -2
  38. package/dist/base/primitives/element/ElementTitle.js +7 -7
  39. package/dist/components/SearchControl.css.d.ts +1 -0
  40. package/dist/components/SearchControl.css.js +3 -1
  41. package/dist/components/SearchControl.js +3 -3
  42. package/dist/context/ControlsCustomLayout.d.ts +13 -0
  43. package/dist/context/ControlsCustomLayout.js +10 -0
  44. package/dist/context/FramerMotionConfig.d.ts +9 -1
  45. package/dist/context/FramerMotionConfig.js +5 -2
  46. package/dist/context/RootContainer.d.ts +2 -1
  47. package/dist/context/RootContainer.js +13 -2
  48. package/dist/diagram.css +1 -1
  49. package/dist/hooks/safeContext.js +1 -0
  50. package/dist/hooks/useDiagram.d.ts +954 -1865
  51. package/dist/hooks/useDiagram.js +7 -1
  52. package/dist/hooks/useIsReducedGraphics.d.ts +4 -0
  53. package/dist/hooks/useIsReducedGraphics.js +8 -0
  54. package/dist/hooks/useXYFlow.js +1 -1
  55. package/dist/index.d.ts +1 -0
  56. package/dist/likec4diagram/DiagramUI.d.ts +2 -1
  57. package/dist/likec4diagram/DiagramUI.js +5 -3
  58. package/dist/likec4diagram/XYFlow.d.ts +3 -7
  59. package/dist/likec4diagram/XYFlow.js +13 -6
  60. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +30 -25
  61. package/dist/likec4diagram/custom/edges/edges.css.d.ts +1 -0
  62. package/dist/likec4diagram/custom/edges/edges.css.js +5 -3
  63. package/dist/likec4diagram/custom/index.d.ts +9 -1
  64. package/dist/likec4diagram/custom/index.js +10 -1
  65. package/dist/likec4diagram/custom/nodes/nodeTypes.d.ts +5 -7
  66. package/dist/likec4diagram/custom/nodes/nodeTypes.js +60 -58
  67. package/dist/likec4diagram/ui/controls/Controls.js +110 -71
  68. package/dist/likec4diagram/ui/controls/NavigationButtons.js +14 -22
  69. package/dist/likec4diagram/ui/controls/_shared.js +1 -1
  70. package/dist/likec4diagram/ui/diagram-title/DiagramTitlePanel.css.d.ts +0 -1
  71. package/dist/likec4diagram/ui/diagram-title/DiagramTitlePanel.css.js +3 -5
  72. package/dist/likec4diagram/ui/diagram-title/DiagramTitlePanel.js +5 -7
  73. package/dist/likec4diagram/ui/notation/NotationPanel.css.d.ts +1 -0
  74. package/dist/likec4diagram/ui/notation/NotationPanel.css.js +6 -4
  75. package/dist/likec4diagram/ui/notation/NotationPanel.js +2 -2
  76. package/dist/likec4diagram/ui/search/SearchInput.js +1 -1
  77. package/dist/likec4diagram/ui/search/ViewsColum.js +1 -2
  78. package/dist/likec4diagram/ui/search/ViewsColumn.css.d.ts +1 -1
  79. package/dist/likec4diagram/ui/search/ViewsColumn.css.js +2 -0
  80. package/dist/likec4model/useLikeC4Model.js +0 -1
  81. package/dist/node_modules/.pnpm/@mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/VisuallyHidden/VisuallyHidden.module.css.mjs.vanilla.css.js +1 -0
  82. package/dist/overlays/element-details/ElementDetailsCard.css.d.ts +2 -0
  83. package/dist/overlays/element-details/ElementDetailsCard.css.js +18 -14
  84. package/dist/overlays/element-details/ElementDetailsCard.js +21 -14
  85. package/dist/overlays/element-details/actor.d.ts +9084 -2569
  86. package/dist/overlays/overlay/Overlay.css.d.ts +2 -0
  87. package/dist/overlays/overlay/Overlay.css.js +93 -89
  88. package/dist/overlays/overlay/Overlay.js +16 -10
  89. package/dist/overlays/relationship-details/RelationshipDetails.js +31 -17
  90. package/dist/overlays/relationship-details/actor.d.ts +228 -3
  91. package/dist/overlays/relationship-details/actor.js +86 -14
  92. package/dist/overlays/relationship-details/hooks.d.ts +3 -0
  93. package/dist/overlays/relationship-details/hooks.js +6 -2
  94. package/dist/overlays/relationship-details/useLayoutedDetails.js +4 -3
  95. package/dist/overlays/relationships-browser/-useRelationshipsView.js +12 -3
  96. package/dist/overlays/relationships-browser/RelationshipsBrowser.js +12 -3
  97. package/dist/overlays/relationships-browser/actor.d.ts +271 -54
  98. package/dist/overlays/relationships-browser/actor.js +86 -23
  99. package/dist/state/DiagramActorProvider.js +12 -2
  100. package/dist/state/assign.js +15 -1
  101. package/dist/state/diagram-machine.d.ts +971 -1872
  102. package/dist/state/diagram-machine.js +127 -121
  103. package/dist/state/persistence.d.ts +5 -0
  104. package/dist/state/persistence.js +23 -0
  105. package/dist/theme-vars.css.d.ts +0 -9
  106. package/dist/theme-vars.d.ts +13 -1
  107. package/dist/theme-vars.js +3 -1
  108. package/dist/utils/css.d.ts +1 -0
  109. package/dist/utils/css.js +10 -0
  110. package/package.json +22 -14
  111. package/src/LikeC4Diagram.css.ts +145 -7
  112. package/src/LikeC4Diagram.props.ts +13 -0
  113. package/src/LikeC4Diagram.tsx +46 -27
  114. package/src/StaticLikeC4Diagram.tsx +1 -0
  115. package/src/base/BaseXYFlow.tsx +31 -11
  116. package/src/base/const.ts +4 -4
  117. package/src/base/primitives/compound/CompoundActionButton.css.ts +9 -12
  118. package/src/base/primitives/compound/CompoundActionButton.tsx +10 -14
  119. package/src/base/primitives/compound/CompoundDetailsButton.css.ts +4 -2
  120. package/src/base/primitives/compound/CompoundDetailsButton.tsx +8 -12
  121. package/src/base/primitives/compound/CompoundNodeContainer.css.ts +42 -59
  122. package/src/base/primitives/compound/CompoundNodeContainer.tsx +44 -24
  123. package/src/base/primitives/compound/CompoundTitle.css.ts +14 -13
  124. package/src/base/primitives/customNode.ts +4 -3
  125. package/src/base/primitives/edge/EdgeContainer.tsx +27 -13
  126. package/src/base/primitives/edge/EdgeLabel.css.ts +34 -24
  127. package/src/base/primitives/edge/EdgeLabel.tsx +10 -13
  128. package/src/base/primitives/edge/EdgePath.tsx +28 -16
  129. package/src/base/primitives/edge/edge.css.ts +54 -33
  130. package/src/base/primitives/element/ElementActionButtons.css.ts +5 -1
  131. package/src/base/primitives/element/ElementActionButtons.tsx +4 -2
  132. package/src/base/primitives/element/ElementDetailsButton.css.ts +6 -10
  133. package/src/base/primitives/element/ElementDetailsButton.tsx +9 -13
  134. package/src/base/primitives/element/ElementNodeContainer.css.ts +64 -18
  135. package/src/base/primitives/element/ElementNodeContainer.tsx +1 -0
  136. package/src/base/primitives/element/ElementShape.css.ts +24 -8
  137. package/src/base/primitives/element/ElementShape.tsx +2 -2
  138. package/src/base/primitives/element/ElementTitle.css.ts +4 -1
  139. package/src/base/primitives/element/ElementTitle.tsx +5 -4
  140. package/src/base/primitives/element/vars.css.ts +5 -0
  141. package/src/components/Link.css.ts +1 -1
  142. package/src/components/SearchControl.css.ts +25 -10
  143. package/src/components/SearchControl.tsx +2 -2
  144. package/src/context/ControlsCustomLayout.ts +16 -0
  145. package/src/context/FramerMotionConfig.tsx +13 -2
  146. package/src/context/RootContainer.tsx +13 -4
  147. package/src/hooks/safeContext.tsx +2 -1
  148. package/src/hooks/useDiagram.ts +1 -0
  149. package/src/hooks/useIsReducedGraphics.ts +5 -0
  150. package/src/hooks/useXYFlow.ts +1 -1
  151. package/src/index.ts +1 -0
  152. package/src/likec4diagram/DiagramUI.tsx +5 -3
  153. package/src/likec4diagram/XYFlow.tsx +9 -3
  154. package/src/likec4diagram/custom/edges/RelationshipEdge.tsx +32 -21
  155. package/src/likec4diagram/custom/edges/RelationshipsDropdownMenu.tsx +1 -1
  156. package/src/likec4diagram/custom/edges/edges.css.ts +15 -0
  157. package/src/likec4diagram/custom/index.tsx +14 -1
  158. package/src/likec4diagram/custom/nodes/nodeTypes.tsx +61 -59
  159. package/src/likec4diagram/ui/controls/Controls.tsx +102 -61
  160. package/src/likec4diagram/ui/controls/NavigationButtons.tsx +19 -20
  161. package/src/likec4diagram/ui/controls/styles.css.ts +17 -2
  162. package/src/likec4diagram/ui/diagram-title/DiagramTitlePanel.css.ts +13 -11
  163. package/src/likec4diagram/ui/diagram-title/DiagramTitlePanel.tsx +7 -5
  164. package/src/likec4diagram/ui/notation/NotationPanel.css.ts +14 -1
  165. package/src/likec4diagram/ui/notation/NotationPanel.tsx +1 -1
  166. package/src/likec4diagram/ui/search/ElementsColumn.css.ts +1 -2
  167. package/src/likec4diagram/ui/search/ElementsColumn.tsx +1 -1
  168. package/src/likec4diagram/ui/search/LikeC4Search.css.ts +1 -2
  169. package/src/likec4diagram/ui/search/SearchInput.tsx +1 -1
  170. package/src/likec4diagram/ui/search/ViewsColum.tsx +1 -2
  171. package/src/likec4diagram/ui/search/ViewsColumn.css.ts +1 -1
  172. package/src/likec4diagram/ui/search/_shared.css.ts +2 -3
  173. package/src/likec4model/useLikeC4Model.ts +1 -1
  174. package/src/overlays/element-details/ElementDetailsCard.css.ts +8 -5
  175. package/src/overlays/element-details/ElementDetailsCard.tsx +249 -238
  176. package/src/overlays/overlay/Overlay.css.ts +12 -16
  177. package/src/overlays/overlay/Overlay.tsx +16 -9
  178. package/src/overlays/relationship-details/RelationshipDetails.tsx +83 -70
  179. package/src/overlays/relationship-details/actor.ts +106 -13
  180. package/src/overlays/relationship-details/hooks.ts +6 -2
  181. package/src/overlays/relationship-details/useLayoutedDetails.ts +4 -4
  182. package/src/overlays/relationships-browser/-useRelationshipsView.ts +10 -0
  183. package/src/overlays/relationships-browser/RelationshipsBrowser.tsx +16 -8
  184. package/src/overlays/relationships-browser/actor.ts +92 -22
  185. package/src/state/DiagramActorProvider.tsx +13 -3
  186. package/src/state/assign.ts +15 -1
  187. package/src/state/diagram-machine.ts +124 -116
  188. package/src/state/persistence.ts +22 -0
  189. package/src/theme-vars.css.ts +0 -12
  190. package/src/theme-vars.ts +16 -4
  191. package/src/utils/css.ts +7 -0
  192. package/dist/base/primitives/element/styles.css.js +0 -6
  193. package/dist/globals.css.d.ts +0 -1
  194. package/dist/globals.css.js +0 -5
  195. package/dist/likec4diagram/ui/search/_shared.css.js +0 -5
  196. package/src/base/primitives/element/styles.css.ts +0 -52
  197. package/src/globals.css.ts +0 -128
  198. /package/dist/base/primitives/element/{styles.css.d.ts → vars.css.d.ts} +0 -0
  199. /package/dist/{node_modules/.pnpm/@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Accordion/Accordion.module.css.mjs.vanilla.css.js → base/primitives/element/vars.css.ts.vanilla.css.js} +0 -0
  200. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ActionIcon/ActionIcon.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Accordion/Accordion.module.css.mjs.vanilla.css.js} +0 -0
  201. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Affix/Affix.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ActionIcon/ActionIcon.module.css.mjs.vanilla.css.js} +0 -0
  202. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Alert/Alert.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Affix/Affix.module.css.mjs.vanilla.css.js} +0 -0
  203. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Anchor/Anchor.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Alert/Alert.module.css.mjs.vanilla.css.js} +0 -0
  204. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/AngleSlider/AngleSlider.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Anchor/Anchor.module.css.mjs.vanilla.css.js} +0 -0
  205. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/AppShell/AppShell.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/AngleSlider/AngleSlider.module.css.mjs.vanilla.css.js} +0 -0
  206. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/AspectRatio/AspectRatio.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/AppShell/AppShell.module.css.mjs.vanilla.css.js} +0 -0
  207. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Avatar/Avatar.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/AspectRatio/AspectRatio.module.css.mjs.vanilla.css.js} +0 -0
  208. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/BackgroundImage/BackgroundImage.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Avatar/Avatar.module.css.mjs.vanilla.css.js} +0 -0
  209. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Badge/Badge.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/BackgroundImage/BackgroundImage.module.css.mjs.vanilla.css.js} +0 -0
  210. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Blockquote/Blockquote.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Badge/Badge.module.css.mjs.vanilla.css.js} +0 -0
  211. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Breadcrumbs/Breadcrumbs.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Blockquote/Blockquote.module.css.mjs.vanilla.css.js} +0 -0
  212. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Burger/Burger.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Breadcrumbs/Breadcrumbs.module.css.mjs.vanilla.css.js} +0 -0
  213. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Button/Button.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Burger/Burger.module.css.mjs.vanilla.css.js} +0 -0
  214. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Card/Card.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Button/Button.module.css.mjs.vanilla.css.js} +0 -0
  215. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Center/Center.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Card/Card.module.css.mjs.vanilla.css.js} +0 -0
  216. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Checkbox/Checkbox.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Center/Center.module.css.mjs.vanilla.css.js} +0 -0
  217. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Checkbox/CheckboxCard/CheckboxCard.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Checkbox/Checkbox.module.css.mjs.vanilla.css.js} +0 -0
  218. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Checkbox/CheckboxIndicator/CheckboxIndicator.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Checkbox/CheckboxCard/CheckboxCard.module.css.mjs.vanilla.css.js} +0 -0
  219. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Chip/Chip.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Checkbox/CheckboxIndicator/CheckboxIndicator.module.css.mjs.vanilla.css.js} +0 -0
  220. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/CloseButton/CloseButton.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Chip/Chip.module.css.mjs.vanilla.css.js} +0 -0
  221. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Code/Code.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/CloseButton/CloseButton.module.css.mjs.vanilla.css.js} +0 -0
  222. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ColorInput/ColorInput.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Code/Code.module.css.mjs.vanilla.css.js} +0 -0
  223. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ColorPicker/ColorPicker.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ColorInput/ColorInput.module.css.mjs.vanilla.css.js} +0 -0
  224. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ColorSwatch/ColorSwatch.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ColorPicker/ColorPicker.module.css.mjs.vanilla.css.js} +0 -0
  225. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Combobox/Combobox.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ColorSwatch/ColorSwatch.module.css.mjs.vanilla.css.js} +0 -0
  226. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Container/Container.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Combobox/Combobox.module.css.mjs.vanilla.css.js} +0 -0
  227. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Dialog/Dialog.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Container/Container.module.css.mjs.vanilla.css.js} +0 -0
  228. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Divider/Divider.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Dialog/Dialog.module.css.mjs.vanilla.css.js} +0 -0
  229. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Drawer/Drawer.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Divider/Divider.module.css.mjs.vanilla.css.js} +0 -0
  230. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Fieldset/Fieldset.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Drawer/Drawer.module.css.mjs.vanilla.css.js} +0 -0
  231. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Flex/Flex.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Fieldset/Fieldset.module.css.mjs.vanilla.css.js} +0 -0
  232. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/FloatingIndicator/FloatingIndicator.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Flex/Flex.module.css.mjs.vanilla.css.js} +0 -0
  233. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Grid/Grid.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/FloatingIndicator/FloatingIndicator.module.css.mjs.vanilla.css.js} +0 -0
  234. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Group/Group.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Grid/Grid.module.css.mjs.vanilla.css.js} +0 -0
  235. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Image/Image.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Group/Group.module.css.mjs.vanilla.css.js} +0 -0
  236. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Indicator/Indicator.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Image/Image.module.css.mjs.vanilla.css.js} +0 -0
  237. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/InlineInput/InlineInput.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Indicator/Indicator.module.css.mjs.vanilla.css.js} +0 -0
  238. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Input/Input.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/InlineInput/InlineInput.module.css.mjs.vanilla.css.js} +0 -0
  239. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Kbd/Kbd.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Input/Input.module.css.mjs.vanilla.css.js} +0 -0
  240. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/List/List.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Kbd/Kbd.module.css.mjs.vanilla.css.js} +0 -0
  241. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Loader/Loader.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/List/List.module.css.mjs.vanilla.css.js} +0 -0
  242. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/LoadingOverlay/LoadingOverlay.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Loader/Loader.module.css.mjs.vanilla.css.js} +0 -0
  243. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Mark/Mark.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/LoadingOverlay/LoadingOverlay.module.css.mjs.vanilla.css.js} +0 -0
  244. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Menu/Menu.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Mark/Mark.module.css.mjs.vanilla.css.js} +0 -0
  245. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Modal/Modal.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Menu/Menu.module.css.mjs.vanilla.css.js} +0 -0
  246. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ModalBase/ModalBase.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Modal/Modal.module.css.mjs.vanilla.css.js} +0 -0
  247. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/NavLink/NavLink.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ModalBase/ModalBase.module.css.mjs.vanilla.css.js} +0 -0
  248. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Notification/Notification.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/NavLink/NavLink.module.css.mjs.vanilla.css.js} +0 -0
  249. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/NumberInput/NumberInput.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Notification/Notification.module.css.mjs.vanilla.css.js} +0 -0
  250. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Overlay/Overlay.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/NumberInput/NumberInput.module.css.mjs.vanilla.css.js} +0 -0
  251. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Pagination/Pagination.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Overlay/Overlay.module.css.mjs.vanilla.css.js} +0 -0
  252. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Paper/Paper.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Pagination/Pagination.module.css.mjs.vanilla.css.js} +0 -0
  253. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/PasswordInput/PasswordInput.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Paper/Paper.module.css.mjs.vanilla.css.js} +0 -0
  254. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Pill/Pill.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/PasswordInput/PasswordInput.module.css.mjs.vanilla.css.js} +0 -0
  255. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/PillsInput/PillsInput.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Pill/Pill.module.css.mjs.vanilla.css.js} +0 -0
  256. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/PinInput/PinInput.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/PillsInput/PillsInput.module.css.mjs.vanilla.css.js} +0 -0
  257. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Popover/Popover.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/PinInput/PinInput.module.css.mjs.vanilla.css.js} +0 -0
  258. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Progress/Progress.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Popover/Popover.module.css.mjs.vanilla.css.js} +0 -0
  259. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Radio/Radio.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Progress/Progress.module.css.mjs.vanilla.css.js} +0 -0
  260. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Radio/RadioCard/RadioCard.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Radio/Radio.module.css.mjs.vanilla.css.js} +0 -0
  261. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Radio/RadioIndicator/RadioIndicator.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Radio/RadioCard/RadioCard.module.css.mjs.vanilla.css.js} +0 -0
  262. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Rating/Rating.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Radio/RadioIndicator/RadioIndicator.module.css.mjs.vanilla.css.js} +0 -0
  263. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/RingProgress/RingProgress.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Rating/Rating.module.css.mjs.vanilla.css.js} +0 -0
  264. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ScrollArea/ScrollArea.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/RingProgress/RingProgress.module.css.mjs.vanilla.css.js} +0 -0
  265. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/SegmentedControl/SegmentedControl.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ScrollArea/ScrollArea.module.css.mjs.vanilla.css.js} +0 -0
  266. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/SemiCircleProgress/SemiCircleProgress.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/SegmentedControl/SegmentedControl.module.css.mjs.vanilla.css.js} +0 -0
  267. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/SimpleGrid/SimpleGrid.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/SemiCircleProgress/SemiCircleProgress.module.css.mjs.vanilla.css.js} +0 -0
  268. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Skeleton/Skeleton.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/SimpleGrid/SimpleGrid.module.css.mjs.vanilla.css.js} +0 -0
  269. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Slider/Slider.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Skeleton/Skeleton.module.css.mjs.vanilla.css.js} +0 -0
  270. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Spoiler/Spoiler.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Slider/Slider.module.css.mjs.vanilla.css.js} +0 -0
  271. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Stack/Stack.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Spoiler/Spoiler.module.css.mjs.vanilla.css.js} +0 -0
  272. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Stepper/Stepper.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Stack/Stack.module.css.mjs.vanilla.css.js} +0 -0
  273. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Switch/Switch.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Stepper/Stepper.module.css.mjs.vanilla.css.js} +0 -0
  274. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Table/Table.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Switch/Switch.module.css.mjs.vanilla.css.js} +0 -0
  275. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/TableOfContents/TableOfContents.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Table/Table.module.css.mjs.vanilla.css.js} +0 -0
  276. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Tabs/Tabs.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/TableOfContents/TableOfContents.module.css.mjs.vanilla.css.js} +0 -0
  277. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Text/Text.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Tabs/Tabs.module.css.mjs.vanilla.css.js} +0 -0
  278. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ThemeIcon/ThemeIcon.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Text/Text.module.css.mjs.vanilla.css.js} +0 -0
  279. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Timeline/Timeline.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/ThemeIcon/ThemeIcon.module.css.mjs.vanilla.css.js} +0 -0
  280. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Title/Title.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Timeline/Timeline.module.css.mjs.vanilla.css.js} +0 -0
  281. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Tooltip/Tooltip.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Title/Title.module.css.mjs.vanilla.css.js} +0 -0
  282. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Tree/Tree.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Tooltip/Tooltip.module.css.mjs.vanilla.css.js} +0 -0
  283. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/TypographyStylesProvider/TypographyStylesProvider.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/Tree/Tree.module.css.mjs.vanilla.css.js} +0 -0
  284. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/TypographyStylesProvider/TypographyStylesProvider.module.css.mjs.vanilla.css.js} +0 -0
  285. /package/dist/node_modules/.pnpm/{@mantine_core@7.17.0_@mantine_hooks@7.17.0_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/VisuallyHidden/VisuallyHidden.module.css.mjs.vanilla.css.js → @mantine_core@7.17.1_@mantine_hooks@7.17.1_react@19.0.0__@types_react@19.0.8_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.module.css.mjs.vanilla.css.js} +0 -0
@@ -2,11 +2,22 @@ import { useMantineStyleNonce } from '@mantine/core'
2
2
  import { domMax, LazyMotion, MotionConfig } from 'framer-motion'
3
3
  import { type PropsWithChildren } from 'react'
4
4
 
5
- export const FramerMotionConfig = ({ children }: PropsWithChildren) => {
5
+ export const FramerMotionConfig = ({
6
+ reducedMotion = 'user',
7
+ children,
8
+ }: PropsWithChildren<{
9
+ /**
10
+ * If true, will respect the device prefersReducedMotion setting by switching
11
+ * transform animations off.
12
+ *
13
+ * @public
14
+ */
15
+ reducedMotion?: 'always' | 'never' | 'user'
16
+ }>) => {
6
17
  const nonce = useMantineStyleNonce()?.()
7
18
  return (
8
19
  <LazyMotion features={domMax} strict>
9
- <MotionConfig {...nonce && { nonce }}>
20
+ <MotionConfig reducedMotion={reducedMotion} {...nonce && { nonce }}>
10
21
  {children}
11
22
  </MotionConfig>
12
23
  </LazyMotion>
@@ -1,17 +1,26 @@
1
1
  import { Box } from '@mantine/core'
2
2
  import clsx from 'clsx'
3
- import { type PropsWithChildren, type RefObject, createContext, createRef, useContext, useRef } from 'react'
4
- import { rootClassName } from '../globals.css'
3
+ import { type PropsWithChildren, createContext, createRef, useContext, useRef } from 'react'
4
+ import { rootClassName } from '../theme-vars'
5
5
 
6
6
  const RootContainerContext = createContext(createRef<HTMLDivElement>())
7
7
 
8
8
  export function RootContainer({
9
9
  className,
10
+ reduceGraphics = false,
10
11
  children,
11
- }: PropsWithChildren<{ className?: string | undefined }>) {
12
+ }: PropsWithChildren<{
13
+ className?: string | undefined
14
+ reduceGraphics?: boolean
15
+ }>) {
12
16
  const ref = useRef<HTMLDivElement>(null)
13
17
  return (
14
- <Box className={clsx(rootClassName, className)} ref={ref}>
18
+ <Box
19
+ className={clsx(rootClassName, className)}
20
+ ref={ref}
21
+ {...reduceGraphics && {
22
+ ['data-likec4-reduced-graphics']: true,
23
+ }}>
15
24
  <RootContainerContext.Provider value={ref}>
16
25
  {children}
17
26
  </RootContainerContext.Provider>
@@ -1,4 +1,5 @@
1
- import { createContext, use } from 'react'
1
+ import { createSafeContext } from '@mantine/core'
2
+ import { createContext, use, useContext } from 'react'
2
3
  import type { DiagramActorRef } from '../state/types'
3
4
 
4
5
  /**
@@ -18,6 +18,7 @@ export function useDiagram() {
18
18
  const actor = useDiagramActorRef()
19
19
  const [, startTransition] = useTransition()
20
20
  return useMemo(() => ({
21
+ actor,
21
22
  send: actor.send,
22
23
  navigateTo: (viewId: ViewId, fromNode?: NodeId) => {
23
24
  startTransition(() => {
@@ -0,0 +1,5 @@
1
+ import { createSafeContext } from '@mantine/core'
2
+
3
+ export const [ReducedGraphicsContext, useIsReducedGraphics] = createSafeContext<boolean>(
4
+ 'ReducedGraphicsContext is not provided',
5
+ )
@@ -20,7 +20,7 @@ export type XYStoreApi = ReturnType<typeof useXYStoreApi>
20
20
 
21
21
  export const useXYInternalNode = useInternalNode<Types.Node>
22
22
 
23
- const selectZoom = (state: ReactFlowState) => state.transform[2] < 0.2
23
+ const selectZoom = (state: ReactFlowState) => state.transform[2] < 0.25
24
24
  export function useIsZoomTooSmall() {
25
25
  return useStore(selectZoom)
26
26
  }
package/src/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import '@xyflow/react/dist/style.css'
2
2
 
3
+ export type { ControlsCustomLayout, ControlsCustomLayoutProps } from './context/ControlsCustomLayout'
3
4
  export { FramerMotionConfig } from './context/FramerMotionConfig'
4
5
  export { LikeC4Diagram } from './LikeC4Diagram'
5
6
  export type { LikeC4DiagramProps } from './LikeC4Diagram'
@@ -1,16 +1,17 @@
1
+ import { memo } from 'react'
1
2
  import { useEnabledFeatures } from '../context'
2
3
  import { useDiagramActorSnapshot } from '../hooks/useDiagram'
3
4
  import { Overlays } from '../overlays/Overlays'
4
5
  import { Controls, DiagramTitlePanel, DynamicViewWalkthrough, NotationPanel } from './ui'
5
6
 
6
- export function DiagramUI() {
7
+ export const DiagramUI = memo(() => {
7
8
  const {
8
9
  enableViewTitle,
9
10
  enableNotations,
10
11
  enableDynamicViewWalkthrough,
11
12
  } = useEnabledFeatures()
12
13
 
13
- const overlaysActorRef = useDiagramActorSnapshot(s => s.children.overlays)
14
+ const overlaysActorRef = useDiagramActorSnapshot(s => s.children.overlays, Object.is)
14
15
 
15
16
  return (
16
17
  <>
@@ -21,4 +22,5 @@ export function DiagramUI() {
21
22
  {enableDynamicViewWalkthrough && <DynamicViewWalkthrough />}
22
23
  </>
23
24
  )
24
- }
25
+ })
26
+ DiagramUI.displayName = 'DiagramUI'
@@ -2,7 +2,7 @@ import { type EdgeId, type NodeId, nonNullable } from '@likec4/core'
2
2
  import { useCallbackRef } from '@mantine/hooks'
3
3
  import clsx from 'clsx'
4
4
  import { shallowEqual } from 'fast-equals'
5
- import { memo } from 'react'
5
+ import { type PropsWithChildren, memo } from 'react'
6
6
  import type { EnforceOptional } from 'type-fest/source/enforce-optional'
7
7
  import { BaseXYFlow } from '../base/BaseXYFlow'
8
8
  import { useDiagramEventHandlers } from '../context'
@@ -50,9 +50,14 @@ type Picked = EnforceOptional<
50
50
  | 'nodesSelectable'
51
51
  >
52
52
  >
53
- export type LikeC4DiagramXYFlowProps = Required<Picked>
53
+ export type LikeC4DiagramXYFlowProps = PropsWithChildren<Required<Picked>>
54
54
 
55
- export const LikeC4DiagramXYFlow = memo<LikeC4DiagramXYFlowProps>(({ background, nodesDraggable, nodesSelectable }) => {
55
+ export const LikeC4DiagramXYFlow = memo<LikeC4DiagramXYFlowProps>(({
56
+ background,
57
+ nodesDraggable,
58
+ nodesSelectable,
59
+ children,
60
+ }) => {
56
61
  const diagram = useDiagram()
57
62
  const {
58
63
  initialized,
@@ -150,6 +155,7 @@ export const LikeC4DiagramXYFlow = memo<LikeC4DiagramXYFlowProps>(({ background,
150
155
  {...(notReadOnly && nodesDraggable && layoutConstraints)}
151
156
  {...props}>
152
157
  <DiagramUI />
158
+ {children}
153
159
  </BaseXYFlow>
154
160
  )
155
161
  }, shallowEqual)
@@ -5,6 +5,7 @@ import {
5
5
  } from '@likec4/core'
6
6
  import { useDebouncedEffect } from '@react-hookz/web'
7
7
  import type { XYPosition } from '@xyflow/react'
8
+ import { EdgeLabelRenderer } from '@xyflow/react'
8
9
  import clsx from 'clsx'
9
10
  import { curveCatmullRomOpen, line as d3line } from 'd3-shape'
10
11
  import { type PointerEvent as ReactPointerEvent, useEffect, useRef, useState } from 'react'
@@ -13,6 +14,7 @@ import { customEdge, EdgeActionButton, EdgeContainer, EdgeLabel, EdgePath } from
13
14
  import { useEnabledFeature } from '../../../context'
14
15
  import { useXYFlow, useXYInternalNode, useXYStoreApi } from '../../../hooks'
15
16
  import { useDiagram } from '../../../hooks/useDiagram'
17
+ import { useIsReducedGraphics } from '../../../hooks/useIsReducedGraphics'
16
18
  import { vector, VectorImpl } from '../../../utils/vector'
17
19
  import { bezierControlPoints, bezierPath, isSamePoint } from '../../../utils/xyflow'
18
20
  import type { Types } from '../../types'
@@ -27,6 +29,7 @@ const curve = d3line<XYPosition>()
27
29
  .y(d => d.y)
28
30
 
29
31
  export const RelationshipEdge = customEdge<Types.RelationshipEdgeData>((props) => {
32
+ const isReducedGraphicsMode = useIsReducedGraphics()
30
33
  const [isControlPointDragging, setIsControlPointDragging] = useState(false)
31
34
  const xyflowStore = useXYStoreApi()
32
35
  const xyflow = useXYFlow()
@@ -44,10 +47,11 @@ export const RelationshipEdge = customEdge<Types.RelationshipEdgeData>((props) =
44
47
  target,
45
48
  targetX,
46
49
  targetY,
50
+ selected = false,
47
51
  data: {
48
52
  id: edgeId,
49
- navigateTo,
50
53
  points,
54
+ hovered = false,
51
55
  active = false,
52
56
  dimmed = false,
53
57
  labelBBox,
@@ -56,6 +60,8 @@ export const RelationshipEdge = customEdge<Types.RelationshipEdgeData>((props) =
56
60
  },
57
61
  } = props
58
62
 
63
+ const navigateTo = enableNavigateTo ? data.navigateTo : undefined
64
+
59
65
  const sourceNode = nonNullable(useXYInternalNode(source)!, `source node ${source} not found`)
60
66
  const targetNode = nonNullable(useXYInternalNode(target)!, `target node ${target} not found`)
61
67
 
@@ -297,7 +303,7 @@ export const RelationshipEdge = customEdge<Types.RelationshipEdgeData>((props) =
297
303
  <div {...props} />
298
304
  </NotePopover>
299
305
  )
300
- } else if (enableRelationshipDetails) {
306
+ } else if (enableRelationshipDetails && (!isReducedGraphicsMode || hovered || selected || active)) {
301
307
  renderLabel = (props: any) => (
302
308
  <RelationshipsDropdownMenu
303
309
  disabled={!!dimmed}
@@ -313,24 +319,6 @@ export const RelationshipEdge = customEdge<Types.RelationshipEdgeData>((props) =
313
319
  return (
314
320
  <EdgeContainer {...props} className={clsx(isControlPointDragging && edgesCss.controlDragging)}>
315
321
  <EdgePath {...props} svgPath={edgePath} ref={svgPathRef} onEdgePointerDown={onEdgePointerDown} />
316
- {enableEdgeEditing && (
317
- <g
318
- onContextMenu={e => {
319
- e.preventDefault()
320
- e.stopPropagation()
321
- }}>
322
- {controlPoints.map((p, i) => (
323
- <circle
324
- onPointerDown={e => onControlPointerDown(i, e)}
325
- className={edgesCss.controlPoint}
326
- key={i}
327
- cx={p.x}
328
- cy={p.y}
329
- r={3}
330
- />
331
- ))}
332
- </g>
333
- )}
334
322
  <EdgeLabel
335
323
  edgeProps={props}
336
324
  labelPosition={{
@@ -340,7 +328,7 @@ export const RelationshipEdge = customEdge<Types.RelationshipEdgeData>((props) =
340
328
  }}
341
329
  {...renderLabel && { renderRoot: renderLabel }}
342
330
  >
343
- {!isControlPointDragging && enableNavigateTo && navigateTo && (
331
+ {!isControlPointDragging && navigateTo && (
344
332
  <EdgeActionButton
345
333
  {...props}
346
334
  onClick={e => {
@@ -349,6 +337,29 @@ export const RelationshipEdge = customEdge<Types.RelationshipEdgeData>((props) =
349
337
  }} />
350
338
  )}
351
339
  </EdgeLabel>
340
+ {/* Render control points above edge label */}
341
+ {enableEdgeEditing && controlPoints.length > 0 && (
342
+ <EdgeLabelRenderer>
343
+ <EdgeContainer component="svg" className={edgesCss.controlPointsContainer} {...props}>
344
+ <g
345
+ onContextMenu={e => {
346
+ e.preventDefault()
347
+ e.stopPropagation()
348
+ }}>
349
+ {controlPoints.map((p, i) => (
350
+ <circle
351
+ onPointerDown={e => onControlPointerDown(i, e)}
352
+ className={clsx('nodrag nopan', edgesCss.controlPoint)}
353
+ key={i}
354
+ cx={Math.round(p.x)}
355
+ cy={Math.round(p.y)}
356
+ r={3}
357
+ />
358
+ ))}
359
+ </g>
360
+ </EdgeContainer>
361
+ </EdgeLabelRenderer>
362
+ )}
352
363
  </EdgeContainer>
353
364
  )
354
365
  })
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  type DiagramEdge,
3
3
  type EdgeId,
4
+ type LikeC4Model,
4
5
  type NodeId,
5
6
  DiagramNode,
6
- LikeC4Model,
7
7
  nameFromFqn,
8
8
  } from '@likec4/core'
9
9
  import {
@@ -1,8 +1,23 @@
1
1
  import { globalStyle, style } from '@vanilla-extract/css'
2
+ import { ZIndexes } from '../../../base/const'
2
3
  import { mantine, xyvars } from '../../../theme-vars'
3
4
 
4
5
  const isSelected = '.react-flow__edge.selected'
5
6
 
7
+ export const controlPointsContainer = style({
8
+ overflow: 'visible',
9
+ position: 'absolute',
10
+ pointerEvents: 'none',
11
+ top: 0,
12
+ left: 0,
13
+ zIndex: ZIndexes.Edge,
14
+ selectors: {
15
+ [`&:is([data-edge-hovered='true'])`]: {
16
+ zIndex: ZIndexes.Edge + 1,
17
+ },
18
+ },
19
+ })
20
+
6
21
  export const controlPoint = style({
7
22
  fill: xyvars.edge.stroke,
8
23
  stroke: xyvars.edge.stroke,
@@ -1,7 +1,20 @@
1
1
  import type { Types } from '../types'
2
2
  import { RelationshipEdge } from './edges/RelationshipEdge'
3
+ import {
4
+ CompoundDeploymentNode,
5
+ CompoundElementNode,
6
+ DeploymentNode,
7
+ ElementNode,
8
+ ViewGroupNode,
9
+ } from './nodes/nodeTypes'
3
10
 
4
- export { nodeTypes } from './nodes/nodeTypes'
11
+ export const nodeTypes = {
12
+ element: ElementNode,
13
+ deployment: DeploymentNode,
14
+ 'compound-element': CompoundElementNode,
15
+ 'compound-deployment': CompoundDeploymentNode,
16
+ 'view-group': ViewGroupNode,
17
+ } satisfies { [key in Types.Node['type']]: any }
5
18
 
6
19
  export const edgeTypes = {
7
20
  relationship: RelationshipEdge,
@@ -36,72 +36,74 @@ const ElementDetailsButtonWithHandler = ({ fqn, ...props }: NodeProps<Types.Node
36
36
  )
37
37
  }
38
38
 
39
- export const nodeTypes = {
40
- element: customNode<Types.ElementNodeData>((props) => (
41
- <ElementNodeContainer nodeProps={props}>
42
- <ElementShape {...props} isMultiple={props.data.isMultiple} />
43
- <ElementTitle {...props} />
44
- <ElementActions {...props} />
39
+ export const ElementNode = customNode<Types.ElementNodeData>((props) => (
40
+ <ElementNodeContainer nodeProps={props}>
41
+ <ElementShape {...props} isMultiple={props.data.isMultiple} withSelectedIndicator={props.selected} />
42
+ <ElementTitle {...props} />
43
+ <ElementActions {...props} />
44
+ <ElementDetailsButtonWithHandler
45
+ fqn={props.data.modelFqn}
46
+ {...props} />
47
+ <IfNotEnabled feature="ReadOnly">
48
+ <ElementToolbar {...props} />
49
+ </IfNotEnabled>
50
+ <DefaultHandles />
51
+ </ElementNodeContainer>
52
+ ))
53
+
54
+ export const DeploymentNode = customNode<Types.DeploymentElementNodeData>((props) => (
55
+ <ElementNodeContainer nodeProps={props}>
56
+ <ElementShape {...props} isMultiple={props.data.isMultiple} withSelectedIndicator={props.selected} />
57
+ <ElementTitle {...props} />
58
+ <DeploymentElementActions {...props} />
59
+ {!!props.data.modelFqn && (
45
60
  <ElementDetailsButtonWithHandler
46
61
  fqn={props.data.modelFqn}
47
62
  {...props} />
48
- <IfNotEnabled feature="ReadOnly">
49
- <ElementToolbar {...props} />
50
- </IfNotEnabled>
51
- <DefaultHandles />
52
- </ElementNodeContainer>
53
- )),
54
- deployment: customNode<Types.DeploymentElementNodeData>((props) => (
55
- <ElementNodeContainer nodeProps={props}>
56
- <ElementShape {...props} isMultiple={props.data.isMultiple} />
57
- <ElementTitle {...props} />
58
- <DeploymentElementActions {...props} />
59
- {!!props.data.modelFqn && (
60
- <ElementDetailsButtonWithHandler
61
- fqn={props.data.modelFqn}
62
- {...props} />
63
- )}
64
- <IfNotEnabled feature="ReadOnly">
65
- <DeploymentElementToolbar {...props} />
66
- </IfNotEnabled>
67
- <DefaultHandles />
68
- </ElementNodeContainer>
69
- )),
70
- 'compound-element': customNode<Types.CompoundElementNodeData>((props) => {
71
- const diagram = useDiagram()
72
- return (
73
- <CompoundNodeContainer nodeProps={props}>
74
- <CompoundTitle {...props} />
75
- <CompoundActions {...props} />
76
- <IfEnabled feature="ElementDetails">
77
- <CompoundDetailsButton
78
- {...props}
79
- onClick={e => {
80
- e.stopPropagation()
81
- diagram.openElementDetails(props.data.modelFqn, props.id as NodeId)
82
- }} />
83
- </IfEnabled>
84
- <IfNotEnabled feature="ReadOnly">
85
- <CompoundElementToolbar {...props} />
86
- </IfNotEnabled>
87
- <DefaultHandles />
88
- </CompoundNodeContainer>
89
- )
90
- }),
91
- 'compound-deployment': customNode<Types.CompoundDeploymentNodeData>((props) => (
63
+ )}
64
+ <IfNotEnabled feature="ReadOnly">
65
+ <DeploymentElementToolbar {...props} />
66
+ </IfNotEnabled>
67
+ <DefaultHandles />
68
+ </ElementNodeContainer>
69
+ ))
70
+
71
+ export const CompoundElementNode = customNode<Types.CompoundElementNodeData>((props) => {
72
+ const diagram = useDiagram()
73
+ return (
92
74
  <CompoundNodeContainer nodeProps={props}>
93
75
  <CompoundTitle {...props} />
94
76
  <CompoundActions {...props} />
77
+ <IfEnabled feature="ElementDetails">
78
+ <CompoundDetailsButton
79
+ {...props}
80
+ onClick={e => {
81
+ e.stopPropagation()
82
+ diagram.openElementDetails(props.data.modelFqn, props.id as NodeId)
83
+ }} />
84
+ </IfEnabled>
95
85
  <IfNotEnabled feature="ReadOnly">
96
- <CompoundDeploymentToolbar {...props} />
86
+ <CompoundElementToolbar {...props} />
97
87
  </IfNotEnabled>
98
88
  <DefaultHandles />
99
89
  </CompoundNodeContainer>
100
- )),
101
- 'view-group': customNode<Types.ViewGroupNodeData>((props) => (
102
- <CompoundNodeContainer nodeProps={props}>
103
- <CompoundTitle {...props} />
104
- <DefaultHandles />
105
- </CompoundNodeContainer>
106
- )),
107
- } satisfies { [key in Types.Node['type']]: any }
90
+ )
91
+ })
92
+
93
+ export const CompoundDeploymentNode = customNode<Types.CompoundDeploymentNodeData>((props) => (
94
+ <CompoundNodeContainer nodeProps={props}>
95
+ <CompoundTitle {...props} />
96
+ <CompoundActions {...props} />
97
+ <IfNotEnabled feature="ReadOnly">
98
+ <CompoundDeploymentToolbar {...props} />
99
+ </IfNotEnabled>
100
+ <DefaultHandles />
101
+ </CompoundNodeContainer>
102
+ ))
103
+
104
+ export const ViewGroupNode = customNode<Types.ViewGroupNodeData>((props) => (
105
+ <CompoundNodeContainer nodeProps={props}>
106
+ <CompoundTitle {...props} />
107
+ <DefaultHandles />
108
+ </CompoundNodeContainer>
109
+ ))
@@ -1,9 +1,10 @@
1
- import { ActionIconGroup, Badge, Group, Loader, Stack } from '@mantine/core'
1
+ import { ActionIconGroup, Badge, Box, Group, Loader, Stack } from '@mantine/core'
2
2
  import { IconFileSymlink, IconFocusCentered, IconMenu2 } from '@tabler/icons-react'
3
3
  import { clsx } from 'clsx'
4
- import { LayoutGroup } from 'framer-motion'
4
+ import { AnimatePresence, LayoutGroup, m } from 'framer-motion'
5
5
  import { memo } from 'react'
6
6
  import { useDiagramEventHandlers, useEnabledFeatures } from '../../../context'
7
+ import { type ControlsCustomLayout, useControlsCustomLayout } from '../../../context/ControlsCustomLayout'
7
8
  import { useMantinePortalProps } from '../../../hooks'
8
9
  import { useDiagram, useDiagramContext, useDiagramSyncLayoutState } from '../../../hooks/useDiagram'
9
10
  import { stopPropagation } from '../../../utils'
@@ -16,11 +17,62 @@ import { NavigationButtons } from './NavigationButtons'
16
17
  import * as css from './styles.css'
17
18
  import { ToggleReadonly } from './ToggleReadonly'
18
19
 
20
+ const ControlsDefaultLayout: ControlsCustomLayout = ({
21
+ burgerMenu,
22
+ navigationButtons,
23
+ search,
24
+ actionsGroup,
25
+ }) => (
26
+ <Group
27
+ component={m.div}
28
+ // @ts-expect-error group component not fully polymorphic
29
+ initial={{
30
+ opacity: 0.05,
31
+ translateX: -30,
32
+ translateY: -16,
33
+ }}
34
+ animate={{
35
+ opacity: 1,
36
+ translateX: 0,
37
+ translateY: 0,
38
+ }}
39
+ exit={{
40
+ opacity: 0.05,
41
+ translateX: -30,
42
+ translateY: -10,
43
+ }}
44
+ align="flex-start"
45
+ className={clsx(
46
+ 'react-flow__panel',
47
+ css.panel,
48
+ 'likec4-top-left-panel',
49
+ )}
50
+ gap="xs"
51
+ onClick={stopPropagation}
52
+ >
53
+ <Stack align="flex-start" gap="xs">
54
+ <LayoutGroup>
55
+ <Group
56
+ className={clsx(css.navigationButtons, 'likec4-navigation-webview')}
57
+ gap={'xs'}>
58
+ {burgerMenu}
59
+ {navigationButtons}
60
+ </Group>
61
+ </LayoutGroup>
62
+ {actionsGroup}
63
+ </Stack>
64
+ <Box>
65
+ {search}
66
+ </Box>
67
+ </Group>
68
+ )
69
+
19
70
  export const Controls = memo(() => {
20
- const { viewId, hasLayoutDrift, viewportChanged } = useDiagramContext(c => ({
71
+ const { viewId, hasLayoutDrift, viewportChanged, isNotActiveWalkthrough } = useDiagramContext(c => ({
21
72
  viewId: c.view.id,
22
73
  hasLayoutDrift: c.view.hasLayoutDrift ?? false,
23
74
  viewportChanged: c.viewportChangedManually,
75
+ isNotActiveWalkthrough: c.activeWalkthrough === null,
24
76
  }))
25
77
  const diagram = useDiagram()
26
78
  const {
@@ -36,24 +88,13 @@ export const Controls = memo(() => {
36
88
  } = useEnabledFeatures()
37
89
  const notReadOnly = !enableReadOnly
38
90
  const portalProps = useMantinePortalProps()
39
-
91
+ const ControlsLayout = useControlsCustomLayout() ?? ControlsDefaultLayout
40
92
  return (
41
- <Group
42
- align="flex-start"
43
- className={clsx(
44
- 'react-flow__panel',
45
- css.panel,
46
- 'likec4-top-left-panel',
47
- )}
48
- gap="xs"
49
- onClick={stopPropagation}
50
- >
51
- <Stack align="flex-start" gap="xs">
52
- <LayoutGroup>
53
- <Group
54
- className={clsx(css.navigationButtons, 'likec4-navigation-webview')}
55
- gap={'xs'}>
56
- {onBurgerMenuClick && (
93
+ <LayoutGroup inherit={false}>
94
+ <AnimatePresence initial={false} mode="wait">
95
+ {isNotActiveWalkthrough && (
96
+ <ControlsLayout
97
+ burgerMenu={onBurgerMenuClick && (
57
98
  <ActionIcon
58
99
  onClick={e => {
59
100
  e.stopPropagation()
@@ -62,47 +103,47 @@ export const Controls = memo(() => {
62
103
  <IconMenu2 />
63
104
  </ActionIcon>
64
105
  )}
65
- {enableNavigationButtons && <NavigationButtons />}
66
- </Group>
67
- </LayoutGroup>
68
- <ActionIconGroup className={css.actionIconGroup} orientation="vertical">
69
- {enableVscode && (
70
- <Tooltip label="Open source" {...portalProps}>
71
- <ActionIcon
72
- onClick={e => {
73
- e.stopPropagation()
74
- onOpenSource?.({ view: viewId })
75
- }}>
76
- <IconFileSymlink stroke={1.5} />
77
- </ActionIcon>
78
- </Tooltip>
79
- )}
80
- {enableControls && <ToggleReadonly />}
81
- {enableControls && hasLayoutDrift && <LayoutDriftNotification {...portalProps} />}
82
- {enableControls && notReadOnly && (
83
- <>
84
- <ChangeAutoLayoutButton {...portalProps} />
85
- <ManualLayoutToolsButton {...portalProps} />
86
- </>
87
- )}
88
- {enableControls && (
89
- <Tooltip label={viewportChanged ? 'Center camera' : 'Camera is centered'} {...portalProps}>
90
- <ActionIcon
91
- onClick={e => {
92
- e.stopPropagation()
93
- diagram.fitDiagram()
94
- }}>
95
- <IconFocusCentered />
96
- </ActionIcon>
97
- </Tooltip>
98
- )}
99
- </ActionIconGroup>
100
- </Stack>
101
- <Group>
102
- {enableSearch && <LikeC4Search />}
103
- {/* {notReadOnly && <SyncLayoutBadge />} */}
104
- </Group>
105
- </Group>
106
+ navigationButtons={enableNavigationButtons && <NavigationButtons />}
107
+ search={enableSearch && <LikeC4Search />}
108
+ syncInProgressBadge={<SyncLayoutBadge />}
109
+ actionsGroup={
110
+ <ActionIconGroup className={css.actionIconGroup} orientation="vertical">
111
+ {enableVscode && (
112
+ <Tooltip label="Open source" {...portalProps}>
113
+ <ActionIcon
114
+ onClick={e => {
115
+ e.stopPropagation()
116
+ onOpenSource?.({ view: viewId })
117
+ }}>
118
+ <IconFileSymlink stroke={1.5} />
119
+ </ActionIcon>
120
+ </Tooltip>
121
+ )}
122
+ {enableControls && <ToggleReadonly />}
123
+ {enableControls && hasLayoutDrift && <LayoutDriftNotification {...portalProps} />}
124
+ {enableControls && notReadOnly && (
125
+ <>
126
+ <ChangeAutoLayoutButton {...portalProps} />
127
+ <ManualLayoutToolsButton {...portalProps} />
128
+ </>
129
+ )}
130
+ {enableControls && (
131
+ <Tooltip label={viewportChanged ? 'Center camera' : 'Camera is centered'} {...portalProps}>
132
+ <ActionIcon
133
+ onClick={e => {
134
+ e.stopPropagation()
135
+ diagram.fitDiagram()
136
+ }}>
137
+ <IconFocusCentered />
138
+ </ActionIcon>
139
+ </Tooltip>
140
+ )}
141
+ </ActionIconGroup>
142
+ }
143
+ />
144
+ )}
145
+ </AnimatePresence>
146
+ </LayoutGroup>
106
147
  )
107
148
  })
108
149