@likec4/diagram 1.5.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/dist/LikeC4Diagram.d.ts +1 -1
- package/dist/LikeC4Diagram.props.d.ts +18 -3
- package/dist/StaticLikeC4Diagram.d.ts +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +490 -8409
- package/dist/state/DiagramContext.d.ts +18 -9
- package/dist/state/diagramStore.d.ts +12 -2
- package/dist/style.css +149 -85
- package/dist/xyflow/nodes/element/ElementShapeSvg.d.ts +5 -0
- package/dist/xyflow/nodes/element/element.css.d.ts +4 -2
- package/package.json +17 -17
- package/src/LikeC4Diagram.props.ts +21 -3
- package/src/LikeC4Diagram.tsx +9 -11
- package/src/StaticLikeC4Diagram.tsx +1 -0
- package/src/index.ts +2 -0
- package/src/state/DiagramContext.tsx +5 -5
- package/src/state/diagramStore.ts +8 -1
- package/src/ui/BackwardForwardPanel.tsx +1 -1
- package/src/xyflow/FitviewOnDiagramChange.tsx +1 -1
- package/src/xyflow/SelectEdgesOnNodeFocus.tsx +1 -1
- package/src/xyflow/SyncWithDiagram.tsx +1 -1
- package/src/xyflow/XYFlow.tsx +2 -4
- package/src/xyflow/XYFlowEvents.tsx +1 -1
- package/src/xyflow/XYFlowInner.tsx +2 -1
- package/src/xyflow/edges/RelationshipEdge.tsx +3 -3
- package/src/xyflow/edges/edges.css.ts +6 -6
- package/src/xyflow/hooks/useLayoutConstraints.ts +1 -1
- package/src/xyflow/nodes/compound/CompoundNode.tsx +1 -1
- package/src/xyflow/nodes/element/ElementLink.tsx +2 -1
- package/src/xyflow/nodes/element/ElementNode.tsx +73 -24
- package/src/xyflow/nodes/element/ElementShapeSvg.tsx +2 -2
- package/src/xyflow/nodes/element/element.css.ts +126 -54
- package/src/xyflow/nodes/shared/NavigateToBtn.tsx +1 -1
- package/dist/xyflow/nodes/element/ElementIcon.d.ts +0 -7
- package/src/xyflow/nodes/element/ElementIcon.tsx +0 -33
|
@@ -14,10 +14,11 @@ export declare const DiagramContext: import('react').Context<import('zustand/tra
|
|
|
14
14
|
nodesDraggable: boolean;
|
|
15
15
|
nodesSelectable: boolean;
|
|
16
16
|
experimentalEdgeEditing: boolean;
|
|
17
|
+
renderIcon: import('..').ElementIconRenderer | null;
|
|
17
18
|
getContainer: () => HTMLDivElement | null;
|
|
18
19
|
viewSyncDebounceTimeout: number | null;
|
|
19
20
|
xyflow: import('..').XYFlowInstance;
|
|
20
|
-
xystore: import('../xyflow/hooks').XYStoreApi;
|
|
21
|
+
xystore: import('../xyflow/hooks/useXYFlow').XYStoreApi;
|
|
21
22
|
initialized: boolean;
|
|
22
23
|
xyflowSynced: boolean;
|
|
23
24
|
activeDynamicViewStep: number | null;
|
|
@@ -75,10 +76,11 @@ export declare const DiagramContext: import('react').Context<import('zustand/tra
|
|
|
75
76
|
nodesDraggable: boolean;
|
|
76
77
|
nodesSelectable: boolean;
|
|
77
78
|
experimentalEdgeEditing: boolean;
|
|
79
|
+
renderIcon: import('..').ElementIconRenderer | null;
|
|
78
80
|
getContainer: () => HTMLDivElement | null;
|
|
79
81
|
viewSyncDebounceTimeout: number | null;
|
|
80
82
|
xyflow: import('..').XYFlowInstance;
|
|
81
|
-
xystore: import('../xyflow/hooks').XYStoreApi;
|
|
83
|
+
xystore: import('../xyflow/hooks/useXYFlow').XYStoreApi;
|
|
82
84
|
initialized: boolean;
|
|
83
85
|
xyflowSynced: boolean;
|
|
84
86
|
activeDynamicViewStep: number | null;
|
|
@@ -134,10 +136,11 @@ export declare const DiagramContext: import('react').Context<import('zustand/tra
|
|
|
134
136
|
nodesDraggable: boolean;
|
|
135
137
|
nodesSelectable: boolean;
|
|
136
138
|
experimentalEdgeEditing: boolean;
|
|
139
|
+
renderIcon: import('..').ElementIconRenderer | null;
|
|
137
140
|
getContainer: () => HTMLDivElement | null;
|
|
138
141
|
viewSyncDebounceTimeout: number | null;
|
|
139
142
|
xyflow: import('..').XYFlowInstance;
|
|
140
|
-
xystore: import('../xyflow/hooks').XYStoreApi;
|
|
143
|
+
xystore: import('../xyflow/hooks/useXYFlow').XYStoreApi;
|
|
141
144
|
initialized: boolean;
|
|
142
145
|
xyflowSynced: boolean;
|
|
143
146
|
activeDynamicViewStep: number | null;
|
|
@@ -194,10 +197,11 @@ export declare const DiagramContext: import('react').Context<import('zustand/tra
|
|
|
194
197
|
nodesDraggable: boolean;
|
|
195
198
|
nodesSelectable: boolean;
|
|
196
199
|
experimentalEdgeEditing: boolean;
|
|
200
|
+
renderIcon: import('..').ElementIconRenderer | null;
|
|
197
201
|
getContainer: () => HTMLDivElement | null;
|
|
198
202
|
viewSyncDebounceTimeout: number | null;
|
|
199
203
|
xyflow: import('..').XYFlowInstance;
|
|
200
|
-
xystore: import('../xyflow/hooks').XYStoreApi;
|
|
204
|
+
xystore: import('../xyflow/hooks/useXYFlow').XYStoreApi;
|
|
201
205
|
initialized: boolean;
|
|
202
206
|
xyflowSynced: boolean;
|
|
203
207
|
activeDynamicViewStep: number | null;
|
|
@@ -261,10 +265,11 @@ export declare const DiagramContext: import('react').Context<import('zustand/tra
|
|
|
261
265
|
nodesDraggable: boolean;
|
|
262
266
|
nodesSelectable: boolean;
|
|
263
267
|
experimentalEdgeEditing: boolean;
|
|
268
|
+
renderIcon: import('..').ElementIconRenderer | null;
|
|
264
269
|
getContainer: () => HTMLDivElement | null;
|
|
265
270
|
viewSyncDebounceTimeout: number | null;
|
|
266
271
|
xyflow: import('..').XYFlowInstance;
|
|
267
|
-
xystore: import('../xyflow/hooks').XYStoreApi;
|
|
272
|
+
xystore: import('../xyflow/hooks/useXYFlow').XYStoreApi;
|
|
268
273
|
initialized: boolean;
|
|
269
274
|
xyflowSynced: boolean;
|
|
270
275
|
activeDynamicViewStep: number | null;
|
|
@@ -320,10 +325,11 @@ export declare const DiagramContext: import('react').Context<import('zustand/tra
|
|
|
320
325
|
nodesDraggable: boolean;
|
|
321
326
|
nodesSelectable: boolean;
|
|
322
327
|
experimentalEdgeEditing: boolean;
|
|
328
|
+
renderIcon: import('..').ElementIconRenderer | null;
|
|
323
329
|
getContainer: () => HTMLDivElement | null;
|
|
324
330
|
viewSyncDebounceTimeout: number | null;
|
|
325
331
|
xyflow: import('..').XYFlowInstance;
|
|
326
|
-
xystore: import('../xyflow/hooks').XYStoreApi;
|
|
332
|
+
xystore: import('../xyflow/hooks/useXYFlow').XYStoreApi;
|
|
327
333
|
initialized: boolean;
|
|
328
334
|
xyflowSynced: boolean;
|
|
329
335
|
activeDynamicViewStep: number | null;
|
|
@@ -379,10 +385,11 @@ export declare const DiagramContext: import('react').Context<import('zustand/tra
|
|
|
379
385
|
nodesDraggable: boolean;
|
|
380
386
|
nodesSelectable: boolean;
|
|
381
387
|
experimentalEdgeEditing: boolean;
|
|
388
|
+
renderIcon: import('..').ElementIconRenderer | null;
|
|
382
389
|
getContainer: () => HTMLDivElement | null;
|
|
383
390
|
viewSyncDebounceTimeout: number | null;
|
|
384
391
|
xyflow: import('..').XYFlowInstance;
|
|
385
|
-
xystore: import('../xyflow/hooks').XYStoreApi;
|
|
392
|
+
xystore: import('../xyflow/hooks/useXYFlow').XYStoreApi;
|
|
386
393
|
initialized: boolean;
|
|
387
394
|
xyflowSynced: boolean;
|
|
388
395
|
activeDynamicViewStep: number | null;
|
|
@@ -438,10 +445,11 @@ export declare const DiagramContext: import('react').Context<import('zustand/tra
|
|
|
438
445
|
nodesDraggable: boolean;
|
|
439
446
|
nodesSelectable: boolean;
|
|
440
447
|
experimentalEdgeEditing: boolean;
|
|
448
|
+
renderIcon: import('..').ElementIconRenderer | null;
|
|
441
449
|
getContainer: () => HTMLDivElement | null;
|
|
442
450
|
viewSyncDebounceTimeout: number | null;
|
|
443
451
|
xyflow: import('..').XYFlowInstance;
|
|
444
|
-
xystore: import('../xyflow/hooks').XYStoreApi;
|
|
452
|
+
xystore: import('../xyflow/hooks/useXYFlow').XYStoreApi;
|
|
445
453
|
initialized: boolean;
|
|
446
454
|
xyflowSynced: boolean;
|
|
447
455
|
activeDynamicViewStep: number | null;
|
|
@@ -497,10 +505,11 @@ export declare const DiagramContext: import('react').Context<import('zustand/tra
|
|
|
497
505
|
nodesDraggable: boolean;
|
|
498
506
|
nodesSelectable: boolean;
|
|
499
507
|
experimentalEdgeEditing: boolean;
|
|
508
|
+
renderIcon: import('..').ElementIconRenderer | null;
|
|
500
509
|
getContainer: () => HTMLDivElement | null;
|
|
501
510
|
viewSyncDebounceTimeout: number | null;
|
|
502
511
|
xyflow: import('..').XYFlowInstance;
|
|
503
|
-
xystore: import('../xyflow/hooks').XYStoreApi;
|
|
512
|
+
xystore: import('../xyflow/hooks/useXYFlow').XYStoreApi;
|
|
504
513
|
initialized: boolean;
|
|
505
514
|
xyflowSynced: boolean;
|
|
506
515
|
activeDynamicViewStep: number | null;
|
|
@@ -2,7 +2,7 @@ import { DiagramNode, DiagramView, Fqn, ViewID } from '@likec4/core';
|
|
|
2
2
|
import { XYPosition } from '@xyflow/react';
|
|
3
3
|
import { MouseEvent as ReactMouseEvent } from 'react';
|
|
4
4
|
import { Exact, Simplify } from 'type-fest';
|
|
5
|
-
import { Changes, LikeC4DiagramEventHandlers } from '../LikeC4Diagram.props';
|
|
5
|
+
import { Changes, ElementIconRenderer, LikeC4DiagramEventHandlers } from '../LikeC4Diagram.props';
|
|
6
6
|
import { XYStoreApi } from '../xyflow/hooks';
|
|
7
7
|
import { XYFlowInstance } from '../xyflow/types';
|
|
8
8
|
|
|
@@ -18,6 +18,7 @@ export type DiagramStore = {
|
|
|
18
18
|
nodesDraggable: boolean;
|
|
19
19
|
nodesSelectable: boolean;
|
|
20
20
|
experimentalEdgeEditing: boolean;
|
|
21
|
+
renderIcon: ElementIconRenderer | null;
|
|
21
22
|
getContainer: () => HTMLDivElement | null;
|
|
22
23
|
viewSyncDebounceTimeout: number | null;
|
|
23
24
|
xyflow: XYFlowInstance;
|
|
@@ -41,7 +42,7 @@ export type DiagramStore = {
|
|
|
41
42
|
};
|
|
42
43
|
viewportChanged: boolean;
|
|
43
44
|
} & Required<LikeC4DiagramEventHandlers>;
|
|
44
|
-
export type DiagramInitialState = Pick<DiagramStore, 'view' | 'readonly' | 'showElementLinks' | 'fitViewEnabled' | 'fitViewPadding' | 'zoomable' | 'pannable' | 'nodesDraggable' | 'nodesSelectable' | 'experimentalEdgeEditing'> & LikeC4DiagramEventHandlers;
|
|
45
|
+
export type DiagramInitialState = Pick<DiagramStore, 'view' | 'renderIcon' | 'readonly' | 'showElementLinks' | 'fitViewEnabled' | 'fitViewPadding' | 'zoomable' | 'pannable' | 'nodesDraggable' | 'nodesSelectable' | 'experimentalEdgeEditing'> & LikeC4DiagramEventHandlers;
|
|
45
46
|
interface DiagramStoreActions {
|
|
46
47
|
isDynamicView: () => boolean;
|
|
47
48
|
updateView: (view: DiagramView) => void;
|
|
@@ -74,6 +75,7 @@ export declare function createDiagramStore<T extends Exact<CreateDiagramStore, T
|
|
|
74
75
|
nodesDraggable: boolean;
|
|
75
76
|
nodesSelectable: boolean;
|
|
76
77
|
experimentalEdgeEditing: boolean;
|
|
78
|
+
renderIcon: ElementIconRenderer | null;
|
|
77
79
|
getContainer: () => HTMLDivElement | null;
|
|
78
80
|
viewSyncDebounceTimeout: number | null;
|
|
79
81
|
xyflow: XYFlowInstance;
|
|
@@ -135,6 +137,7 @@ export declare function createDiagramStore<T extends Exact<CreateDiagramStore, T
|
|
|
135
137
|
nodesDraggable: boolean;
|
|
136
138
|
nodesSelectable: boolean;
|
|
137
139
|
experimentalEdgeEditing: boolean;
|
|
140
|
+
renderIcon: ElementIconRenderer | null;
|
|
138
141
|
getContainer: () => HTMLDivElement | null;
|
|
139
142
|
viewSyncDebounceTimeout: number | null;
|
|
140
143
|
xyflow: XYFlowInstance;
|
|
@@ -194,6 +197,7 @@ export declare function createDiagramStore<T extends Exact<CreateDiagramStore, T
|
|
|
194
197
|
nodesDraggable: boolean;
|
|
195
198
|
nodesSelectable: boolean;
|
|
196
199
|
experimentalEdgeEditing: boolean;
|
|
200
|
+
renderIcon: ElementIconRenderer | null;
|
|
197
201
|
getContainer: () => HTMLDivElement | null;
|
|
198
202
|
viewSyncDebounceTimeout: number | null;
|
|
199
203
|
xyflow: XYFlowInstance;
|
|
@@ -254,6 +258,7 @@ export declare function createDiagramStore<T extends Exact<CreateDiagramStore, T
|
|
|
254
258
|
nodesDraggable: boolean;
|
|
255
259
|
nodesSelectable: boolean;
|
|
256
260
|
experimentalEdgeEditing: boolean;
|
|
261
|
+
renderIcon: ElementIconRenderer | null;
|
|
257
262
|
getContainer: () => HTMLDivElement | null;
|
|
258
263
|
viewSyncDebounceTimeout: number | null;
|
|
259
264
|
xyflow: XYFlowInstance;
|
|
@@ -321,6 +326,7 @@ export declare function createDiagramStore<T extends Exact<CreateDiagramStore, T
|
|
|
321
326
|
nodesDraggable: boolean;
|
|
322
327
|
nodesSelectable: boolean;
|
|
323
328
|
experimentalEdgeEditing: boolean;
|
|
329
|
+
renderIcon: ElementIconRenderer | null;
|
|
324
330
|
getContainer: () => HTMLDivElement | null;
|
|
325
331
|
viewSyncDebounceTimeout: number | null;
|
|
326
332
|
xyflow: XYFlowInstance;
|
|
@@ -380,6 +386,7 @@ export declare function createDiagramStore<T extends Exact<CreateDiagramStore, T
|
|
|
380
386
|
nodesDraggable: boolean;
|
|
381
387
|
nodesSelectable: boolean;
|
|
382
388
|
experimentalEdgeEditing: boolean;
|
|
389
|
+
renderIcon: ElementIconRenderer | null;
|
|
383
390
|
getContainer: () => HTMLDivElement | null;
|
|
384
391
|
viewSyncDebounceTimeout: number | null;
|
|
385
392
|
xyflow: XYFlowInstance;
|
|
@@ -439,6 +446,7 @@ export declare function createDiagramStore<T extends Exact<CreateDiagramStore, T
|
|
|
439
446
|
nodesDraggable: boolean;
|
|
440
447
|
nodesSelectable: boolean;
|
|
441
448
|
experimentalEdgeEditing: boolean;
|
|
449
|
+
renderIcon: ElementIconRenderer | null;
|
|
442
450
|
getContainer: () => HTMLDivElement | null;
|
|
443
451
|
viewSyncDebounceTimeout: number | null;
|
|
444
452
|
xyflow: XYFlowInstance;
|
|
@@ -498,6 +506,7 @@ export declare function createDiagramStore<T extends Exact<CreateDiagramStore, T
|
|
|
498
506
|
nodesDraggable: boolean;
|
|
499
507
|
nodesSelectable: boolean;
|
|
500
508
|
experimentalEdgeEditing: boolean;
|
|
509
|
+
renderIcon: ElementIconRenderer | null;
|
|
501
510
|
getContainer: () => HTMLDivElement | null;
|
|
502
511
|
viewSyncDebounceTimeout: number | null;
|
|
503
512
|
xyflow: XYFlowInstance;
|
|
@@ -557,6 +566,7 @@ export declare function createDiagramStore<T extends Exact<CreateDiagramStore, T
|
|
|
557
566
|
nodesDraggable: boolean;
|
|
558
567
|
nodesSelectable: boolean;
|
|
559
568
|
experimentalEdgeEditing: boolean;
|
|
569
|
+
renderIcon: ElementIconRenderer | null;
|
|
560
570
|
getContainer: () => HTMLDivElement | null;
|
|
561
571
|
viewSyncDebounceTimeout: number | null;
|
|
562
572
|
xyflow: XYFlowInstance;
|
package/dist/style.css
CHANGED
|
@@ -1152,8 +1152,8 @@ svg.react-flow__connectionline {
|
|
|
1152
1152
|
--likec4-element-fill: #A35829;
|
|
1153
1153
|
--likec4-element-stroke: #7E451D;
|
|
1154
1154
|
--likec4-element-hiContrast: #FFE0C2;
|
|
1155
|
-
--likec4-element-loContrast: #
|
|
1156
|
-
--likec4-compound-title-color: #
|
|
1155
|
+
--likec4-element-loContrast: #f9b27c;
|
|
1156
|
+
--likec4-compound-title-color: #f9b27c;
|
|
1157
1157
|
--likec4-relation-lineColor: #b45309;
|
|
1158
1158
|
--likec4-relation-labelBg: #78350f;
|
|
1159
1159
|
--likec4-relation-labelColor: #FFE0C2;
|
|
@@ -1312,10 +1312,10 @@ svg.react-flow__connectionline {
|
|
|
1312
1312
|
--xy-edge-stroke-width: 4;
|
|
1313
1313
|
}
|
|
1314
1314
|
.react-flow__edges > svg {
|
|
1315
|
-
mix-blend-mode:
|
|
1315
|
+
mix-blend-mode: plus-lighter;
|
|
1316
1316
|
}
|
|
1317
1317
|
.react-flow__edges > svg:has(.bexn7q2) {
|
|
1318
|
-
opacity: 0.
|
|
1318
|
+
opacity: 0.6;
|
|
1319
1319
|
transition: opacity 600ms ease-in-out, filter 600ms ease-in-out;
|
|
1320
1320
|
transition-delay: 200ms;
|
|
1321
1321
|
filter: grayscale(0.85) var(--likec4-safari-animation-hook, blur(1px));
|
|
@@ -1357,10 +1357,10 @@ svg.react-flow__connectionline {
|
|
|
1357
1357
|
stroke-width: 5;
|
|
1358
1358
|
}
|
|
1359
1359
|
.bexn7q6 {
|
|
1360
|
-
cursor:
|
|
1360
|
+
cursor: grab;
|
|
1361
1361
|
}
|
|
1362
1362
|
.bexn7q6 * {
|
|
1363
|
-
cursor:
|
|
1363
|
+
cursor: grab;
|
|
1364
1364
|
}
|
|
1365
1365
|
.bexn7q8 {
|
|
1366
1366
|
animation-duration: 800ms;
|
|
@@ -1396,7 +1396,7 @@ svg.react-flow__connectionline {
|
|
|
1396
1396
|
cursor: pointer;
|
|
1397
1397
|
width: fit-content;
|
|
1398
1398
|
transform-origin: 50% 50%;
|
|
1399
|
-
mix-blend-mode:
|
|
1399
|
+
mix-blend-mode: plus-lighter;
|
|
1400
1400
|
color: var(--xy-edge-label-color);
|
|
1401
1401
|
background-color: var(--xy-edge-label-background-color);
|
|
1402
1402
|
border-radius: 3px;
|
|
@@ -1407,7 +1407,7 @@ svg.react-flow__connectionline {
|
|
|
1407
1407
|
transform: var(--bexn7qb) scale(1.12);
|
|
1408
1408
|
}
|
|
1409
1409
|
.bexn7qc:is(.bexn7q2) {
|
|
1410
|
-
opacity: 0.
|
|
1410
|
+
opacity: 0.3;
|
|
1411
1411
|
transition: opacity 600ms ease-in-out, filter 600ms ease-in-out;
|
|
1412
1412
|
transition-delay: 200ms;
|
|
1413
1413
|
filter: grayscale(0.85) var(--likec4-safari-animation-hook, blur(1px));
|
|
@@ -1620,193 +1620,257 @@ svg.react-flow__connectionline {
|
|
|
1620
1620
|
width: 75%;
|
|
1621
1621
|
height: 75%;
|
|
1622
1622
|
stroke-width: 1.5;
|
|
1623
|
-
}@keyframes
|
|
1623
|
+
}@keyframes _1b6tkn5 {
|
|
1624
1624
|
from {
|
|
1625
|
-
opacity: 0.
|
|
1625
|
+
stroke-opacity: 0.8;
|
|
1626
1626
|
}
|
|
1627
1627
|
to {
|
|
1628
|
-
opacity: 0.
|
|
1628
|
+
stroke-opacity: 0.5;
|
|
1629
1629
|
}
|
|
1630
1630
|
}
|
|
1631
|
-
.
|
|
1631
|
+
._1b6tkn1 {
|
|
1632
1632
|
--_1b6tkn0: color-mix(in srgb, var(--likec4-element-stroke) 90%, var(--likec4-element-fill));
|
|
1633
1633
|
width: 100%;
|
|
1634
1634
|
height: 100%;
|
|
1635
1635
|
padding: 0;
|
|
1636
1636
|
margin: 0;
|
|
1637
|
+
flex: 1;
|
|
1637
1638
|
display: flex;
|
|
1638
|
-
align-items:
|
|
1639
|
+
align-items: center;
|
|
1640
|
+
justify-content: center;
|
|
1639
1641
|
}
|
|
1640
|
-
:where(.react-flow__node.selected) .
|
|
1642
|
+
:where(.react-flow__node.selected) ._1b6tkn1 {
|
|
1641
1643
|
will-change: transform;
|
|
1642
1644
|
}
|
|
1643
|
-
.
|
|
1645
|
+
._1b6tkn1[data-hovered="true"] {
|
|
1644
1646
|
will-change: transform;
|
|
1645
1647
|
}
|
|
1646
|
-
.
|
|
1648
|
+
._1b6tkn2 {
|
|
1647
1649
|
top: 50%;
|
|
1648
1650
|
left: 50%;
|
|
1649
1651
|
visibility: hidden;
|
|
1650
1652
|
}
|
|
1651
|
-
.
|
|
1653
|
+
._1b6tkn3 {
|
|
1652
1654
|
will-change: transform;
|
|
1653
1655
|
}
|
|
1654
|
-
.react-flow__node-element:has(.
|
|
1656
|
+
.react-flow__node-element:has(._1b6tkn4) {
|
|
1655
1657
|
opacity: 0.25;
|
|
1656
1658
|
transition: opacity 600ms ease-in-out, filter 600ms ease-in-out;
|
|
1657
1659
|
transition-delay: 200ms;
|
|
1658
1660
|
filter: grayscale(0.85) var(--likec4-safari-animation-hook, blur(2px));
|
|
1659
1661
|
will-change: opacity, filter;
|
|
1660
1662
|
}
|
|
1661
|
-
.
|
|
1662
|
-
--
|
|
1663
|
-
stroke: var(--
|
|
1663
|
+
._1b6tkn7 {
|
|
1664
|
+
--_1b6tkn6: var(--likec4-element-loContrast);
|
|
1665
|
+
stroke: var(--_1b6tkn6);
|
|
1664
1666
|
fill: none;
|
|
1665
1667
|
transform-origin: center center;
|
|
1666
1668
|
stroke-width: 6;
|
|
1667
|
-
animation-duration:
|
|
1669
|
+
animation-duration: 1s;
|
|
1668
1670
|
animation-iteration-count: infinite;
|
|
1669
1671
|
animation-direction: alternate;
|
|
1670
|
-
opacity: 0.
|
|
1672
|
+
stroke-opacity: 0.8;
|
|
1671
1673
|
visibility: hidden;
|
|
1672
1674
|
}
|
|
1673
|
-
:where(.react-flow__node.selected) .
|
|
1675
|
+
:where(.react-flow__node.selected) ._1b6tkn7 {
|
|
1674
1676
|
visibility: visible;
|
|
1675
|
-
animation-name: var(--likec4-safari-animation-hook,
|
|
1677
|
+
animation-name: var(--likec4-safari-animation-hook, _1b6tkn5);
|
|
1676
1678
|
}
|
|
1677
|
-
:where(.react-flow__node:focus-visible, .
|
|
1679
|
+
:where(.react-flow__node:focus-visible, ._1b6tkn1:focus-visible) ._1b6tkn7 {
|
|
1678
1680
|
stroke-width: 10;
|
|
1679
1681
|
stroke: var(--mantine-primary-color-outline, var(--mantine-primary-color-filled, var(--likec4-element-stroke)));
|
|
1680
1682
|
visibility: visible;
|
|
1681
1683
|
}
|
|
1682
|
-
:where([data-likec4-shape="queue"], [data-likec4-shape="cylinder"], [data-likec4-shape="storage"]) .
|
|
1684
|
+
:where([data-likec4-shape="queue"], [data-likec4-shape="cylinder"], [data-likec4-shape="storage"]) ._1b6tkn7 {
|
|
1683
1685
|
stroke-width: 10;
|
|
1684
1686
|
}
|
|
1685
|
-
:where([data-mantine-color-scheme='light']) .
|
|
1686
|
-
--
|
|
1687
|
+
:where([data-mantine-color-scheme='light']) ._1b6tkn7 {
|
|
1688
|
+
--_1b6tkn6: color-mix(in srgb, var(--likec4-element-fill) 50%, #3c3c3c);
|
|
1687
1689
|
}
|
|
1688
|
-
.
|
|
1690
|
+
._1b6tkn4 ._1b6tkn7 {
|
|
1689
1691
|
visibility: hidden;
|
|
1690
1692
|
display: none;
|
|
1691
1693
|
}
|
|
1692
|
-
.
|
|
1694
|
+
._1b6tkn8 {
|
|
1693
1695
|
fill: var(--likec4-element-fill);
|
|
1694
1696
|
}
|
|
1695
|
-
.
|
|
1697
|
+
._1b6tkn9 {
|
|
1696
1698
|
fill: var(--likec4-element-stroke);
|
|
1697
1699
|
}
|
|
1698
|
-
.
|
|
1700
|
+
._1b6tkna {
|
|
1699
1701
|
fill: var(--_1b6tkn0);
|
|
1700
1702
|
}
|
|
1701
|
-
.
|
|
1703
|
+
._1b6tkne {
|
|
1702
1704
|
flex: 0 0 auto;
|
|
1703
1705
|
font-family: var(--likec4-element-font-family);
|
|
1704
1706
|
font-optical-sizing: auto;
|
|
1705
1707
|
font-style: normal;
|
|
1706
|
-
text-align:
|
|
1708
|
+
text-align: var(--_1b6tknc);
|
|
1707
1709
|
font-weight: 500;
|
|
1708
|
-
font-size:
|
|
1709
|
-
line-height: 1.
|
|
1710
|
+
font-size: 19px;
|
|
1711
|
+
line-height: 1.15;
|
|
1710
1712
|
text-wrap: balance;
|
|
1711
1713
|
color: var(--likec4-element-hiContrast);
|
|
1712
1714
|
}
|
|
1713
|
-
.
|
|
1715
|
+
._1b6tknf {
|
|
1714
1716
|
flex: 0 1 auto;
|
|
1715
1717
|
font-family: var(--likec4-element-font-family);
|
|
1716
1718
|
font-optical-sizing: auto;
|
|
1717
1719
|
font-style: normal;
|
|
1718
1720
|
font-weight: 400;
|
|
1719
|
-
font-size:
|
|
1720
|
-
line-height: 1.
|
|
1721
|
-
text-align:
|
|
1721
|
+
font-size: 14px;
|
|
1722
|
+
line-height: 1.2;
|
|
1723
|
+
text-align: var(--_1b6tknc);
|
|
1722
1724
|
text-wrap: pretty;
|
|
1723
1725
|
color: var(--likec4-element-loContrast);
|
|
1724
1726
|
white-space-collapse: preserve-breaks;
|
|
1725
1727
|
text-overflow: ellipsis;
|
|
1726
1728
|
overflow: hidden;
|
|
1727
1729
|
}
|
|
1728
|
-
.
|
|
1730
|
+
:where(._1b6tknb) ._1b6tknf {
|
|
1731
|
+
text-wrap: wrap;
|
|
1732
|
+
}
|
|
1733
|
+
._1b6tkng {
|
|
1729
1734
|
flex: 0 0 auto;
|
|
1730
1735
|
font-family: var(--likec4-element-font-family);
|
|
1731
1736
|
font-optical-sizing: auto;
|
|
1732
1737
|
font-style: normal;
|
|
1733
1738
|
font-weight: 400;
|
|
1734
|
-
font-size:
|
|
1739
|
+
font-size: 12px;
|
|
1735
1740
|
line-height: 1.125;
|
|
1736
|
-
text-align:
|
|
1741
|
+
text-align: var(--_1b6tknc);
|
|
1737
1742
|
text-wrap: balance;
|
|
1738
1743
|
opacity: 0.92;
|
|
1739
1744
|
color: var(--likec4-element-loContrast);
|
|
1740
1745
|
}
|
|
1741
|
-
.
|
|
1746
|
+
._1b6tkn1:hover ._1b6tkng {
|
|
1742
1747
|
opacity: 1;
|
|
1743
1748
|
}
|
|
1744
|
-
.
|
|
1745
|
-
--
|
|
1749
|
+
._1b6tknh {
|
|
1750
|
+
--_1b6tknd: 48px;
|
|
1746
1751
|
flex: 1;
|
|
1747
|
-
|
|
1752
|
+
height: fit-content;
|
|
1753
|
+
display: flex;
|
|
1754
|
+
align-items: center;
|
|
1755
|
+
justify-content: center;
|
|
1756
|
+
flex-direction: row;
|
|
1757
|
+
padding: calc(1.5rem * var(--mantine-scale));
|
|
1758
|
+
overflow: hidden;
|
|
1759
|
+
gap: calc(0.625rem * var(--mantine-scale));
|
|
1760
|
+
}
|
|
1761
|
+
:where([data-likec4-shape="queue"], [data-likec4-shape="mobile"]) ._1b6tknh {
|
|
1762
|
+
padding-left: 40px;
|
|
1763
|
+
padding-right: 20px;
|
|
1764
|
+
}
|
|
1765
|
+
:where([data-likec4-shape="cylinder"], [data-likec4-shape="storage"]) ._1b6tknh {
|
|
1766
|
+
padding-top: 30px;
|
|
1767
|
+
}
|
|
1768
|
+
:where([data-likec4-shape="browser"]) ._1b6tknh {
|
|
1769
|
+
padding-top: 32px;
|
|
1770
|
+
padding-bottom: 28px;
|
|
1771
|
+
}
|
|
1772
|
+
._1b6tknh:is(._1b6tknb) {
|
|
1773
|
+
padding-right: 20px;
|
|
1774
|
+
}
|
|
1775
|
+
._1b6tkn1:not(:is([data-likec4-shape="queue"],[data-likec4-shape="mobile"])) ._1b6tknh:is(._1b6tknb) {
|
|
1776
|
+
padding-left: 20px;
|
|
1777
|
+
}
|
|
1778
|
+
._1b6tknh:has(._1b6tknf, ._1b6tkng) {
|
|
1779
|
+
--_1b6tknd: 60px;
|
|
1780
|
+
align-items: flex-start;
|
|
1781
|
+
gap: calc(1rem * var(--mantine-scale));
|
|
1782
|
+
}
|
|
1783
|
+
._1b6tkni {
|
|
1784
|
+
--_1b6tknc: center;
|
|
1785
|
+
height: fit-content;
|
|
1786
|
+
width: max-content;
|
|
1748
1787
|
display: flex;
|
|
1749
1788
|
flex-direction: column;
|
|
1750
1789
|
align-items: stretch;
|
|
1751
1790
|
justify-content: center;
|
|
1791
|
+
flex-wrap: nowrap;
|
|
1752
1792
|
overflow: hidden;
|
|
1753
1793
|
gap: calc(0.5rem * var(--mantine-scale));
|
|
1754
1794
|
}
|
|
1755
|
-
.
|
|
1795
|
+
._1b6tkni:has(._1b6tknf):has(._1b6tkng) {
|
|
1756
1796
|
gap: calc(0.375rem * var(--mantine-scale));
|
|
1757
1797
|
}
|
|
1758
|
-
:where(
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
:where([data-likec4-shape="cylinder"], [data-likec4-shape="storage"]) ._1b6tknf {
|
|
1763
|
-
padding-top: calc(2.125rem * var(--mantine-scale));
|
|
1764
|
-
}
|
|
1765
|
-
:where([data-likec4-shape="browser"]) ._1b6tknf {
|
|
1766
|
-
padding-top: calc(2rem * var(--mantine-scale));
|
|
1767
|
-
padding-bottom: calc(1.75rem * var(--mantine-scale));
|
|
1798
|
+
:where(._1b6tknb) ._1b6tkni {
|
|
1799
|
+
--_1b6tknc: left;
|
|
1800
|
+
min-width: calc(100% - 160px);
|
|
1801
|
+
align-items: flex-start;
|
|
1768
1802
|
}
|
|
1769
|
-
.
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
overflow: visible;
|
|
1803
|
+
._1b6tknj {
|
|
1804
|
+
flex: 0 0 var(--_1b6tknd);
|
|
1805
|
+
height: var(--_1b6tknd);
|
|
1806
|
+
width: var(--_1b6tknd);
|
|
1807
|
+
display: flex;
|
|
1808
|
+
align-items: center;
|
|
1809
|
+
justify-content: center;
|
|
1777
1810
|
mix-blend-mode: hard-light;
|
|
1778
1811
|
}
|
|
1779
|
-
.
|
|
1780
|
-
position: absolute;
|
|
1781
|
-
left: 0;
|
|
1782
|
-
bottom: 4px;
|
|
1812
|
+
._1b6tknj svg, ._1b6tknj img {
|
|
1783
1813
|
width: 100%;
|
|
1784
1814
|
height: auto;
|
|
1815
|
+
max-height: 100%;
|
|
1816
|
+
pointer-events: none;
|
|
1817
|
+
filter:
|
|
1818
|
+
drop-shadow(0 0 3px rgb(0 0 0 / 12%))
|
|
1819
|
+
drop-shadow(0 1px 8px rgb(0 0 0 / 8%))
|
|
1820
|
+
drop-shadow(1px 1px 16px rgb(0 0 0 / 3%))
|
|
1821
|
+
;
|
|
1822
|
+
}
|
|
1823
|
+
._1b6tknj img {
|
|
1785
1824
|
object-fit: contain;
|
|
1786
|
-
max-height: var(--_1b6tkng);
|
|
1787
1825
|
}
|
|
1788
|
-
.
|
|
1789
|
-
|
|
1826
|
+
._1b6tknl {
|
|
1827
|
+
top: 0;
|
|
1828
|
+
left: 0;
|
|
1829
|
+
position: absolute;
|
|
1830
|
+
pointer-events: none;
|
|
1831
|
+
transform-origin: 50% 50%;
|
|
1832
|
+
fill: var(--likec4-element-fill);
|
|
1833
|
+
stroke: none;
|
|
1834
|
+
z-index: -1;
|
|
1835
|
+
transition: opacity 500ms ease-out;
|
|
1836
|
+
transform: translate(8px,10px);
|
|
1837
|
+
opacity: 0.5;
|
|
1838
|
+
}
|
|
1839
|
+
:where(.react-flow__node.selected, .react-flow__node:focus-visible, ._1b6tkn1:focus-visible) ._1b6tknl {
|
|
1840
|
+
visibility: hidden;
|
|
1841
|
+
}
|
|
1842
|
+
:where([data-likec4-shape="cylinder"], [data-likec4-shape="storage"]) ._1b6tknl {
|
|
1843
|
+
transform: translate(8px,8px);
|
|
1844
|
+
}
|
|
1845
|
+
:where([data-likec4-shape="queue"]) ._1b6tknl {
|
|
1846
|
+
transform: translate(-10px,8px);
|
|
1847
|
+
}
|
|
1848
|
+
:where([data-hovered="true"]) ._1b6tknl {
|
|
1849
|
+
transition: opacity 300ms ease-in;
|
|
1850
|
+
opacity: 0.2;
|
|
1851
|
+
}
|
|
1852
|
+
._1b6tknm {
|
|
1853
|
+
--_1b6tknk:
|
|
1790
1854
|
drop-shadow(0 2px 1px rgba(0, 0, 0, 0.21))
|
|
1791
1855
|
drop-shadow(0 1px 1px color-mix(in srgb, var(--likec4-element-stroke) 40%, transparent))
|
|
1792
1856
|
drop-shadow(0 5px 3px rgba(0, 0, 0, 0.1))
|
|
1793
1857
|
;
|
|
1794
|
-
top:
|
|
1795
|
-
left:
|
|
1858
|
+
top: 0;
|
|
1859
|
+
left: 0;
|
|
1796
1860
|
position: absolute;
|
|
1797
1861
|
pointer-events: none;
|
|
1798
1862
|
fill: var(--likec4-element-fill);
|
|
1799
1863
|
stroke: var(--likec4-element-stroke);
|
|
1800
1864
|
overflow: visible;
|
|
1801
|
-
filter: var(--
|
|
1865
|
+
filter: var(--_1b6tknk);
|
|
1802
1866
|
transition: filter 300ms ease-out;
|
|
1803
1867
|
transition-delay: 0ms;
|
|
1804
1868
|
z-index: -1;
|
|
1805
1869
|
}
|
|
1806
|
-
:where(.react-flow__node.selected, .react-flow__node:focus-visible, .
|
|
1807
|
-
--
|
|
1870
|
+
:where(.react-flow__node.selected, .react-flow__node:focus-visible, ._1b6tkn1:focus-visible) ._1b6tknm {
|
|
1871
|
+
--_1b6tknk: none;
|
|
1808
1872
|
}
|
|
1809
|
-
.
|
|
1873
|
+
._1b6tknn {
|
|
1810
1874
|
--ai-bg: color-mix(in srgb , var(--likec4-element-fill), transparent 99%);
|
|
1811
1875
|
--ai-bg-hover: color-mix(in srgb , var(--likec4-element-fill) 65%, var(--likec4-element-stroke));
|
|
1812
1876
|
--ai-hover: color-mix(in srgb , var(--likec4-element-fill) 50%, var(--likec4-element-stroke));
|
|
@@ -1824,28 +1888,28 @@ svg.react-flow__connectionline {
|
|
|
1824
1888
|
transition-delay: 0ms;
|
|
1825
1889
|
background-color: var(--ai-bg);
|
|
1826
1890
|
}
|
|
1827
|
-
.
|
|
1891
|
+
._1b6tknn:hover {
|
|
1828
1892
|
box-shadow: var(--mantine-shadow-lg);
|
|
1829
1893
|
transform: translate(-50%, 0) scale(1.35);
|
|
1830
1894
|
opacity: 1;
|
|
1831
1895
|
transition-delay: 0;
|
|
1832
1896
|
}
|
|
1833
|
-
.
|
|
1897
|
+
._1b6tknn:active {
|
|
1834
1898
|
transform: translate(-50%, 0) scale(1.02);
|
|
1835
1899
|
opacity: 1;
|
|
1836
1900
|
transition-delay: 0;
|
|
1837
1901
|
}
|
|
1838
|
-
:where([data-likec4-shape='browser']) .
|
|
1902
|
+
:where([data-likec4-shape='browser']) ._1b6tknn {
|
|
1839
1903
|
bottom: 3px;
|
|
1840
1904
|
}
|
|
1841
|
-
:where(.react-flow__node:not(.dragging) .
|
|
1905
|
+
:where(.react-flow__node:not(.dragging) ._1b6tkn1:hover) ._1b6tknn:not(:hover) {
|
|
1842
1906
|
--ai-bg: var(--ai-bg-hover);
|
|
1843
1907
|
box-shadow: var(--mantine-shadow-lg);
|
|
1844
1908
|
transform: translate(-50%, 0) scale(1.185);
|
|
1845
1909
|
opacity: 1;
|
|
1846
1910
|
transition-delay: 250ms;
|
|
1847
1911
|
}
|
|
1848
|
-
.
|
|
1912
|
+
._1b6tknn svg.icon {
|
|
1849
1913
|
width: 65%;
|
|
1850
1914
|
height: 65%;
|
|
1851
1915
|
stroke-width: 1.5;
|
|
@@ -7,11 +7,13 @@ export declare const indicator: string;
|
|
|
7
7
|
export declare const fillElementFill: string;
|
|
8
8
|
export declare const fillElementStroke: string;
|
|
9
9
|
export declare const fillMixStroke: string;
|
|
10
|
+
export declare const hasIcon: string;
|
|
10
11
|
export declare const title: string;
|
|
11
12
|
export declare const description: string;
|
|
12
13
|
export declare const technology: string;
|
|
13
|
-
export declare const
|
|
14
|
-
export declare const
|
|
14
|
+
export declare const elementDataContainer: string;
|
|
15
|
+
export declare const elementTextData: string;
|
|
15
16
|
export declare const elementIcon: string;
|
|
17
|
+
export declare const cssShapeSvgMultiple: string;
|
|
16
18
|
export declare const cssShapeSvg: string;
|
|
17
19
|
export declare const cssNavigateBtn: string;
|