charon-conversation-editor 0.0.19 → 0.0.24

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 (4) hide show
  1. package/assets/index.css +1112 -0
  2. package/index.js +34857 -0
  3. package/package.json +1 -1
  4. package/README.md +0 -251
@@ -0,0 +1,1112 @@
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: rgba(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: rgba(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-props, var(--xy-background-color, 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
+ /* Arrowhead marker styles - use CSS custom properties as default */
192
+ .react-flow__arrowhead polyline {
193
+ stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
194
+ }
195
+ .react-flow__arrowhead polyline.arrowclosed {
196
+ fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
197
+ }
198
+ .react-flow__connection {
199
+ pointer-events: none;
200
+ }
201
+ .react-flow__connection .animated {
202
+ stroke-dasharray: 5;
203
+ animation: dashdraw 0.5s linear infinite;
204
+ }
205
+ svg.react-flow__connectionline {
206
+ z-index: 1001;
207
+ overflow: visible;
208
+ position: absolute;
209
+ }
210
+ .react-flow__nodes {
211
+ pointer-events: none;
212
+ transform-origin: 0 0;
213
+ }
214
+ .react-flow__node {
215
+ position: absolute;
216
+ -webkit-user-select: none;
217
+ -moz-user-select: none;
218
+ user-select: none;
219
+ pointer-events: all;
220
+ transform-origin: 0 0;
221
+ box-sizing: border-box;
222
+ cursor: default;
223
+ }
224
+ .react-flow__node.selectable {
225
+ cursor: pointer;
226
+ }
227
+ .react-flow__node.draggable {
228
+ cursor: grab;
229
+ pointer-events: all;
230
+ }
231
+ .react-flow__node.draggable.dragging {
232
+ cursor: grabbing;
233
+ }
234
+ .react-flow__nodesselection {
235
+ z-index: 3;
236
+ transform-origin: left top;
237
+ pointer-events: none;
238
+ }
239
+ .react-flow__nodesselection-rect {
240
+ position: absolute;
241
+ pointer-events: all;
242
+ cursor: grab;
243
+ }
244
+ .react-flow__handle {
245
+ position: absolute;
246
+ pointer-events: none;
247
+ min-width: 5px;
248
+ min-height: 5px;
249
+ width: 6px;
250
+ height: 6px;
251
+ background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));
252
+ border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));
253
+ border-radius: 100%;
254
+ }
255
+ .react-flow__handle.connectingfrom {
256
+ pointer-events: all;
257
+ }
258
+ .react-flow__handle.connectionindicator {
259
+ pointer-events: all;
260
+ cursor: crosshair;
261
+ }
262
+ .react-flow__handle-bottom {
263
+ top: auto;
264
+ left: 50%;
265
+ bottom: 0;
266
+ transform: translate(-50%, 50%);
267
+ }
268
+ .react-flow__handle-top {
269
+ top: 0;
270
+ left: 50%;
271
+ transform: translate(-50%, -50%);
272
+ }
273
+ .react-flow__handle-left {
274
+ top: 50%;
275
+ left: 0;
276
+ transform: translate(-50%, -50%);
277
+ }
278
+ .react-flow__handle-right {
279
+ top: 50%;
280
+ right: 0;
281
+ transform: translate(50%, -50%);
282
+ }
283
+ .react-flow__edgeupdater {
284
+ cursor: move;
285
+ pointer-events: all;
286
+ }
287
+ .react-flow__pane.selection .react-flow__panel {
288
+ pointer-events: none;
289
+ }
290
+ .react-flow__panel {
291
+ position: absolute;
292
+ z-index: 5;
293
+ margin: 15px;
294
+ }
295
+ .react-flow__panel.top {
296
+ top: 0;
297
+ }
298
+ .react-flow__panel.bottom {
299
+ bottom: 0;
300
+ }
301
+ .react-flow__panel.top.center, .react-flow__panel.bottom.center {
302
+ left: 50%;
303
+ transform: translateX(-15px) translateX(-50%);
304
+ }
305
+ .react-flow__panel.left {
306
+ left: 0;
307
+ }
308
+ .react-flow__panel.right {
309
+ right: 0;
310
+ }
311
+ .react-flow__panel.left.center, .react-flow__panel.right.center {
312
+ top: 50%;
313
+ transform: translateY(-15px) translateY(-50%);
314
+ }
315
+ .react-flow__attribution {
316
+ font-size: 10px;
317
+ background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));
318
+ padding: 2px 3px;
319
+ margin: 0;
320
+ }
321
+ .react-flow__attribution a {
322
+ text-decoration: none;
323
+ color: #999;
324
+ }
325
+ @keyframes dashdraw {
326
+ from {
327
+ stroke-dashoffset: 10;
328
+ }
329
+ }
330
+ .react-flow__edgelabel-renderer {
331
+ position: absolute;
332
+ width: 100%;
333
+ height: 100%;
334
+ pointer-events: none;
335
+ -webkit-user-select: none;
336
+ -moz-user-select: none;
337
+ user-select: none;
338
+ left: 0;
339
+ top: 0;
340
+ }
341
+ .react-flow__viewport-portal {
342
+ position: absolute;
343
+ width: 100%;
344
+ height: 100%;
345
+ left: 0;
346
+ top: 0;
347
+ -webkit-user-select: none;
348
+ -moz-user-select: none;
349
+ user-select: none;
350
+ }
351
+ .react-flow__minimap {
352
+ background: var(
353
+ --xy-minimap-background-color-props,
354
+ var(--xy-minimap-background-color, var(--xy-minimap-background-color-default))
355
+ );
356
+ }
357
+ .react-flow__minimap-svg {
358
+ display: block;
359
+ }
360
+ .react-flow__minimap-mask {
361
+ fill: var(
362
+ --xy-minimap-mask-background-color-props,
363
+ var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default))
364
+ );
365
+ stroke: var(
366
+ --xy-minimap-mask-stroke-color-props,
367
+ var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default))
368
+ );
369
+ stroke-width: var(
370
+ --xy-minimap-mask-stroke-width-props,
371
+ var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default))
372
+ );
373
+ }
374
+ .react-flow__minimap-node {
375
+ fill: var(
376
+ --xy-minimap-node-background-color-props,
377
+ var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default))
378
+ );
379
+ stroke: var(
380
+ --xy-minimap-node-stroke-color-props,
381
+ var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default))
382
+ );
383
+ stroke-width: var(
384
+ --xy-minimap-node-stroke-width-props,
385
+ var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default))
386
+ );
387
+ }
388
+ .react-flow__background-pattern.dots {
389
+ fill: var(
390
+ --xy-background-pattern-color-props,
391
+ var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default))
392
+ );
393
+ }
394
+ .react-flow__background-pattern.lines {
395
+ stroke: var(
396
+ --xy-background-pattern-color-props,
397
+ var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default))
398
+ );
399
+ }
400
+ .react-flow__background-pattern.cross {
401
+ stroke: var(
402
+ --xy-background-pattern-color-props,
403
+ var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default))
404
+ );
405
+ }
406
+ .react-flow__controls {
407
+ display: flex;
408
+ flex-direction: column;
409
+ box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));
410
+ }
411
+ .react-flow__controls.horizontal {
412
+ flex-direction: row;
413
+ }
414
+ .react-flow__controls-button {
415
+ display: flex;
416
+ justify-content: center;
417
+ align-items: center;
418
+ height: 26px;
419
+ width: 26px;
420
+ padding: 4px;
421
+ border: none;
422
+ background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));
423
+ border-bottom: 1px solid
424
+ var(
425
+ --xy-controls-button-border-color-props,
426
+ var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))
427
+ );
428
+ color: var(
429
+ --xy-controls-button-color-props,
430
+ var(--xy-controls-button-color, var(--xy-controls-button-color-default))
431
+ );
432
+ cursor: pointer;
433
+ -webkit-user-select: none;
434
+ -moz-user-select: none;
435
+ user-select: none;
436
+ }
437
+ .react-flow__controls-button svg {
438
+ width: 100%;
439
+ max-width: 12px;
440
+ max-height: 12px;
441
+ fill: currentColor;
442
+ }
443
+ .react-flow__edge.updating .react-flow__edge-path {
444
+ stroke: #777;
445
+ }
446
+ .react-flow__edge-text {
447
+ font-size: 10px;
448
+ }
449
+ .react-flow__node.selectable:focus,
450
+ .react-flow__node.selectable:focus-visible {
451
+ outline: none;
452
+ }
453
+ .react-flow__node-input,
454
+ .react-flow__node-default,
455
+ .react-flow__node-output,
456
+ .react-flow__node-group {
457
+ padding: 10px;
458
+ border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));
459
+ width: 150px;
460
+ font-size: 12px;
461
+ color: var(--xy-node-color, var(--xy-node-color-default));
462
+ text-align: center;
463
+ border: var(--xy-node-border, var(--xy-node-border-default));
464
+ background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));
465
+ }
466
+ .react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {
467
+ box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));
468
+ }
469
+ .react-flow__node-input.selectable.selected,
470
+ .react-flow__node-input.selectable:focus,
471
+ .react-flow__node-input.selectable:focus-visible,
472
+ .react-flow__node-default.selectable.selected,
473
+ .react-flow__node-default.selectable:focus,
474
+ .react-flow__node-default.selectable:focus-visible,
475
+ .react-flow__node-output.selectable.selected,
476
+ .react-flow__node-output.selectable:focus,
477
+ .react-flow__node-output.selectable:focus-visible,
478
+ .react-flow__node-group.selectable.selected,
479
+ .react-flow__node-group.selectable:focus,
480
+ .react-flow__node-group.selectable:focus-visible {
481
+ box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));
482
+ }
483
+ .react-flow__node-group {
484
+ background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));
485
+ }
486
+ .react-flow__nodesselection-rect,
487
+ .react-flow__selection {
488
+ background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));
489
+ border: var(--xy-selection-border, var(--xy-selection-border-default));
490
+ }
491
+ .react-flow__nodesselection-rect:focus,
492
+ .react-flow__nodesselection-rect:focus-visible,
493
+ .react-flow__selection:focus,
494
+ .react-flow__selection:focus-visible {
495
+ outline: none;
496
+ }
497
+ .react-flow__controls-button:hover {
498
+ background: var(
499
+ --xy-controls-button-background-color-hover-props,
500
+ var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default))
501
+ );
502
+ color: var(
503
+ --xy-controls-button-color-hover-props,
504
+ var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default))
505
+ );
506
+ }
507
+ .react-flow__controls-button:disabled {
508
+ pointer-events: none;
509
+ }
510
+ .react-flow__controls-button:disabled svg {
511
+ fill-opacity: 0.4;
512
+ }
513
+ .react-flow__controls-button:last-child {
514
+ border-bottom: none;
515
+ }
516
+ .react-flow__controls.horizontal .react-flow__controls-button {
517
+ border-bottom: none;
518
+ border-right: 1px solid
519
+ var(
520
+ --xy-controls-button-border-color-props,
521
+ var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))
522
+ );
523
+ }
524
+ .react-flow__controls.horizontal .react-flow__controls-button:last-child {
525
+ border-right: none;
526
+ }
527
+ .react-flow__resize-control {
528
+ position: absolute;
529
+ }
530
+ .react-flow__resize-control.left,
531
+ .react-flow__resize-control.right {
532
+ cursor: ew-resize;
533
+ }
534
+ .react-flow__resize-control.top,
535
+ .react-flow__resize-control.bottom {
536
+ cursor: ns-resize;
537
+ }
538
+ .react-flow__resize-control.top.left,
539
+ .react-flow__resize-control.bottom.right {
540
+ cursor: nwse-resize;
541
+ }
542
+ .react-flow__resize-control.bottom.left,
543
+ .react-flow__resize-control.top.right {
544
+ cursor: nesw-resize;
545
+ }
546
+ /* handle styles */
547
+ .react-flow__resize-control.handle {
548
+ width: 5px;
549
+ height: 5px;
550
+ border: 1px solid #fff;
551
+ border-radius: 1px;
552
+ background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));
553
+ translate: -50% -50%;
554
+ }
555
+ .react-flow__resize-control.handle.left {
556
+ left: 0;
557
+ top: 50%;
558
+ }
559
+ .react-flow__resize-control.handle.right {
560
+ left: 100%;
561
+ top: 50%;
562
+ }
563
+ .react-flow__resize-control.handle.top {
564
+ left: 50%;
565
+ top: 0;
566
+ }
567
+ .react-flow__resize-control.handle.bottom {
568
+ left: 50%;
569
+ top: 100%;
570
+ }
571
+ .react-flow__resize-control.handle.top.left {
572
+ left: 0;
573
+ }
574
+ .react-flow__resize-control.handle.bottom.left {
575
+ left: 0;
576
+ }
577
+ .react-flow__resize-control.handle.top.right {
578
+ left: 100%;
579
+ }
580
+ .react-flow__resize-control.handle.bottom.right {
581
+ left: 100%;
582
+ }
583
+ /* line styles */
584
+ .react-flow__resize-control.line {
585
+ border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));
586
+ border-width: 0;
587
+ border-style: solid;
588
+ }
589
+ .react-flow__resize-control.line.left,
590
+ .react-flow__resize-control.line.right {
591
+ width: 1px;
592
+ transform: translate(-50%, 0);
593
+ top: 0;
594
+ height: 100%;
595
+ }
596
+ .react-flow__resize-control.line.left {
597
+ left: 0;
598
+ border-left-width: 1px;
599
+ }
600
+ .react-flow__resize-control.line.right {
601
+ left: 100%;
602
+ border-right-width: 1px;
603
+ }
604
+ .react-flow__resize-control.line.top,
605
+ .react-flow__resize-control.line.bottom {
606
+ height: 1px;
607
+ transform: translate(0, -50%);
608
+ left: 0;
609
+ width: 100%;
610
+ }
611
+ .react-flow__resize-control.line.top {
612
+ top: 0;
613
+ border-top-width: 1px;
614
+ }
615
+ .react-flow__resize-control.line.bottom {
616
+ border-bottom-width: 1px;
617
+ top: 100%;
618
+ }
619
+ .react-flow__edge-textbg {
620
+ fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));
621
+ }
622
+ .react-flow__edge-text {
623
+ fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));
624
+ }
625
+ .ext-conversation-editor {
626
+ flex: 1;
627
+ display: flex;
628
+ flex-direction: row;
629
+ position: relative;
630
+
631
+ --ext-node-select-color: var(--app-color-primary, blue);
632
+ --ext-panel-background-color: var(--app-white-background, white);
633
+ --ext-node-edge-color: hsl(from var(--app-color-gray, gray) h s calc(l * 1.2));
634
+ --ext-node-border-color: hsl(from var(--app-color-gray, gray) h s calc(l * 1.2));
635
+ --ext-node-hover-color: hsl(from var(--app-color-gray, gray) h s calc(l * 0.8));
636
+
637
+ --xy-minimap-background-color-default: #fff;
638
+ --xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);
639
+ --xy-minimap-mask-stroke-color-default: transparent;
640
+ --xy-minimap-mask-stroke-width-default: 1;
641
+ --xy-minimap-node-background-color-default: #e2e2e2;
642
+ --xy-minimap-node-stroke-color-default: transparent;
643
+ --xy-minimap-node-stroke-width-default: 2;
644
+ }
645
+
646
+ .ext-conversation-editor .ext-ce-flow-graph {
647
+ flex: 1;
648
+ position: relative;
649
+ border-radius: 4px;
650
+ margin-bottom: 4px;
651
+ }
652
+
653
+ .ext-conversation-editor .react-flow__node {
654
+ display: flex;
655
+ flex-direction: column;
656
+
657
+ min-width: 100px;
658
+ width: 400px;
659
+ max-width: 800px;
660
+
661
+ padding: 24px;
662
+ border-radius: 16px;
663
+ border: 2px solid var(--ext-node-border-color);
664
+ background-color: var(--ext-panel-background-color);
665
+ box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.02);
666
+
667
+ box-sizing: border-box;
668
+
669
+ font-family: var(--mdc-typography-font-family, unset);
670
+ font-size: 15px;
671
+ font-style: normal;
672
+ font-weight: 400;
673
+ line-height: normal;
674
+ letter-spacing: -0.5px;
675
+ }
676
+
677
+
678
+ .ext-conversation-editor .react-flow__node.selectable:focus,
679
+ .ext-conversation-editor .react-flow__node.selectable:hover,
680
+ .ext-conversation-editor .react-flow__node.draggable:hover {
681
+ --ext-node-border-color: var(--ext-node-hover-color);
682
+ }
683
+
684
+ .ext-conversation-editor .react-flow__node.selectable.selected {
685
+ --ext-node-border-color: var(--ext-node-select-color);
686
+ }
687
+
688
+ .ext-conversation-editor .react-flow__edge .react-flow__edge-path {
689
+ stroke-width: 2px;
690
+ stroke: var(--ext-node-edge-color);
691
+ }
692
+
693
+ .ext-conversation-editor .react-flow__edge.selectable:hover .react-flow__edge-path {
694
+ stroke: var(--ext-node-hover-color);
695
+ }
696
+
697
+ .ext-conversation-editor .react-flow__edge.selectable.selected .react-flow__edge-path {
698
+ stroke: var(--ext-node-select-color);
699
+ }
700
+
701
+ .ext-conversation-editor .react-flow__handle {
702
+ color: var(--ext-node-border-color);
703
+ }
704
+
705
+ .ext-conversation-editor .react-flow__handle.connectionindicator:hover {
706
+ color: var(--ext-node-hover-color);
707
+ pointer-events: all;
708
+ }
709
+
710
+ .ext-conversation-editor .react-flow__handle.connectionindicator:focus,
711
+ .ext-conversation-editor .react-flow__handle.connectingfrom,
712
+ .ext-conversation-editor .react-flow__handle.connectingto {
713
+ color: var(--ext-node-select-color);
714
+ }.ext-conversation-editor .ext-undo-redo-panel {
715
+ position: absolute;
716
+ bottom: 0;
717
+ left: 31px;
718
+
719
+ z-index: 5;
720
+ margin: 15px;
721
+
722
+ display: flex;
723
+ flex-direction: row;
724
+ }
725
+
726
+
727
+ .ext-conversation-editor .ext-ce-undo-button:disabled,
728
+ .ext-conversation-editor .ext-ce-redo-button:disabled {
729
+ color: var(--app-color-disabled, gray);
730
+ }
731
+
732
+
733
+ .ext-conversation-editor .ext-ce-undo-button svg,
734
+ .ext-conversation-editor .ext-ce-redo-button svg {
735
+ fill: unset;
736
+ }.ext-conversation-editor .ext-ce-conversation-node {
737
+ min-height: fit-content;
738
+ display: flex;
739
+ flex-direction: column;
740
+ gap: 12px;
741
+ user-select: none;
742
+
743
+ --ext-response-divider-color: var(--app-color-light-gray, lightgray);
744
+ --ext-response-border-color: var(--app-color-light-gray, lightgray);
745
+ --ext-picture-boder-color: var(--app-color-light-gray, lightgray);
746
+ }
747
+
748
+ /* Actor section */
749
+ .ext-conversation-editor .ext-ce-actor-section {
750
+ position: relative;
751
+
752
+ display: flex;
753
+ flex-direction: column;
754
+ align-items: center;
755
+ gap: 8px;
756
+ padding-bottom: 8px;
757
+ border-bottom: 1px solid var(--ext-response-divider-color);
758
+ }
759
+
760
+ .ext-conversation-editor .ext-ce-actor-text {
761
+ font-weight: 500;
762
+ text-align: left;
763
+ margin: 0;
764
+ }
765
+
766
+ .ext-conversation-editor .ext-ce-actor-picture {
767
+ width: 64px;
768
+ height: 64px;
769
+ border-radius: 8px;
770
+ object-fit: cover;
771
+ border: 2px solid var(--ext-picture-boder-color);
772
+ border-width: 2px;
773
+ display: block;
774
+ float: left;
775
+ margin: 0 16px 8px 0;
776
+ }
777
+
778
+ /* Responses section */
779
+ .ext-conversation-editor .ext-ce-responses-section {
780
+ display: flex;
781
+ flex-direction: column;
782
+ gap: 6px;
783
+ width: 100%;
784
+ }
785
+
786
+ .ext-conversation-editor .ext-ce-add-response-button,
787
+ .ext-conversation-editor .ext-ce-response-block {
788
+ position: relative;
789
+
790
+ background-color: var(--ext-panel-background-color);
791
+ border: 2px solid var(--ext-response-border-color);
792
+ outline: none;
793
+
794
+ border-radius: 6px;
795
+ padding: 8px 10px;
796
+ font-size: 13px;
797
+ line-height: 1.3;
798
+ word-wrap: break-word;
799
+ cursor: pointer;
800
+ text-align: left;
801
+ }
802
+
803
+
804
+ .ext-conversation-editor .ext-ce-response-block:focus,
805
+ .ext-conversation-editor .ext-ce-add-response-button:hover,
806
+ .ext-conversation-editor .ext-ce-response-block:hover {
807
+ background-color: var(--app-light-gray-background);
808
+ --ext-response-border-color: var(--ext-node-hover-color);
809
+ }
810
+
811
+ .ext-conversation-editor .ext-ce-response-block.selected,
812
+ .ext-conversation-editor .ext-ce-response-block:active {
813
+ --ext-response-border-color: var(--ext-node-hover-color);
814
+ }
815
+
816
+ .ext-conversation-editor .react-flow__node.selected .ext-ce-response-block.selected,
817
+ .ext-conversation-editor .react-flow__node.selected .ext-ce-response-block:active {
818
+ --ext-response-border-color: var(--ext-node-select-color);
819
+ }
820
+
821
+ /* Optional: Add numbers to responses */
822
+ .ext-conversation-editor .ext-ce-response-block::before {
823
+ content: attr(data-response-number);
824
+ font-weight: bold;
825
+ margin-right: 4px;
826
+ color: black;
827
+ opacity: 0.7;
828
+ }
829
+
830
+ .ext-conversation-editor .ext-ce-add-response-button {
831
+ padding: 0;
832
+ width: 27px;
833
+ height: 27px;
834
+ display: flex;
835
+ align-items: center;
836
+ justify-content: center;
837
+ color: var(--app-color-primary);
838
+ }
839
+
840
+ .ext-conversation-editor .ext-ce-add-response-button:hover {
841
+ background-color: rgba(from var(--app-color-primary) r g b / 0.08);
842
+ --ext-response-border-color: var(--app-color-primary);
843
+ }
844
+
845
+ .ext-conversation-editor .svg-arrow-right-handle {
846
+ width: 16px;
847
+ height: 16px;
848
+ border: none;
849
+ background: none !important;
850
+ border-radius: 0;
851
+ }
852
+
853
+ .ext-conversation-editor .react-flow__node.react-flow__node-dialog .react-flow__handle-left.ext-ce-dialog-handle {
854
+ top: 30px;
855
+ left: -24px;
856
+ }
857
+
858
+ .ext-conversation-editor .react-flow__node.react-flow__node-dialog .react-flow__handle-right.ext-ce-dialog-handle {
859
+ top: 30px;
860
+ right: -24px;
861
+ }
862
+
863
+ .ext-conversation-editor .react-flow__node.react-flow__node-dialog .react-flow__handle-right.ext-ce-response-handle {
864
+ top: 50%;
865
+ right: -28px;
866
+ }
867
+
868
+ .ext-conversation-editor .ext-ce-root-section {
869
+ font-weight: 600;
870
+ }
871
+
872
+ .ext-conversation-editor .react-flow__node.react-flow__node-root .react-flow__handle-right.ext-ce-dialog-handle {
873
+ top: 50%;
874
+ right: 0;
875
+ }
876
+
877
+ .ext-conversation-editor .react-flow__node.react-flow__node-root {
878
+ width: 120px;
879
+ }.ext-conversation-editor .ext-ce-property-drawer {
880
+ position: relative;
881
+ display: flex;
882
+ flex-direction: column;
883
+ gap: 8px;
884
+ box-sizing: border-box;
885
+ margin-left: 12px;
886
+ background-color: var(--ext-panel-background-color);
887
+
888
+ min-width: 200px;
889
+ max-width: 30vw;
890
+ width: 500px;
891
+ border-radius: 4px;
892
+ margin-bottom: 4px;
893
+
894
+ padding: 0px 16px 16px 16px;
895
+ }
896
+
897
+ .ext-conversation-editor .ext-ce-property-drawer>.ext-ce-resize-bar {
898
+ flex: unset;
899
+ width: 3px;
900
+ position: absolute;
901
+ left: 0;
902
+ top: 0;
903
+ bottom: 0;
904
+ cursor: col-resize;
905
+ resize: horizontal;
906
+
907
+ background: unset;
908
+
909
+ }
910
+
911
+ .ext-conversation-editor .ext-ce-property-drawer>.ext-ce-resize-bar:hover {
912
+ background: var(--app-color-primary);
913
+ }
914
+
915
+ .ext-conversation-editor .ext-ce-tool-bar {
916
+ display: flex;
917
+ flex-direction: row;
918
+ gap: 8px;
919
+
920
+ height: 64px;
921
+ }
922
+
923
+ .ext-conversation-editor .ext-ce-property-drawer h2 {
924
+ white-space: preserve nowrap;
925
+ line-height: 120%;
926
+ overflow: hidden;
927
+ text-overflow: ellipsis;
928
+ margin: 12px 0;
929
+ }
930
+
931
+ .ext-conversation-editor .ext-ce-form-view-scroll-container {
932
+ flex: 1;
933
+ position: relative;
934
+ }
935
+
936
+ .ext-conversation-editor .ext-ce-form-view-scroll-container charon-document-form-view {
937
+ position: absolute;
938
+ top: 0;
939
+ bottom: 0;
940
+ right: 0;
941
+ left: 0;
942
+ overflow-y: auto;
943
+ overflow-x: hidden;
944
+ }
945
+
946
+ .ext-conversation-editor .ext-ce-delete-button {
947
+ position: relative;
948
+ width: 48px;
949
+ height: 48px;
950
+
951
+ display: flex;
952
+ align-items: center;
953
+ justify-content: center;
954
+
955
+ background-color: var(--ext-panel-background-color);
956
+ border: 2px solid var(--app-color-warn);
957
+ outline: none;
958
+
959
+ padding: 0;
960
+ border-radius: 6px;
961
+ font-size: 11px;
962
+ line-height: 1.3;
963
+ word-wrap: break-word;
964
+ cursor: pointer;
965
+ text-align: left;
966
+ color: var(--app-color-warn);
967
+ }
968
+
969
+ .ext-conversation-editor .ext-ce-delete-button:hover {
970
+ background-color: rgba(from var(--app-color-warn) r g b / 0.08);
971
+ }.ext-conversation-editor .ext-ce-error-container {
972
+ padding: 2rem;
973
+ color: #fff;
974
+ background: #1a1a1a;
975
+ border-radius: 12px;
976
+ text-align: center;
977
+ }
978
+
979
+ .ext-conversation-editor .ext-ce-error-container h1 {
980
+ color: var(--app-color-warn, red);
981
+ }
982
+
983
+ .ext-conversation-editor .ext-ce-error-container pre {
984
+ background: #333;
985
+ padding: 1rem;
986
+ border-radius: 8px;
987
+ overflow: auto
988
+ }.ext-ce-schema-validation-container {
989
+ padding: 24px;
990
+ max-width: 900px;
991
+ margin: 0 auto;
992
+ }
993
+
994
+ .ext-ce-validation-header {
995
+ margin-bottom: 32px;
996
+ }
997
+
998
+ .ext-ce-validation-header h2 {
999
+ margin: 0 0 16px 0;
1000
+ font-size: 24px;
1001
+ font-weight: 600;
1002
+ color: #1a1a1a;
1003
+ }
1004
+
1005
+ .ext-ce-validation-status {
1006
+ display: inline-flex;
1007
+ align-items: center;
1008
+ gap: 8px;
1009
+ padding: 8px 16px;
1010
+ border-radius: 6px;
1011
+ font-size: 14px;
1012
+ font-weight: 500;
1013
+ }
1014
+
1015
+ .ext-ce-validation-status.valid {
1016
+ background-color: #d4edda;
1017
+ color: #155724;
1018
+ border: 1px solid #c3e6cb;
1019
+ }
1020
+
1021
+ .ext-ce-validation-status.invalid {
1022
+ background-color: #f8d7da;
1023
+ color: #721c24;
1024
+ border: 1px solid #f5c6cb;
1025
+ }
1026
+
1027
+ .ext-ce-schema-validation-container .ext-ce-status-icon {
1028
+ font-size: 16px;
1029
+ font-weight: bold;
1030
+ }
1031
+
1032
+ .ext-ce-schema-import,
1033
+ .ext-ce-validation-errors {
1034
+ background-color: #fff;
1035
+ border: 1px solid #e0e0e0;
1036
+ border-radius: 8px;
1037
+ padding: 24px;
1038
+ margin-bottom: 1em;
1039
+ }
1040
+
1041
+ .ext-ce-schema-import h3,
1042
+ .ext-ce-validation-errors h3 {
1043
+ margin: 0 0 20px 0;
1044
+ font-size: 18px;
1045
+ font-weight: 600;
1046
+ color: #1a1a1a;
1047
+ }
1048
+
1049
+ .ext-ce-validation-error-item {
1050
+ padding: 16px;
1051
+ margin-bottom: 16px;
1052
+ background-color: #fff5f5;
1053
+ border-left: 4px solid #e53e3e;
1054
+ border-radius: 4px;
1055
+ }
1056
+
1057
+ .ext-ce-validation-error-item:last-child {
1058
+ margin-bottom: 0;
1059
+ }
1060
+
1061
+ .ext-ce-schema-validation-container .ext-ce-error-path {
1062
+ font-size: 12px;
1063
+ color: #718096;
1064
+ margin-bottom: 8px;
1065
+ font-family: 'Courier New', monospace;
1066
+ }
1067
+
1068
+ .ext-ce-schema-validation-container .ext-ce-error-details {
1069
+ display: flex;
1070
+ flex-direction: column;
1071
+ gap: 4px;
1072
+ }
1073
+
1074
+ .ext-ce-schema-validation-container .ext-ce-property-name {
1075
+ font-weight: 600;
1076
+ color: #2d3748;
1077
+ font-size: 14px;
1078
+ }
1079
+
1080
+ .ext-ce-schema-validation-container .ext-ce-error-message {
1081
+ font-size: 13px;
1082
+ color: #4a5568;
1083
+ line-height: 1.5;
1084
+ }
1085
+
1086
+ .ext-ce-schema-validation-container .ext-ce-error-message code {
1087
+ background-color: #edf2f7;
1088
+ padding: 2px 6px;
1089
+ border-radius: 3px;
1090
+ font-family: 'Courier New', monospace;
1091
+ font-size: 12px;
1092
+ color: #2d3748;
1093
+ }
1094
+
1095
+
1096
+ .ext-ce-schema-validation-container .ext-ce-copy-button {
1097
+ background-color: var(--ext-panel-background-color);
1098
+ border: 1px solid var(--app-color-gray);
1099
+ outline: none;
1100
+
1101
+ border-radius: 6px;
1102
+ padding: 4px 10px;
1103
+ font-size: 13px;
1104
+ line-height: 1.3;
1105
+ word-wrap: break-word;
1106
+ cursor: pointer;
1107
+ text-align: left;
1108
+ }
1109
+
1110
+ .ext-ce-schema-validation-container .ext-ce-copy-button:hover {
1111
+ background-color: var(--app-light-gray-background);
1112
+ }