@likec4/diagram 1.17.1 → 1.19.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 (300) hide show
  1. package/LICENSE +1 -1
  2. package/dist/LikeC4CustomColors.d.ts +7 -0
  3. package/dist/LikeC4CustomColors.js +30 -0
  4. package/dist/LikeC4Diagram.css.d.ts +5 -0
  5. package/dist/LikeC4Diagram.css.js +13 -0
  6. package/dist/LikeC4Diagram.d.ts +6 -0
  7. package/dist/LikeC4Diagram.js +194 -0
  8. package/dist/LikeC4Diagram.props.d.ts +166 -0
  9. package/dist/LikeC4ModelProvider.d.ts +9 -0
  10. package/dist/LikeC4ModelProvider.js +12 -0
  11. package/dist/LikeC4Search.css.d.ts +1 -0
  12. package/dist/LikeC4Search.css.js +5 -0
  13. package/dist/LikeC4Search.d.ts +2 -0
  14. package/dist/LikeC4Search.js +96 -0
  15. package/dist/StaticLikeC4Diagram.d.ts +3 -0
  16. package/dist/StaticLikeC4Diagram.js +41 -0
  17. package/dist/_virtual/_commonjsHelpers.js +6 -0
  18. package/dist/controls/Text.d.ts +2 -0
  19. package/dist/controls/Text.js +7 -0
  20. package/dist/controls/action-button-bar/ActionButtonBar.css.d.ts +1 -0
  21. package/dist/controls/action-button-bar/ActionButtonBar.css.js +5 -0
  22. package/dist/controls/action-button-bar/ActionButtonBar.d.ts +9 -0
  23. package/dist/controls/action-button-bar/ActionButtonBar.js +100 -0
  24. package/dist/controls/action-button-bar/useActionButtonBarCtx.d.ts +10 -0
  25. package/dist/controls/action-button-bar/useActionButtonBarCtx.js +9 -0
  26. package/dist/controls/action-buttons/ActionButton.css.d.ts +1 -0
  27. package/dist/controls/action-buttons/ActionButton.css.js +5 -0
  28. package/dist/controls/action-buttons/ActionButton.d.ts +9 -0
  29. package/dist/controls/action-buttons/ActionButton.js +66 -0
  30. package/dist/controls/action-buttons/ActionButtons.d.ts +12 -0
  31. package/dist/controls/action-buttons/ActionButtons.js +99 -0
  32. package/dist/globals.css.d.ts +1 -0
  33. package/dist/globals.css.js +92 -0
  34. package/dist/hooks/index.d.ts +5 -0
  35. package/dist/hooks/useDiagramState.d.ts +6 -0
  36. package/dist/hooks/useDiagramState.js +27 -0
  37. package/dist/hooks/useMantinePortalProps.d.ts +9 -0
  38. package/dist/hooks/useMantinePortalProps.js +9 -0
  39. package/dist/hooks/useSetState.d.ts +2 -0
  40. package/dist/hooks/useSetState.js +19 -0
  41. package/dist/hooks/useUpdateEffect.d.ts +4 -0
  42. package/dist/hooks/useUpdateEffect.js +32 -0
  43. package/dist/hooks/useXYFlow.d.ts +270 -0
  44. package/dist/hooks/useXYFlow.js +20 -0
  45. package/dist/index.d.ts +11 -0
  46. package/dist/index.js +25 -0
  47. package/dist/likec4model/LikeC4ModelContext.d.ts +3 -0
  48. package/dist/likec4model/LikeC4ModelContext.js +5 -0
  49. package/dist/likec4model/index.d.ts +2 -0
  50. package/dist/likec4model/useLikeC4ElementsTree.d.ts +12 -0
  51. package/dist/likec4model/useLikeC4ElementsTree.js +25 -0
  52. package/dist/likec4model/useLikeC4Model.d.ts +20 -0
  53. package/dist/likec4model/useLikeC4Model.js +55 -0
  54. package/dist/overlays/OverlayContext.d.ts +10 -0
  55. package/dist/overlays/OverlayContext.js +9 -0
  56. package/dist/overlays/Overlays.css.d.ts +3 -0
  57. package/dist/overlays/Overlays.css.js +7 -0
  58. package/dist/overlays/Overlays.d.ts +2 -0
  59. package/dist/overlays/Overlays.js +137 -0
  60. package/dist/overlays/edge-details/EdgeDetailsXYFlow.d.ts +5 -0
  61. package/dist/overlays/edge-details/EdgeDetailsXYFlow.js +185 -0
  62. package/dist/overlays/edge-details/SelectEdge.css.d.ts +7 -0
  63. package/dist/overlays/edge-details/SelectEdge.css.js +17 -0
  64. package/dist/overlays/edge-details/SelectEdge.d.ts +5 -0
  65. package/dist/overlays/edge-details/SelectEdge.js +129 -0
  66. package/dist/overlays/edge-details/_types.d.ts +14 -0
  67. package/dist/overlays/edge-details/use-layouted-edge-details.d.ts +21 -0
  68. package/dist/overlays/edge-details/use-layouted-edge-details.js +270 -0
  69. package/dist/overlays/edge-details/xyflow/CompoundNode.d.ts +5 -0
  70. package/dist/overlays/edge-details/xyflow/CompoundNode.js +76 -0
  71. package/dist/overlays/edge-details/xyflow/ElementNode.d.ts +5 -0
  72. package/dist/overlays/edge-details/xyflow/ElementNode.js +159 -0
  73. package/dist/overlays/edge-details/xyflow/RelationshipEdge.d.ts +3 -0
  74. package/dist/overlays/edge-details/xyflow/RelationshipEdge.js +84 -0
  75. package/dist/overlays/edge-details/xyflow/styles.css.d.ts +9 -0
  76. package/dist/overlays/edge-details/xyflow/styles.css.js +21 -0
  77. package/dist/overlays/element-details/ElementDetailsCard.css.d.ts +16 -0
  78. package/dist/overlays/element-details/ElementDetailsCard.css.js +33 -0
  79. package/dist/overlays/element-details/ElementDetailsCard.d.ts +7 -0
  80. package/dist/overlays/element-details/ElementDetailsCard.js +484 -0
  81. package/dist/overlays/element-details/TabPanelDeployments.css.d.ts +4 -0
  82. package/dist/overlays/element-details/TabPanelDeployments.css.js +11 -0
  83. package/dist/overlays/element-details/TabPanelDeployments.d.ts +7 -0
  84. package/dist/overlays/element-details/TabPanelDeployments.js +173 -0
  85. package/dist/overlays/element-details/TabPanelRelationships.css.d.ts +5 -0
  86. package/dist/overlays/element-details/TabPanelRelationships.css.js +11 -0
  87. package/dist/overlays/element-details/TabPanelRelationships.d.ts +8 -0
  88. package/dist/overlays/element-details/TabPanelRelationships.js +157 -0
  89. package/dist/overlays/element-details/TabPanelStructure.css.d.ts +2 -0
  90. package/dist/overlays/element-details/TabPanelStructure.css.js +7 -0
  91. package/dist/overlays/element-details/TabPanelStructure.d.ts +25 -0
  92. package/dist/overlays/element-details/TabPanelStructure.js +91 -0
  93. package/dist/overlays/index.d.ts +1 -0
  94. package/dist/overlays/relationships-of/RelationshipsOverlay.d.ts +5 -0
  95. package/dist/overlays/relationships-of/RelationshipsOverlay.js +193 -0
  96. package/dist/overlays/relationships-of/RelationshipsXYFlow.d.ts +19 -0
  97. package/dist/overlays/relationships-of/RelationshipsXYFlow.js +290 -0
  98. package/dist/overlays/relationships-of/SelectElement.css.d.ts +2 -0
  99. package/dist/overlays/relationships-of/SelectElement.css.js +7 -0
  100. package/dist/overlays/relationships-of/SelectElement.d.ts +7 -0
  101. package/dist/overlays/relationships-of/SelectElement.js +126 -0
  102. package/dist/overlays/relationships-of/_types.d.ts +28 -0
  103. package/dist/overlays/relationships-of/use-layouted-relationships.d.ts +22 -0
  104. package/dist/overlays/relationships-of/use-layouted-relationships.js +496 -0
  105. package/dist/overlays/relationships-of/xyflow/CompoundNode.d.ts +6 -0
  106. package/dist/overlays/relationships-of/xyflow/CompoundNode.js +120 -0
  107. package/dist/overlays/relationships-of/xyflow/ElementNode.d.ts +6 -0
  108. package/dist/overlays/relationships-of/xyflow/ElementNode.js +194 -0
  109. package/dist/overlays/relationships-of/xyflow/EmptyNode.d.ts +5 -0
  110. package/dist/overlays/relationships-of/xyflow/EmptyNode.js +18 -0
  111. package/dist/overlays/relationships-of/xyflow/RelationshipEdge.d.ts +3 -0
  112. package/dist/overlays/relationships-of/xyflow/RelationshipEdge.js +123 -0
  113. package/dist/overlays/relationships-of/xyflow/styles.css.d.ts +14 -0
  114. package/dist/overlays/relationships-of/xyflow/styles.css.js +24 -0
  115. package/dist/overlays/shared/xyflow/RelationshipEdge.css.d.ts +4 -0
  116. package/dist/overlays/shared/xyflow/RelationshipEdge.css.js +12 -0
  117. package/dist/overlays/shared/xyflow/_types.d.ts +77 -0
  118. package/dist/state/DiagramContext.d.ts +1609 -0
  119. package/dist/state/DiagramContext.js +101 -0
  120. package/dist/state/aligners.d.ts +42 -0
  121. package/dist/state/aligners.js +349 -0
  122. package/dist/state/diagram-to-xyflow.d.ts +11 -0
  123. package/dist/state/diagram-to-xyflow.js +113 -0
  124. package/dist/state/diagramStore.d.ts +1705 -0
  125. package/dist/state/diagramStore.js +808 -0
  126. package/dist/state/diagramStore.layout.d.ts +4 -0
  127. package/dist/state/diagramStore.layout.js +56 -0
  128. package/dist/style.css +1 -0
  129. package/dist/theme-vars.css.d.ts +72 -0
  130. package/dist/theme-vars.css.js +6 -0
  131. package/dist/theme-vars.css.ts.vanilla.css.js +1 -0
  132. package/dist/theme-vars.d.ts +3 -0
  133. package/dist/theme-vars.js +5 -0
  134. package/dist/ui/DiagramTitlePanel.css.d.ts +4 -0
  135. package/dist/ui/DiagramTitlePanel.css.js +11 -0
  136. package/dist/ui/DiagramTitlePanel.d.ts +1 -0
  137. package/dist/ui/DiagramTitlePanel.js +159 -0
  138. package/dist/ui/DynamicViewWalkthrough.css.d.ts +4 -0
  139. package/dist/ui/DynamicViewWalkthrough.css.js +11 -0
  140. package/dist/ui/DynamicViewWalkthrough.d.ts +1 -0
  141. package/dist/ui/DynamicViewWalkthrough.js +156 -0
  142. package/dist/ui/EnsureMantine.d.ts +7 -0
  143. package/dist/ui/EnsureMantine.js +14 -0
  144. package/dist/ui/FramerMotionConfig.d.ts +2 -0
  145. package/dist/ui/FramerMotionConfig.js +14 -0
  146. package/dist/ui/Link.d.ts +4 -0
  147. package/dist/ui/Link.js +36 -0
  148. package/dist/ui/notation/NotationPanel.css.d.ts +6 -0
  149. package/dist/ui/notation/NotationPanel.css.js +16 -0
  150. package/dist/ui/notation/NotationPanel.d.ts +1 -0
  151. package/dist/ui/notation/NotationPanel.js +250 -0
  152. package/dist/ui/notation/index.d.ts +1 -0
  153. package/dist/ui/top-left/ChangeAutoLayoutButton.d.ts +2 -0
  154. package/dist/ui/top-left/ChangeAutoLayoutButton.js +159 -0
  155. package/dist/ui/top-left/ManualLayoutToolsButton.d.ts +2 -0
  156. package/dist/ui/top-left/ManualLayoutToolsButton.js +137 -0
  157. package/dist/ui/top-left/TopLeftPanel.d.ts +4 -0
  158. package/dist/ui/top-left/TopLeftPanel.js +211 -0
  159. package/dist/ui/top-left/_shared.d.ts +7 -0
  160. package/dist/ui/top-left/_shared.js +22 -0
  161. package/dist/ui/top-left/styles.css.d.ts +8 -0
  162. package/dist/ui/top-left/styles.css.js +17 -0
  163. package/dist/utils/types.d.ts +8 -0
  164. package/dist/utils/vector.d.ts +24 -0
  165. package/dist/utils/vector.js +55 -0
  166. package/dist/xyflow/EdgeMarkers.d.ts +12 -0
  167. package/dist/xyflow/EdgeMarkers.js +192 -0
  168. package/dist/xyflow/FitviewOnDiagramChange.d.ts +4 -0
  169. package/dist/xyflow/FitviewOnDiagramChange.js +72 -0
  170. package/dist/xyflow/SelectEdgesOnNodeFocus.d.ts +1 -0
  171. package/dist/xyflow/SelectEdgesOnNodeFocus.js +96 -0
  172. package/dist/xyflow/XYFlow.d.ts +8 -0
  173. package/dist/xyflow/XYFlow.js +145 -0
  174. package/dist/xyflow/XYFlowBackground.d.ts +10 -0
  175. package/dist/xyflow/XYFlowBackground.js +25 -0
  176. package/dist/xyflow/XYFlowInner.d.ts +8 -0
  177. package/dist/xyflow/XYFlowInner.js +41 -0
  178. package/dist/xyflow/const.d.ts +7 -0
  179. package/dist/xyflow/const.js +12 -0
  180. package/dist/xyflow/edges/EdgeLabel.d.ts +7 -0
  181. package/dist/xyflow/edges/EdgeLabel.js +160 -0
  182. package/dist/xyflow/edges/RelationshipEdge.d.ts +6 -0
  183. package/dist/xyflow/edges/RelationshipEdge.js +443 -0
  184. package/dist/xyflow/edges/RelationshipsDropdownMenu.css.d.ts +4 -0
  185. package/dist/xyflow/edges/RelationshipsDropdownMenu.css.js +11 -0
  186. package/dist/xyflow/edges/RelationshipsDropdownMenu.d.ts +13 -0
  187. package/dist/xyflow/edges/RelationshipsDropdownMenu.js +211 -0
  188. package/dist/xyflow/edges/edges.css.d.ts +17 -0
  189. package/dist/xyflow/edges/edges.css.js +37 -0
  190. package/dist/xyflow/edges/utils.d.ts +16 -0
  191. package/dist/xyflow/edges/utils.js +24 -0
  192. package/dist/xyflow/nodes/AnimateVariants.d.ts +1313 -0
  193. package/dist/xyflow/nodes/AnimateVariants.js +123 -0
  194. package/dist/xyflow/nodes/Node.css.d.ts +3 -0
  195. package/dist/xyflow/nodes/Node.css.js +9 -0
  196. package/dist/xyflow/nodes/compound/CompoundNode.css.d.ts +14 -0
  197. package/dist/xyflow/nodes/compound/CompoundNode.css.js +27 -0
  198. package/dist/xyflow/nodes/compound/CompoundNode.d.ts +6 -0
  199. package/dist/xyflow/nodes/compound/CompoundNode.js +216 -0
  200. package/dist/xyflow/nodes/compound/index.d.ts +1 -0
  201. package/dist/xyflow/nodes/element/ElementLink.css.d.ts +3 -0
  202. package/dist/xyflow/nodes/element/ElementLink.d.ts +6 -0
  203. package/dist/xyflow/nodes/element/ElementNode.d.ts +6 -0
  204. package/dist/xyflow/nodes/element/ElementNode.js +190 -0
  205. package/dist/xyflow/nodes/element/ElementShapeSvg.d.ts +17 -0
  206. package/dist/xyflow/nodes/element/ElementShapeSvg.js +175 -0
  207. package/dist/xyflow/nodes/element/element.css.d.ts +18 -0
  208. package/dist/xyflow/nodes/element/element.css.js +31 -0
  209. package/dist/xyflow/nodes/element/index.d.ts +1 -0
  210. package/dist/xyflow/nodes/shared/ElementIcon.d.ts +8 -0
  211. package/dist/xyflow/nodes/shared/ElementIcon.js +38 -0
  212. package/dist/xyflow/nodes/shared/Toolbar.d.ts +9 -0
  213. package/dist/xyflow/nodes/shared/Toolbar.js +436 -0
  214. package/dist/xyflow/types.d.ts +36 -0
  215. package/dist/xyflow/useLayoutConstraints.d.ts +42 -0
  216. package/dist/xyflow/useLayoutConstraints.js +226 -0
  217. package/dist/xyflow/useXYFlowEvents.d.ts +160 -0
  218. package/dist/xyflow/useXYFlowEvents.js +275 -0
  219. package/dist/xyflow/utils.d.ts +22 -0
  220. package/dist/xyflow/utils.js +72 -0
  221. package/package.json +40 -31
  222. package/src/LikeC4Diagram.props.ts +21 -12
  223. package/src/LikeC4Diagram.tsx +8 -10
  224. package/src/LikeC4Search.css.ts +12 -0
  225. package/src/LikeC4Search.tsx +45 -93
  226. package/src/controls/Text.ts +5 -0
  227. package/src/controls/action-button-bar/ActionButtonBar.css.ts +13 -0
  228. package/src/controls/action-button-bar/ActionButtonBar.tsx +138 -0
  229. package/src/controls/action-button-bar/useActionButtonBarCtx.ts +13 -0
  230. package/src/controls/action-buttons/ActionButton.css.ts +29 -0
  231. package/src/controls/action-buttons/ActionButton.tsx +66 -0
  232. package/src/controls/action-buttons/ActionButtons.tsx +138 -0
  233. package/src/hooks/useDiagramState.ts +8 -3
  234. package/src/hooks/useXYFlow.ts +9 -8
  235. package/src/index.ts +12 -6
  236. package/src/likec4model/index.ts +12 -2
  237. package/src/likec4model/useLikeC4ElementsTree.ts +6 -13
  238. package/src/likec4model/useLikeC4Model.ts +21 -11
  239. package/src/overlays/Overlays.tsx +96 -63
  240. package/src/overlays/edge-details/EdgeDetailsXYFlow.tsx +18 -10
  241. package/src/overlays/edge-details/_types.ts +13 -33
  242. package/src/overlays/edge-details/use-layouted-edge-details.ts +35 -26
  243. package/src/overlays/edge-details/xyflow/CompoundNode.tsx +3 -11
  244. package/src/overlays/edge-details/xyflow/ElementNode.tsx +8 -13
  245. package/src/overlays/edge-details/xyflow/RelationshipEdge.tsx +7 -7
  246. package/src/overlays/edge-details/xyflow/styles.css.ts +1 -59
  247. package/src/overlays/element-details/ElementDetailsCard.tsx +91 -78
  248. package/src/overlays/element-details/TabPanelDeployments.css.ts +69 -0
  249. package/src/overlays/element-details/TabPanelDeployments.tsx +217 -0
  250. package/src/overlays/element-details/TabPanelRelationships.tsx +8 -9
  251. package/src/overlays/element-details/TabPanelStructure.tsx +10 -10
  252. package/src/overlays/relationships-of/RelationshipsOverlay.tsx +1 -1
  253. package/src/overlays/relationships-of/RelationshipsXYFlow.tsx +26 -34
  254. package/src/overlays/relationships-of/SelectElement.tsx +2 -2
  255. package/src/overlays/relationships-of/_types.ts +20 -58
  256. package/src/overlays/relationships-of/use-layouted-relationships.ts +54 -59
  257. package/src/overlays/relationships-of/xyflow/CompoundNode.tsx +10 -16
  258. package/src/overlays/relationships-of/xyflow/ElementNode.tsx +24 -21
  259. package/src/overlays/relationships-of/xyflow/EmptyNode.tsx +4 -7
  260. package/src/overlays/relationships-of/xyflow/RelationshipEdge.tsx +16 -15
  261. package/src/overlays/shared/xyflow/RelationshipEdge.css.ts +60 -0
  262. package/src/overlays/shared/xyflow/_types.ts +87 -0
  263. package/src/state/diagram-to-xyflow.ts +6 -7
  264. package/src/state/diagramStore.layout.ts +3 -4
  265. package/src/state/diagramStore.ts +63 -48
  266. package/src/theme-vars.css.ts +81 -0
  267. package/src/theme-vars.ts +8 -81
  268. package/src/ui/DiagramTitlePanel.tsx +7 -34
  269. package/src/ui/Link.tsx +40 -0
  270. package/src/ui/notation/NotationPanel.tsx +4 -2
  271. package/src/ui/top-left/ChangeAutoLayoutButton.tsx +2 -2
  272. package/src/ui/top-left/TopLeftPanel.tsx +5 -5
  273. package/src/utils/types.ts +6 -0
  274. package/src/xyflow/SelectEdgesOnNodeFocus.tsx +3 -3
  275. package/src/xyflow/XYFlow.tsx +2 -2
  276. package/src/xyflow/edges/EdgeLabel.tsx +26 -19
  277. package/src/xyflow/edges/RelationshipEdge.tsx +5 -3
  278. package/src/xyflow/edges/RelationshipsDropdownMenu.tsx +23 -10
  279. package/src/xyflow/edges/edges.css.ts +68 -74
  280. package/src/xyflow/edges/utils.ts +6 -6
  281. package/src/xyflow/nodes/AnimateVariants.ts +143 -0
  282. package/src/xyflow/nodes/Node.css.ts +44 -0
  283. package/src/xyflow/nodes/compound/CompoundNode.css.ts +27 -75
  284. package/src/xyflow/nodes/compound/CompoundNode.tsx +82 -163
  285. package/src/xyflow/nodes/element/ElementLink.tsx +2 -3
  286. package/src/xyflow/nodes/element/ElementNode.tsx +73 -252
  287. package/src/xyflow/nodes/element/element.css.ts +40 -64
  288. package/src/xyflow/nodes/shared/ElementIcon.tsx +1 -1
  289. package/src/xyflow/nodes/shared/Toolbar.tsx +51 -35
  290. package/src/xyflow/types.ts +48 -51
  291. package/src/xyflow/useLayoutConstraints.ts +10 -10
  292. package/src/xyflow/useXYFlowEvents.ts +31 -35
  293. package/src/xyflow/utils.ts +2 -2
  294. package/src/ui/OptionsPanel.css.ts +0 -9
  295. package/src/ui/OptionsPanel.tsx +0 -70
  296. package/src/ui/options/EdgeOptions.tsx +0 -142
  297. package/src/ui/options/NodeOptions.tsx +0 -362
  298. package/src/xyflow/nodes/element/ElementDetails.css.ts +0 -101
  299. package/src/xyflow/nodes/element/ElementDetails.tsx +0 -393
  300. package/src/xyflow/nodes/use-animate-variants.tsx +0 -64
