@likec4/diagram 1.9.0 → 1.12.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 (112) hide show
  1. package/package.json +18 -41
  2. package/src/LikeC4CustomColors.tsx +1 -1
  3. package/src/LikeC4Diagram.css.ts +1 -1
  4. package/src/LikeC4Diagram.props.ts +40 -94
  5. package/src/LikeC4Diagram.tsx +12 -2
  6. package/src/LikeC4ModelProvider.tsx +49 -0
  7. package/src/StaticLikeC4Diagram.tsx +1 -0
  8. package/src/globals.css.ts +2 -3
  9. package/src/hooks/index.ts +1 -0
  10. package/src/hooks/useMantinePortalProps.ts +8 -0
  11. package/src/hooks/useXYFlow.ts +1 -2
  12. package/src/index.ts +3 -0
  13. package/src/likec4model/LikeC4ModelContext.ts +4 -0
  14. package/src/likec4model/index.ts +1 -0
  15. package/src/likec4model/useLikeC4Model.ts +55 -0
  16. package/src/state/diagram-to-xyflow.ts +1 -2
  17. package/src/state/diagramStore.ts +185 -66
  18. package/src/{theme.css.ts → theme-vars.ts} +11 -4
  19. package/src/ui/DiagramTitlePanel.css.ts +2 -3
  20. package/src/ui/DiagramTitlePanel.tsx +17 -1
  21. package/src/ui/DynamicViewWalkthrough.css.ts +28 -2
  22. package/src/ui/DynamicViewWalkthrough.tsx +97 -52
  23. package/src/ui/OptionsPanel.css.ts +1 -2
  24. package/src/ui/OptionsPanel.tsx +1 -1
  25. package/src/ui/notation/NotationPanel.css.ts +2 -3
  26. package/src/ui/notation/NotationPanel.tsx +9 -10
  27. package/src/ui/options/NodeOptions.tsx +1 -1
  28. package/src/ui/top-left/ChangeAutoLayoutButton.tsx +20 -32
  29. package/src/ui/top-left/TopLeftPanel.tsx +128 -117
  30. package/src/ui/top-left/_shared.ts +7 -6
  31. package/src/ui/top-left/styles.css.ts +17 -8
  32. package/src/utils/vector.ts +57 -0
  33. package/src/xyflow/FitviewOnDiagramChange.tsx +5 -4
  34. package/src/xyflow/SelectEdgesOnNodeFocus.tsx +7 -5
  35. package/src/xyflow/XYFlow.tsx +9 -11
  36. package/src/xyflow/XYFlowEvents.tsx +59 -60
  37. package/src/xyflow/XYFlowInner.tsx +5 -5
  38. package/src/xyflow/edges/EdgeLabel.tsx +185 -0
  39. package/src/xyflow/edges/RelationshipEdge.tsx +170 -137
  40. package/src/xyflow/edges/RelationshipsDropdownMenu.css.ts +60 -0
  41. package/src/xyflow/edges/RelationshipsDropdownMenu.tsx +214 -0
  42. package/src/xyflow/edges/edges.css.ts +75 -7
  43. package/src/xyflow/nodes/compound/CompoundNode.css.ts +1 -2
  44. package/src/xyflow/nodes/compound/CompoundNode.tsx +4 -4
  45. package/src/xyflow/nodes/element/ElementLink.css.ts +1 -1
  46. package/src/xyflow/nodes/element/ElementLink.tsx +3 -8
  47. package/src/xyflow/nodes/element/ElementNode.tsx +44 -0
  48. package/src/xyflow/nodes/element/element.css.ts +1 -2
  49. package/src/xyflow/types.ts +1 -24
  50. package/src/xyflow/useLayoutConstraints.ts +10 -6
  51. package/dist/LikeC4CustomColors.d.ts +0 -3
  52. package/dist/LikeC4CustomColors.props.d.ts +0 -5
  53. package/dist/LikeC4Diagram.css.d.ts +0 -4
  54. package/dist/LikeC4Diagram.d.ts +0 -7
  55. package/dist/LikeC4Diagram.props.d.ts +0 -154
  56. package/dist/StaticLikeC4Diagram.d.ts +0 -4
  57. package/dist/globals.css.d.ts +0 -1
  58. package/dist/hooks/index.d.ts +0 -4
  59. package/dist/hooks/useDiagramState.d.ts +0 -6
  60. package/dist/hooks/useSetState.d.ts +0 -3
  61. package/dist/hooks/useUpdateEffect.d.ts +0 -5
  62. package/dist/hooks/useXYFlow.d.ts +0 -267
  63. package/dist/index.d.ts +0 -9
  64. package/dist/index.mjs +0 -3684
  65. package/dist/mantine/EnsureMantine.d.ts +0 -8
  66. package/dist/mantine.css.d.ts +0 -3
  67. package/dist/state/DiagramContext.d.ts +0 -1192
  68. package/dist/state/diagram-to-xyflow.d.ts +0 -12
  69. package/dist/state/diagramStore.d.ts +0 -1268
  70. package/dist/style.css +0 -2139
  71. package/dist/theme.css.d.ts +0 -63
  72. package/dist/ui/DiagramTitlePanel.css.d.ts +0 -4
  73. package/dist/ui/DiagramTitlePanel.d.ts +0 -1
  74. package/dist/ui/DynamicViewWalkthrough.css.d.ts +0 -3
  75. package/dist/ui/DynamicViewWalkthrough.d.ts +0 -1
  76. package/dist/ui/OptionsPanel.css.d.ts +0 -1
  77. package/dist/ui/OptionsPanel.d.ts +0 -1
  78. package/dist/ui/notation/NotationPanel.css.d.ts +0 -6
  79. package/dist/ui/notation/NotationPanel.d.ts +0 -1
  80. package/dist/ui/notation/index.d.ts +0 -1
  81. package/dist/ui/options/EdgeOptions.d.ts +0 -19
  82. package/dist/ui/options/NodeOptions.d.ts +0 -19
  83. package/dist/ui/top-left/ChangeAutoLayoutButton.d.ts +0 -3
  84. package/dist/ui/top-left/TopLeftPanel.d.ts +0 -4
  85. package/dist/ui/top-left/_shared.d.ts +0 -5
  86. package/dist/ui/top-left/styles.css.d.ts +0 -3
  87. package/dist/xyflow/EdgeMarkers.d.ts +0 -12
  88. package/dist/xyflow/FitviewOnDiagramChange.d.ts +0 -4
  89. package/dist/xyflow/SelectEdgesOnNodeFocus.d.ts +0 -1
  90. package/dist/xyflow/XYFlow.d.ts +0 -12
  91. package/dist/xyflow/XYFlowBackground.d.ts +0 -11
  92. package/dist/xyflow/XYFlowEvents.d.ts +0 -161
  93. package/dist/xyflow/XYFlowInner.d.ts +0 -10
  94. package/dist/xyflow/const.d.ts +0 -7
  95. package/dist/xyflow/edges/RelationshipEdge.d.ts +0 -32
  96. package/dist/xyflow/edges/edges.css.d.ts +0 -12
  97. package/dist/xyflow/edges/utils.d.ts +0 -17
  98. package/dist/xyflow/nodes/compound/CompoundNode.css.d.ts +0 -11
  99. package/dist/xyflow/nodes/compound/CompoundNode.d.ts +0 -6
  100. package/dist/xyflow/nodes/compound/index.d.ts +0 -1
  101. package/dist/xyflow/nodes/element/ElementLink.css.d.ts +0 -3
  102. package/dist/xyflow/nodes/element/ElementLink.d.ts +0 -7
  103. package/dist/xyflow/nodes/element/ElementNode.d.ts +0 -6
  104. package/dist/xyflow/nodes/element/ElementShapeSvg.d.ts +0 -18
  105. package/dist/xyflow/nodes/element/element.css.d.ts +0 -19
  106. package/dist/xyflow/nodes/element/index.d.ts +0 -1
  107. package/dist/xyflow/nodes/shared/NavigateToBtn.d.ts +0 -5
  108. package/dist/xyflow/types.d.ts +0 -50
  109. package/dist/xyflow/useLayoutConstraints.d.ts +0 -9
  110. package/dist/xyflow/utils.d.ts +0 -18
  111. package/src/mantine.css.ts +0 -7
  112. package/src/reset.d.ts +0 -2