@@ -0,0 +1,4 @@
1
+ import { DiagramState } from '../hooks';
2
+ import { GridAlignmentMode, LinearAlignmentMode } from './aligners';
3
+ export type AlignmentMode = LinearAlignmentMode | GridAlignmentMode;
4
+ export declare function align(get: () => DiagramState): (mode: AlignmentMode) => void;
@@ -0,0 +1,56 @@
1
+ import { nonexhaustive } from "@likec4/core";
2
+ import { getNodeDimensions } from "@xyflow/system";
3
+ import { hasAtLeast } from "remeda";
4
+ import { createLayoutConstraints } from "../xyflow/useLayoutConstraints.js";
5
+ import { GridAligner, getLinearAligner } from "./aligners.js";
6
+ function align(get) {
7
+ return (mode) => {
8
+ const { scheduleSaveManualLayout, xystore } = get();
9
+ const { nodeLookup, parentLookup } = xystore.getState();
10
+ const selectedNodes = new Set(nodeLookup.values().filter((n) => n.selected).map((n) => n.id));
11
+ const nodesToAlign = [...selectedNodes.difference(new Set(parentLookup.keys()))];
12
+ if (!hasAtLeast(nodesToAlign, 2)) {
13
+ console.warn("At least 2 nodes must be selected to align");
14
+ return;
15
+ }
16
+ const constraints = createLayoutConstraints(xystore, nodesToAlign);
17
+ const aligner = getAligner(mode);
18
+ constraints.onMove((nodes) => {
19
+ aligner.computeLayout(nodes.map(({ node }) => toNodeRect(node)));
20
+ nodes.forEach(({ rect, node }) => {
21
+ rect.positionAbsolute = {
22
+ ...rect.positionAbsolute,
23
+ ...aligner.applyPosition(toNodeRect(node))
24
+ };
25
+ });
26
+ });
27
+ scheduleSaveManualLayout();
28
+ };
29
+ }
30
+ function toNodeRect(node) {
31
+ return {
32
+ ...node.internals.positionAbsolute,
33
+ id: node.id,
34
+ width: getNodeDimensions(node).width,
35
+ height: getNodeDimensions(node).height
36
+ };
37
+ }
38
+ function getAligner(mode) {
39
+ switch (mode) {
40
+ case "Left":
41
+ case "Right":
42
+ case "Top":
43
+ case "Bottom":
44
+ case "Center":
45
+ case "Middle":
46
+ return getLinearAligner(mode);
47
+ case "Column":
48
+ case "Row":
49
+ return new GridAligner(mode);
50
+ default:
51
+ nonexhaustive(mode);
52
+ }
53
+ }
54
+ export {
55
+ align
56
+ };
package/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ .react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgb(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgb(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color, var(--xy-background-color-props, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}.likec4-diagram-root{overflow:hidden;position:relative;width:100%;height:100%;padding:0;margin:0;box-sizing:border-box;-webkit-font-smoothing:var(--mantine-webkit-font-smoothing);-moz-osx-font-smoothing:var(--mantine-moz-font-smoothing)}:where(.likec4-diagram-root) .mantine-ActionIcon-icon .tabler-icon{width:75%;height:75%}.likec4-diagram-root{--likec4-font-family: var(--likec4-default-font-family,'ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"');--likec4-background-color: var(--mantine-color-body);--likec4-background-pattern-color: var(--mantine-color-gray-4);--likec4-compound-font-family: var(--likec4-font-family);--likec4-compound-title-color: var(--likec4-element-loContrast);--likec4-element-font-family: var(--likec4-font-family);--likec4-element-fill: #3b82f6;--likec4-element-stroke: #2563eb;--likec4-element-hiContrast: #eff6ff;--likec4-element-loContrast: #bfdbfe;--likec4-relation-lineColor: #64748b;--likec4-relation-labelBg: #0f172a;--likec4-relation-labelColor: #cbd5e1}:where([data-mantine-color-scheme=dark]) .likec4-diagram-root{--likec4-background-pattern-color: var(--mantine-color-dark-5)}:where([data-likec4-color=primary]){--likec4-element-fill: #3b82f6;--likec4-element-stroke: #2563eb;--likec4-element-hiContrast: #eff6ff;--likec4-element-loContrast: #bfdbfe;--likec4-compound-title-color: #bfdbfe;--likec4-relation-lineColor: #3b82f6;--likec4-relation-labelBg: #172554;--likec4-relation-labelColor: #60a5fa}:where([data-likec4-color=primary][data-compound-depth="1"]){--likec4-element-fill: #145ed7;--likec4-element-stroke: #194bb8}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=primary][data-compound-depth="1"]){--likec4-element-fill: #1a5bc5;--likec4-element-stroke: #1e49a9}:where([data-likec4-color=primary][data-compound-depth="2"]){--likec4-element-fill: #195cc8;--likec4-element-stroke: #1d4aac}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=primary][data-compound-depth="2"]){--likec4-element-fill: #1e56b1;--likec4-element-stroke: #204698}:where([data-likec4-color=primary][data-compound-depth="3"]){--likec4-element-fill: #1e59ba;--likec4-element-stroke: #2149a0}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=primary][data-compound-depth="3"]){--likec4-element-fill: #21519f;--likec4-element-stroke: #224289}:where([data-likec4-color=primary][data-compound-depth="4"]){--likec4-element-fill: #2357ad;--likec4-element-stroke: #244795}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=primary][data-compound-depth="4"]){--likec4-element-fill: #234c8e;--likec4-element-stroke: #243f7a}:where([data-likec4-color=primary][data-compound-depth="5"]){--likec4-element-fill: #2755a0;--likec4-element-stroke: #27468a}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=primary][data-compound-depth="5"]){--likec4-element-fill: #25467d;--likec4-element-stroke: #243b6c}:where([data-likec4-color=primary][data-compound-depth="6"]){--likec4-element-fill: #2a5293;--likec4-element-stroke: #2a447f}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=primary][data-compound-depth="6"]){--likec4-element-fill: #25416d;--likec4-element-stroke: #24365f}:where([data-likec4-color=blue]){--likec4-element-fill: #3b82f6;--likec4-element-stroke: #2563eb;--likec4-element-hiContrast: #eff6ff;--likec4-element-loContrast: #bfdbfe;--likec4-compound-title-color: #bfdbfe;--likec4-relation-lineColor: #3b82f6;--likec4-relation-labelBg: #172554;--likec4-relation-labelColor: #60a5fa}:where([data-likec4-color=blue][data-compound-depth="1"]){--likec4-element-fill: #145ed7;--likec4-element-stroke: #194bb8}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=blue][data-compound-depth="1"]){--likec4-element-fill: #1a5bc5;--likec4-element-stroke: #1e49a9}:where([data-likec4-color=blue][data-compound-depth="2"]){--likec4-element-fill: #195cc8;--likec4-element-stroke: #1d4aac}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=blue][data-compound-depth="2"]){--likec4-element-fill: #1e56b1;--likec4-element-stroke: #204698}:where([data-likec4-color=blue][data-compound-depth="3"]){--likec4-element-fill: #1e59ba;--likec4-element-stroke: #2149a0}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=blue][data-compound-depth="3"]){--likec4-element-fill: #21519f;--likec4-element-stroke: #224289}:where([data-likec4-color=blue][data-compound-depth="4"]){--likec4-element-fill: #2357ad;--likec4-element-stroke: #244795}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=blue][data-compound-depth="4"]){--likec4-element-fill: #234c8e;--likec4-element-stroke: #243f7a}:where([data-likec4-color=blue][data-compound-depth="5"]){--likec4-element-fill: #2755a0;--likec4-element-stroke: #27468a}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=blue][data-compound-depth="5"]){--likec4-element-fill: #25467d;--likec4-element-stroke: #243b6c}:where([data-likec4-color=blue][data-compound-depth="6"]){--likec4-element-fill: #2a5293;--likec4-element-stroke: #2a447f}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=blue][data-compound-depth="6"]){--likec4-element-fill: #25416d;--likec4-element-stroke: #24365f}:where([data-likec4-color=secondary]){--likec4-element-fill: #0284c7;--likec4-element-stroke: #0369a1;--likec4-element-hiContrast: #f0f9ff;--likec4-element-loContrast: #B6ECF7;--likec4-compound-title-color: #B6ECF7;--likec4-relation-lineColor: #0ea5e9;--likec4-relation-labelBg: #082f49;--likec4-relation-labelColor: #38bdf8}:where([data-likec4-color=secondary][data-compound-depth="1"]){--likec4-element-fill: #086392;--likec4-element-stroke: #084f76}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=secondary][data-compound-depth="1"]){--likec4-element-fill: #0d5d86;--likec4-element-stroke: #0b4a6c}:where([data-likec4-color=secondary][data-compound-depth="2"]){--likec4-element-fill: #0c5e88;--likec4-element-stroke: #0b4b6e}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=secondary][data-compound-depth="2"]){--likec4-element-fill: #105579;--likec4-element-stroke: #0e4462}:where([data-likec4-color=secondary][data-compound-depth="3"]){--likec4-element-fill: #10597f;--likec4-element-stroke: #0e4767}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=secondary][data-compound-depth="3"]){--likec4-element-fill: #134e6c;--likec4-element-stroke: #103e57}:where([data-likec4-color=secondary][data-compound-depth="4"]){--likec4-element-fill: #135475;--likec4-element-stroke: #11435f}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=secondary][data-compound-depth="4"]){--likec4-element-fill: #154660;--likec4-element-stroke: #11384e}:where([data-likec4-color=secondary][data-compound-depth="5"]){--likec4-element-fill: #164f6c;--likec4-element-stroke: #133f58}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=secondary][data-compound-depth="5"]){--likec4-element-fill: #163f55;--likec4-element-stroke: #123345}:where([data-likec4-color=secondary][data-compound-depth="6"]){--likec4-element-fill: #194a64;--likec4-element-stroke: #153c51}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=secondary][data-compound-depth="6"]){--likec4-element-fill: #17384a;--likec4-element-stroke: #132d3c}:where([data-likec4-color=sky]){--likec4-element-fill: #0284c7;--likec4-element-stroke: #0369a1;--likec4-element-hiContrast: #f0f9ff;--likec4-element-loContrast: #B6ECF7;--likec4-compound-title-color: #B6ECF7;--likec4-relation-lineColor: #0ea5e9;--likec4-relation-labelBg: #082f49;--likec4-relation-labelColor: #38bdf8}:where([data-likec4-color=sky][data-compound-depth="1"]){--likec4-element-fill: #086392;--likec4-element-stroke: #084f76}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=sky][data-compound-depth="1"]){--likec4-element-fill: #0d5d86;--likec4-element-stroke: #0b4a6c}:where([data-likec4-color=sky][data-compound-depth="2"]){--likec4-element-fill: #0c5e88;--likec4-element-stroke: #0b4b6e}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=sky][data-compound-depth="2"]){--likec4-element-fill: #105579;--likec4-element-stroke: #0e4462}:where([data-likec4-color=sky][data-compound-depth="3"]){--likec4-element-fill: #10597f;--likec4-element-stroke: #0e4767}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=sky][data-compound-depth="3"]){--likec4-element-fill: #134e6c;--likec4-element-stroke: #103e57}:where([data-likec4-color=sky][data-compound-depth="4"]){--likec4-element-fill: #135475;--likec4-element-stroke: #11435f}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=sky][data-compound-depth="4"]){--likec4-element-fill: #154660;--likec4-element-stroke: #11384e}:where([data-likec4-color=sky][data-compound-depth="5"]){--likec4-element-fill: #164f6c;--likec4-element-stroke: #133f58}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=sky][data-compound-depth="5"]){--likec4-element-fill: #163f55;--likec4-element-stroke: #123345}:where([data-likec4-color=sky][data-compound-depth="6"]){--likec4-element-fill: #194a64;--likec4-element-stroke: #153c51}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=sky][data-compound-depth="6"]){--likec4-element-fill: #17384a;--likec4-element-stroke: #132d3c}:where([data-likec4-color=muted]){--likec4-element-fill: #64748b;--likec4-element-stroke: #475569;--likec4-element-hiContrast: #f8fafc;--likec4-element-loContrast: #cbd5e1;--likec4-compound-title-color: #cbd5e1;--likec4-relation-lineColor: #64748b;--likec4-relation-labelBg: #0f172a;--likec4-relation-labelColor: #cbd5e1}:where([data-likec4-color=muted][data-compound-depth="1"]){--likec4-element-fill: #4e5a6a;--likec4-element-stroke: #384250}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=muted][data-compound-depth="1"]){--likec4-element-fill: #4b5563;--likec4-element-stroke: #363e4b}:where([data-likec4-color=muted][data-compound-depth="2"]){--likec4-element-fill: #4c5665;--likec4-element-stroke: #363f4c}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=muted][data-compound-depth="2"]){--likec4-element-fill: #474f5c;--likec4-element-stroke: #333a45}:where([data-likec4-color=muted][data-compound-depth="3"]){--likec4-element-fill: #4a5360;--likec4-element-stroke: #353d48}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=muted][data-compound-depth="3"]){--likec4-element-fill: #424a54;--likec4-element-stroke: #30363f}:where([data-likec4-color=muted][data-compound-depth="4"]){--likec4-element-fill: #48505b;--likec4-element-stroke: #333a44}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=muted][data-compound-depth="4"]){--likec4-element-fill: #3e444d;--likec4-element-stroke: #2d323a}:where([data-likec4-color=muted][data-compound-depth="5"]){--likec4-element-fill: #454c56;--likec4-element-stroke: #323841}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=muted][data-compound-depth="5"]){--likec4-element-fill: #393e46;--likec4-element-stroke: #292e34}:where([data-likec4-color=muted][data-compound-depth="6"]){--likec4-element-fill: #434951;--likec4-element-stroke: #30353d}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=muted][data-compound-depth="6"]){--likec4-element-fill: #34383e;--likec4-element-stroke: #26292f}:where([data-likec4-color=slate]){--likec4-element-fill: #64748b;--likec4-element-stroke: #475569;--likec4-element-hiContrast: #f8fafc;--likec4-element-loContrast: #cbd5e1;--likec4-compound-title-color: #cbd5e1;--likec4-relation-lineColor: #64748b;--likec4-relation-labelBg: #0f172a;--likec4-relation-labelColor: #cbd5e1}:where([data-likec4-color=slate][data-compound-depth="1"]){--likec4-element-fill: #4e5a6a;--likec4-element-stroke: #384250}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=slate][data-compound-depth="1"]){--likec4-element-fill: #4b5563;--likec4-element-stroke: #363e4b}:where([data-likec4-color=slate][data-compound-depth="2"]){--likec4-element-fill: #4c5665;--likec4-element-stroke: #363f4c}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=slate][data-compound-depth="2"]){--likec4-element-fill: #474f5c;--likec4-element-stroke: #333a45}:where([data-likec4-color=slate][data-compound-depth="3"]){--likec4-element-fill: #4a5360;--likec4-element-stroke: #353d48}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=slate][data-compound-depth="3"]){--likec4-element-fill: #424a54;--likec4-element-stroke: #30363f}:where([data-likec4-color=slate][data-compound-depth="4"]){--likec4-element-fill: #48505b;--likec4-element-stroke: #333a44}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=slate][data-compound-depth="4"]){--likec4-element-fill: #3e444d;--likec4-element-stroke: #2d323a}:where([data-likec4-color=slate][data-compound-depth="5"]){--likec4-element-fill: #454c56;--likec4-element-stroke: #323841}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=slate][data-compound-depth="5"]){--likec4-element-fill: #393e46;--likec4-element-stroke: #292e34}:where([data-likec4-color=slate][data-compound-depth="6"]){--likec4-element-fill: #434951;--likec4-element-stroke: #30353d}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=slate][data-compound-depth="6"]){--likec4-element-fill: #34383e;--likec4-element-stroke: #26292f}:where([data-likec4-color=gray]){--likec4-element-fill: #737373;--likec4-element-stroke: #525252;--likec4-element-hiContrast: #fafafa;--likec4-element-loContrast: #d4d4d4;--likec4-compound-title-color: #d4d4d4;--likec4-relation-lineColor: #6E6E6E;--likec4-relation-labelBg: #18191b;--likec4-relation-labelColor: #C6C6C6}:where([data-likec4-color=gray][data-compound-depth="1"]){--likec4-element-fill: #595959;--likec4-element-stroke: #3f3f3f}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=gray][data-compound-depth="1"]){--likec4-element-fill: #545454;--likec4-element-stroke: #3c3c3c}:where([data-likec4-color=gray][data-compound-depth="2"]){--likec4-element-fill: #555555;--likec4-element-stroke: #3d3d3d}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=gray][data-compound-depth="2"]){--likec4-element-fill: #4e4e4e;--likec4-element-stroke: #383838}:where([data-likec4-color=gray][data-compound-depth="3"]){--likec4-element-fill: #525252;--likec4-element-stroke: #3a3a3a}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=gray][data-compound-depth="3"]){--likec4-element-fill: #484848;--likec4-element-stroke: #343434}:where([data-likec4-color=gray][data-compound-depth="4"]){--likec4-element-fill: #4e4e4e;--likec4-element-stroke: #383838}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=gray][data-compound-depth="4"]){--likec4-element-fill: #434343;--likec4-element-stroke: #303030}:where([data-likec4-color=gray][data-compound-depth="5"]){--likec4-element-fill: #4b4b4b;--likec4-element-stroke: #353535}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=gray][data-compound-depth="5"]){--likec4-element-fill: #3d3d3d;--likec4-element-stroke: #2b2b2b}:where([data-likec4-color=gray][data-compound-depth="6"]){--likec4-element-fill: #474747;--likec4-element-stroke: #333333}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=gray][data-compound-depth="6"]){--likec4-element-fill: #373737;--likec4-element-stroke: #272727}:where([data-likec4-color=red]){--likec4-element-fill: #AC4D39;--likec4-element-stroke: #853A2D;--likec4-element-hiContrast: #FBD3CB;--likec4-element-loContrast: #f5b2a3;--likec4-compound-title-color: #f5b2a3;--likec4-relation-lineColor: #AC4D39;--likec4-relation-labelBg: #b91c1c;--likec4-relation-labelColor: #f5b2a3}:where([data-likec4-color=red][data-compound-depth="1"]){--likec4-element-fill: #803e30;--likec4-element-stroke: #632f26}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=red][data-compound-depth="1"]){--likec4-element-fill: #773d30;--likec4-element-stroke: #5c2e26}:where([data-likec4-color=red][data-compound-depth="2"]){--likec4-element-fill: #793d31;--likec4-element-stroke: #5e2e26}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=red][data-compound-depth="2"]){--likec4-element-fill: #6c3a2f;--likec4-element-stroke: #542c25}:where([data-likec4-color=red][data-compound-depth="3"]){--likec4-element-fill: #723c31;--likec4-element-stroke: #582e27}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=red][data-compound-depth="3"]){--likec4-element-fill: #62372e;--likec4-element-stroke: #4c2a24}:where([data-likec4-color=red][data-compound-depth="4"]){--likec4-element-fill: #6a3b31;--likec4-element-stroke: #522d27}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=red][data-compound-depth="4"]){--likec4-element-fill: #58342c;--likec4-element-stroke: #442823}:where([data-likec4-color=red][data-compound-depth="5"]){--likec4-element-fill: #633a31;--likec4-element-stroke: #4d2c27}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=red][data-compound-depth="5"]){--likec4-element-fill: #4f312a;--likec4-element-stroke: #3d2521}:where([data-likec4-color=red][data-compound-depth="6"]){--likec4-element-fill: #5d3931;--likec4-element-stroke: #482b27}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=red][data-compound-depth="6"]){--likec4-element-fill: #462d28;--likec4-element-stroke: #36231f}:where([data-likec4-color=green]){--likec4-element-fill: #428a4f;--likec4-element-stroke: #2d5d39;--likec4-element-hiContrast: #f8fafc;--likec4-element-loContrast: #c2f0c2;--likec4-compound-title-color: #c2f0c2;--likec4-relation-lineColor: #15803d;--likec4-relation-labelBg: #052e16;--likec4-relation-labelColor: #22c55e}:where([data-likec4-color=green][data-compound-depth="1"]){--likec4-element-fill: #35683e;--likec4-element-stroke: #24462d}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=green][data-compound-depth="1"]){--likec4-element-fill: #34613c;--likec4-element-stroke: #24412b}:where([data-likec4-color=green][data-compound-depth="2"]){--likec4-element-fill: #35623d;--likec4-element-stroke: #24422c}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=green][data-compound-depth="2"]){--likec4-element-fill: #325839;--likec4-element-stroke: #223c29}:where([data-likec4-color=green][data-compound-depth="3"]){--likec4-element-fill: #345d3c;--likec4-element-stroke: #243e2a}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=green][data-compound-depth="3"]){--likec4-element-fill: #305136;--likec4-element-stroke: #213626}:where([data-likec4-color=green][data-compound-depth="4"]){--likec4-element-fill: #33573a;--likec4-element-stroke: #233b29}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=green][data-compound-depth="4"]){--likec4-element-fill: #2d4932;--likec4-element-stroke: #1f3123}:where([data-likec4-color=green][data-compound-depth="5"]){--likec4-element-fill: #335238;--likec4-element-stroke: #223728}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=green][data-compound-depth="5"]){--likec4-element-fill: #2b422f;--likec4-element-stroke: #1d2c21}:where([data-likec4-color=green][data-compound-depth="6"]){--likec4-element-fill: #324d37;--likec4-element-stroke: #223426}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=green][data-compound-depth="6"]){--likec4-element-fill: #283a2b;--likec4-element-stroke: #1b271e}:where([data-likec4-color=amber]){--likec4-element-fill: #A35829;--likec4-element-stroke: #7E451D;--likec4-element-hiContrast: #FFE0C2;--likec4-element-loContrast: #f9b27c;--likec4-compound-title-color: #f9b27c;--likec4-relation-lineColor: #b45309;--likec4-relation-labelBg: #78350f;--likec4-relation-labelColor: #FFE0C2}:where([data-likec4-color=amber][data-compound-depth="1"]){--likec4-element-fill: #794524;--likec4-element-stroke: #5e361a}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=amber][data-compound-depth="1"]){--likec4-element-fill: #704225;--likec4-element-stroke: #56331b}:where([data-likec4-color=amber][data-compound-depth="2"]){--likec4-element-fill: #724325;--likec4-element-stroke: #58341b}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=amber][data-compound-depth="2"]){--likec4-element-fill: #663e25;--likec4-element-stroke: #4e301b}:where([data-likec4-color=amber][data-compound-depth="3"]){--likec4-element-fill: #6b4126;--likec4-element-stroke: #52321c}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=amber][data-compound-depth="3"]){--likec4-element-fill: #5c3a25;--likec4-element-stroke: #472d1b}:where([data-likec4-color=amber][data-compound-depth="4"]){--likec4-element-fill: #643e27;--likec4-element-stroke: #4d301d}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=amber][data-compound-depth="4"]){--likec4-element-fill: #533624;--likec4-element-stroke: #402a1a}:where([data-likec4-color=amber][data-compound-depth="5"]){--likec4-element-fill: #5d3c28;--likec4-element-stroke: #472f1d}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=amber][data-compound-depth="5"]){--likec4-element-fill: #493223;--likec4-element-stroke: #38261a}:where([data-likec4-color=amber][data-compound-depth="6"]){--likec4-element-fill: #563a28;--likec4-element-stroke: #422d1e}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=amber][data-compound-depth="6"]){--likec4-element-fill: #412d21;--likec4-element-stroke: #322319}:where([data-likec4-color=indigo]){--likec4-element-fill: #6366f1;--likec4-element-stroke: #4f46e5;--likec4-element-hiContrast: #eef2ff;--likec4-element-loContrast: #c7d2fe;--likec4-compound-title-color: #c7d2fe;--likec4-relation-lineColor: #6366f1;--likec4-relation-labelBg: #1e1b4b;--likec4-relation-labelColor: #818cf8}:where([data-likec4-color=indigo][data-compound-depth="1"]){--likec4-element-fill: #2529e1;--likec4-element-stroke: #2d24c2}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=indigo][data-compound-depth="1"]){--likec4-element-fill: #2529d3;--likec4-element-stroke: #3028b2}:where([data-likec4-color=indigo][data-compound-depth="2"]){--likec4-element-fill: #2428d7;--likec4-element-stroke: #3028b5}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=indigo][data-compound-depth="2"]){--likec4-element-fill: #282bbf;--likec4-element-stroke: #312aa1}:where([data-likec4-color=indigo][data-compound-depth="3"]){--likec4-element-fill: #292cc8;--likec4-element-stroke: #322ba9}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=indigo][data-compound-depth="3"]){--likec4-element-fill: #2b2dac;--likec4-element-stroke: #312b91}:where([data-likec4-color=indigo][data-compound-depth="4"]){--likec4-element-fill: #2d30ba;--likec4-element-stroke: #342e9e}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=indigo][data-compound-depth="4"]){--likec4-element-fill: #2c2f99;--likec4-element-stroke: #302c82}:where([data-likec4-color=indigo][data-compound-depth="5"]){--likec4-element-fill: #3133ac;--likec4-element-stroke: #363092}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=indigo][data-compound-depth="5"]){--likec4-element-fill: #2d2f87;--likec4-element-stroke: #2f2b73}:where([data-likec4-color=indigo][data-compound-depth="6"]){--likec4-element-fill: #34369f;--likec4-element-stroke: #373287}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=indigo][data-compound-depth="6"]){--likec4-element-fill: #2d2e76;--likec4-element-stroke: #2e2b65}._2h8g8h1{opacity:0}.react-flow._2h8g8h0{--xy-background-color: var(--likec4-background-color);--xy-background-pattern-color: var(--likec4-background-pattern-color)}.react-flow._2h8g8h0._2h8g8h3{--likec4-background-color: transparent !important;--xy-background-color: transparent !important;background-color:transparent!important}:where(._2h8g8h4,._2h8g8h3) .react-flow__attribution{display:none}@supports (hanging-punctuation: first) and (font: -apple-system-body) and (-webkit-appearance: none){._2h8g8h0{--likec4-safari-animation-hook: }}._16mg60z0{margin-inline-end:4px}:where(._16mg60z0) .tabler-icon{opacity:.8;width:70%;height:70%}@keyframes bexn7q7{0%{stroke-dashoffset:46}to{stroke-dashoffset:10}}.bexn7q1{--bexn7q0: black;--xy-edge-stroke: var(--likec4-relation-lineColor);--xy-edge-stroke-selected: color-mix(in srgb, var(--likec4-relation-lineColor), var(--bexn7q0) 35%);--xy-edge-label-color: color-mix(in srgb, var(--likec4-relation-labelColor), rgba(255 255 255 / .85) 40%);--xy-edge-label-background-color: color-mix(in srgb, var(--likec4-relation-labelBg), transparent 40%);--xy-edge-stroke-width: 3}:where([data-mantine-color-scheme=dark]) .bexn7q1{--bexn7q0: white;--xy-edge-label-color: var(--likec4-relation-labelColor);--xy-edge-label-background-color: color-mix(in srgb, var(--likec4-relation-labelBg), transparent 50%)}:where(.react-flow__edge.selected) .bexn7q1{--xy-edge-stroke: var(--xy-edge-stroke-selected);--xy-edge-stroke-width: 3}.bexn7q1:is([data-edge-hovered=true],[data-edge-active=true]){--xy-edge-stroke: var(--xy-edge-stroke-selected);--xy-edge-stroke-width: 3}:where(.react-flow__edge.selected) .bexn7q1[data-edge-hovered=true]{--xy-edge-stroke-width: 4}.likec4-diagram .react-flow__edges>svg{mix-blend-mode:plus-lighter}:where([data-mantine-color-scheme=light]) .likec4-diagram .react-flow__edges>svg{mix-blend-mode:screen}.likec4-diagram .react-flow__edges>svg:has(.bexn7q2){opacity:.6;transition:opacity .6s ease-in-out,filter .6s ease-in-out;transition-delay:.2s;filter:grayscale(.85) var(--likec4-safari-animation-hook, blur(1px));will-change:opacity,filter}.bexn7q3{stroke-opacity:.08;transition-property:stroke-width,stroke-opacity;transition-duration:155ms;transition-timing-function:ease-out}:where(.react-flow__edge.selected,[data-edge-active=true],[data-edge-hovered=true]) .bexn7q3{stroke-width:calc(var(--xy-edge-stroke-width) + 8);stroke-opacity:.15}.bexn7q4{fill:var(--xy-edge-stroke);stroke:var(--xy-edge-stroke)}.bexn7q5{fill:var(--xy-edge-stroke);stroke:var(--xy-edge-stroke);fill-opacity:.75;stroke-width:1;cursor:grab;pointer-events:auto;visibility:hidden}.bexn7q5:hover{stroke:var(--mantine-primary-color-filled-hover);stroke-width:9;transition:stroke .1s ease-out,stroke-width .1s ease-out}:where(.react-flow__edge.selected,[data-edge-hovered=true]) .bexn7q5{visibility:visible;transition:fill-opacity .15s ease-out,stroke .15s ease-out,stroke-width .15s ease-out;transition-delay:50ms;fill-opacity:1;stroke-width:5}.bexn7q6{cursor:grabbing}.bexn7q6 *{cursor:grabbing!important}.bexn7q8{animation-duration:.8s;animation-iteration-count:infinite;animation-timing-function:linear;animation-fill-mode:both;stroke-dashoffset:10}:where([data-edge-hovered=true]) .bexn7q8{animation-name:bexn7q7;animation-delay:.45s;transition:stroke .13s ease-out,stroke-width .13s ease-out}:where(.react-flow__edge.selected,[data-edge-active=true],[data-edge-animated=true]) .bexn7q8{animation-name:bexn7q7;animation-delay:0ms;transition:stroke .13s ease-out,stroke-width .13s ease-out}:where([data-edge-dir=back]) .bexn7q8{animation-direction:reverse}.bexn7q2 .bexn7q8{animation-play-state:paused}.bexn7q9{flex:0 0 auto;font-weight:600;font-size:calc(.875rem * var(--mantine-scale));line-height:1;padding:5px;text-align:center;min-width:22px;border-top-left-radius:2px;border-bottom-left-radius:2px;background-color:color-mix(in srgb,var(--likec4-relation-labelBg),var(--bexn7q0) 5%);font-variant-numeric:tabular-nums}:where([data-mantine-color-scheme=dark]) :where([data-likec4-color=gray]) .bexn7q9{background-color:color-mix(in srgb,var(--likec4-relation-labelBg),var(--bexn7q0) 15%)}:where([data-edge-active=true]) .bexn7q9{background-color:transparent}.bexn7qd{--bexn7qc: translate(var(--bexn7qa, -50%), var(--bexn7qb, -50%));top:0;left:0;padding:2px 4px 4px;font-family:var(--likec4-font-family);display:flex;position:absolute;pointer-events:all;cursor:pointer;width:fit-content;transform-origin:50% 50%;mix-blend-mode:plus-lighter;color:var(--xy-edge-label-color);background-color:var(--xy-edge-label-background-color);border-radius:2px;transform:var(--bexn7qc)}.bexn7qd[data-edge-hovered=true]{transition:all .14s ease-in-out;transform:var(--bexn7qc) scale(1.12)}.bexn7qd:has(.bexn7q9){padding:0;gap:2px}.bexn7qd:is(.bexn7q2){opacity:.3;transition:opacity .6s ease-in-out,filter .6s ease-in-out;transition-delay:.2s;filter:grayscale(.85) var(--likec4-safari-animation-hook, blur(1px));will-change:opacity,filter}.bexn7qe{white-space-collapse:preserve-breaks;font-size:calc(.875rem * var(--mantine-scale));line-height:1.185}.bexn7qf{text-align:center;white-space-collapse:preserve-breaks;font-size:calc(.6875rem * var(--mantine-scale));line-height:1;opacity:.75}.bexn7qd:has(.bexn7q9) .bexn7qe{padding:2px 5px 4px 2px}.bexn7qg{position:absolute;top:4px;right:4px;z-index:9}.bexn7qh{--text-fz: var(--mantine-font-size-sm);-webkit-user-select:all;user-select:all;text-align:left;white-space-collapse:preserve-breaks;text-wrap:pretty;line-height:1.25}.bexn7qi{--ai-bg: var(--likec4-relation-labelBg);--ai-hover: color-mix(in srgb , var(--likec4-relation-labelBg), var(--bexn7q0) 10%);z-index:calc(var(--layer-overlays, 1) + 1);pointer-events:all;color:var(--xy-edge-label-color);cursor:pointer;opacity:1;transition:all .13s cubic-bezier(.5,0,.2,1);background-color:var(--ai-bg)}.bexn7qi:hover{transform:translateY(1px) scale(1.15)}.bexn7qi:active{transform:translateY(-1px) scale(.9)}.bexn7qi .tabler-icon{width:80%;height:80%;stroke-width:2}@media (min-width: 62em){.bexn7qh{--text-fz: var(--mantine-font-size-md)}}.qcv9lq0{min-width:250px;max-width:min(90vw,500px)}.qcv9lq1{gap:4px}.qcv9lq2{display:block;font-size:10px;font-weight:500;white-space:nowrap;padding:2px 5px;border-radius:2px;background:color-mix(in srgb,var(--likec4-element-fill),transparent 45%);line-height:1.1}:where([data-mantine-color-scheme=dark]) .qcv9lq2{color:var(--likec4-element-loContrast)}.qcv9lq3{white-space-collapse:preserve-breaks;font-size:var(--mantine-font-size-sm)}._10w34w70{z-index:100;width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:2px;justify-content:center;pointer-events:none}._1jdst3q0{--ai-bg-idle: color-mix(in srgb , var(--likec4-element-fill), transparent 99%);--ai-bg: var(--ai-bg-idle);--ai-bg-hover: color-mix(in srgb , var(--likec4-element-fill) 65%, var(--likec4-element-stroke));--ai-hover: color-mix(in srgb , var(--likec4-element-fill) 50%, var(--likec4-element-stroke));pointer-events:all;color:var(--likec4-element-loContrast);cursor:pointer;background-color:var(--ai-bg)}._1jdst3q0:hover{box-shadow:var(--mantine-shadow-md)}:where([data-mantine-color-scheme=light]) .likec4-compound-transparent ._1jdst3q0{--ai-bg-hover: color-mix(in srgb , var(--likec4-element-fill), transparent 20%);--ai-hover: color-mix(in srgb , var(--likec4-element-fill), transparent 10%);--ai-bg: color-mix(in srgb , var(--likec4-element-fill), transparent 99%);color:var(--likec4-element-stroke);opacity:.85}._12hvjem0{position:absolute;left:3px;top:6px}._12hvjem1{position:absolute;top:2px;right:2px}:where([data-likec4-shape=browser]) ._12hvjem1{right:5px}:where([data-likec4-shape=cylinder],[data-likec4-shape=storage]) ._12hvjem1{top:14px}:where([data-likec4-shape=queue]) ._12hvjem1{top:1px;right:12px}._12hvjem2{z-index:100;position:absolute;left:0;width:100%;bottom:2px;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;pointer-events:none}:where([data-likec4-shape=browser]) ._12hvjem2{bottom:4px}@keyframes _1b6tkn4{0%{stroke-opacity:.8}to{stroke-opacity:.5}}._1b6tkn1{--_1b6tkn0: color-mix(in srgb, var(--likec4-element-stroke) 90%, var(--likec4-element-fill));position:absolute;top:0;left:0;width:100%;height:100%;padding:0;margin:0;display:flex;align-items:center;justify-content:center}._1b6tkn1:after{content:" ";position:absolute;top:100%;left:0;right:0;height:16px;background:transparent;pointer-events:all}:where(.react-flow__node.selected) ._1b6tkn1{will-change:transform}._1b6tkn2{top:50%;left:50%;visibility:hidden}._1b6tkn3{will-change:transform}._1b6tkn6{--_1b6tkn5: var(--likec4-element-loContrast);stroke:var(--_1b6tkn5);fill:none;transform-origin:center center;stroke-width:6;animation-duration:1s;animation-iteration-count:infinite;animation-direction:alternate;stroke-opacity:.8;visibility:hidden}:where(.react-flow__node.selected) ._1b6tkn6{visibility:visible;animation-name:var(--likec4-safari-animation-hook, _1b6tkn4)}:where(.react-flow__node:focus-visible,._1b6tkn1:focus-visible) ._1b6tkn6{stroke-width:10;stroke:var(--mantine-primary-color-outline, var(--mantine-primary-color-filled, var(--likec4-element-stroke)));visibility:visible}:where([data-likec4-shape=queue],[data-likec4-shape=cylinder],[data-likec4-shape=storage]) ._1b6tkn6{stroke-width:10}:where([data-mantine-color-scheme=light]) ._1b6tkn6{--_1b6tkn5: color-mix(in srgb, var(--likec4-element-fill) 50%, #3c3c3c)}._1b6tkn7{fill:var(--likec4-element-fill)}._1b6tkn8{fill:var(--likec4-element-stroke)}._1b6tkn9{fill:var(--_1b6tkn0, color-mix(in srgb, var(--likec4-element-stroke) 90%, var(--likec4-element-fill)))}._1b6tknd{flex:0 0 auto;font-family:var(--likec4-element-font-family);font-optical-sizing:auto;font-style:normal;text-align:var(--_1b6tknb);font-weight:500;font-size:19px;line-height:1.15;text-wrap:balance;color:var(--likec4-element-hiContrast);white-space-collapse:preserve-breaks}._1b6tkne{flex:0 1 auto;font-family:var(--likec4-element-font-family);font-optical-sizing:auto;font-style:normal;font-weight:400;font-size:14px;line-height:1.2;text-align:var(--_1b6tknb);text-wrap:pretty;color:var(--likec4-element-loContrast);white-space-collapse:preserve-breaks;text-overflow:ellipsis;overflow:hidden}:where(._1b6tkna) ._1b6tkne{text-wrap:wrap}._1b6tknf{flex:0 0 auto;font-family:var(--likec4-element-font-family);font-optical-sizing:auto;font-style:normal;font-weight:400;font-size:12px;line-height:1.125;text-align:var(--_1b6tknb);text-wrap:balance;opacity:.92;color:var(--likec4-element-loContrast)}._1b6tkn1:hover ._1b6tknf{opacity:1}._1b6tkng{--_1b6tknc: 48px;flex:1;height:fit-content;display:flex;align-items:center;justify-content:center;flex-direction:row;padding:calc(1.5rem * var(--mantine-scale));overflow:hidden;gap:calc(.625rem * var(--mantine-scale))}:where([data-likec4-shape=queue],[data-likec4-shape=mobile]) ._1b6tkng{padding-left:40px;padding-right:20px}:where([data-likec4-shape=cylinder],[data-likec4-shape=storage]) ._1b6tkng{padding-top:30px}:where([data-likec4-shape=browser]) ._1b6tkng{padding-top:32px;padding-bottom:28px}._1b6tkn1:not(:is([data-likec4-shape=queue],[data-likec4-shape=mobile])) ._1b6tkng:is(._1b6tkna){padding-left:24px;padding-right:18px}._1b6tkng:has(._1b6tkne,._1b6tknf){--_1b6tknc: 60px;gap:calc(1rem * var(--mantine-scale))}._1b6tknh{--_1b6tknb: center;height:fit-content;width:max-content;display:flex;flex-direction:column;align-items:stretch;justify-content:center;flex-wrap:nowrap;overflow:hidden;gap:calc(.5rem * var(--mantine-scale))}._1b6tknh:has(._1b6tkne):has(._1b6tknf){gap:calc(.375rem * var(--mantine-scale))}:where(._1b6tkna) ._1b6tknh{--_1b6tknb: left;min-width:calc(100% - 160px);align-items:flex-start}._1b6tkni{flex:0 0 var(--_1b6tknc);height:var(--_1b6tknc);width:var(--_1b6tknc);display:flex;align-items:center;justify-content:center;mix-blend-mode:hard-light;align-self:flex-start}._1b6tkni svg,._1b6tkni img{width:100%;height:auto;max-height:100%;pointer-events:none;filter:drop-shadow(0 0 3px rgb(0 0 0 / 12%)) drop-shadow(0 1px 8px rgb(0 0 0 / 8%)) drop-shadow(1px 1px 16px rgb(0 0 0 / 3%))}._1b6tkni img{object-fit:contain}._1b6tknk{top:0;left:0;position:absolute;pointer-events:none;transform-origin:50% 50%;fill:var(--likec4-element-fill);stroke:none;z-index:-1;transition:opacity .5s ease-out;transform:translate(8px,10px);opacity:.5}:where(.react-flow__node.selected,.react-flow__node:focus-visible,._1b6tkn1:focus-visible) ._1b6tknk{visibility:hidden}:where([data-likec4-shape=cylinder],[data-likec4-shape=storage]) ._1b6tknk{transform:translate(8px,8px)}:where([data-likec4-shape=queue]) ._1b6tknk{transform:translate(-10px,8px)}._1b6tknl{--_1b6tknj: drop-shadow(0 2px 1px rgba(0, 0, 0, .21)) drop-shadow(0 1px 1px color-mix(in srgb, var(--likec4-element-stroke) 40%, transparent)) drop-shadow(0 5px 3px rgba(0, 0, 0, .1)) ;top:0;left:0;position:absolute;width:100%;height:100%;pointer-events:none;fill:var(--likec4-element-fill);stroke:var(--likec4-element-stroke);overflow:visible;filter:var(--_1b6tknj);transition:filter .3s ease-out;transition-delay:0ms;z-index:-1}:where(.react-flow__node.selected,.react-flow__node:focus-visible,._1b6tkn1:focus-visible) ._1b6tknl{--_1b6tknj: none}._1b6tknm{z-index:100;position:absolute;left:0;width:100%;bottom:2px;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:2px;justify-content:center;pointer-events:none}:where([data-likec4-shape=browser]) ._1b6tknm{bottom:4px}@keyframes lbtzdoe{0%{opacity:.6}to{opacity:.3}}.lbtzdo0{position:relative;width:100%;height:100%}.lbtzdo2{--lbtzdo1: 18px;width:100%;height:100%;position:relative;padding:0;margin:0}.lbtzdo2:before{content:" ";position:absolute;top:0;left:-16px;width:16px;height:min(100%,80px);pointer-events:all;background:transparent}.lbtzdo3{top:50%;left:50%;visibility:hidden}:where([data-mantine-color-scheme=dark] .likec4-compound-transparent){--_compound-border-color: color-mix(in srgb, var(--likec4-compound-title-color) 25%, var(--likec4-element-stroke))}:where([data-mantine-color-scheme=light] .likec4-compound-transparent){--_compound-title-color: var(--likec4-element-stroke)}.lbtzdo8{--lbtzdo6: 6px;width:100%;height:100%;position:relative;border-radius:var(--lbtzdo6);box-shadow:0 4px 10px .5px #0000001a,0 2px 2px -1px #0006;padding:0;margin:0;transition:all .2s ease-out;cursor:default}.lbtzdo8:before{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;border:1px solid transparent;border-radius:var(--lbtzdo6);transition:background 175ms ease-out,opacity 175ms ease-out;background:var(--likec4-element-fill);background-clip:border-box}:where(.react-flow__node.selected) .lbtzdo8{box-shadow:none}:where(.react-flow__node:focus-visible) .lbtzdo8{transition-duration:0ms;outline:3px solid var(--mantine-primary-color-outline, var(--mantine-primary-color-filled, var(--likec4-element-stroke)));outline-offset:calc(.09375rem * var(--mantine-scale))}.lbtzdo9{display:flex;align-items:center;gap:6px;padding-left:14px;padding-top:6px;min-height:30px;padding-right:2px}:where(.react-flow__node.draggable) .lbtzdo9{cursor:grab}:where(.likec4-compound-transparent) .lbtzdo9{padding-top:3px}.lbtzdoa{padding-left:32px}.lbtzdoc{--lbtzdo5: var(--_compound-border-color,var(--likec4-element-stroke));--lbtzdob: 0;border-style:dashed;border-width:3px;box-shadow:none;border-color:color-mix(in srgb,var(--lbtzdo5),transparent var(--lbtzdo7, 5%))}.lbtzdoc:before{border-radius:unset;transition-delay:.1s;opacity:calc(var(--lbtzdo4, 1) + var(--lbtzdob))}:where([data-hovered]) .lbtzdoc{--lbtzdob: .08}.lbtzdod{flex:1;font-family:var(--likec4-compound-font-family);font-weight:600;font-size:calc(.9375rem * var(--mantine-scale));text-transform:uppercase;letter-spacing:.2px;color:var(--_compound-title-color,var(--likec4-compound-title-color));mix-blend-mode:screen}.lbtzdoh{--lbtzdof: var(--likec4-element-loContrast);--lbtzdog: 6;position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible;visibility:hidden}:where(.react-flow__node.selected:not(:focus-visible)) .lbtzdoh{visibility:visible}:where(.react-flow__node:focus-within:not(.selected)) .lbtzdoh{--lbtzdof: color-mix(in srgb, var(--likec4-element-stroke) 30%, var(--likec4-element-loContrast));--lbtzdog: 8}:where([data-mantine-color-scheme=light]) .lbtzdoh{--lbtzdof: color-mix(in srgb, var(--likec4-element-stroke) 80%, #000)}.lbtzdoh rect{stroke:var(--lbtzdof);transform-origin:center center;stroke-width:var(--lbtzdog);animation-duration:.8s;animation-name:lbtzdoe;animation-iteration-count:infinite;animation-direction:alternate;fill:none}.lbtzdo2{--lbtzdoi: var(--likec4-element-loContrast)}:where([data-mantine-color-scheme=light] .likec4-compound-transparent){--lbtzdoi: var(--likec4-element-stroke)}.lbtzdoj{flex:0 0 var(--lbtzdo1);height:var(--lbtzdo1);width:var(--lbtzdo1);display:flex;align-items:center;justify-content:center;mix-blend-mode:luminosity}.lbtzdoj svg,.lbtzdoj img{width:100%;height:auto;max-height:100%;pointer-events:none;filter:drop-shadow(0 0 3px rgb(0 0 0 / 10%)) drop-shadow(0 1px 8px rgb(0 0 0 / 8%)) drop-shadow(1px 1px 16px rgb(0 0 0 / 3%))}.lbtzdoj img{object-fit:contain}.hbkbtj0{bottom:0;left:0;padding:8px;margin:0}.hbkbtj1{cursor:default;min-width:200px;max-width:calc(100vw - 16px);background-color:color-mix(in srgb,var(--mantine-color-body),transparent 20%);-webkit-backdrop-filter:var(--likec4-safari-animation-hook, blur(8px));backdrop-filter:var(--likec4-safari-animation-hook, blur(8px))}:where([data-mantine-color-scheme=dark]) .hbkbtj1{background-color:color-mix(in srgb,var(--mantine-color-dark-6),transparent 20%)}.hbkbtj3{white-space-collapse:preserve-breaks;color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .hbkbtj3{color:var(--mantine-color-gray-5)}@media (min-width: 48em){.hbkbtj1{min-width:250px;max-width:90vw}}@media (min-width: 62em){.hbkbtj1{min-width:350px;max-width:70vw}}._2jkb2y0{position:absolute;bottom:.5rem;left:50%;transform:translate(-50%);padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem;align-items:center}._2jkb2y1{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all 175ms ease-in}._2jkb2y1:hover{transition-timing-function:ease-out;transform:scale(1.1)}._2jkb2y1:active{transition-duration:.1s;transform:scale(.98) translateY(3px)}._2jkb2y3{--_2jkb2y2: 35%;--button-bg: color-mix(in srgb, var(--mantine-primary-color-filled), transparent var(--_2jkb2y2));--button-hover: color-mix(in srgb, var(--mantine-primary-color-filled-hover), transparent var(--_2jkb2y2));transition:all 175ms ease-in;background-color:var(--button-bg)}[data-mantine-color-scheme=light] ._2jkb2y3{--_2jkb2y2: 15%}:where(._2jkb2y1,._2jkb2y3) .tabler-icon{width:.85em;height:.85em}._2jkb2y4{position:absolute;margin:0;padding:0;top:0;left:0;width:100%;height:100%;border:2px solid var(--mantine-color-orange-6);pointer-events:none}@media (min-width: 62em){._2jkb2y0{gap:.6rem}._2jkb2y4{border-width:4px}}._1snasyb0{gap:calc(var(--mantine-spacing-xs) / 1.5)}._1snasyb1{top:var(--likec4-navigation-webview-top, 1rem);left:var(--likec4-navigation-webview-left, 1rem);gap:calc(var(--mantine-spacing-xs) / 1.5);margin:0}.likec4-top-left-panel .action-icon{--ai-size: 2rem}.likec4-top-left-panel .action-icon .tabler-icon{width:65%;height:65%}._1snasyb2{box-shadow:var(--mantine-shadow-md)}._1snasyb3 .tabler-icon{width:65%;height:65%}._1snasyb4{flex:1 1 40%;text-align:center;font-weight:500;padding:4px 6px;font-size:calc(.6875rem * var(--mantine-scale));z-index:1}._1snasyb5{background:var(--mantine-color-gray-2);border-radius:var(--mantine-radius-sm);border:1px solid var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) ._1snasyb5{background:var(--mantine-color-dark-5);border-color:var(--mantine-color-dark-4)}._1snasyb6{position:relative;border-radius:var(--mantine-radius-sm);background:var(--mantine-color-gray-3);box-shadow:inset 1px 1px 3px #00000024}:where([data-mantine-color-scheme=dark]) ._1snasyb6{background:var(--mantine-color-dark-7)}._1snasyb7{position:absolute;width:8px;height:8px;border:2px solid var(--mantine-color-gray-5);border-radius:3px;transform:translate(-50%,-50%)}._1ncdyfa0{bottom:0;right:0;padding:8px;margin:0}._1ncdyfa1{cursor:default;-webkit-user-select:none;user-select:none;min-width:200px;max-width:calc(100vw - 20px);background-color:color-mix(in srgb,var(--mantine-color-body),transparent 20%);-webkit-backdrop-filter:var(--likec4-safari-animation-hook, blur(8px));backdrop-filter:var(--likec4-safari-animation-hook, blur(8px))}:where([data-mantine-color-scheme=dark]) ._1ncdyfa1{background-color:color-mix(in srgb,var(--mantine-color-dark-6),transparent 20%)}._1ncdyfa2{padding:calc(var(--mantine-spacing-xs) / 2)}._1ncdyfa3{--_1b6tkn0: color-mix(in srgb, var(--likec4-element-stroke) 90%, var(--likec4-element-fill));background-color:transparent;transition:all .1s ease-in}._1ncdyfa3:hover{transition:all .12s ease-out;background-color:color-mix(in srgb,var(--mantine-primary-color-2),transparent 50%)}:where([data-mantine-color-scheme=dark]) ._1ncdyfa3:hover{background-color:color-mix(in srgb,var(--mantine-color-dark-3),transparent 60%)}._1ncdyfa4{fill:var(--likec4-element-fill);stroke:var(--likec4-element-stroke);stroke-width:1;overflow:visible;width:100%;height:auto;filter:drop-shadow(0 2px 3px rgb(0 0 0 / 22%)) drop-shadow(0 1px 8px rgb(0 0 0 / 10%))}._1ncdyfa5{--badge-radius: 2px;--badge-fz: 9.5px;--badge-padding-x: 3px;--badge-height: 13.5px;--badge-lh: 1;font-weight:500;letter-spacing:.2px;padding-top:0;padding-bottom:0;text-transform:lowercase;transition:all .15s ease-in-out;cursor:pointer}@media (min-width: 48em){._1ncdyfa1{min-width:300px;max-width:65vw}}@media (min-width: 62em){._1ncdyfa1{max-width:40vw}}._1n45dyn0{display:inline-flex;align-items:center;padding:6px 2px 0}._1n45dyn0 .mantine-Text-root{font-size:var(--mantine-font-size-xs);font-weight:500;line-height:1}._1n45dyn1{padding-left:4px;grid-column:1}._1n45dyn2{grid-column:2}._1n45dyn3{grid-column:3;padding-right:4px}._1n45dyn4{display:grid;grid-column-start:1;grid-column-end:4;border-bottom:1px solid var(--mantine-color-default-border);margin-bottom:0;padding:0 4px 5px}._1n45dyn4 .mantine-Text-root{font-size:var(--mantine-font-size-sm);font-weight:400;color:var(--mantine-color-dimmed)}._1n45dyn5{display:contents}._1n45dyn5:last-child ._1n45dyn4{border-bottom:none;margin-bottom:0}._1n45dyn5>*{transition:all .15s ease-in}._1n45dyn5:is(:hover,[data-selected=true])>*{transition:all .15s ease-out;cursor:pointer;background-color:var(--mantine-color-default-hover)}._1n45dyn6{display:grid;grid-template-columns:1fr 30px 1fr;grid-auto-rows:min-content max-content;gap:0;align-items:stretch}._1n45dyn7{display:grid;grid-template-columns:min-content 1fr;grid-auto-rows:min-content max-content;gap:10px 12px;align-items:baseline;justify-items:start}._144zcea0{width:100%;height:100%}._144zcea1{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden;gap:6px;padding:16px}._144zcea2{flex:0 0 auto;width:fit-content;text-align:center;font-family:var(--likec4-element-font-family);font-optical-sizing:auto;font-style:normal;font-weight:500;font-size:17px;line-height:1.25;text-wrap:balance;color:var(--likec4-element-hiContrast)}._144zcea3{flex:0 0 auto;width:fit-content;text-align:center;font-family:var(--likec4-element-font-family);font-optical-sizing:auto;font-style:normal;font-size:var(--mantine-font-size-xs);line-height:1.25;text-wrap:balance;color:var(--likec4-element-loContrast)}._144zcea4{width:100%;height:100%;box-shadow:0 4px 10px .5px #0000001a,0 2px 2px -1px #0006;background:color-mix(in srgb,var(--likec4-element-fill),transparent 10%);border-radius:4px}._144zcea5{font-family:var(--likec4-compound-font-family);font-optical-sizing:auto;font-style:normal;font-weight:600;font-size:14px;line-height:1;text-transform:uppercase;padding-top:12px;padding-left:10px;mix-blend-mode:screen;color:var(--likec4-compound-title-color)}._144zcea6{top:0;left:0;position:absolute;pointer-events:none;fill:var(--likec4-element-fill);stroke:var(--likec4-element-stroke);overflow:visible;filter:drop-shadow(0 2px 1px rgba(0,0,0,.21)) drop-shadow(0 1px 1px color-mix(in srgb,var(--likec4-element-stroke) 40%,transparent)) drop-shadow(0 5px 3px rgba(0,0,0,.1));z-index:-1}._144zcea7{z-index:100;position:absolute;left:50%;bottom:2px;transform:translate(-50%);gap:0;transition:all .19s cubic-bezier(.5,0,.4,1)}:where([data-likec4-shape=browser],[data-likec4-shape=mobile]) ._144zcea7{bottom:6px}:where(._144zcea0:hover) ._144zcea7{transition-delay:20ms;gap:8px;transform:translate(-50%,5px)}._144zcea8{--ai-bg: color-mix(in srgb , var(--likec4-element-fill), transparent 99%);--ai-bg-hover: color-mix(in srgb , var(--likec4-element-fill) 65%, var(--likec4-element-stroke));--ai-hover: color-mix(in srgb , var(--likec4-element-fill) 50%, var(--likec4-element-stroke));opacity:.7;pointer-events:all;cursor:pointer;transform:scale(.9);transition:all .19s cubic-bezier(.5,0,.4,1)}._144zcea8:hover{transition-delay:0ms;transform:scale(1.25);box-shadow:var(--mantine-shadow-lg)}._144zcea8:active{transform:scale(.975)}:where(._144zcea0:hover) ._144zcea8{--ai-bg: var(--ai-bg-hover);transition-delay:40ms;transition-timing-function:cubic-bezier(0,0,.4,1);opacity:1;transform:scale(1.07);box-shadow:var(--mantine-shadow-md)}._1u47gxi1{--backdrop-blur: 0px;--backdrop-opacity: 0%;--_1u47gxi0: black;position:absolute;top:0;left:0;padding:0;margin:0;box-sizing:border-box;border:0 solid transparent;width:100%;height:100%;z-index:1000;isolation:isolate;-webkit-backdrop-filter:blur(var(--backdrop-blur));backdrop-filter:blur(var(--backdrop-blur));background-color:rgb(200 200 200 / var(--backdrop-opacity))}:where([data-mantine-color-scheme=dark]) ._1u47gxi1{--_1u47gxi0: white;background-color:rgb(36 36 36 / var(--backdrop-opacity))}.react-flow._1u47gxi2{--xy-background-pattern-color: var(--likec4-background-pattern-color)}:where([data-mantine-color-scheme=dark]) .react-flow._1u47gxi2{--xy-edge-label-color: var(--likec4-relation-labelColor);--xy-edge-label-background-color: color-mix(in srgb, var(--likec4-relation-labelBg), transparent 50%)}:where(._1u47gxi2) .react-flow__attribution{display:none}:where(._1u47gxi2) .react-flow__edge-text{font-size:16px}._1u47gxi2 .react-flow__edges>svg{mix-blend-mode:plus-lighter}:where([data-mantine-color-scheme=light]) ._1u47gxi2 .react-flow__edges>svg{mix-blend-mode:screen}._5hogu30{--xy-edge-stroke: var(--likec4-relation-lineColor);--xy-edge-stroke-selected: color-mix(in srgb, var(--likec4-relation-lineColor), var(--_1u47gxi0) 35%);--xy-edge-label-color: color-mix(in srgb, var(--likec4-relation-labelColor), rgba(255 255 255 / .85) 50%);--xy-edge-label-background-color: color-mix(in srgb, var(--likec4-relation-labelBg), transparent 20%);opacity:1;transition:all .13s cubic-bezier(.5,0,.2,1)}._5hogu30[data-edge-dimmed=true]{opacity:.2;transition-delay:.4s}._5hogu30[data-edge-dimmed=immediate]{opacity:.2}:where([data-mantine-color-scheme=dark]) ._5hogu30{--xy-edge-label-background-color: color-mix(in srgb, var(--likec4-relation-labelBg), transparent 50%)}._5hogu31{padding:2px 5px;font-family:var(--likec4-font-family);position:absolute;cursor:pointer;width:fit-content;color:var(--xy-edge-label-color);background-color:var(--xy-edge-label-background-color);border-radius:4px;pointer-events:all;text-wrap:pretty;white-space:preserve-breaks}._5hogu32{text-align:center;white-space-collapse:preserve-breaks;font-size:var(--mantine-font-size-md);line-height:var(--mantine-line-height-xs)}._5hogu33{text-align:center;white-space-collapse:preserve-breaks;font-size:var(--mantine-font-size-sm);line-height:1}.paikoy2{--backdrop-opacity: 0%;--backdrop-blur: 0px;box-sizing:border-box;margin:0;padding:0;position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;max-width:100%;max-height:100%;background:transparent;border:0 solid transparent}.paikoy2::backdrop{-webkit-backdrop-filter:blur(var(--backdrop-blur));backdrop-filter:blur(var(--backdrop-blur));background-color:rgb(36 36 36 / var(--backdrop-opacity))}.paikoy3{--paikoy0: var(--mantine-color-body);--paikoy1: linear-gradient(180deg, var(--likec4-element-fill), var(--likec4-element-fill) 4px, transparent 4px);position:absolute;pointer-events:all;gap:var(--mantine-spacing-lg);justify-content:stretch;background-color:var(--paikoy0);background-image:var(--paikoy1);border-top-color:var(--likec4-element-fill)}:where([data-mantine-color-scheme=dark]) .paikoy3{--paikoy0: var(--mantine-color-dark-6);--paikoy1: linear-gradient(180deg, color-mix(in srgb, var(--likec4-element-fill) 15%, transparent), transparent 80px), linear-gradient(180deg, var(--likec4-element-fill), var(--likec4-element-fill) 4px, transparent 4px) }.paikoy4{flex:0;cursor:move}:where(.paikoy3) .react-flow__attribution{display:none}.paikoy5{display:block;font-family:var(--likec4-element-font-family);font-optical-sizing:auto;font-style:normal;font-weight:600;font-size:24px;line-height:var(--mantine-line-height-xs)}.paikoy6{flex:0 0 40px;height:40px;width:40px;display:flex;align-items:center;justify-content:center;align-self:flex-start;cursor:move}:where([data-mantine-color-scheme=dark]) .paikoy6{mix-blend-mode:hard-light}.paikoy6 svg,.paikoy6 img{width:100%;height:auto;max-height:100%;pointer-events:none;filter:drop-shadow(0 0 3px rgb(0 0 0 / 10%)) drop-shadow(0 1px 8px rgb(0 0 0 / 5%)) drop-shadow(1px 1px 16px rgb(0 0 0 / 2%))}.paikoy6 img{object-fit:contain}.paikoy9{--paikoy7: var(--mantine-color-dark-1);width:100%;background:var(--mantine-color-body);border-radius:var(--mantine-radius-sm);padding:10px 8px;transition:all .13s cubic-bezier(.5,0,.2,1);border:1px solid var(--mantine-color-default-border)}.paikoy9:hover{--paikoy8: var(--mantine-color-dark-1);--paikoy7: var(--mantine-color-default-color);background:var(--mantine-color-default-hover)}:where([data-mantine-color-scheme=dark]) .paikoy9{background:var(--mantine-color-dark-6)}:where([data-mantine-color-scheme=light]) .paikoy9{--paikoy8: var(--mantine-color-gray-6);--paikoy7: var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=light]) .paikoy9:hover{--paikoy8: var(--mantine-color-gray-7)}.paikoy9 .mantine-ThemeIcon-root{--ti-size: 22px;transition:all .13s cubic-bezier(.5,0,.2,1);color:var(--paikoy8, var(--mantine-color-dark-2))}.paikoy9 .mantine-ThemeIcon-root:hover{color:var(--mantine-color-default-color)}.paikoy9>*{transition:all .13s cubic-bezier(.5,0,.2,1)}.paikoy9:hover>*{transition-timing-function:cubic-bezier(0,0,.4,1);transform:translate(1.6px)}.paikoya{transition:all .13s cubic-bezier(.5,0,.2,1);color:var(--paikoy7, var(--mantine-color-gray-7));font-size:15px;font-weight:500;line-height:1.4}.paikoyb{flex:1;display:flex;flex-direction:column;justify-content:stretch;overflow:hidden;gap:var(--mantine-spacing-sm)}.paikoyc{background:var(--mantine-color-gray-1);border-radius:var(--mantine-radius-sm);flex-wrap:nowrap;gap:6px;padding:4px}:where([data-mantine-color-scheme=dark]) .paikoyc{background:var(--mantine-color-dark-7)}.paikoyd{font-size:var(--mantine-font-size-xs);font-weight:500;flex-grow:1;padding:6px 8px;transition:all .13s cubic-bezier(.5,0,.2,1);border-radius:var(--mantine-radius-sm);color:var(--mantine-color-gray-7)}.paikoyd:hover{transition-timing-function:cubic-bezier(0,0,.4,1);color:var(--mantine-color-default-color);background:var(--mantine-color-gray-3)}.paikoyd[data-active]{transition:none;background:var(--mantine-color-white);box-shadow:var(--mantine-shadow-xs);color:var(--mantine-color-default-color)}:where([data-mantine-color-scheme=dark]) .paikoyd{color:var(--mantine-color-dark-1)}:where([data-mantine-color-scheme=dark]) .paikoyd:hover{color:var(--mantine-color-white);background:var(--mantine-color-dark-6)}:where([data-mantine-color-scheme=dark]) .paikoyd:is([data-active]){color:var(--mantine-color-white);background:var(--mantine-color-dark-5)}.paikoye{flex:1;overflow:hidden;position:relative}.paikoye:not(:has(.mantine-ScrollArea-root)){padding-left:4px;padding-right:4px}.paikoye .mantine-ScrollArea-root{width:100%;height:100%}.paikoye .mantine-ScrollArea-viewport>div{padding-left:4px;padding-right:4px}.paikoyf{flex:1;display:grid;grid-template-columns:min-content 1fr;grid-auto-rows:min-content max-content;gap:calc(1.25rem * var(--mantine-scale)) calc(1rem * var(--mantine-scale));align-items:baseline;justify-items:stretch}.paikoyg{justify-self:end}.paikoyh{transition:all .13s cubic-bezier(.5,0,.2,1);border:1px dashed var(--mantine-color-default-border);border-radius:var(--mantine-radius-sm);min-height:30px;padding:3px 16px 3px 3px;cursor:pointer;color:var(--mantine-color-gray-7)}.paikoyh:hover{transition-timing-function:cubic-bezier(0,0,.4,1);border-style:solid;color:var(--mantine-color-default-color);background:var(--mantine-color-default-hover)}:where([data-mantine-color-scheme=dark]) .paikoyh{color:var(--mantine-color-dark-1)}.paikoyh>*{transition:all .13s cubic-bezier(.5,0,.2,1)}.paikoyh:hover>*{transition-timing-function:cubic-bezier(0,0,.4,1);transform:translate(1px)}.paikoyi{position:absolute;width:14px;height:14px;border:3.5px solid var(--mantine-color-dark-3);border-top:none;border-left:none;border-radius:2px;bottom:2px;right:2px;transition:all .13s cubic-bezier(.5,0,.2,1);cursor:se-resize}.paikoyi:hover{border-width:4px;border-color:var(--mantine-color-dark-1)}._6nb9wd0[data-level="1"]{margin-bottom:calc(1rem * var(--mantine-scale))}._6nb9wd1{cursor:default;margin-top:0;margin-bottom:0}._6nb9wd2{transition:all .13s cubic-bezier(.5,0,.2,1);color:var(--mantine-color-gray-7)}._6nb9wd2:hover{transition-timing-function:cubic-bezier(0,0,.4,1)}:where([data-mantine-color-scheme=dark]) ._6nb9wd2{color:var(--mantine-color-dark-1)}._6nb9wd2>*{transition:all .13s cubic-bezier(.5,0,.2,1)}._6nb9wd2:hover>:not([data-no-transform]){transition-timing-function:cubic-bezier(0,0,.4,1);transform:translate(1px)}.mantine-Button-root:hover ._6nb9wd2>:not([data-no-transform]){transition-timing-function:cubic-bezier(0,0,.4,1);transform:translate(1px)}._6nb9wd4{cursor:pointer;width:100%;justify-content:stretch;flex-wrap:nowrap;height:calc(2.25rem * var(--mantine-scale));padding-inline-start:calc(1rem * var(--mantine-scale));padding-inline-end:calc(.625rem * var(--mantine-scale));border-radius:var(--mantine-radius-sm);align-items:center;color:var(--mantine-color-gray-7)}._6nb9wd4:hover{background:var(--mantine-color-gray-light-hover)}:where([data-mantine-color-scheme=dark]) ._6nb9wd4{color:var(--mantine-color-gray-light-color)}._6nb9wd4 .tabler-icon{transition:all .13s cubic-bezier(.5,0,.2,1);width:90%;opacity:.65}._19duq0h0{position:relative;width:100%;height:100%}._19duq0h1{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden;gap:6px;padding:16px}._19duq0h2{flex:0 0 auto;width:fit-content;text-align:center;font-family:var(--likec4-element-font-family);font-optical-sizing:auto;font-style:normal;font-weight:500;font-size:18px;line-height:1.25;text-wrap:balance;color:var(--likec4-element-hiContrast)}._19duq0h3{flex:0 0 auto;width:fit-content;text-align:center;font-family:var(--likec4-element-font-family);font-optical-sizing:auto;font-style:normal;font-size:var(--mantine-font-size-sm);line-height:1.25;text-wrap:balance;color:var(--likec4-element-loContrast)}._19duq0h4{position:relative;width:100%;height:100%;box-shadow:0 4px 10px .5px #0000001a,1px 1px 4px -1px #0000004d;background:var(--likec4-element-fill);border-radius:6px}._19duq0h5{font-family:var(--likec4-compound-font-family);font-weight:600;font-size:15px;line-height:1;text-transform:uppercase;padding-top:14px;padding-left:12px;mix-blend-mode:screen;color:var(--likec4-compound-title-color)}._19duq0h6{top:0;left:0;position:absolute;pointer-events:none;fill:var(--likec4-element-fill);stroke:var(--likec4-element-stroke);overflow:visible;filter:drop-shadow(0 2px 1px rgba(0,0,0,.21)) drop-shadow(0 1px 1px color-mix(in srgb,var(--likec4-element-stroke) 40%,transparent)) drop-shadow(0 5px 3px rgba(0,0,0,.1));z-index:-1}._19duq0h7{--xy-edge-stroke: var(--likec4-relation-lineColor);--xy-edge-stroke-selected: color-mix(in srgb, var(--likec4-relation-lineColor), var(--_1u47gxi0) 35%);--xy-edge-label-color: color-mix(in srgb, var(--likec4-relation-labelColor), rgba(255 255 255 / .85) 50%);--xy-edge-label-background-color: color-mix(in srgb, var(--likec4-relation-labelBg), transparent 20%);opacity:1;transition:all .13s cubic-bezier(.5,0,.2,1)}._19duq0h7[data-edge-dimmed=true]{opacity:.2;transition-delay:.4s}._19duq0h7[data-edge-dimmed=immediate]{opacity:.2}:where([data-mantine-color-scheme=dark]) ._19duq0h7{--xy-edge-label-background-color: color-mix(in srgb, var(--likec4-relation-labelBg), transparent 50%)}._19duq0h8{padding:2px 5px;font-family:var(--likec4-font-family);position:absolute;cursor:pointer;width:fit-content;color:var(--xy-edge-label-color);background-color:var(--xy-edge-label-background-color);border-radius:4px;pointer-events:all;text-wrap:pretty;white-space:preserve-breaks}._19duq0h9{text-align:center;white-space-collapse:preserve-breaks;font-size:var(--mantine-font-size-md);line-height:var(--mantine-line-height-xs)}._19duq0ha{text-align:center;white-space-collapse:preserve-breaks;font-size:var(--mantine-font-size-sm);line-height:1}._19duq0hb{width:100%;height:100%;border:3px dashed var(--mantine-color-default-border);border-radius:var(--mantine-radius-md);display:flex;justify-content:center;align-items:center}._19duq0hc{z-index:100;position:absolute;left:50%;bottom:2px;transform:translate(-50%);gap:0;transition:all .19s cubic-bezier(.5,0,.4,1)}:where([data-likec4-shape=browser]) ._19duq0hc{bottom:4px}:where(._19duq0h0:hover) ._19duq0hc{transition-delay:20ms;gap:8px;transform:translate(-50%,5px)}._19duq0hd{--ai-bg: color-mix(in srgb , var(--likec4-element-fill), transparent 99%);--ai-bg-hover: color-mix(in srgb , var(--likec4-element-fill) 65%, var(--likec4-element-stroke));--ai-hover: color-mix(in srgb , var(--likec4-element-fill) 50%, var(--likec4-element-stroke));opacity:.7;pointer-events:all;cursor:pointer;transform:scale(.9);transition:all .19s cubic-bezier(.5,0,.4,1)}._19duq0hd:hover{transition-delay:0ms;transform:scale(1.25);box-shadow:var(--mantine-shadow-lg)}._19duq0hd:active{transform:scale(.975)}:where(._19duq0h0:hover) ._19duq0hd{--ai-bg: var(--ai-bg-hover);transition-delay:40ms;transition-timing-function:cubic-bezier(0,0,.4,1);opacity:1;transform:scale(1.07);box-shadow:var(--mantine-shadow-md)}.k4m020{display:inline-block;font-size:var(--mantine-font-size-sm);font-weight:500;white-space:nowrap;padding:3px 6px;border-radius:3px;background:color-mix(in srgb,var(--likec4-element-fill),transparent 25%);line-height:1.2;color:var(--likec4-element-hiContrast)}:where([data-mantine-color-scheme=light]) .k4m021{background:var(--mantine-color-gray-1)}.k4m021[data-missing]{color:var(--mantine-color-orange-4);background:color-mix(in srgb,var(--mantine-color-orange-8) 15%,transparent);border-color:color-mix(in srgb,var(--mantine-color-orange-5) 20%,transparent)}:where([data-mantine-color-scheme=light]) .k4m021[data-missing]{color:var(--mantine-color-orange-8)}.k4m022{flex:1 1 100%;position:relative;width:100%;height:100%;background:var(--mantine-color-body);border:1px solid var(--mantine-color-default-border);border-radius:var(--mantine-radius-sm)}:where([data-mantine-color-scheme=light]) .k4m022{border-color:var(--mantine-color-gray-3);background:var(--mantine-color-gray-1)}.k4m023:before{content:"scope:";position:absolute;top:0;left:8px;font-size:9px;font-weight:500;line-height:1;color:var(--mantine-color-dimmed);opacity:.85;transform:translateY(-100%) translateY(-2px)}:where([data-mantine-color-scheme=light]) .k4m023 .mantine-SegmentedControl-root{background:var(--mantine-color-gray-3)}.k4m024{display:inline-block;font-size:var(--mantine-font-size-xl);font-weight:600;padding:1px 5px;min-width:24px;text-align:center;border-radius:var(--mantine-radius-sm);background:var(--mantine-color-dark-7);color:var(--mantine-color-default-color)}:where([data-mantine-color-scheme=light]) .k4m024{background:var(--mantine-color-gray-4);color:var(--mantine-color-dark-6)}.k4m024[data-zero]{color:var(--mantine-color-dimmed)}:where([data-mantine-color-scheme=light]) .k4m024[data-zero]{background:var(--mantine-color-gray-3)}.k4m024[data-missing]{color:var(--mantine-color-orange-4);background:color-mix(in srgb,var(--mantine-color-orange-8) 20%,transparent)}:where([data-mantine-color-scheme=light]) .k4m024[data-missing]{color:var(--mantine-color-orange-8)}._15ijd1w0{margin-top:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-sm)}._15ijd1w1{display:inline-flex;transition:all .13s cubic-bezier(.5,0,.2,1);border:1px dashed var(--mantine-color-default-border);border-radius:var(--mantine-radius-sm);padding:var(--mantine-spacing-xs) var(--mantine-spacing-md);align-items:center;cursor:pointer;color:var(--mantine-color-gray-7)}._15ijd1w1:hover{transition-timing-function:cubic-bezier(0,0,.4,1);border-style:solid;color:var(--mantine-color-default-color);background:var(--mantine-color-default-hover)}:where([data-mantine-color-scheme=dark]) ._15ijd1w1{color:var(--mantine-color-dark-1)}._15ijd1w1>*{transition:all .13s cubic-bezier(.5,0,.2,1)}._15ijd1w1:hover>*{transition-timing-function:cubic-bezier(0,0,.4,1);transform:translate(1px)}.z1mia80{margin:0}.z1mia81:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .z1mia81:hover{background-color:var(--mantine-color-default-hover);color:var(--mantine-color-white)}
@@ -0,0 +1,72 @@
1
+ export declare const vars: {
2
+ safariAnimationHook: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
3
+ default: {
4
+ font: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
5
+ };
6
+ likec4: {
7
+ font: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
8
+ background: {
9
+ color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
10
+ pattern: {
11
+ color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
12
+ };
13
+ };
14
+ };
15
+ compound: {
16
+ font: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
17
+ titleColor: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
18
+ };
19
+ element: {
20
+ font: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
21
+ fill: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
22
+ stroke: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
23
+ hiContrast: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
24
+ loContrast: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
25
+ };
26
+ relation: {
27
+ lineColor: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
28
+ labelColor: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
29
+ labelBgColor: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
30
+ };
31
+ optionsPanel: {
32
+ top: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
33
+ right: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
34
+ };
35
+ navigationPanel: {
36
+ top: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
37
+ left: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
38
+ };
39
+ };
40
+ export declare const xyvars: {
41
+ background: {
42
+ color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
43
+ pattern: {
44
+ color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
45
+ };
46
+ };
47
+ edge: {
48
+ stroke: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
49
+ strokeSelected: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
50
+ labelColor: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
51
+ labelBgColor: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
52
+ strokeWidth: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
53
+ };
54
+ node: {
55
+ color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
56
+ border: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
57
+ backgroundColor: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
58
+ groupBackgroundColor: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
59
+ boxshadowHover: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
60
+ boxshadowSelected: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
61
+ borderRadius: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
62
+ };
63
+ };
64
+ export declare const whereLight = ":where([data-mantine-color-scheme=\"light\"])";
65
+ export declare const whereDark = ":where([data-mantine-color-scheme=\"dark\"])";
66
+ export declare const easings: {
67
+ out: string;
68
+ inOut: string;
69
+ };
70
+ export declare const transitions: {
71
+ fast: string;
72
+ };
@@ -0,0 +1,6 @@
1
+ var vars = { safariAnimationHook: "var(--likec4-safari-animation-hook)", "default": { font: "var(--likec4-default-font-family)" }, likec4: { font: "var(--likec4-font-family)", background: { color: "var(--likec4-background-color)", pattern: { color: "var(--likec4-background-pattern-color)" } } }, compound: { font: "var(--likec4-compound-font-family)", titleColor: "var(--likec4-compound-title-color)" }, element: { font: "var(--likec4-element-font-family)", fill: "var(--likec4-element-fill)", stroke: "var(--likec4-element-stroke)", hiContrast: "var(--likec4-element-hiContrast)", loContrast: "var(--likec4-element-loContrast)" }, relation: { lineColor: "var(--likec4-relation-lineColor)", labelColor: "var(--likec4-relation-labelColor)", labelBgColor: "var(--likec4-relation-labelBg)" }, optionsPanel: { top: "var(--likec4-options-webview-top)", right: "var(--likec4-options-webview-right)" }, navigationPanel: { top: "var(--likec4-navigation-webview-top)", left: "var(--likec4-navigation-webview-left)" } };
2
+ var xyvars = { background: { color: "var(--xy-background-color)", pattern: { color: "var(--xy-background-pattern-color)" } }, edge: { stroke: "var(--xy-edge-stroke)", strokeSelected: "var(--xy-edge-stroke-selected)", labelColor: "var(--xy-edge-label-color)", labelBgColor: "var(--xy-edge-label-background-color)", strokeWidth: "var(--xy-edge-stroke-width)" }, node: { color: "var(--xy-node-color)", border: "var(--xy-node-border)", backgroundColor: "var(--xy-node-background-color)", groupBackgroundColor: "var(--xy-node-group-background-color)", boxshadowHover: "var(--xy-node-boxshadow-hover)", boxshadowSelected: "var(--xy-node-boxshadow-selected)", borderRadius: "var(--xy-node-border-radius)" } };
3
+ export {
4
+ vars,
5
+ xyvars
6
+ };
@@ -0,0 +1,3 @@
1
+ import { MantineVars } from '@mantine/vanilla-extract';
2
+ export { easings, transitions, vars, whereDark, whereLight, xyvars, } from './theme-vars.css';
3
+ export declare const mantine: MantineVars;
@@ -0,0 +1,5 @@
1
+ import { themeToVars } from "@mantine/vanilla-extract";
2
+ const mantine = themeToVars({});
3
+ export {
4
+ mantine
5
+ };
@@ -0,0 +1,4 @@
1
+ export declare const container: string;
2
+ export declare const card: string;
3
+ export declare const title: string;
4
+ export declare const description: string;
@@ -0,0 +1,11 @@
1
+ /* empty css */
2
+ var container = "hbkbtj0";
3
+ var card = "hbkbtj1";
4
+ var title = "hbkbtj2";
5
+ var description = "hbkbtj3";
6
+ export {
7
+ card,
8
+ container,
9
+ description,
10
+ title
11
+ };
@@ -0,0 +1 @@
1
+ export default function DiagramTitlePanel(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,159 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { Card, CardSection, Button, Group, Text, Spoiler, Stack } from "@mantine/core";
3
+ import { useLocalStorage } from "@mantine/hooks";
4
+ import { IconMenu } from "@tabler/icons-react";
5
+ import clsx from "clsx";
6
+ import { AnimatePresence, m } from "framer-motion";
7
+ import { container, card, title, description } from "./DiagramTitlePanel.css.js";
8
+ import { Link } from "./Link.js";
9
+ import { useDiagramState } from "../hooks/useDiagramState.js";
10
+ const selector = (s) => ({
11
+ id: s.view.id,
12
+ title: s.view.title ?? "untitled",
13
+ description: s.view.description,
14
+ links: s.view.links
15
+ });
16
+ function DiagramTitlePanel() {
17
+ const { id, title: title$1, description: description$1, links } = useDiagramState(selector);
18
+ const [isCollapsed, setCollapsed] = useLocalStorage({
19
+ key: "diagram-title-webview-collapsed",
20
+ defaultValue: false
21
+ });
22
+ const toggle = () => setCollapsed((v) => !v);
23
+ return /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsx(
24
+ m.div,
25
+ {
26
+ initial: { opacity: 0.05, scale: 0.7 },
27
+ animate: { opacity: 1, scale: 1 },
28
+ exit: {
29
+ opacity: 0.05,
30
+ scale: 0.6
31
+ },
32
+ className: clsx("react-flow__panel", container),
33
+ style: {
34
+ transformOrigin: "left center"
35
+ },
36
+ children: /* @__PURE__ */ jsxs(
37
+ Card,
38
+ {
39
+ radius: "sm",
40
+ className: card,
41
+ withBorder: !isCollapsed,
42
+ p: isCollapsed ? "sm" : "md",
43
+ onDoubleClick: (e) => e.stopPropagation(),
44
+ children: [
45
+ isCollapsed && /* @__PURE__ */ jsx(CardSection, { children: /* @__PURE__ */ jsx(
46
+ Button,
47
+ {
48
+ fullWidth: true,
49
+ justify: "stretch",
50
+ size: "md",
51
+ radius: "0",
52
+ variant: "subtle",
53
+ color: "gray",
54
+ onClick: toggle,
55
+ fw: 500,
56
+ fz: "sm",
57
+ tabIndex: -1,
58
+ children: title$1
59
+ }
60
+ ) }),
61
+ !isCollapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
62
+ /* @__PURE__ */ jsx(CardSection, { mb: "xs", children: /* @__PURE__ */ jsx(
63
+ Button,
64
+ {
65
+ fullWidth: true,
66
+ size: "xs",
67
+ h: "sm",
68
+ py: 2,
69
+ radius: "0",
70
+ variant: "subtle",
71
+ color: "gray",
72
+ onClick: toggle,
73
+ tabIndex: -1,
74
+ children: /* @__PURE__ */ jsx(IconMenu, { size: 11, opacity: 0.7 })
75
+ }
76
+ ) }),
77
+ /* @__PURE__ */ jsxs(Group, { justify: "stretch", wrap: "nowrap", mb: "sm", children: [
78
+ /* @__PURE__ */ jsx(
79
+ Text,
80
+ {
81
+ component: "div",
82
+ flex: "1",
83
+ size: "md",
84
+ fw: 500,
85
+ lh: 1.1,
86
+ className: title,
87
+ children: title$1
88
+ }
89
+ ),
90
+ /* @__PURE__ */ jsxs(
91
+ Text,
92
+ {
93
+ hidden: isCollapsed,
94
+ component: "div",
95
+ flex: "0 0 auto",
96
+ inline: true,
97
+ size: "xs",
98
+ fz: 9,
99
+ fw: 500,
100
+ c: "dimmed",
101
+ style: {
102
+ userSelect: "all"
103
+ },
104
+ children: [
105
+ /* @__PURE__ */ jsxs("span", { style: { userSelect: "none" }, children: [
106
+ "id:",
107
+ " "
108
+ ] }),
109
+ id
110
+ ]
111
+ }
112
+ )
113
+ ] }),
114
+ description$1 && /* @__PURE__ */ jsx(
115
+ Spoiler,
116
+ {
117
+ maxHeight: 42,
118
+ showLabel: /* @__PURE__ */ jsx(Button, { color: "gray", variant: "light", fz: "10", size: "compact-xs", tabIndex: -1, children: "show more" }),
119
+ hideLabel: /* @__PURE__ */ jsx(Button, { color: "gray", variant: "light", fz: "10", size: "compact-xs", tabIndex: -1, children: "hide" }),
120
+ children: /* @__PURE__ */ jsx(
121
+ Text,
122
+ {
123
+ component: "div",
124
+ size: "sm",
125
+ className: description,
126
+ children: description$1 || "no description"
127
+ }
128
+ )
129
+ }
130
+ ),
131
+ !description$1 && /* @__PURE__ */ jsx(
132
+ Text,
133
+ {
134
+ component: "div",
135
+ size: "xs",
136
+ c: "dimmed",
137
+ children: "no description"
138
+ }
139
+ ),
140
+ links && /* @__PURE__ */ jsx(
141
+ Stack,
142
+ {
143
+ gap: 3,
144
+ justify: "stretch",
145
+ align: "stretch",
146
+ children: links.map((link) => /* @__PURE__ */ jsx(Link, { link }, link.url))
147
+ }
148
+ )
149
+ ] })
150
+ ]
151
+ }
152
+ )
153
+ },
154
+ id
155
+ ) });
156
+ }
157
+ export {
158
+ DiagramTitlePanel as default
159
+ };
@@ -0,0 +1,4 @@
1
+ export declare const container: string;
2
+ export declare const buttons: string;
3
+ export declare const btn: string;
4
+ export declare const parallelStateFrame: string;
@@ -0,0 +1,11 @@
1
+ /* empty css */
2
+ var container = "_2jkb2y0";
3
+ var buttons = "_2jkb2y1";
4
+ var btn = "_2jkb2y3";
5
+ var parallelStateFrame = "_2jkb2y4";
6
+ export {
7
+ btn,
8
+ buttons,
9
+ container,
10
+ parallelStateFrame
11
+ };
@@ -0,0 +1 @@
1
+ export declare function DynamicViewWalkthrough(): import("react/jsx-runtime").JSX.Element;