package/dist/style.css DELETED
@@ -1,2139 +0,0 @@
1
- /* this gets exported as style.css and can be used for the default theming */
2
- /* these are the necessary styles for React/Svelte Flow, they get used by base.css and style.css */
3
- .react-flow {
4
- direction: ltr;
5
-
6
- --xy-edge-stroke-default: #b1b1b7;
7
- --xy-edge-stroke-width-default: 1;
8
- --xy-edge-stroke-selected-default: #555;
9
-
10
- --xy-connectionline-stroke-default: #b1b1b7;
11
- --xy-connectionline-stroke-width-default: 1;
12
-
13
- --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);
14
-
15
- --xy-minimap-background-color-default: #fff;
16
- --xy-minimap-mask-background-color-default: rgb(240, 240, 240, 0.6);
17
- --xy-minimap-mask-stroke-color-default: transparent;
18
- --xy-minimap-mask-stroke-width-default: 1;
19
- --xy-minimap-node-background-color-default: #e2e2e2;
20
- --xy-minimap-node-stroke-color-default: transparent;
21
- --xy-minimap-node-stroke-width-default: 2;
22
-
23
- --xy-background-color-default: transparent;
24
- --xy-background-pattern-dots-color-default: #91919a;
25
- --xy-background-pattern-lines-color-default: #eee;
26
- --xy-background-pattern-cross-color-default: #e2e2e2;
27
- background-color: var(--xy-background-color, var(--xy-background-color-default));
28
- --xy-node-color-default: inherit;
29
- --xy-node-border-default: 1px solid #1a192b;
30
- --xy-node-background-color-default: #fff;
31
- --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);
32
- --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);
33
- --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;
34
- --xy-node-border-radius-default: 3px;
35
-
36
- --xy-handle-background-color-default: #1a192b;
37
- --xy-handle-border-color-default: #fff;
38
-
39
- --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);
40
- --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);
41
-
42
- --xy-controls-button-background-color-default: #fefefe;
43
- --xy-controls-button-background-color-hover-default: #f4f4f4;
44
- --xy-controls-button-color-default: inherit;
45
- --xy-controls-button-color-hover-default: inherit;
46
- --xy-controls-button-border-color-default: #eee;
47
- --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);
48
-
49
- --xy-edge-label-background-color-default: #ffffff;
50
- --xy-edge-label-color-default: inherit;
51
- --xy-resize-background-color-default: #3367d9;
52
- }
53
- .react-flow.dark {
54
- --xy-edge-stroke-default: #3e3e3e;
55
- --xy-edge-stroke-width-default: 1;
56
- --xy-edge-stroke-selected-default: #727272;
57
-
58
- --xy-connectionline-stroke-default: #b1b1b7;
59
- --xy-connectionline-stroke-width-default: 1;
60
-
61
- --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25);
62
-
63
- --xy-minimap-background-color-default: #141414;
64
- --xy-minimap-mask-background-color-default: rgb(60, 60, 60, 0.6);
65
- --xy-minimap-mask-stroke-color-default: transparent;
66
- --xy-minimap-mask-stroke-width-default: 1;
67
- --xy-minimap-node-background-color-default: #2b2b2b;
68
- --xy-minimap-node-stroke-color-default: transparent;
69
- --xy-minimap-node-stroke-width-default: 2;
70
-
71
- --xy-background-color-default: #141414;
72
- --xy-background-pattern-dots-color-default: #777;
73
- --xy-background-pattern-lines-color-default: #777;
74
- --xy-background-pattern-cross-color-default: #777;
75
- --xy-node-color-default: #f8f8f8;
76
- --xy-node-border-default: 1px solid #3c3c3c;
77
- --xy-node-background-color-default: #1e1e1e;
78
- --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);
79
- --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);
80
- --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;
81
-
82
- --xy-handle-background-color-default: #bebebe;
83
- --xy-handle-border-color-default: #1e1e1e;
84
-
85
- --xy-selection-background-color-default: rgba(200, 200, 220, 0.08);
86
- --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8);
87
-
88
- --xy-controls-button-background-color-default: #2b2b2b;
89
- --xy-controls-button-background-color-hover-default: #3e3e3e;
90
- --xy-controls-button-color-default: #f8f8f8;
91
- --xy-controls-button-color-hover-default: #fff;
92
- --xy-controls-button-border-color-default: #5b5b5b;
93
- --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);
94
-
95
- --xy-edge-label-background-color-default: #141414;
96
- --xy-edge-label-color-default: #f8f8f8;
97
- }
98
- .react-flow__background {
99
- background-color: var(--xy-background-color, var(--xy-background-color-props, var(--xy-background-color-default)));
100
- pointer-events: none;
101
- z-index: -1;
102
- }
103
- .react-flow__container {
104
- position: absolute;
105
- width: 100%;
106
- height: 100%;
107
- top: 0;
108
- left: 0;
109
- }
110
- .react-flow__pane {
111
- z-index: 1;
112
- }
113
- .react-flow__pane.draggable {
114
- cursor: grab;
115
- }
116
- .react-flow__pane.dragging {
117
- cursor: grabbing;
118
- }
119
- .react-flow__pane.selection {
120
- cursor: pointer;
121
- }
122
- .react-flow__viewport {
123
- transform-origin: 0 0;
124
- z-index: 2;
125
- pointer-events: none;
126
- }
127
- .react-flow__renderer {
128
- z-index: 4;
129
- }
130
- .react-flow__selection {
131
- z-index: 6;
132
- }
133
- .react-flow__nodesselection-rect:focus,
134
- .react-flow__nodesselection-rect:focus-visible {
135
- outline: none;
136
- }
137
- .react-flow__edge-path {
138
- stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
139
- stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));
140
- fill: none;
141
- }
142
- .react-flow__connection-path {
143
- stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));
144
- stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));
145
- fill: none;
146
- }
147
- .react-flow .react-flow__edges {
148
- position: absolute;
149
- }
150
- .react-flow .react-flow__edges svg {
151
- overflow: visible;
152
- position: absolute;
153
- pointer-events: none;
154
- }
155
- .react-flow__edge {
156
- pointer-events: visibleStroke;
157
- }
158
- .react-flow__edge.selectable {
159
- cursor: pointer;
160
- }
161
- .react-flow__edge.animated path {
162
- stroke-dasharray: 5;
163
- animation: dashdraw 0.5s linear infinite;
164
- }
165
- .react-flow__edge.animated path.react-flow__edge-interaction {
166
- stroke-dasharray: none;
167
- animation: none;
168
- }
169
- .react-flow__edge.inactive {
170
- pointer-events: none;
171
- }
172
- .react-flow__edge.selected,
173
- .react-flow__edge:focus,
174
- .react-flow__edge:focus-visible {
175
- outline: none;
176
- }
177
- .react-flow__edge.selected .react-flow__edge-path,
178
- .react-flow__edge.selectable:focus .react-flow__edge-path,
179
- .react-flow__edge.selectable:focus-visible .react-flow__edge-path {
180
- stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));
181
- }
182
- .react-flow__edge-textwrapper {
183
- pointer-events: all;
184
- }
185
- .react-flow__edge .react-flow__edge-text {
186
- pointer-events: none;
187
- -webkit-user-select: none;
188
- -moz-user-select: none;
189
- user-select: none;
190
- }
191
- .react-flow__connection {
192
- pointer-events: none;
193
- }
194
- .react-flow__connection .animated {
195
- stroke-dasharray: 5;
196
- animation: dashdraw 0.5s linear infinite;
197
- }
198
- svg.react-flow__connectionline {
199
- z-index: 1001;
200
- overflow: visible;
201
- position: absolute;
202
- }
203
- .react-flow__nodes {
204
- pointer-events: none;
205
- transform-origin: 0 0;
206
- }
207
- .react-flow__node {
208
- position: absolute;
209
- -webkit-user-select: none;
210
- -moz-user-select: none;
211
- user-select: none;
212
- pointer-events: all;
213
- transform-origin: 0 0;
214
- box-sizing: border-box;
215
- cursor: default;
216
- }
217
- .react-flow__node.selectable {
218
- cursor: pointer;
219
- }
220
- .react-flow__node.draggable {
221
- cursor: grab;
222
- pointer-events: all;
223
- }
224
- .react-flow__node.draggable.dragging {
225
- cursor: grabbing;
226
- }
227
- .react-flow__nodesselection {
228
- z-index: 3;
229
- transform-origin: left top;
230
- pointer-events: none;
231
- }
232
- .react-flow__nodesselection-rect {
233
- position: absolute;
234
- pointer-events: all;
235
- cursor: grab;
236
- }
237
- .react-flow__handle {
238
- position: absolute;
239
- pointer-events: none;
240
- min-width: 5px;
241
- min-height: 5px;
242
- width: 6px;
243
- height: 6px;
244
- background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));
245
- border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));
246
- border-radius: 100%;
247
- }
248
- .react-flow__handle.connectingfrom {
249
- pointer-events: all;
250
- }
251
- .react-flow__handle.connectionindicator {
252
- pointer-events: all;
253
- cursor: crosshair;
254
- }
255
- .react-flow__handle-bottom {
256
- top: auto;
257
- left: 50%;
258
- bottom: 0;
259
- transform: translate(-50%, 50%);
260
- }
261
- .react-flow__handle-top {
262
- top: 0;
263
- left: 50%;
264
- transform: translate(-50%, -50%);
265
- }
266
- .react-flow__handle-left {
267
- top: 50%;
268
- left: 0;
269
- transform: translate(-50%, -50%);
270
- }
271
- .react-flow__handle-right {
272
- top: 50%;
273
- right: 0;
274
- transform: translate(50%, -50%);
275
- }
276
- .react-flow__edgeupdater {
277
- cursor: move;
278
- pointer-events: all;
279
- }
280
- .react-flow__panel {
281
- position: absolute;
282
- z-index: 5;
283
- margin: 15px;
284
- }
285
- .react-flow__panel.top {
286
- top: 0;
287
- }
288
- .react-flow__panel.bottom {
289
- bottom: 0;
290
- }
291
- .react-flow__panel.left {
292
- left: 0;
293
- }
294
- .react-flow__panel.right {
295
- right: 0;
296
- }
297
- .react-flow__panel.center {
298
- left: 50%;
299
- transform: translateX(-50%);
300
- }
301
- .react-flow__attribution {
302
- font-size: 10px;
303
- background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));
304
- padding: 2px 3px;
305
- margin: 0;
306
- }
307
- .react-flow__attribution a {
308
- text-decoration: none;
309
- color: #999;
310
- }
311
- @keyframes dashdraw {
312
- from {
313
- stroke-dashoffset: 10;
314
- }
315
- }
316
- .react-flow__edgelabel-renderer {
317
- position: absolute;
318
- width: 100%;
319
- height: 100%;
320
- pointer-events: none;
321
- -webkit-user-select: none;
322
- -moz-user-select: none;
323
- user-select: none;
324
- left: 0;
325
- top: 0;
326
- }
327
- .react-flow__viewport-portal {
328
- position: absolute;
329
- width: 100%;
330
- height: 100%;
331
- left: 0;
332
- top: 0;
333
- -webkit-user-select: none;
334
- -moz-user-select: none;
335
- user-select: none;
336
- }
337
- .react-flow__minimap {
338
- background: var(
339
- --xy-minimap-background-color-props,
340
- var(--xy-minimap-background-color, var(--xy-minimap-background-color-default))
341
- );
342
- }
343
- .react-flow__minimap-svg {
344
- display: block;
345
- }
346
- .react-flow__minimap-mask {
347
- fill: var(
348
- --xy-minimap-mask-background-color-props,
349
- var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default))
350
- );
351
- stroke: var(
352
- --xy-minimap-mask-stroke-color-props,
353
- var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default))
354
- );
355
- stroke-width: var(
356
- --xy-minimap-mask-stroke-width-props,
357
- var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default))
358
- );
359
- }
360
- .react-flow__minimap-node {
361
- fill: var(
362
- --xy-minimap-node-background-color-props,
363
- var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default))
364
- );
365
- stroke: var(
366
- --xy-minimap-node-stroke-color-props,
367
- var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default))
368
- );
369
- stroke-width: var(
370
- --xy-minimap-node-stroke-width-props,
371
- var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default))
372
- );
373
- }
374
- .react-flow__background-pattern.dots {
375
- fill: var(
376
- --xy-background-pattern-color-props,
377
- var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default))
378
- );
379
- }
380
- .react-flow__background-pattern.lines {
381
- stroke: var(
382
- --xy-background-pattern-color-props,
383
- var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default))
384
- );
385
- }
386
- .react-flow__background-pattern.cross {
387
- stroke: var(
388
- --xy-background-pattern-color-props,
389
- var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default))
390
- );
391
- }
392
- .react-flow__controls {
393
- display: flex;
394
- flex-direction: column;
395
- box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));
396
- }
397
- .react-flow__controls.horizontal {
398
- flex-direction: row;
399
- }
400
- .react-flow__controls-button {
401
- display: flex;
402
- justify-content: center;
403
- align-items: center;
404
- height: 26px;
405
- width: 26px;
406
- padding: 4px;
407
- border: none;
408
- background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));
409
- border-bottom: 1px solid
410
- var(
411
- --xy-controls-button-border-color-props,
412
- var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))
413
- );
414
- color: var(
415
- --xy-controls-button-color-props,
416
- var(--xy-controls-button-color, var(--xy-controls-button-color-default))
417
- );
418
- cursor: pointer;
419
- -webkit-user-select: none;
420
- -moz-user-select: none;
421
- user-select: none;
422
- }
423
- .react-flow__controls-button svg {
424
- width: 100%;
425
- max-width: 12px;
426
- max-height: 12px;
427
- fill: currentColor;
428
- }
429
- .react-flow__edge.updating .react-flow__edge-path {
430
- stroke: #777;
431
- }
432
- .react-flow__edge-text {
433
- font-size: 10px;
434
- }
435
- .react-flow__node.selectable:focus,
436
- .react-flow__node.selectable:focus-visible {
437
- outline: none;
438
- }
439
- .react-flow__node-input,
440
- .react-flow__node-default,
441
- .react-flow__node-output,
442
- .react-flow__node-group {
443
- padding: 10px;
444
- border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));
445
- width: 150px;
446
- font-size: 12px;
447
- color: var(--xy-node-color, var(--xy-node-color-default));
448
- text-align: center;
449
- border: var(--xy-node-border, var(--xy-node-border-default));
450
- background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));
451
- }
452
- .react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {
453
- box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));
454
- }
455
- .react-flow__node-input.selectable.selected,
456
- .react-flow__node-input.selectable:focus,
457
- .react-flow__node-input.selectable:focus-visible,
458
- .react-flow__node-default.selectable.selected,
459
- .react-flow__node-default.selectable:focus,
460
- .react-flow__node-default.selectable:focus-visible,
461
- .react-flow__node-output.selectable.selected,
462
- .react-flow__node-output.selectable:focus,
463
- .react-flow__node-output.selectable:focus-visible,
464
- .react-flow__node-group.selectable.selected,
465
- .react-flow__node-group.selectable:focus,
466
- .react-flow__node-group.selectable:focus-visible {
467
- box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));
468
- }
469
- .react-flow__node-group {
470
- background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));
471
- }
472
- .react-flow__nodesselection-rect,
473
- .react-flow__selection {
474
- background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));
475
- border: var(--xy-selection-border, var(--xy-selection-border-default));
476
- }
477
- .react-flow__nodesselection-rect:focus,
478
- .react-flow__nodesselection-rect:focus-visible,
479
- .react-flow__selection:focus,
480
- .react-flow__selection:focus-visible {
481
- outline: none;
482
- }
483
- .react-flow__controls-button:hover {
484
- background: var(
485
- --xy-controls-button-background-color-hover-props,
486
- var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default))
487
- );
488
- color: var(
489
- --xy-controls-button-color-hover-props,
490
- var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default))
491
- );
492
- }
493
- .react-flow__controls-button:disabled {
494
- pointer-events: none;
495
- }
496
- .react-flow__controls-button:disabled svg {
497
- fill-opacity: 0.4;
498
- }
499
- .react-flow__controls-button:last-child {
500
- border-bottom: none;
501
- }
502
- .react-flow__resize-control {
503
- position: absolute;
504
- }
505
- .react-flow__resize-control.left,
506
- .react-flow__resize-control.right {
507
- cursor: ew-resize;
508
- }
509
- .react-flow__resize-control.top,
510
- .react-flow__resize-control.bottom {
511
- cursor: ns-resize;
512
- }
513
- .react-flow__resize-control.top.left,
514
- .react-flow__resize-control.bottom.right {
515
- cursor: nwse-resize;
516
- }
517
- .react-flow__resize-control.bottom.left,
518
- .react-flow__resize-control.top.right {
519
- cursor: nesw-resize;
520
- }
521
- /* handle styles */
522
- .react-flow__resize-control.handle {
523
- width: 4px;
524
- height: 4px;
525
- border: 1px solid #fff;
526
- border-radius: 1px;
527
- background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));
528
- transform: translate(-50%, -50%);
529
- }
530
- .react-flow__resize-control.handle.left {
531
- left: 0;
532
- top: 50%;
533
- }
534
- .react-flow__resize-control.handle.right {
535
- left: 100%;
536
- top: 50%;
537
- }
538
- .react-flow__resize-control.handle.top {
539
- left: 50%;
540
- top: 0;
541
- }
542
- .react-flow__resize-control.handle.bottom {
543
- left: 50%;
544
- top: 100%;
545
- }
546
- .react-flow__resize-control.handle.top.left {
547
- left: 0;
548
- }
549
- .react-flow__resize-control.handle.bottom.left {
550
- left: 0;
551
- }
552
- .react-flow__resize-control.handle.top.right {
553
- left: 100%;
554
- }
555
- .react-flow__resize-control.handle.bottom.right {
556
- left: 100%;
557
- }
558
- /* line styles */
559
- .react-flow__resize-control.line {
560
- border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));
561
- border-width: 0;
562
- border-style: solid;
563
- }
564
- .react-flow__resize-control.line.left,
565
- .react-flow__resize-control.line.right {
566
- width: 1px;
567
- transform: translate(-50%, 0);
568
- top: 0;
569
- height: 100%;
570
- }
571
- .react-flow__resize-control.line.left {
572
- left: 0;
573
- border-left-width: 1px;
574
- }
575
- .react-flow__resize-control.line.right {
576
- left: 100%;
577
- border-right-width: 1px;
578
- }
579
- .react-flow__resize-control.line.top,
580
- .react-flow__resize-control.line.bottom {
581
- height: 1px;
582
- transform: translate(0, -50%);
583
- left: 0;
584
- width: 100%;
585
- }
586
- .react-flow__resize-control.line.top {
587
- top: 0;
588
- border-top-width: 1px;
589
- }
590
- .react-flow__resize-control.line.bottom {
591
- border-bottom-width: 1px;
592
- top: 100%;
593
- }
594
- .react-flow__edge-textbg {
595
- fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));
596
- }
597
- .react-flow__edge-text {
598
- fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));
599
- }
600
- .likec4-diagram-root {
601
- overflow: hidden;
602
- position: relative;
603
- width: 100%;
604
- height: 100%;
605
- padding: 0;
606
- margin: 0;
607
- box-sizing: border-box;
608
- -webkit-font-smoothing: var(--mantine-webkit-font-smoothing);
609
- -moz-osx-font-smoothing: var(--mantine-moz-font-smoothing);
610
- }
611
- .likec4-diagram-root .mantine-ActionIcon-icon .tabler-icon {
612
- width: 75%;
613
- height: 75%;
614
- }
615
- .likec4-diagram-root {
616
- --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"');
617
- --likec4-background-color: var(--mantine-color-body);
618
- --likec4-background-pattern-color: var(--mantine-color-gray-4);
619
- --likec4-compound-font-family: var(--likec4-font-family);
620
- --likec4-compound-title-color: var(--likec4-element-loContrast);
621
- --likec4-element-font-family: var(--likec4-font-family);
622
- --likec4-element-fill: #3b82f6;
623
- --likec4-element-stroke: #2563eb;
624
- --likec4-element-hiContrast: #eff6ff;
625
- --likec4-element-loContrast: #bfdbfe;
626
- --likec4-relation-lineColor: #64748b;
627
- --likec4-relation-labelBg: #0f172a;
628
- --likec4-relation-labelColor: #cbd5e1;
629
- }
630
- :where([data-mantine-color-scheme="dark"]) .likec4-diagram-root {
631
- --likec4-background-pattern-color: var(--mantine-color-dark-5);
632
- }
633
- :where([data-likec4-color='primary']) {
634
- --likec4-element-fill: #3b82f6;
635
- --likec4-element-stroke: #2563eb;
636
- --likec4-element-hiContrast: #eff6ff;
637
- --likec4-element-loContrast: #bfdbfe;
638
- --likec4-compound-title-color: #bfdbfe;
639
- --likec4-relation-lineColor: #3b82f6;
640
- --likec4-relation-labelBg: #172554;
641
- --likec4-relation-labelColor: #60a5fa;
642
- }
643
- :where([data-likec4-color='primary'][data-compound-depth='1']) {
644
- --likec4-element-fill: #145ed7;
645
- --likec4-element-stroke: #194bb8;
646
- }
647
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='primary'][data-compound-depth='1']) {
648
- --likec4-element-fill: #1a5bc5;
649
- --likec4-element-stroke: #1e49a9;
650
- }
651
- :where([data-likec4-color='primary'][data-compound-depth='2']) {
652
- --likec4-element-fill: #195cc8;
653
- --likec4-element-stroke: #1d4aac;
654
- }
655
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='primary'][data-compound-depth='2']) {
656
- --likec4-element-fill: #1e56b1;
657
- --likec4-element-stroke: #204698;
658
- }
659
- :where([data-likec4-color='primary'][data-compound-depth='3']) {
660
- --likec4-element-fill: #1e59ba;
661
- --likec4-element-stroke: #2149a0;
662
- }
663
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='primary'][data-compound-depth='3']) {
664
- --likec4-element-fill: #21519f;
665
- --likec4-element-stroke: #224289;
666
- }
667
- :where([data-likec4-color='primary'][data-compound-depth='4']) {
668
- --likec4-element-fill: #2357ad;
669
- --likec4-element-stroke: #244795;
670
- }
671
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='primary'][data-compound-depth='4']) {
672
- --likec4-element-fill: #234c8e;
673
- --likec4-element-stroke: #243f7a;
674
- }
675
- :where([data-likec4-color='primary'][data-compound-depth='5']) {
676
- --likec4-element-fill: #2755a0;
677
- --likec4-element-stroke: #27468a;
678
- }
679
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='primary'][data-compound-depth='5']) {
680
- --likec4-element-fill: #25467d;
681
- --likec4-element-stroke: #243b6c;
682
- }
683
- :where([data-likec4-color='primary'][data-compound-depth='6']) {
684
- --likec4-element-fill: #2a5293;
685
- --likec4-element-stroke: #2a447f;
686
- }
687
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='primary'][data-compound-depth='6']) {
688
- --likec4-element-fill: #25416d;
689
- --likec4-element-stroke: #24365f;
690
- }
691
- :where([data-likec4-color='blue']) {
692
- --likec4-element-fill: #3b82f6;
693
- --likec4-element-stroke: #2563eb;
694
- --likec4-element-hiContrast: #eff6ff;
695
- --likec4-element-loContrast: #bfdbfe;
696
- --likec4-compound-title-color: #bfdbfe;
697
- --likec4-relation-lineColor: #3b82f6;
698
- --likec4-relation-labelBg: #172554;
699
- --likec4-relation-labelColor: #60a5fa;
700
- }
701
- :where([data-likec4-color='blue'][data-compound-depth='1']) {
702
- --likec4-element-fill: #145ed7;
703
- --likec4-element-stroke: #194bb8;
704
- }
705
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='blue'][data-compound-depth='1']) {
706
- --likec4-element-fill: #1a5bc5;
707
- --likec4-element-stroke: #1e49a9;
708
- }
709
- :where([data-likec4-color='blue'][data-compound-depth='2']) {
710
- --likec4-element-fill: #195cc8;
711
- --likec4-element-stroke: #1d4aac;
712
- }
713
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='blue'][data-compound-depth='2']) {
714
- --likec4-element-fill: #1e56b1;
715
- --likec4-element-stroke: #204698;
716
- }
717
- :where([data-likec4-color='blue'][data-compound-depth='3']) {
718
- --likec4-element-fill: #1e59ba;
719
- --likec4-element-stroke: #2149a0;
720
- }
721
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='blue'][data-compound-depth='3']) {
722
- --likec4-element-fill: #21519f;
723
- --likec4-element-stroke: #224289;
724
- }
725
- :where([data-likec4-color='blue'][data-compound-depth='4']) {
726
- --likec4-element-fill: #2357ad;
727
- --likec4-element-stroke: #244795;
728
- }
729
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='blue'][data-compound-depth='4']) {
730
- --likec4-element-fill: #234c8e;
731
- --likec4-element-stroke: #243f7a;
732
- }
733
- :where([data-likec4-color='blue'][data-compound-depth='5']) {
734
- --likec4-element-fill: #2755a0;
735
- --likec4-element-stroke: #27468a;
736
- }
737
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='blue'][data-compound-depth='5']) {
738
- --likec4-element-fill: #25467d;
739
- --likec4-element-stroke: #243b6c;
740
- }
741
- :where([data-likec4-color='blue'][data-compound-depth='6']) {
742
- --likec4-element-fill: #2a5293;
743
- --likec4-element-stroke: #2a447f;
744
- }
745
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='blue'][data-compound-depth='6']) {
746
- --likec4-element-fill: #25416d;
747
- --likec4-element-stroke: #24365f;
748
- }
749
- :where([data-likec4-color='secondary']) {
750
- --likec4-element-fill: #0284c7;
751
- --likec4-element-stroke: #0369a1;
752
- --likec4-element-hiContrast: #f0f9ff;
753
- --likec4-element-loContrast: #B6ECF7;
754
- --likec4-compound-title-color: #B6ECF7;
755
- --likec4-relation-lineColor: #0ea5e9;
756
- --likec4-relation-labelBg: #082f49;
757
- --likec4-relation-labelColor: #38bdf8;
758
- }
759
- :where([data-likec4-color='secondary'][data-compound-depth='1']) {
760
- --likec4-element-fill: #086392;
761
- --likec4-element-stroke: #084f76;
762
- }
763
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='secondary'][data-compound-depth='1']) {
764
- --likec4-element-fill: #0d5d86;
765
- --likec4-element-stroke: #0b4a6c;
766
- }
767
- :where([data-likec4-color='secondary'][data-compound-depth='2']) {
768
- --likec4-element-fill: #0c5e88;
769
- --likec4-element-stroke: #0b4b6e;
770
- }
771
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='secondary'][data-compound-depth='2']) {
772
- --likec4-element-fill: #105579;
773
- --likec4-element-stroke: #0e4462;
774
- }
775
- :where([data-likec4-color='secondary'][data-compound-depth='3']) {
776
- --likec4-element-fill: #10597f;
777
- --likec4-element-stroke: #0e4767;
778
- }
779
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='secondary'][data-compound-depth='3']) {
780
- --likec4-element-fill: #134e6c;
781
- --likec4-element-stroke: #103e57;
782
- }
783
- :where([data-likec4-color='secondary'][data-compound-depth='4']) {
784
- --likec4-element-fill: #135475;
785
- --likec4-element-stroke: #11435f;
786
- }
787
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='secondary'][data-compound-depth='4']) {
788
- --likec4-element-fill: #154660;
789
- --likec4-element-stroke: #11384e;
790
- }
791
- :where([data-likec4-color='secondary'][data-compound-depth='5']) {
792
- --likec4-element-fill: #164f6c;
793
- --likec4-element-stroke: #133f58;
794
- }
795
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='secondary'][data-compound-depth='5']) {
796
- --likec4-element-fill: #163f55;
797
- --likec4-element-stroke: #123345;
798
- }
799
- :where([data-likec4-color='secondary'][data-compound-depth='6']) {
800
- --likec4-element-fill: #194a64;
801
- --likec4-element-stroke: #153c51;
802
- }
803
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='secondary'][data-compound-depth='6']) {
804
- --likec4-element-fill: #17384a;
805
- --likec4-element-stroke: #132d3c;
806
- }
807
- :where([data-likec4-color='sky']) {
808
- --likec4-element-fill: #0284c7;
809
- --likec4-element-stroke: #0369a1;
810
- --likec4-element-hiContrast: #f0f9ff;
811
- --likec4-element-loContrast: #B6ECF7;
812
- --likec4-compound-title-color: #B6ECF7;
813
- --likec4-relation-lineColor: #0ea5e9;
814
- --likec4-relation-labelBg: #082f49;
815
- --likec4-relation-labelColor: #38bdf8;
816
- }
817
- :where([data-likec4-color='sky'][data-compound-depth='1']) {
818
- --likec4-element-fill: #086392;
819
- --likec4-element-stroke: #084f76;
820
- }
821
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='sky'][data-compound-depth='1']) {
822
- --likec4-element-fill: #0d5d86;
823
- --likec4-element-stroke: #0b4a6c;
824
- }
825
- :where([data-likec4-color='sky'][data-compound-depth='2']) {
826
- --likec4-element-fill: #0c5e88;
827
- --likec4-element-stroke: #0b4b6e;
828
- }
829
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='sky'][data-compound-depth='2']) {
830
- --likec4-element-fill: #105579;
831
- --likec4-element-stroke: #0e4462;
832
- }
833
- :where([data-likec4-color='sky'][data-compound-depth='3']) {
834
- --likec4-element-fill: #10597f;
835
- --likec4-element-stroke: #0e4767;
836
- }
837
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='sky'][data-compound-depth='3']) {
838
- --likec4-element-fill: #134e6c;
839
- --likec4-element-stroke: #103e57;
840
- }
841
- :where([data-likec4-color='sky'][data-compound-depth='4']) {
842
- --likec4-element-fill: #135475;
843
- --likec4-element-stroke: #11435f;
844
- }
845
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='sky'][data-compound-depth='4']) {
846
- --likec4-element-fill: #154660;
847
- --likec4-element-stroke: #11384e;
848
- }
849
- :where([data-likec4-color='sky'][data-compound-depth='5']) {
850
- --likec4-element-fill: #164f6c;
851
- --likec4-element-stroke: #133f58;
852
- }
853
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='sky'][data-compound-depth='5']) {
854
- --likec4-element-fill: #163f55;
855
- --likec4-element-stroke: #123345;
856
- }
857
- :where([data-likec4-color='sky'][data-compound-depth='6']) {
858
- --likec4-element-fill: #194a64;
859
- --likec4-element-stroke: #153c51;
860
- }
861
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='sky'][data-compound-depth='6']) {
862
- --likec4-element-fill: #17384a;
863
- --likec4-element-stroke: #132d3c;
864
- }
865
- :where([data-likec4-color='muted']) {
866
- --likec4-element-fill: #64748b;
867
- --likec4-element-stroke: #475569;
868
- --likec4-element-hiContrast: #f8fafc;
869
- --likec4-element-loContrast: #cbd5e1;
870
- --likec4-compound-title-color: #cbd5e1;
871
- --likec4-relation-lineColor: #64748b;
872
- --likec4-relation-labelBg: #0f172a;
873
- --likec4-relation-labelColor: #cbd5e1;
874
- }
875
- :where([data-likec4-color='muted'][data-compound-depth='1']) {
876
- --likec4-element-fill: #4e5a6a;
877
- --likec4-element-stroke: #384250;
878
- }
879
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='muted'][data-compound-depth='1']) {
880
- --likec4-element-fill: #4b5563;
881
- --likec4-element-stroke: #363e4b;
882
- }
883
- :where([data-likec4-color='muted'][data-compound-depth='2']) {
884
- --likec4-element-fill: #4c5665;
885
- --likec4-element-stroke: #363f4c;
886
- }
887
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='muted'][data-compound-depth='2']) {
888
- --likec4-element-fill: #474f5c;
889
- --likec4-element-stroke: #333a45;
890
- }
891
- :where([data-likec4-color='muted'][data-compound-depth='3']) {
892
- --likec4-element-fill: #4a5360;
893
- --likec4-element-stroke: #353d48;
894
- }
895
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='muted'][data-compound-depth='3']) {
896
- --likec4-element-fill: #424a54;
897
- --likec4-element-stroke: #30363f;
898
- }
899
- :where([data-likec4-color='muted'][data-compound-depth='4']) {
900
- --likec4-element-fill: #48505b;
901
- --likec4-element-stroke: #333a44;
902
- }
903
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='muted'][data-compound-depth='4']) {
904
- --likec4-element-fill: #3e444d;
905
- --likec4-element-stroke: #2d323a;
906
- }
907
- :where([data-likec4-color='muted'][data-compound-depth='5']) {
908
- --likec4-element-fill: #454c56;
909
- --likec4-element-stroke: #323841;
910
- }
911
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='muted'][data-compound-depth='5']) {
912
- --likec4-element-fill: #393e46;
913
- --likec4-element-stroke: #292e34;
914
- }
915
- :where([data-likec4-color='muted'][data-compound-depth='6']) {
916
- --likec4-element-fill: #434951;
917
- --likec4-element-stroke: #30353d;
918
- }
919
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='muted'][data-compound-depth='6']) {
920
- --likec4-element-fill: #34383e;
921
- --likec4-element-stroke: #26292f;
922
- }
923
- :where([data-likec4-color='slate']) {
924
- --likec4-element-fill: #64748b;
925
- --likec4-element-stroke: #475569;
926
- --likec4-element-hiContrast: #f8fafc;
927
- --likec4-element-loContrast: #cbd5e1;
928
- --likec4-compound-title-color: #cbd5e1;
929
- --likec4-relation-lineColor: #64748b;
930
- --likec4-relation-labelBg: #0f172a;
931
- --likec4-relation-labelColor: #cbd5e1;
932
- }
933
- :where([data-likec4-color='slate'][data-compound-depth='1']) {
934
- --likec4-element-fill: #4e5a6a;
935
- --likec4-element-stroke: #384250;
936
- }
937
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='slate'][data-compound-depth='1']) {
938
- --likec4-element-fill: #4b5563;
939
- --likec4-element-stroke: #363e4b;
940
- }
941
- :where([data-likec4-color='slate'][data-compound-depth='2']) {
942
- --likec4-element-fill: #4c5665;
943
- --likec4-element-stroke: #363f4c;
944
- }
945
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='slate'][data-compound-depth='2']) {
946
- --likec4-element-fill: #474f5c;
947
- --likec4-element-stroke: #333a45;
948
- }
949
- :where([data-likec4-color='slate'][data-compound-depth='3']) {
950
- --likec4-element-fill: #4a5360;
951
- --likec4-element-stroke: #353d48;
952
- }
953
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='slate'][data-compound-depth='3']) {
954
- --likec4-element-fill: #424a54;
955
- --likec4-element-stroke: #30363f;
956
- }
957
- :where([data-likec4-color='slate'][data-compound-depth='4']) {
958
- --likec4-element-fill: #48505b;
959
- --likec4-element-stroke: #333a44;
960
- }
961
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='slate'][data-compound-depth='4']) {
962
- --likec4-element-fill: #3e444d;
963
- --likec4-element-stroke: #2d323a;
964
- }
965
- :where([data-likec4-color='slate'][data-compound-depth='5']) {
966
- --likec4-element-fill: #454c56;
967
- --likec4-element-stroke: #323841;
968
- }
969
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='slate'][data-compound-depth='5']) {
970
- --likec4-element-fill: #393e46;
971
- --likec4-element-stroke: #292e34;
972
- }
973
- :where([data-likec4-color='slate'][data-compound-depth='6']) {
974
- --likec4-element-fill: #434951;
975
- --likec4-element-stroke: #30353d;
976
- }
977
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='slate'][data-compound-depth='6']) {
978
- --likec4-element-fill: #34383e;
979
- --likec4-element-stroke: #26292f;
980
- }
981
- :where([data-likec4-color='gray']) {
982
- --likec4-element-fill: #737373;
983
- --likec4-element-stroke: #525252;
984
- --likec4-element-hiContrast: #fafafa;
985
- --likec4-element-loContrast: #d4d4d4;
986
- --likec4-compound-title-color: #d4d4d4;
987
- --likec4-relation-lineColor: #6E6E6E;
988
- --likec4-relation-labelBg: #18191b;
989
- --likec4-relation-labelColor: #C6C6C6;
990
- }
991
- :where([data-likec4-color='gray'][data-compound-depth='1']) {
992
- --likec4-element-fill: #595959;
993
- --likec4-element-stroke: #3f3f3f;
994
- }
995
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='gray'][data-compound-depth='1']) {
996
- --likec4-element-fill: #545454;
997
- --likec4-element-stroke: #3c3c3c;
998
- }
999
- :where([data-likec4-color='gray'][data-compound-depth='2']) {
1000
- --likec4-element-fill: #555555;
1001
- --likec4-element-stroke: #3d3d3d;
1002
- }
1003
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='gray'][data-compound-depth='2']) {
1004
- --likec4-element-fill: #4e4e4e;
1005
- --likec4-element-stroke: #383838;
1006
- }
1007
- :where([data-likec4-color='gray'][data-compound-depth='3']) {
1008
- --likec4-element-fill: #525252;
1009
- --likec4-element-stroke: #3a3a3a;
1010
- }
1011
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='gray'][data-compound-depth='3']) {
1012
- --likec4-element-fill: #484848;
1013
- --likec4-element-stroke: #343434;
1014
- }
1015
- :where([data-likec4-color='gray'][data-compound-depth='4']) {
1016
- --likec4-element-fill: #4e4e4e;
1017
- --likec4-element-stroke: #383838;
1018
- }
1019
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='gray'][data-compound-depth='4']) {
1020
- --likec4-element-fill: #434343;
1021
- --likec4-element-stroke: #303030;
1022
- }
1023
- :where([data-likec4-color='gray'][data-compound-depth='5']) {
1024
- --likec4-element-fill: #4b4b4b;
1025
- --likec4-element-stroke: #353535;
1026
- }
1027
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='gray'][data-compound-depth='5']) {
1028
- --likec4-element-fill: #3d3d3d;
1029
- --likec4-element-stroke: #2b2b2b;
1030
- }
1031
- :where([data-likec4-color='gray'][data-compound-depth='6']) {
1032
- --likec4-element-fill: #474747;
1033
- --likec4-element-stroke: #333333;
1034
- }
1035
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='gray'][data-compound-depth='6']) {
1036
- --likec4-element-fill: #373737;
1037
- --likec4-element-stroke: #272727;
1038
- }
1039
- :where([data-likec4-color='red']) {
1040
- --likec4-element-fill: #AC4D39;
1041
- --likec4-element-stroke: #853A2D;
1042
- --likec4-element-hiContrast: #FBD3CB;
1043
- --likec4-element-loContrast: #f5b2a3;
1044
- --likec4-compound-title-color: #f5b2a3;
1045
- --likec4-relation-lineColor: #AC4D39;
1046
- --likec4-relation-labelBg: #b91c1c;
1047
- --likec4-relation-labelColor: #f5b2a3;
1048
- }
1049
- :where([data-likec4-color='red'][data-compound-depth='1']) {
1050
- --likec4-element-fill: #803e30;
1051
- --likec4-element-stroke: #632f26;
1052
- }
1053
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='red'][data-compound-depth='1']) {
1054
- --likec4-element-fill: #773d30;
1055
- --likec4-element-stroke: #5c2e26;
1056
- }
1057
- :where([data-likec4-color='red'][data-compound-depth='2']) {
1058
- --likec4-element-fill: #793d31;
1059
- --likec4-element-stroke: #5e2e26;
1060
- }
1061
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='red'][data-compound-depth='2']) {
1062
- --likec4-element-fill: #6c3a2f;
1063
- --likec4-element-stroke: #542c25;
1064
- }
1065
- :where([data-likec4-color='red'][data-compound-depth='3']) {
1066
- --likec4-element-fill: #723c31;
1067
- --likec4-element-stroke: #582e27;
1068
- }
1069
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='red'][data-compound-depth='3']) {
1070
- --likec4-element-fill: #62372e;
1071
- --likec4-element-stroke: #4c2a24;
1072
- }
1073
- :where([data-likec4-color='red'][data-compound-depth='4']) {
1074
- --likec4-element-fill: #6a3b31;
1075
- --likec4-element-stroke: #522d27;
1076
- }
1077
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='red'][data-compound-depth='4']) {
1078
- --likec4-element-fill: #58342c;
1079
- --likec4-element-stroke: #442823;
1080
- }
1081
- :where([data-likec4-color='red'][data-compound-depth='5']) {
1082
- --likec4-element-fill: #633a31;
1083
- --likec4-element-stroke: #4d2c27;
1084
- }
1085
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='red'][data-compound-depth='5']) {
1086
- --likec4-element-fill: #4f312a;
1087
- --likec4-element-stroke: #3d2521;
1088
- }
1089
- :where([data-likec4-color='red'][data-compound-depth='6']) {
1090
- --likec4-element-fill: #5d3931;
1091
- --likec4-element-stroke: #482b27;
1092
- }
1093
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='red'][data-compound-depth='6']) {
1094
- --likec4-element-fill: #462d28;
1095
- --likec4-element-stroke: #36231f;
1096
- }
1097
- :where([data-likec4-color='green']) {
1098
- --likec4-element-fill: #428a4f;
1099
- --likec4-element-stroke: #2d5d39;
1100
- --likec4-element-hiContrast: #f8fafc;
1101
- --likec4-element-loContrast: #c2f0c2;
1102
- --likec4-compound-title-color: #c2f0c2;
1103
- --likec4-relation-lineColor: #15803d;
1104
- --likec4-relation-labelBg: #052e16;
1105
- --likec4-relation-labelColor: #22c55e;
1106
- }
1107
- :where([data-likec4-color='green'][data-compound-depth='1']) {
1108
- --likec4-element-fill: #35683e;
1109
- --likec4-element-stroke: #24462d;
1110
- }
1111
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='green'][data-compound-depth='1']) {
1112
- --likec4-element-fill: #34613c;
1113
- --likec4-element-stroke: #24412b;
1114
- }
1115
- :where([data-likec4-color='green'][data-compound-depth='2']) {
1116
- --likec4-element-fill: #35623d;
1117
- --likec4-element-stroke: #24422c;
1118
- }
1119
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='green'][data-compound-depth='2']) {
1120
- --likec4-element-fill: #325839;
1121
- --likec4-element-stroke: #223c29;
1122
- }
1123
- :where([data-likec4-color='green'][data-compound-depth='3']) {
1124
- --likec4-element-fill: #345d3c;
1125
- --likec4-element-stroke: #243e2a;
1126
- }
1127
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='green'][data-compound-depth='3']) {
1128
- --likec4-element-fill: #305136;
1129
- --likec4-element-stroke: #213626;
1130
- }
1131
- :where([data-likec4-color='green'][data-compound-depth='4']) {
1132
- --likec4-element-fill: #33573a;
1133
- --likec4-element-stroke: #233b29;
1134
- }
1135
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='green'][data-compound-depth='4']) {
1136
- --likec4-element-fill: #2d4932;
1137
- --likec4-element-stroke: #1f3123;
1138
- }
1139
- :where([data-likec4-color='green'][data-compound-depth='5']) {
1140
- --likec4-element-fill: #335238;
1141
- --likec4-element-stroke: #223728;
1142
- }
1143
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='green'][data-compound-depth='5']) {
1144
- --likec4-element-fill: #2b422f;
1145
- --likec4-element-stroke: #1d2c21;
1146
- }
1147
- :where([data-likec4-color='green'][data-compound-depth='6']) {
1148
- --likec4-element-fill: #324d37;
1149
- --likec4-element-stroke: #223426;
1150
- }
1151
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='green'][data-compound-depth='6']) {
1152
- --likec4-element-fill: #283a2b;
1153
- --likec4-element-stroke: #1b271e;
1154
- }
1155
- :where([data-likec4-color='amber']) {
1156
- --likec4-element-fill: #A35829;
1157
- --likec4-element-stroke: #7E451D;
1158
- --likec4-element-hiContrast: #FFE0C2;
1159
- --likec4-element-loContrast: #f9b27c;
1160
- --likec4-compound-title-color: #f9b27c;
1161
- --likec4-relation-lineColor: #b45309;
1162
- --likec4-relation-labelBg: #78350f;
1163
- --likec4-relation-labelColor: #FFE0C2;
1164
- }
1165
- :where([data-likec4-color='amber'][data-compound-depth='1']) {
1166
- --likec4-element-fill: #794524;
1167
- --likec4-element-stroke: #5e361a;
1168
- }
1169
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='amber'][data-compound-depth='1']) {
1170
- --likec4-element-fill: #704225;
1171
- --likec4-element-stroke: #56331b;
1172
- }
1173
- :where([data-likec4-color='amber'][data-compound-depth='2']) {
1174
- --likec4-element-fill: #724325;
1175
- --likec4-element-stroke: #58341b;
1176
- }
1177
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='amber'][data-compound-depth='2']) {
1178
- --likec4-element-fill: #663e25;
1179
- --likec4-element-stroke: #4e301b;
1180
- }
1181
- :where([data-likec4-color='amber'][data-compound-depth='3']) {
1182
- --likec4-element-fill: #6b4126;
1183
- --likec4-element-stroke: #52321c;
1184
- }
1185
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='amber'][data-compound-depth='3']) {
1186
- --likec4-element-fill: #5c3a25;
1187
- --likec4-element-stroke: #472d1b;
1188
- }
1189
- :where([data-likec4-color='amber'][data-compound-depth='4']) {
1190
- --likec4-element-fill: #643e27;
1191
- --likec4-element-stroke: #4d301d;
1192
- }
1193
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='amber'][data-compound-depth='4']) {
1194
- --likec4-element-fill: #533624;
1195
- --likec4-element-stroke: #402a1a;
1196
- }
1197
- :where([data-likec4-color='amber'][data-compound-depth='5']) {
1198
- --likec4-element-fill: #5d3c28;
1199
- --likec4-element-stroke: #472f1d;
1200
- }
1201
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='amber'][data-compound-depth='5']) {
1202
- --likec4-element-fill: #493223;
1203
- --likec4-element-stroke: #38261a;
1204
- }
1205
- :where([data-likec4-color='amber'][data-compound-depth='6']) {
1206
- --likec4-element-fill: #563a28;
1207
- --likec4-element-stroke: #422d1e;
1208
- }
1209
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='amber'][data-compound-depth='6']) {
1210
- --likec4-element-fill: #412d21;
1211
- --likec4-element-stroke: #322319;
1212
- }
1213
- :where([data-likec4-color='indigo']) {
1214
- --likec4-element-fill: #6366f1;
1215
- --likec4-element-stroke: #4f46e5;
1216
- --likec4-element-hiContrast: #eef2ff;
1217
- --likec4-element-loContrast: #c7d2fe;
1218
- --likec4-compound-title-color: #c7d2fe;
1219
- --likec4-relation-lineColor: #6366f1;
1220
- --likec4-relation-labelBg: #1e1b4b;
1221
- --likec4-relation-labelColor: #818cf8;
1222
- }
1223
- :where([data-likec4-color='indigo'][data-compound-depth='1']) {
1224
- --likec4-element-fill: #2529e1;
1225
- --likec4-element-stroke: #2d24c2;
1226
- }
1227
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='indigo'][data-compound-depth='1']) {
1228
- --likec4-element-fill: #2529d3;
1229
- --likec4-element-stroke: #3028b2;
1230
- }
1231
- :where([data-likec4-color='indigo'][data-compound-depth='2']) {
1232
- --likec4-element-fill: #2428d7;
1233
- --likec4-element-stroke: #3028b5;
1234
- }
1235
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='indigo'][data-compound-depth='2']) {
1236
- --likec4-element-fill: #282bbf;
1237
- --likec4-element-stroke: #312aa1;
1238
- }
1239
- :where([data-likec4-color='indigo'][data-compound-depth='3']) {
1240
- --likec4-element-fill: #292cc8;
1241
- --likec4-element-stroke: #322ba9;
1242
- }
1243
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='indigo'][data-compound-depth='3']) {
1244
- --likec4-element-fill: #2b2dac;
1245
- --likec4-element-stroke: #312b91;
1246
- }
1247
- :where([data-likec4-color='indigo'][data-compound-depth='4']) {
1248
- --likec4-element-fill: #2d30ba;
1249
- --likec4-element-stroke: #342e9e;
1250
- }
1251
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='indigo'][data-compound-depth='4']) {
1252
- --likec4-element-fill: #2c2f99;
1253
- --likec4-element-stroke: #302c82;
1254
- }
1255
- :where([data-likec4-color='indigo'][data-compound-depth='5']) {
1256
- --likec4-element-fill: #3133ac;
1257
- --likec4-element-stroke: #363092;
1258
- }
1259
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='indigo'][data-compound-depth='5']) {
1260
- --likec4-element-fill: #2d2f87;
1261
- --likec4-element-stroke: #2f2b73;
1262
- }
1263
- :where([data-likec4-color='indigo'][data-compound-depth='6']) {
1264
- --likec4-element-fill: #34369f;
1265
- --likec4-element-stroke: #373287;
1266
- }
1267
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color='indigo'][data-compound-depth='6']) {
1268
- --likec4-element-fill: #2d2e76;
1269
- --likec4-element-stroke: #2e2b65;
1270
- }.react-flow._2h8g8h0 {
1271
- --xy-background-color: var(--likec4-background-color);
1272
- --xy-background-pattern-color: var(--likec4-background-pattern-color);
1273
- }
1274
- .react-flow._2h8g8h0._2h8g8h2 {
1275
- --likec4-background-color: transparent !important;
1276
- --xy-background-color: transparent !important;
1277
- background-color: transparent !important;
1278
- }
1279
- :where(._2h8g8h3, ._2h8g8h2) .react-flow__attribution {
1280
- display: none;
1281
- }
1282
- @supports (hanging-punctuation: first) and (font: -apple-system-body) and (-webkit-appearance: none) {
1283
- ._2h8g8h0 {
1284
- --likec4-safari-animation-hook: ;
1285
- }
1286
- }@keyframes bexn7q7 {
1287
- from {
1288
- stroke-dashoffset: 46;
1289
- }
1290
- to {
1291
- stroke-dashoffset: 10;
1292
- }
1293
- }
1294
- .bexn7q1 {
1295
- --bexn7q0: black;
1296
- --xy-edge-stroke: var(--likec4-relation-lineColor);
1297
- --xy-edge-stroke-selected: color-mix(in srgb, var(--likec4-relation-lineColor), var(--bexn7q0) 35%);
1298
- --xy-edge-label-color: color-mix(in srgb, var(--likec4-relation-labelColor), rgba(255 255 255 / 0.85) 40%);
1299
- --xy-edge-label-background-color: color-mix(in srgb, var(--likec4-relation-labelBg), transparent 40%);
1300
- --xy-edge-stroke-width: 3;
1301
- }
1302
- :where([data-mantine-color-scheme="dark"]) .bexn7q1 {
1303
- --bexn7q0: white;
1304
- --xy-edge-label-color: var(--likec4-relation-labelColor);
1305
- --xy-edge-label-background-color: color-mix(in srgb, var(--likec4-relation-labelBg), transparent 50%);
1306
- }
1307
- :where(.react-flow__edge.selected) .bexn7q1 {
1308
- --xy-edge-stroke: var(--xy-edge-stroke-selected);
1309
- --xy-edge-stroke-width: 3;
1310
- }
1311
- .bexn7q1:is([data-edge-hovered='true'],[data-edge-active='true']) {
1312
- --xy-edge-stroke: var(--xy-edge-stroke-selected);
1313
- --xy-edge-stroke-width: 3;
1314
- }
1315
- :where(.react-flow__edge.selected) .bexn7q1[data-edge-hovered='true'] {
1316
- --xy-edge-stroke-width: 4;
1317
- }
1318
- .react-flow__edges > svg {
1319
- mix-blend-mode: plus-lighter;
1320
- }
1321
- .react-flow__edges > svg:has(.bexn7q2) {
1322
- opacity: 0.6;
1323
- transition: opacity 600ms ease-in-out, filter 600ms ease-in-out;
1324
- transition-delay: 200ms;
1325
- filter: grayscale(0.85) var(--likec4-safari-animation-hook, blur(1px));
1326
- will-change: opacity, filter;
1327
- }
1328
- .bexn7q3 {
1329
- stroke-opacity: 0.08;
1330
- transition-property: stroke-width, stroke-opacity;
1331
- transition-duration: 155ms;
1332
- transition-timing-function: ease-out;
1333
- }
1334
- :where(.react-flow__edge.selected, [data-edge-active='true'], [data-edge-hovered='true']) .bexn7q3 {
1335
- stroke-width: calc(var(--xy-edge-stroke-width) + 8);
1336
- stroke-opacity: 0.15;
1337
- }
1338
- .bexn7q4 {
1339
- fill: var(--xy-edge-stroke);
1340
- stroke: var(--xy-edge-stroke);
1341
- }
1342
- .bexn7q5 {
1343
- fill: var(--xy-edge-stroke);
1344
- stroke: var(--xy-edge-stroke);
1345
- fill-opacity: 0.75;
1346
- stroke-width: 1;
1347
- cursor: grab;
1348
- pointer-events: auto;
1349
- visibility: hidden;
1350
- }
1351
- .bexn7q5:hover {
1352
- stroke: var(--mantine-primary-color-filled-hover);
1353
- stroke-width: 9;
1354
- transition: stroke 100ms ease-out, stroke-width 100ms ease-out;
1355
- }
1356
- :where(.react-flow__edge.selected, [data-edge-hovered='true']) .bexn7q5 {
1357
- visibility: visible;
1358
- transition: fill-opacity 150ms ease-out, stroke 150ms ease-out, stroke-width 150ms ease-out;
1359
- transition-delay: 50ms;
1360
- fill-opacity: 1;
1361
- stroke-width: 5;
1362
- }
1363
- .bexn7q6 {
1364
- cursor: grabbing;
1365
- }
1366
- .bexn7q6 * {
1367
- cursor: grabbing !important;
1368
- }
1369
- .bexn7q8 {
1370
- animation-duration: 800ms;
1371
- animation-iteration-count: infinite;
1372
- animation-timing-function: linear;
1373
- animation-fill-mode: both;
1374
- stroke-dashoffset: 10;
1375
- }
1376
- :where([data-edge-hovered='true']) .bexn7q8 {
1377
- animation-name: bexn7q7;
1378
- animation-delay: 450ms;
1379
- transition: stroke 130ms ease-out,stroke-width 130ms ease-out;
1380
- }
1381
- :where(.react-flow__edge.selected, [data-edge-active='true']) .bexn7q8 {
1382
- animation-name: bexn7q7;
1383
- animation-delay: 0ms;
1384
- transition: stroke 130ms ease-out,stroke-width 130ms ease-out;
1385
- }
1386
- :where([data-edge-dir='back']) .bexn7q8 {
1387
- animation-direction: reverse;
1388
- }
1389
- .bexn7q2 .bexn7q8 {
1390
- animation-play-state: paused;
1391
- }
1392
- .bexn7q9 {
1393
- flex: 0 0 auto;
1394
- font-weight: 600;
1395
- font-size: calc(0.875rem * var(--mantine-scale));
1396
- line-height: 1;
1397
- padding: 5px 5px;
1398
- text-align: center;
1399
- min-width: 22px;
1400
- border-top-left-radius: 2px;
1401
- border-bottom-left-radius: 2px;
1402
- background-color: color-mix(in srgb, var(--likec4-relation-labelBg), var(--bexn7q0) 5%);
1403
- font-variant-numeric: tabular-nums;
1404
- }
1405
- :where([data-mantine-color-scheme="dark"]) :where([data-likec4-color="gray"]) .bexn7q9 {
1406
- background-color: color-mix(in srgb, var(--likec4-relation-labelBg), var(--bexn7q0) 15%);
1407
- }
1408
- .bexn7qd {
1409
- --bexn7qc: translate(var(--bexn7qa, -50%), var(--bexn7qb, -50%));
1410
- top: 0;
1411
- left: 0;
1412
- padding: 2px 4px 4px 4px;
1413
- font-family: var(--likec4-font-family);
1414
- display: flex;
1415
- position: absolute;
1416
- pointer-events: all;
1417
- cursor: pointer;
1418
- width: fit-content;
1419
- transform-origin: 50% 50%;
1420
- mix-blend-mode: plus-lighter;
1421
- color: var(--xy-edge-label-color);
1422
- background-color: var(--xy-edge-label-background-color);
1423
- border-radius: 2px;
1424
- transform: var(--bexn7qc);
1425
- }
1426
- .bexn7qd[data-edge-hovered="true"] {
1427
- transition: all 140ms ease-in-out;
1428
- transform: var(--bexn7qc) scale(1.12);
1429
- }
1430
- .bexn7qd:has(.bexn7q9) {
1431
- padding: 0;
1432
- gap: 2px;
1433
- }
1434
- .bexn7qd:is(.bexn7q2) {
1435
- opacity: 0.3;
1436
- transition: opacity 600ms ease-in-out, filter 600ms ease-in-out;
1437
- transition-delay: 200ms;
1438
- filter: grayscale(0.85) var(--likec4-safari-animation-hook, blur(1px));
1439
- will-change: opacity, filter;
1440
- }
1441
- .bexn7qe {
1442
- text-align: center;
1443
- white-space-collapse: preserve-breaks;
1444
- font-size: calc(0.875rem * var(--mantine-scale));
1445
- line-height: 1.185;
1446
- }
1447
- .bexn7qd:has(.bexn7q9) .bexn7qe {
1448
- padding: 2px 5px 4px 2px;
1449
- }@keyframes lbtzdoa {
1450
- from {
1451
- opacity: 0.6;
1452
- }
1453
- to {
1454
- opacity: 0.3;
1455
- }
1456
- }
1457
- .lbtzdo0 {
1458
- width: 100%;
1459
- height: 100%;
1460
- position: relative;
1461
- padding: 0;
1462
- margin: 0;
1463
- }
1464
- .lbtzdo1 {
1465
- top: 50%;
1466
- left: 50%;
1467
- visibility: hidden;
1468
- }
1469
- .react-flow__node-compound:has(.lbtzdo2) {
1470
- opacity: 0.25;
1471
- transition: opacity 600ms ease-in-out, filter 600ms ease-in-out;
1472
- transition-delay: 200ms;
1473
- filter: grayscale(0.85) var(--likec4-safari-animation-hook, blur(1px));
1474
- will-change: opacity, filter;
1475
- }
1476
- .lbtzdo5 {
1477
- width: 100%;
1478
- height: 100%;
1479
- position: relative;
1480
- border-radius: 6px;
1481
- box-shadow: 0 4px 10px 0.5px rgba(0,0,0,0.1) , 0 2px 2px -1px rgba(0,0,0,0.4);
1482
- padding: 0;
1483
- margin: 0;
1484
- transition: all 200ms ease-out;
1485
- background-clip: padding-box;
1486
- overflow: hidden;
1487
- cursor: default;
1488
- }
1489
- .lbtzdo5:before {
1490
- content: " ";
1491
- position: absolute;
1492
- top: 0;
1493
- left: 0;
1494
- width: 100%;
1495
- height: 100%;
1496
- pointer-events: none;
1497
- transition: background 175ms ease-out, opacity 175ms ease-out;
1498
- background: var(--likec4-element-fill);
1499
- }
1500
- :where(.react-flow__node.selected) .lbtzdo5 {
1501
- box-shadow: none;
1502
- }
1503
- :where(.react-flow__node:focus-visible) .lbtzdo5 {
1504
- transition-duration: 0ms;
1505
- outline: 3px solid var(--mantine-primary-color-outline, var(--mantine-primary-color-filled, var(--likec4-element-stroke)));
1506
- outline-offset: calc(0.09375rem * var(--mantine-scale));
1507
- }
1508
- .lbtzdo7 {
1509
- --lbtzdo6: 0;
1510
- --ai-bg: color-mix(in srgb , var(--likec4-element-fill), transparent 99%);
1511
- border-style: dashed;
1512
- border-width: 3px;
1513
- box-shadow: none;
1514
- border-color: color-mix(in srgb , var(--likec4-element-stroke), transparent var(--lbtzdo4, 10%));
1515
- }
1516
- .lbtzdo7:before {
1517
- border-radius: unset;
1518
- transition-delay: 100ms;
1519
- opacity: calc(var(--lbtzdo3, 1) + var(--lbtzdo6));
1520
- }
1521
- :where([data-hovered]) .lbtzdo7 {
1522
- --lbtzdo6: .08;
1523
- }
1524
- .lbtzdo8 {
1525
- font-family: var(--likec4-compound-font-family);
1526
- text-align: left;
1527
- font-weight: 600;
1528
- font-size: calc(0.9375rem * var(--mantine-scale));
1529
- text-transform: uppercase;
1530
- letter-spacing: 0.2px;
1531
- line-height: 1;
1532
- color: var(--_compound-title-color,var(--likec4-compound-title-color));
1533
- padding-left: 14px;
1534
- padding-top: 13px;
1535
- padding-bottom: 6px;
1536
- mix-blend-mode: screen;
1537
- }
1538
- :where(.react-flow__node.draggable) .lbtzdo8 {
1539
- cursor: grab;
1540
- }
1541
- :where(.likec4-compound-transparent) .lbtzdo8 {
1542
- padding-top: 10px;
1543
- }
1544
- .lbtzdo9 {
1545
- padding-left: 32px;
1546
- }
1547
- :where([data-mantine-color-scheme='light'] .likec4-compound-transparent) {
1548
- --_compound-title-color: var(--likec4-element-stroke);
1549
- }
1550
- .lbtzdod {
1551
- --lbtzdob: var(--likec4-element-loContrast);
1552
- --lbtzdoc: 6;
1553
- position: absolute;
1554
- top: 0;
1555
- left: 0;
1556
- width: 100%;
1557
- height: 100%;
1558
- pointer-events: none;
1559
- overflow: visible;
1560
- visibility: hidden;
1561
- }
1562
- :where(.react-flow__node.selected:not(:focus-visible)) .lbtzdod {
1563
- visibility: visible;
1564
- }
1565
- :where(.react-flow__node:focus-within:not(.selected)) .lbtzdod {
1566
- --lbtzdob: color-mix(in srgb, var(--likec4-element-stroke) 30%, var(--likec4-element-loContrast));
1567
- --lbtzdoc: 8;
1568
- }
1569
- :where([data-mantine-color-scheme='light']) .lbtzdod {
1570
- --lbtzdob: color-mix(in srgb, var(--likec4-element-stroke) 80%, #000);
1571
- }
1572
- .lbtzdod rect {
1573
- stroke: var(--lbtzdob);
1574
- transform-origin: center center;
1575
- stroke-width: var(--lbtzdoc);
1576
- animation-duration: 800ms;
1577
- animation-name: lbtzdoa;
1578
- animation-iteration-count: infinite;
1579
- animation-direction: alternate;
1580
- fill: none;
1581
- }
1582
- .lbtzdo0 {
1583
- --lbtzdoe: var(--likec4-element-loContrast);
1584
- }
1585
- :where([data-mantine-color-scheme='light'] .likec4-compound-transparent) {
1586
- --lbtzdoe: var(--likec4-element-stroke);
1587
- }
1588
- .lbtzdof {
1589
- --ai-bg: color-mix(in srgb , var(--likec4-element-fill), transparent 99%);
1590
- --ai-bg-hover: color-mix(in srgb , var(--likec4-element-fill) 65%, var(--likec4-element-stroke));
1591
- --ai-hover: color-mix(in srgb , var(--likec4-element-fill) 50%, var(--likec4-element-stroke));
1592
- position: absolute;
1593
- pointer-events: all;
1594
- left: 3px;
1595
- top: 6px;
1596
- cursor: pointer;
1597
- color: var(--_compound-title-color,var(--lbtzdoe));
1598
- transform-origin: 90% 50%;
1599
- opacity: 0.75;
1600
- transition: all 150ms ease-out;
1601
- transition-delay: 0ms;
1602
- background-color: var(--ai-bg);
1603
- }
1604
- .lbtzdof:hover {
1605
- box-shadow: var(--mantine-shadow-lg);
1606
- transform: scale(1.42);
1607
- opacity: 1;
1608
- transition-delay: 0;
1609
- }
1610
- .lbtzdof:active {
1611
- transform: scale(1.1);
1612
- opacity: 1;
1613
- transition-delay: 0;
1614
- }
1615
- :where([data-mantine-color-scheme='light'] .likec4-compound-transparent) .lbtzdof {
1616
- --ai-bg-hover: color-mix(in srgb , var(--likec4-element-fill), transparent 60%);
1617
- --ai-hover: color-mix(in srgb , var(--likec4-element-fill), transparent 20%);
1618
- opacity: 0.85;
1619
- }
1620
- :where(.react-flow__node:not(.dragging) .lbtzdo0:hover) .lbtzdof:not(:hover) {
1621
- --ai-bg: var(--ai-bg-hover);
1622
- box-shadow: var(--mantine-shadow-lg);
1623
- transform: scale(1.223);
1624
- opacity: 1;
1625
- transition-delay: 250ms;
1626
- }
1627
- .lbtzdof svg.icon {
1628
- width: 75%;
1629
- height: 75%;
1630
- stroke-width: 1.5;
1631
- }@keyframes _1b6tkn5 {
1632
- from {
1633
- stroke-opacity: 0.8;
1634
- }
1635
- to {
1636
- stroke-opacity: 0.5;
1637
- }
1638
- }
1639
- ._1b6tkn1 {
1640
- --_1b6tkn0: color-mix(in srgb, var(--likec4-element-stroke) 90%, var(--likec4-element-fill));
1641
- width: 100%;
1642
- height: 100%;
1643
- padding: 0;
1644
- margin: 0;
1645
- flex: 1;
1646
- display: flex;
1647
- align-items: center;
1648
- justify-content: center;
1649
- }
1650
- :where(.react-flow__node.selected) ._1b6tkn1 {
1651
- will-change: transform;
1652
- }
1653
- ._1b6tkn1[data-hovered="true"] {
1654
- will-change: transform;
1655
- }
1656
- ._1b6tkn2 {
1657
- top: 50%;
1658
- left: 50%;
1659
- visibility: hidden;
1660
- }
1661
- ._1b6tkn3 {
1662
- will-change: transform;
1663
- }
1664
- .react-flow__node-element:has(._1b6tkn4) {
1665
- opacity: 0.25;
1666
- transition: opacity 400ms ease-in-out, filter 500ms ease-in-out;
1667
- transition-delay: 50ms;
1668
- filter: grayscale(0.85) var(--likec4-safari-animation-hook, blur(2px));
1669
- will-change: opacity, filter;
1670
- }
1671
- ._1b6tkn7 {
1672
- --_1b6tkn6: var(--likec4-element-loContrast);
1673
- stroke: var(--_1b6tkn6);
1674
- fill: none;
1675
- transform-origin: center center;
1676
- stroke-width: 6;
1677
- animation-duration: 1s;
1678
- animation-iteration-count: infinite;
1679
- animation-direction: alternate;
1680
- stroke-opacity: 0.8;
1681
- visibility: hidden;
1682
- }
1683
- :where(.react-flow__node.selected) ._1b6tkn7 {
1684
- visibility: visible;
1685
- animation-name: var(--likec4-safari-animation-hook, _1b6tkn5);
1686
- }
1687
- :where(.react-flow__node:focus-visible, ._1b6tkn1:focus-visible) ._1b6tkn7 {
1688
- stroke-width: 10;
1689
- stroke: var(--mantine-primary-color-outline, var(--mantine-primary-color-filled, var(--likec4-element-stroke)));
1690
- visibility: visible;
1691
- }
1692
- :where([data-likec4-shape="queue"], [data-likec4-shape="cylinder"], [data-likec4-shape="storage"]) ._1b6tkn7 {
1693
- stroke-width: 10;
1694
- }
1695
- :where([data-mantine-color-scheme='light']) ._1b6tkn7 {
1696
- --_1b6tkn6: color-mix(in srgb, var(--likec4-element-fill) 50%, #3c3c3c);
1697
- }
1698
- ._1b6tkn4 ._1b6tkn7 {
1699
- visibility: hidden;
1700
- display: none;
1701
- }
1702
- ._1b6tkn8 {
1703
- fill: var(--likec4-element-fill);
1704
- }
1705
- ._1b6tkn9 {
1706
- fill: var(--likec4-element-stroke);
1707
- }
1708
- ._1b6tkna {
1709
- fill: var(--_1b6tkn0);
1710
- }
1711
- ._1b6tkne {
1712
- flex: 0 0 auto;
1713
- font-family: var(--likec4-element-font-family);
1714
- font-optical-sizing: auto;
1715
- font-style: normal;
1716
- text-align: var(--_1b6tknc);
1717
- font-weight: 500;
1718
- font-size: 19px;
1719
- line-height: 1.15;
1720
- text-wrap: balance;
1721
- color: var(--likec4-element-hiContrast);
1722
- }
1723
- ._1b6tknf {
1724
- flex: 0 1 auto;
1725
- font-family: var(--likec4-element-font-family);
1726
- font-optical-sizing: auto;
1727
- font-style: normal;
1728
- font-weight: 400;
1729
- font-size: 14px;
1730
- line-height: 1.2;
1731
- text-align: var(--_1b6tknc);
1732
- text-wrap: pretty;
1733
- color: var(--likec4-element-loContrast);
1734
- white-space-collapse: preserve-breaks;
1735
- text-overflow: ellipsis;
1736
- overflow: hidden;
1737
- }
1738
- :where(._1b6tknb) ._1b6tknf {
1739
- text-wrap: wrap;
1740
- }
1741
- ._1b6tkng {
1742
- flex: 0 0 auto;
1743
- font-family: var(--likec4-element-font-family);
1744
- font-optical-sizing: auto;
1745
- font-style: normal;
1746
- font-weight: 400;
1747
- font-size: 12px;
1748
- line-height: 1.125;
1749
- text-align: var(--_1b6tknc);
1750
- text-wrap: balance;
1751
- opacity: 0.92;
1752
- color: var(--likec4-element-loContrast);
1753
- }
1754
- ._1b6tkn1:hover ._1b6tkng {
1755
- opacity: 1;
1756
- }
1757
- ._1b6tknh {
1758
- --_1b6tknd: 48px;
1759
- flex: 1;
1760
- height: fit-content;
1761
- display: flex;
1762
- align-items: center;
1763
- justify-content: center;
1764
- flex-direction: row;
1765
- padding: calc(1.5rem * var(--mantine-scale));
1766
- overflow: hidden;
1767
- gap: calc(0.625rem * var(--mantine-scale));
1768
- }
1769
- :where([data-likec4-shape="queue"], [data-likec4-shape="mobile"]) ._1b6tknh {
1770
- padding-left: 40px;
1771
- padding-right: 20px;
1772
- }
1773
- :where([data-likec4-shape="cylinder"], [data-likec4-shape="storage"]) ._1b6tknh {
1774
- padding-top: 30px;
1775
- }
1776
- :where([data-likec4-shape="browser"]) ._1b6tknh {
1777
- padding-top: 32px;
1778
- padding-bottom: 28px;
1779
- }
1780
- ._1b6tkn1:not(:is([data-likec4-shape="queue"],[data-likec4-shape="mobile"])) ._1b6tknh:is(._1b6tknb) {
1781
- padding-left: 24px;
1782
- padding-right: 18px;
1783
- }
1784
- ._1b6tknh:has(._1b6tknf, ._1b6tkng) {
1785
- --_1b6tknd: 60px;
1786
- gap: calc(1rem * var(--mantine-scale));
1787
- }
1788
- ._1b6tkni {
1789
- --_1b6tknc: center;
1790
- height: fit-content;
1791
- width: max-content;
1792
- display: flex;
1793
- flex-direction: column;
1794
- align-items: stretch;
1795
- justify-content: center;
1796
- flex-wrap: nowrap;
1797
- overflow: hidden;
1798
- gap: calc(0.5rem * var(--mantine-scale));
1799
- }
1800
- ._1b6tkni:has(._1b6tknf):has(._1b6tkng) {
1801
- gap: calc(0.375rem * var(--mantine-scale));
1802
- }
1803
- :where(._1b6tknb) ._1b6tkni {
1804
- --_1b6tknc: left;
1805
- min-width: calc(100% - 160px);
1806
- align-items: flex-start;
1807
- }
1808
- ._1b6tknj {
1809
- flex: 0 0 var(--_1b6tknd);
1810
- height: var(--_1b6tknd);
1811
- width: var(--_1b6tknd);
1812
- display: flex;
1813
- align-items: center;
1814
- justify-content: center;
1815
- mix-blend-mode: hard-light;
1816
- align-self: flex-start;
1817
- }
1818
- ._1b6tknj svg, ._1b6tknj img {
1819
- width: 100%;
1820
- height: auto;
1821
- max-height: 100%;
1822
- pointer-events: none;
1823
- filter:
1824
- drop-shadow(0 0 3px rgb(0 0 0 / 12%))
1825
- drop-shadow(0 1px 8px rgb(0 0 0 / 8%))
1826
- drop-shadow(1px 1px 16px rgb(0 0 0 / 3%))
1827
- ;
1828
- }
1829
- ._1b6tknj img {
1830
- object-fit: contain;
1831
- }
1832
- ._1b6tknl {
1833
- top: 0;
1834
- left: 0;
1835
- position: absolute;
1836
- pointer-events: none;
1837
- transform-origin: 50% 50%;
1838
- fill: var(--likec4-element-fill);
1839
- stroke: none;
1840
- z-index: -1;
1841
- transition: opacity 500ms ease-out;
1842
- transform: translate(8px,10px);
1843
- opacity: 0.5;
1844
- }
1845
- :where(.react-flow__node.selected, .react-flow__node:focus-visible, ._1b6tkn1:focus-visible) ._1b6tknl {
1846
- visibility: hidden;
1847
- }
1848
- :where([data-likec4-shape="cylinder"], [data-likec4-shape="storage"]) ._1b6tknl {
1849
- transform: translate(8px,8px);
1850
- }
1851
- :where([data-likec4-shape="queue"]) ._1b6tknl {
1852
- transform: translate(-10px,8px);
1853
- }
1854
- :where([data-hovered="true"]) ._1b6tknl {
1855
- transition: opacity 300ms ease-in;
1856
- opacity: 0.2;
1857
- }
1858
- ._1b6tknm {
1859
- --_1b6tknk:
1860
- drop-shadow(0 2px 1px rgba(0, 0, 0, 0.21))
1861
- drop-shadow(0 1px 1px color-mix(in srgb, var(--likec4-element-stroke) 40%, transparent))
1862
- drop-shadow(0 5px 3px rgba(0, 0, 0, 0.1))
1863
- ;
1864
- top: 0;
1865
- left: 0;
1866
- position: absolute;
1867
- pointer-events: none;
1868
- fill: var(--likec4-element-fill);
1869
- stroke: var(--likec4-element-stroke);
1870
- overflow: visible;
1871
- filter: var(--_1b6tknk);
1872
- transition: filter 300ms ease-out;
1873
- transition-delay: 0ms;
1874
- z-index: -1;
1875
- }
1876
- :where(.react-flow__node.selected, .react-flow__node:focus-visible, ._1b6tkn1:focus-visible) ._1b6tknm {
1877
- --_1b6tknk: none;
1878
- }
1879
- ._1b6tknn {
1880
- --ai-bg: color-mix(in srgb , var(--likec4-element-fill), transparent 99%);
1881
- --ai-bg-hover: color-mix(in srgb , var(--likec4-element-fill) 65%, var(--likec4-element-stroke));
1882
- --ai-hover: color-mix(in srgb , var(--likec4-element-fill) 50%, var(--likec4-element-stroke));
1883
- z-index: calc(var(--layer-overlays, 1) + 1);
1884
- position: absolute;
1885
- pointer-events: all;
1886
- left: 50%;
1887
- bottom: 0;
1888
- color: var(--likec4-element-loContrast);
1889
- cursor: pointer;
1890
- transform-origin: 50% 65%;
1891
- opacity: 0.75;
1892
- transition: all 150ms ease-out;
1893
- transform: translate(-50%, 0);
1894
- transition-delay: 0ms;
1895
- background-color: var(--ai-bg);
1896
- }
1897
- ._1b6tknn:hover {
1898
- box-shadow: var(--mantine-shadow-lg);
1899
- transform: translate(-50%, 0) scale(1.35);
1900
- opacity: 1;
1901
- transition-delay: 0;
1902
- }
1903
- ._1b6tknn:active {
1904
- transform: translate(-50%, 0) scale(1.02);
1905
- opacity: 1;
1906
- transition-delay: 0;
1907
- }
1908
- :where([data-likec4-shape='browser']) ._1b6tknn {
1909
- bottom: 3px;
1910
- }
1911
- :where(.react-flow__node:not(.dragging) ._1b6tkn1:hover) ._1b6tknn:not(:hover) {
1912
- --ai-bg: var(--ai-bg-hover);
1913
- box-shadow: var(--mantine-shadow-lg);
1914
- transform: translate(-50%, 0) scale(1.185);
1915
- opacity: 1;
1916
- transition-delay: 250ms;
1917
- }
1918
- ._1b6tknn svg.icon {
1919
- width: 65%;
1920
- height: 65%;
1921
- stroke-width: 1.5;
1922
- }._4ysv0o0 {
1923
- position: absolute;
1924
- left: 0;
1925
- bottom: 0;
1926
- padding-left: 6px;
1927
- padding-bottom: 6px;
1928
- pointer-events: all;
1929
- }
1930
- :where([data-likec4-shape="cylinder"], [data-likec4-shape="storage"]) ._4ysv0o0 {
1931
- bottom: 6px;
1932
- }
1933
- :where([data-likec4-shape="queue"]) ._4ysv0o0 {
1934
- left: 12px;
1935
- bottom: -3px;
1936
- }
1937
- ._4ysv0o1 {
1938
- display: flex;
1939
- line-height: 0.75;
1940
- font-size: 11px;
1941
- font-weight: 500;
1942
- align-items: center;
1943
- justify-content: center;
1944
- color: var(--likec4-element-loContrast);
1945
- padding-top: 2px;
1946
- padding-bottom: 2px;
1947
- padding-left: 4px;
1948
- padding-right: 5px;
1949
- border-radius: 3px;
1950
- background-color: color-mix(in srgb, var(--likec4-element-stroke), transparent 20%);
1951
- transition: all 180ms ease-out;
1952
- opacity: 0.85;
1953
- }
1954
- ._4ysv0o1:hover {
1955
- color: var(--likec4-element-hiContrast);
1956
- background-color: var(--likec4-element-stroke);
1957
- opacity: 1;
1958
- }
1959
- ._4ysv0o1 .icon {
1960
- display: inline-block;
1961
- line-height: 1;
1962
- width: 10px;
1963
- height: 10px;
1964
- opacity: 0.6;
1965
- }
1966
- ._4ysv0o1 span {
1967
- display: inline-block;
1968
- line-height: 1;
1969
- margin-left: 3px;
1970
- }
1971
- ._4ysv0o2 {
1972
- text-align: left;
1973
- }.hbkbtj0 {
1974
- bottom: 0;
1975
- left: 0;
1976
- padding: 8px;
1977
- margin: 0;
1978
- }
1979
- .hbkbtj1 {
1980
- cursor: default;
1981
- min-width: 200px;
1982
- max-width: calc(100vw - 16px);
1983
- background-color: color-mix(in srgb, var(--mantine-color-body), transparent 20%);
1984
- -webkit-backdrop-filter: var(--likec4-safari-animation-hook, blur(8px));
1985
- backdrop-filter: var(--likec4-safari-animation-hook, blur(8px));
1986
- }
1987
- :where([data-mantine-color-scheme="dark"]) .hbkbtj1 {
1988
- background-color: color-mix(in srgb, var(--mantine-color-dark-6), transparent 20%);
1989
- }
1990
- .hbkbtj3 {
1991
- white-space-collapse: preserve-breaks;
1992
- color: var(--mantine-color-gray-7);
1993
- }
1994
- :where([data-mantine-color-scheme="dark"]) .hbkbtj3 {
1995
- color: var(--mantine-color-gray-5);
1996
- }
1997
- @media (min-width: 48em) {
1998
- .hbkbtj1 {
1999
- min-width: 250px;
2000
- max-width: 90vw;
2001
- }
2002
- }
2003
- @media (min-width: 62em) {
2004
- .hbkbtj1 {
2005
- min-width: 350px;
2006
- max-width: 70vw;
2007
- }
2008
- }._2jkb2y0 {
2009
- position: absolute;
2010
- bottom: 0.5rem;
2011
- left: 50%;
2012
- transform: translateX(-50%);
2013
- padding: 0;
2014
- margin: 0;
2015
- }
2016
- ._2jkb2y1 {
2017
- backdrop-filter: blur(8px);
2018
- transition: all 175ms ease-in;
2019
- }
2020
- ._2jkb2y1:hover {
2021
- transition-timing-function: ease-out;
2022
- transform: scale(1.1);
2023
- }
2024
- ._2jkb2y1:active {
2025
- transition-duration: 100ms;
2026
- transform: scale(0.98) translateY(3px);
2027
- }
2028
- ._2jkb2y3 {
2029
- --_2jkb2y2: 35%;
2030
- --button-bg: color-mix(in srgb, var(--mantine-primary-color-filled), transparent var(--_2jkb2y2));
2031
- --button-hover: color-mix(in srgb, var(--mantine-primary-color-filled-hover), transparent var(--_2jkb2y2));
2032
- transition: all 175ms ease-in;
2033
- background-color: var(--button-bg);
2034
- }
2035
- [data-mantine-color-scheme="light"] ._2jkb2y3 {
2036
- --_2jkb2y2: 15%;
2037
- }
2038
- :where(._2jkb2y1, ._2jkb2y3) .tabler-icon {
2039
- width: 0.85em;
2040
- height: 0.85em;
2041
- }._1ncdyfa0 {
2042
- bottom: 0;
2043
- right: 0;
2044
- padding: 8px;
2045
- margin: 0;
2046
- }
2047
- ._1ncdyfa1 {
2048
- cursor: default;
2049
- user-select: none;
2050
- min-width: 200px;
2051
- max-width: calc(100vw - 20px);
2052
- background-color: color-mix(in srgb, var(--mantine-color-body), transparent 20%);
2053
- -webkit-backdrop-filter: var(--likec4-safari-animation-hook, blur(8px));
2054
- backdrop-filter: var(--likec4-safari-animation-hook, blur(8px));
2055
- }
2056
- :where([data-mantine-color-scheme="dark"]) ._1ncdyfa1 {
2057
- background-color: color-mix(in srgb, var(--mantine-color-dark-6), transparent 20%);
2058
- }
2059
- ._1ncdyfa2 {
2060
- padding: calc(var(--mantine-spacing-xs) / 2);
2061
- }
2062
- ._1ncdyfa3 {
2063
- --_1b6tkn0: color-mix(in srgb, var(--likec4-element-stroke) 90%, var(--likec4-element-fill));
2064
- background-color: transparent;
2065
- transition: all 100ms ease-in;
2066
- }
2067
- ._1ncdyfa3:hover {
2068
- transition: all 120ms ease-out;
2069
- background-color: color-mix(in srgb, var(--mantine-primary-color-2), transparent 50%);
2070
- }
2071
- :where([data-mantine-color-scheme="dark"]) ._1ncdyfa3:hover {
2072
- background-color: color-mix(in srgb, var(--mantine-color-dark-3), transparent 60%);
2073
- }
2074
- ._1ncdyfa4 {
2075
- fill: var(--likec4-element-fill);
2076
- stroke: var(--likec4-element-stroke);
2077
- stroke-width: 1;
2078
- overflow: visible;
2079
- width: 100%;
2080
- height: auto;
2081
- filter:
2082
- drop-shadow(0 2px 3px rgb(0 0 0 / 22%))
2083
- drop-shadow(0 1px 8px rgb(0 0 0 / 10%))
2084
- ;
2085
- }
2086
- ._1ncdyfa5 {
2087
- --badge-radius: 2px;
2088
- --badge-fz: 9.5px;
2089
- --badge-padding-x: 3px;
2090
- --badge-height: 13.5px;
2091
- --badge-lh: 1;
2092
- font-weight: 500;
2093
- letter-spacing: 0.2px;
2094
- padding-top: 0;
2095
- padding-bottom: 0;
2096
- text-transform: lowercase;
2097
- transition: all 150ms ease-in-out;
2098
- cursor: pointer;
2099
- }
2100
- @media (min-width: 48em) {
2101
- ._1ncdyfa1 {
2102
- min-width: 300px;
2103
- max-width: 65vw;
2104
- }
2105
- }
2106
- @media (min-width: 62em) {
2107
- ._1ncdyfa1 {
2108
- max-width: 40vw;
2109
- }
2110
- }._1lmzt1h0 {
2111
- top: var(--likec4-options-panel-top, 1rem);
2112
- right: var(--likec4-options-panel-right, 1rem);
2113
- margin: 0;
2114
- box-shadow: var(--mantine-shadow-xl);
2115
- }._1snasyb0 {
2116
- top: var(--likec4-navigation-panel-top, 1rem);
2117
- left: var(--likec4-navigation-panel-left, 1rem);
2118
- margin: 0;
2119
- }
2120
- .likec4-top-left-panel .action-icon {
2121
- --ai-size: var(--ai-size-lg);
2122
- }
2123
- .likec4-top-left-panel .action-icon .tabler-icon {
2124
- width: 70%;
2125
- height: 70%;
2126
- }
2127
- ._1snasyb1 .tabler-icon {
2128
- width: 75%;
2129
- height: 75%;
2130
- }
2131
- ._1snasyb2 {
2132
- background: var(--mantine-color-gray-2);
2133
- border-radius: var(--mantine-radius-sm);
2134
- border: 1px solid var(--mantine-color-gray-3);
2135
- }
2136
- :where([data-mantine-color-scheme="dark"]) ._1snasyb2 {
2137
- background: var(--mantine-color-dark-5);
2138
- border: 1px solid var(--mantine-color-dark-4);
2139
- }