@echozedlabs/react 0.1.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.
package/src/styles.css ADDED
@@ -0,0 +1,1395 @@
1
+ .me-editor {
2
+ --me-font-ui: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
3
+ --me-font-mono: "Cascadia Code", "SFMono-Regular", Consolas, monospace;
4
+ --me-surface: #ffffff;
5
+ --me-surface-muted: #f6f7f8;
6
+ /* Themeable surfaces (light defaults). A host can remap these — and the core
7
+ vars above — to its own tokens so the editor follows the site light/dark
8
+ theme. */
9
+ --me-surface-raised: #ffffff;
10
+ --me-code-bg: #f8fafc;
11
+ --me-callout-bg: #eff6ff;
12
+ --me-error-bg: #fff1f2;
13
+ --me-border: #d9dee5;
14
+ --me-text: #18202a;
15
+ --me-muted: #5d6978;
16
+ --me-accent: #2563eb;
17
+ --me-radius: 8px;
18
+ display: flex;
19
+ min-height: 240px;
20
+ flex-direction: column;
21
+ overflow: hidden;
22
+ border: 1px solid var(--me-border);
23
+ border-radius: var(--me-radius);
24
+ background: var(--me-surface);
25
+ color: var(--me-text);
26
+ font-family: var(--me-font-ui);
27
+ }
28
+
29
+ .me-toolbar {
30
+ display: flex;
31
+ flex-wrap: wrap;
32
+ gap: 4px;
33
+ align-items: center;
34
+ padding: 8px;
35
+ border-bottom: 1px solid var(--me-border);
36
+ background: var(--me-surface-muted);
37
+ }
38
+
39
+ .me-mode-button {
40
+ min-height: 32px;
41
+ border: 1px solid transparent;
42
+ border-radius: 6px;
43
+ background: transparent;
44
+ color: var(--me-muted);
45
+ cursor: pointer;
46
+ font: inherit;
47
+ padding: 0 10px;
48
+ display: inline-flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ gap: 6px;
52
+ }
53
+
54
+ .me-mode-button[data-icon-only="true"] {
55
+ width: 34px;
56
+ padding: 0;
57
+ }
58
+
59
+ .me-mode-button-icon {
60
+ display: inline-flex;
61
+ align-items: center;
62
+ justify-content: center;
63
+ width: 1em;
64
+ height: 1em;
65
+ }
66
+
67
+ .me-sr-only {
68
+ position: absolute;
69
+ width: 1px;
70
+ height: 1px;
71
+ padding: 0;
72
+ margin: -1px;
73
+ overflow: hidden;
74
+ clip: rect(0, 0, 0, 0);
75
+ white-space: nowrap;
76
+ border: 0;
77
+ }
78
+
79
+ .me-mode-button[data-active="true"] {
80
+ border-color: var(--me-border);
81
+ background: var(--me-surface);
82
+ color: var(--me-text);
83
+ }
84
+
85
+ .me-properties-toggle {
86
+ margin-left: auto;
87
+ }
88
+
89
+ .me-host-tools {
90
+ position: relative;
91
+ display: flex;
92
+ flex: 1 1 280px;
93
+ flex-wrap: wrap;
94
+ gap: 6px;
95
+ align-items: center;
96
+ justify-content: flex-end;
97
+ min-width: 0;
98
+ margin-left: auto;
99
+ }
100
+
101
+ .me-link-search {
102
+ position: relative;
103
+ min-width: min(220px, 100%);
104
+ }
105
+
106
+ .me-link-search input {
107
+ width: 100%;
108
+ min-height: 32px;
109
+ min-width: 0;
110
+ border: 1px solid var(--me-border);
111
+ border-radius: 6px;
112
+ background: var(--me-surface);
113
+ color: var(--me-text);
114
+ font: inherit;
115
+ padding: 0 10px;
116
+ }
117
+
118
+ .me-link-search input:focus {
119
+ border-color: var(--me-accent);
120
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
121
+ }
122
+
123
+ .me-link-suggestions {
124
+ position: absolute;
125
+ z-index: 8;
126
+ top: calc(100% + 4px);
127
+ right: 0;
128
+ display: grid;
129
+ width: min(320px, 86vw);
130
+ max-height: 240px;
131
+ overflow: auto;
132
+ border: 1px solid var(--me-border);
133
+ border-radius: 6px;
134
+ background: var(--me-surface);
135
+ box-shadow: 0 12px 28px rgba(24, 32, 42, 0.16);
136
+ }
137
+
138
+ .me-link-suggestion {
139
+ display: grid;
140
+ gap: 2px;
141
+ width: 100%;
142
+ min-height: 38px;
143
+ border: 0;
144
+ border-bottom: 1px solid var(--me-border);
145
+ border-radius: 0;
146
+ background: transparent;
147
+ color: var(--me-text);
148
+ cursor: pointer;
149
+ font: inherit;
150
+ padding: 8px 10px;
151
+ text-align: left;
152
+ }
153
+
154
+ .me-link-suggestion:last-child {
155
+ border-bottom: 0;
156
+ }
157
+
158
+ .me-link-suggestion:hover,
159
+ .me-link-suggestion:focus-visible {
160
+ background: var(--me-callout-bg);
161
+ outline: none;
162
+ }
163
+
164
+ .me-link-suggestion small,
165
+ .me-link-suggestion-status {
166
+ color: var(--me-muted);
167
+ font-size: 12px;
168
+ }
169
+
170
+ .me-link-suggestion-status {
171
+ padding: 8px 10px;
172
+ }
173
+
174
+ .me-upload-control {
175
+ display: inline-flex;
176
+ align-items: center;
177
+ }
178
+
179
+ .me-upload-control input {
180
+ position: absolute;
181
+ width: 1px;
182
+ height: 1px;
183
+ overflow: hidden;
184
+ clip: rect(0 0 0 0);
185
+ white-space: nowrap;
186
+ }
187
+
188
+ .me-upload-button {
189
+ display: inline-flex;
190
+ min-height: 32px;
191
+ align-items: center;
192
+ justify-content: center;
193
+ border: 1px solid var(--me-border);
194
+ border-radius: 6px;
195
+ background: var(--me-surface);
196
+ color: var(--me-text);
197
+ cursor: pointer;
198
+ font: inherit;
199
+ padding: 0 10px;
200
+ }
201
+
202
+ .me-upload-button:hover,
203
+ .me-upload-control input:focus-visible + .me-upload-button {
204
+ border-color: var(--me-accent);
205
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
206
+ }
207
+
208
+ .me-visually-hidden {
209
+ position: absolute;
210
+ width: 1px;
211
+ height: 1px;
212
+ overflow: hidden;
213
+ clip: rect(0 0 0 0);
214
+ white-space: nowrap;
215
+ }
216
+
217
+ .me-editor-surface {
218
+ min-height: inherit;
219
+ flex: 1;
220
+ }
221
+
222
+ .me-preview {
223
+ min-height: inherit;
224
+ flex: 1;
225
+ overflow: auto;
226
+ padding: 16px;
227
+ line-height: 1.65;
228
+ }
229
+
230
+ .me-preview h1,
231
+ .me-preview h2,
232
+ .me-preview h3,
233
+ .me-preview p,
234
+ .me-preview ul,
235
+ .me-preview ol,
236
+ .me-preview pre,
237
+ .me-preview blockquote,
238
+ .me-preview table {
239
+ margin-top: 0;
240
+ }
241
+
242
+ .me-renderer-list {
243
+ padding-left: 1.45rem;
244
+ }
245
+
246
+ .me-renderer-list li {
247
+ margin: 4px 0;
248
+ }
249
+
250
+ .me-renderer-task-list {
251
+ padding-left: 0;
252
+ list-style: none;
253
+ }
254
+
255
+ .me-renderer-task-item {
256
+ display: flex;
257
+ gap: 8px;
258
+ align-items: flex-start;
259
+ }
260
+
261
+ .me-renderer-task-checkbox {
262
+ position: relative;
263
+ appearance: none;
264
+ width: 1.05em;
265
+ height: 1.05em;
266
+ flex: 0 0 auto;
267
+ margin: 0.25em 0 0;
268
+ border: 1px solid #9aa7b2;
269
+ border-radius: 4px;
270
+ background: var(--me-surface);
271
+ opacity: 1;
272
+ }
273
+
274
+ .me-renderer-task-checkbox:checked {
275
+ border-color: var(--me-accent);
276
+ background-color: var(--me-accent);
277
+ background-image: linear-gradient(45deg, transparent 58%, #ffffff 58%),
278
+ linear-gradient(-45deg, transparent 48%, #ffffff 48%),
279
+ linear-gradient(45deg, #ffffff 42%, transparent 42%);
280
+ background-position: 0.14em 0.42em, 0.42em 0.42em, 0.28em 0.58em;
281
+ background-repeat: no-repeat;
282
+ background-size: 0.36em 0.12em, 0.48em 0.12em, 0.12em 0.28em;
283
+ }
284
+
285
+ .me-preview pre,
286
+ .me-renderer-code,
287
+ .me-renderer-error {
288
+ overflow: auto;
289
+ border: 1px solid var(--me-border);
290
+ border-radius: 6px;
291
+ background: var(--me-code-bg);
292
+ padding: 12px;
293
+ }
294
+
295
+ .me-renderer-code-highlight {
296
+ margin: 14px 0;
297
+ }
298
+
299
+ .me-renderer-code-highlight .shiki {
300
+ margin: 0;
301
+ border: 1px solid var(--me-border);
302
+ background: var(--me-surface);
303
+ }
304
+
305
+ .me-renderer-diagram {
306
+ overflow: auto;
307
+ margin: 14px 0;
308
+ padding: 12px;
309
+ border: 1px solid var(--me-border);
310
+ border-radius: 6px;
311
+ background: var(--me-surface);
312
+ }
313
+
314
+ .me-renderer-diagram svg {
315
+ display: block;
316
+ max-width: 100%;
317
+ height: auto;
318
+ margin: 0 auto;
319
+ }
320
+
321
+ .me-preview table {
322
+ width: 100%;
323
+ border-collapse: collapse;
324
+ }
325
+
326
+ .me-renderer-properties {
327
+ margin: 0 0 16px;
328
+ padding: 8px;
329
+ border: 1px solid var(--me-border);
330
+ border-radius: 6px;
331
+ background: var(--me-surface-muted);
332
+ }
333
+
334
+ .me-renderer-properties-table {
335
+ width: 100%;
336
+ border-collapse: collapse;
337
+ font-size: 13px;
338
+ line-height: 1.45;
339
+ }
340
+
341
+ .me-renderer-properties-table th,
342
+ .me-renderer-properties-table td {
343
+ border-bottom: 1px solid var(--me-border);
344
+ padding: 6px 8px;
345
+ vertical-align: top;
346
+ }
347
+
348
+ .me-renderer-properties-table tr:last-child th,
349
+ .me-renderer-properties-table tr:last-child td {
350
+ border-bottom: 0;
351
+ }
352
+
353
+ .me-renderer-properties-table th {
354
+ width: 160px;
355
+ color: var(--me-muted);
356
+ font-weight: 600;
357
+ text-align: left;
358
+ }
359
+
360
+ .me-preview td,
361
+ .me-preview th {
362
+ border: 1px solid var(--me-border);
363
+ padding: 6px 8px;
364
+ }
365
+
366
+ .me-preview .me-renderer-properties-table td,
367
+ .me-preview .me-renderer-properties-table th {
368
+ border-right: 0;
369
+ border-left: 0;
370
+ border-top: 0;
371
+ }
372
+
373
+ .me-renderer-callout {
374
+ border-left: 4px solid var(--me-accent);
375
+ background: var(--me-callout-bg);
376
+ padding: 10px 12px;
377
+ }
378
+
379
+ .me-codemirror {
380
+ min-height: inherit;
381
+ height: 100%;
382
+ font-family: var(--me-font-mono);
383
+ font-size: 14px;
384
+ }
385
+
386
+ .me-codemirror .cm-scroller {
387
+ min-height: inherit;
388
+ }
389
+
390
+ .me-codemirror .cm-content {
391
+ padding: 16px;
392
+ }
393
+
394
+ .me-codemirror .cm-me-hybrid-heading {
395
+ color: var(--me-text);
396
+ font-weight: 700;
397
+ }
398
+
399
+ .me-codemirror .cm-me-hybrid-heading-1 {
400
+ font-size: 1.65em;
401
+ }
402
+
403
+ .me-codemirror .cm-me-hybrid-heading-2 {
404
+ font-size: 1.35em;
405
+ }
406
+
407
+ .me-codemirror .cm-me-hybrid-heading-3 {
408
+ font-size: 1.18em;
409
+ }
410
+
411
+ .me-codemirror .cm-me-hybrid-blockquote {
412
+ border-left: 3px solid var(--me-border);
413
+ color: var(--me-muted);
414
+ padding-left: 10px;
415
+ }
416
+
417
+ .me-codemirror .cm-me-list-bullet,
418
+ .me-codemirror .cm-me-ordered-marker {
419
+ display: inline-block;
420
+ min-width: 1.4em;
421
+ color: var(--me-muted);
422
+ }
423
+
424
+ .me-codemirror .cm-me-list-bullet {
425
+ text-align: center;
426
+ }
427
+
428
+ .me-codemirror .cm-me-task-checkbox {
429
+ display: inline-block;
430
+ width: 1.05em;
431
+ height: 1.05em;
432
+ margin-right: 0.45em;
433
+ vertical-align: -0.16em;
434
+ border: 1px solid #9aa7b2;
435
+ border-radius: 4px;
436
+ background: var(--me-surface);
437
+ }
438
+
439
+ .me-codemirror .cm-me-task-checkbox-checked {
440
+ border-color: var(--me-accent);
441
+ background-color: var(--me-accent);
442
+ background-image: linear-gradient(45deg, transparent 58%, #ffffff 58%),
443
+ linear-gradient(-45deg, transparent 48%, #ffffff 48%),
444
+ linear-gradient(45deg, #ffffff 42%, transparent 42%);
445
+ background-position: 0.14em 0.42em, 0.42em 0.42em, 0.28em 0.58em;
446
+ background-repeat: no-repeat;
447
+ background-size: 0.36em 0.12em, 0.48em 0.12em, 0.12em 0.28em;
448
+ }
449
+
450
+ .me-codemirror .cm-me-hybrid-link {
451
+ color: var(--me-accent);
452
+ cursor: text;
453
+ text-decoration: underline;
454
+ text-underline-offset: 2px;
455
+ }
456
+
457
+ .me-codemirror .cm-me-hybrid-wiki-link {
458
+ border-radius: 4px;
459
+ background: var(--me-callout-bg);
460
+ padding: 0 3px;
461
+ text-decoration: none;
462
+ }
463
+
464
+ .me-codemirror .cm-me-rendered-block {
465
+ margin: 8px 0;
466
+ color: var(--me-text);
467
+ cursor: text;
468
+ font-family: var(--me-font-ui);
469
+ line-height: 1.55;
470
+ }
471
+
472
+ .me-codemirror .cm-me-rendered-block:focus {
473
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 65%);
474
+ outline-offset: 2px;
475
+ }
476
+
477
+ .me-codemirror .cm-me-rendered-block pre {
478
+ white-space: pre;
479
+ }
480
+
481
+ .me-codemirror .cm-me-rendered-block .me-renderer-code-highlight,
482
+ .me-codemirror .cm-me-rendered-block .me-renderer-diagram {
483
+ margin: 8px 0;
484
+ }
485
+
486
+ .me-codemirror .cm-me-rendered-block table {
487
+ width: 100%;
488
+ border-collapse: collapse;
489
+ margin: 8px 0;
490
+ }
491
+
492
+ .me-codemirror .cm-me-rendered-block td,
493
+ .me-codemirror .cm-me-rendered-block th {
494
+ border: 1px solid var(--me-border);
495
+ padding: 6px 8px;
496
+ }
497
+
498
+ .me-codemirror .cm-me-rendered-block img {
499
+ display: block;
500
+ max-width: 100%;
501
+ height: auto;
502
+ margin: 8px 0;
503
+ }
504
+
505
+ .me-codemirror .cm-me-rendered-block .me-renderer-callout {
506
+ margin: 8px 0;
507
+ }
508
+
509
+ .me-codemirror .cm-me-rendered-block-error {
510
+ overflow: auto;
511
+ border: 1px solid #fecaca;
512
+ border-radius: 6px;
513
+ background: var(--me-error-bg);
514
+ color: #991b1b;
515
+ padding: 12px;
516
+ }
517
+
518
+ .me-codemirror .cm-me-properties {
519
+ margin: 2px 0 12px;
520
+ padding: 10px 12px 12px;
521
+ border-radius: 7px;
522
+ background: color-mix(in srgb, var(--me-surface-muted), var(--me-surface) 44%);
523
+ color: var(--me-text);
524
+ font-family: var(--me-font-ui);
525
+ }
526
+
527
+ .me-codemirror .cm-me-properties-heading {
528
+ display: flex;
529
+ flex-wrap: wrap;
530
+ gap: 8px;
531
+ align-items: center;
532
+ margin-bottom: 8px;
533
+ color: var(--me-text);
534
+ font-size: 13px;
535
+ font-weight: 700;
536
+ cursor: pointer;
537
+ list-style: none;
538
+ }
539
+
540
+ .me-codemirror .cm-me-properties-heading::-webkit-details-marker {
541
+ display: none;
542
+ }
543
+
544
+ .me-codemirror .cm-me-properties-heading::before {
545
+ content: '▸';
546
+ color: var(--me-text-muted);
547
+ transition: transform 120ms ease;
548
+ }
549
+
550
+ .me-codemirror .cm-me-properties-details[open] > .cm-me-properties-heading::before {
551
+ transform: rotate(90deg);
552
+ }
553
+
554
+ .me-codemirror .cm-me-properties-heading:focus-visible {
555
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
556
+ outline-offset: 2px;
557
+ }
558
+
559
+ .me-codemirror .cm-me-properties-heading-text {
560
+ white-space: nowrap;
561
+ }
562
+
563
+ .me-codemirror .cm-me-properties-chips {
564
+ display: inline-flex;
565
+ flex: 1 1 240px;
566
+ flex-wrap: wrap;
567
+ gap: 6px;
568
+ min-width: 0;
569
+ }
570
+
571
+ .me-codemirror .cm-me-property-chip {
572
+ max-width: 220px;
573
+ overflow: hidden;
574
+ border: 1px solid color-mix(in srgb, var(--me-border), transparent 20%);
575
+ border-radius: 999px;
576
+ background: var(--me-surface);
577
+ color: var(--me-text-muted);
578
+ font-size: 12px;
579
+ font-weight: 600;
580
+ padding: 2px 8px;
581
+ text-overflow: ellipsis;
582
+ white-space: nowrap;
583
+ }
584
+
585
+ .me-codemirror .cm-me-property-chip[data-property-key='topic'] {
586
+ border-color: color-mix(in srgb, var(--me-accent), transparent 50%);
587
+ color: var(--me-text);
588
+ }
589
+
590
+ .me-codemirror .cm-me-property-chip--muted {
591
+ color: var(--me-text-muted);
592
+ }
593
+
594
+ .me-codemirror .cm-me-properties-table {
595
+ display: grid;
596
+ gap: 2px;
597
+ font-size: 13px;
598
+ line-height: 1.45;
599
+ }
600
+
601
+ .me-codemirror .cm-me-property-row {
602
+ position: relative;
603
+ display: grid;
604
+ grid-template-columns: 24px minmax(130px, 190px) minmax(180px, 1fr) 28px;
605
+ gap: 8px;
606
+ align-items: center;
607
+ min-height: 34px;
608
+ border-radius: 6px;
609
+ padding: 2px 0;
610
+ }
611
+
612
+ .me-codemirror .cm-me-property-row:hover,
613
+ .me-codemirror .cm-me-property-row:focus-within {
614
+ background: color-mix(in srgb, var(--me-accent), transparent 94%);
615
+ }
616
+
617
+ .me-codemirror .cm-me-property-order-cell,
618
+ .me-codemirror .cm-me-property-remove-cell {
619
+ display: flex;
620
+ align-items: center;
621
+ justify-content: center;
622
+ }
623
+
624
+ .me-codemirror .cm-me-property-key-input,
625
+ .me-codemirror .cm-me-property-tag-input,
626
+ .me-codemirror .cm-me-property-input {
627
+ min-height: 28px;
628
+ border: 1px solid transparent;
629
+ border-radius: 4px;
630
+ background: transparent;
631
+ color: var(--me-text);
632
+ font: inherit;
633
+ padding: 2px 4px;
634
+ }
635
+
636
+ .me-codemirror .cm-me-property-menu-details {
637
+ position: relative;
638
+ }
639
+
640
+ .me-codemirror .cm-me-property-menu-details[open] {
641
+ z-index: 6;
642
+ }
643
+
644
+ .me-codemirror .cm-me-property-summary {
645
+ display: inline-flex;
646
+ width: 100%;
647
+ min-height: 30px;
648
+ box-sizing: border-box;
649
+ gap: 8px;
650
+ align-items: center;
651
+ border-radius: 5px;
652
+ color: var(--me-text);
653
+ cursor: pointer;
654
+ list-style: none;
655
+ padding: 2px 4px;
656
+ }
657
+
658
+ .me-codemirror .cm-me-property-summary::-webkit-details-marker {
659
+ display: none;
660
+ }
661
+
662
+ .me-codemirror .cm-me-property-summary:focus-visible {
663
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
664
+ outline-offset: 1px;
665
+ }
666
+
667
+ .me-codemirror .cm-me-property-type-icon,
668
+ .me-codemirror .cm-me-inline-icon,
669
+ .me-inline-icon {
670
+ display: inline-block;
671
+ width: 1em;
672
+ height: 1em;
673
+ }
674
+
675
+ .me-codemirror .cm-me-property-type-icon {
676
+ display: inline-grid;
677
+ width: 20px;
678
+ height: 20px;
679
+ flex: 0 0 auto;
680
+ place-content: center;
681
+ border-radius: 5px;
682
+ color: var(--me-muted);
683
+ font-size: 13px;
684
+ font-weight: 700;
685
+ }
686
+
687
+ .me-codemirror .cm-me-property-name {
688
+ min-width: 0;
689
+ overflow: hidden;
690
+ text-overflow: ellipsis;
691
+ white-space: nowrap;
692
+ }
693
+
694
+ .me-codemirror .cm-me-property-menu {
695
+ position: absolute;
696
+ top: calc(100% + 3px);
697
+ left: 0;
698
+ display: grid;
699
+ gap: 8px;
700
+ width: min(290px, 78vw);
701
+ box-sizing: border-box;
702
+ border: 1px solid var(--me-border);
703
+ border-radius: 7px;
704
+ background: var(--me-surface);
705
+ box-shadow: 0 14px 34px rgba(24, 32, 42, 0.18);
706
+ padding: 10px;
707
+ }
708
+
709
+ .me-codemirror .cm-me-property-menu-label {
710
+ display: grid;
711
+ gap: 4px;
712
+ color: var(--me-muted);
713
+ font-size: 12px;
714
+ }
715
+
716
+ .me-codemirror .cm-me-property-key-input {
717
+ width: 100%;
718
+ min-width: 0;
719
+ box-sizing: border-box;
720
+ border-color: var(--me-border);
721
+ background: var(--me-surface);
722
+ }
723
+
724
+ .me-codemirror .cm-me-property-type-menu,
725
+ .me-codemirror .cm-me-property-suggestions {
726
+ display: flex;
727
+ flex-wrap: wrap;
728
+ gap: 4px;
729
+ }
730
+
731
+ .me-codemirror .cm-me-property-type-option,
732
+ .me-codemirror .cm-me-property-suggestion,
733
+ .me-codemirror .cm-me-property-picker,
734
+ .me-codemirror .cm-me-property-remove,
735
+ .me-codemirror .cm-me-property-add,
736
+ .me-codemirror .cm-me-property-tag-remove {
737
+ min-height: 28px;
738
+ border: 1px solid var(--me-border);
739
+ border-radius: 5px;
740
+ background: var(--me-surface);
741
+ color: var(--me-text);
742
+ cursor: pointer;
743
+ font: inherit;
744
+ padding: 0 8px;
745
+ }
746
+
747
+ .me-codemirror .cm-me-property-type-option[data-active="true"] {
748
+ border-color: color-mix(in srgb, var(--me-accent), transparent 20%);
749
+ background: color-mix(in srgb, var(--me-accent), transparent 90%);
750
+ color: var(--me-accent);
751
+ }
752
+
753
+ .me-codemirror .cm-me-property-drag-handle {
754
+ position: relative;
755
+ width: 24px;
756
+ height: 28px;
757
+ border: 0;
758
+ border-radius: 5px;
759
+ background: transparent;
760
+ cursor: grab;
761
+ padding: 0;
762
+ }
763
+
764
+ .me-codemirror .cm-me-property-drag-handle:disabled {
765
+ cursor: default;
766
+ }
767
+
768
+ .me-codemirror .cm-me-property-drag-handle::before {
769
+ position: absolute;
770
+ top: 8px;
771
+ left: 6px;
772
+ width: 12px;
773
+ height: 10px;
774
+ border-top: 2px solid var(--me-muted);
775
+ border-bottom: 2px solid var(--me-muted);
776
+ content: "";
777
+ opacity: 0.72;
778
+ }
779
+
780
+ .me-codemirror .cm-me-property-drag-handle::after {
781
+ position: absolute;
782
+ top: 13px;
783
+ left: 6px;
784
+ width: 12px;
785
+ border-top: 2px solid var(--me-muted);
786
+ content: "";
787
+ opacity: 0.72;
788
+ }
789
+
790
+ .me-codemirror .cm-me-property-drag-handle:focus-visible {
791
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 76%);
792
+ }
793
+
794
+ .me-codemirror .cm-me-property-type-option:disabled,
795
+ .me-codemirror .cm-me-property-suggestion:disabled,
796
+ .me-codemirror .cm-me-property-picker:disabled,
797
+ .me-codemirror .cm-me-property-remove:disabled,
798
+ .me-codemirror .cm-me-property-add:disabled,
799
+ .me-codemirror .cm-me-property-tag-remove:disabled {
800
+ cursor: not-allowed;
801
+ opacity: 0.55;
802
+ }
803
+
804
+ .me-codemirror .cm-me-property-input {
805
+ width: 100%;
806
+ min-width: 0;
807
+ box-sizing: border-box;
808
+ }
809
+
810
+ .me-codemirror .cm-me-property-input-wrap {
811
+ display: flex;
812
+ gap: 4px;
813
+ align-items: center;
814
+ min-width: 0;
815
+ }
816
+
817
+ .me-codemirror .cm-me-property-boolean-input {
818
+ width: 18px;
819
+ height: 18px;
820
+ min-height: 18px;
821
+ accent-color: var(--me-accent);
822
+ vertical-align: middle;
823
+ }
824
+
825
+ .me-codemirror .cm-me-property-add {
826
+ margin-top: 8px;
827
+ border-color: transparent;
828
+ background: transparent;
829
+ color: var(--me-muted);
830
+ padding-left: 4px;
831
+ }
832
+
833
+ .me-codemirror .cm-me-property-add:hover,
834
+ .me-codemirror .cm-me-property-add:focus-visible {
835
+ color: var(--me-text);
836
+ }
837
+
838
+ .me-codemirror .cm-me-property-remove {
839
+ width: 26px;
840
+ min-width: 26px;
841
+ padding: 0;
842
+ opacity: 0;
843
+ color: var(--me-muted);
844
+ }
845
+
846
+ .me-codemirror .cm-me-property-remove:hover,
847
+ .me-codemirror .cm-me-property-remove:focus-visible {
848
+ color: #dc2626;
849
+ border-color: color-mix(in srgb, #dc2626, transparent 70%);
850
+ background: color-mix(in srgb, #dc2626, transparent 92%);
851
+ }
852
+
853
+ .me-codemirror .cm-me-property-row:hover .cm-me-property-remove,
854
+ .me-codemirror .cm-me-property-row:focus-within .cm-me-property-remove {
855
+ opacity: 1;
856
+ }
857
+
858
+ .me-codemirror .cm-me-property-tags {
859
+ display: flex;
860
+ flex-wrap: wrap;
861
+ gap: 5px;
862
+ align-items: center;
863
+ min-height: 30px;
864
+ min-width: 0;
865
+ }
866
+
867
+ .me-codemirror .cm-me-property-tag {
868
+ display: inline-flex;
869
+ max-width: 100%;
870
+ align-items: center;
871
+ gap: 4px;
872
+ border-radius: 5px;
873
+ background: color-mix(in srgb, var(--me-accent), transparent 90%);
874
+ color: var(--me-text);
875
+ padding: 2px 3px 2px 7px;
876
+ }
877
+
878
+ .me-codemirror .cm-me-property-tag span {
879
+ min-width: 0;
880
+ overflow: hidden;
881
+ text-overflow: ellipsis;
882
+ }
883
+
884
+ .me-codemirror .cm-me-property-tag-remove {
885
+ width: 20px;
886
+ min-width: 20px;
887
+ min-height: 20px;
888
+ border: 0;
889
+ background: transparent;
890
+ color: var(--me-muted);
891
+ padding: 0;
892
+ }
893
+
894
+ .me-codemirror .cm-me-property-tag-input {
895
+ flex: 1 1 90px;
896
+ min-width: 74px;
897
+ }
898
+
899
+ .me-codemirror .cm-me-property-empty {
900
+ color: var(--me-muted);
901
+ padding: 6px 0;
902
+ }
903
+
904
+ .me-codemirror .cm-me-property-key-input:focus,
905
+ .me-codemirror .cm-me-property-tag-input:focus,
906
+ .me-codemirror .cm-me-property-input:focus {
907
+ border-color: var(--me-border);
908
+ background: var(--me-surface);
909
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
910
+ }
911
+
912
+ .me-wysiwyg {
913
+ position: relative;
914
+ min-height: inherit;
915
+ flex: 1;
916
+ overflow: auto;
917
+ background: var(--me-surface);
918
+ color: var(--me-text);
919
+ font-family: var(--me-font-ui);
920
+ }
921
+
922
+ .me-wysiwyg-toolbar {
923
+ display: flex;
924
+ flex-wrap: wrap;
925
+ gap: 6px;
926
+ align-items: center;
927
+ border-bottom: 1px solid var(--me-border);
928
+ background: var(--me-surface-muted);
929
+ padding: 8px;
930
+ }
931
+
932
+ .me-wysiwyg-toolbar button,
933
+ .me-wysiwyg-toolbar select {
934
+ min-height: 30px;
935
+ border: 1px solid var(--me-border);
936
+ border-radius: 6px;
937
+ background: var(--me-surface);
938
+ color: var(--me-text);
939
+ font: inherit;
940
+ padding: 0 8px;
941
+ }
942
+
943
+ .me-wysiwyg-toolbar button {
944
+ display: inline-flex;
945
+ align-items: center;
946
+ justify-content: center;
947
+ min-width: 32px;
948
+ cursor: pointer;
949
+ }
950
+
951
+ .me-wysiwyg-toolbar button svg {
952
+ width: 0.95em;
953
+ height: 0.95em;
954
+ }
955
+
956
+ .me-wysiwyg-toolbar button[data-active="true"] {
957
+ border-color: color-mix(in srgb, var(--me-accent), transparent 25%);
958
+ background: color-mix(in srgb, var(--me-accent), transparent 88%);
959
+ color: var(--me-accent);
960
+ }
961
+
962
+ .me-wysiwyg-toolbar-group {
963
+ display: inline-flex;
964
+ gap: 3px;
965
+ align-items: center;
966
+ min-width: 0;
967
+ padding-right: 6px;
968
+ border-right: 1px solid var(--me-border);
969
+ }
970
+
971
+ .me-wysiwyg-toolbar-group:last-child {
972
+ border-right: 0;
973
+ }
974
+
975
+ .me-wysiwyg-block-select {
976
+ min-width: 150px;
977
+ }
978
+
979
+ .me-wysiwyg-insert-select {
980
+ min-width: 112px;
981
+ }
982
+
983
+ .me-wysiwyg-loading {
984
+ display: grid;
985
+ min-height: inherit;
986
+ place-items: center;
987
+ color: var(--me-muted);
988
+ font-size: 13px;
989
+ }
990
+
991
+ .me-wysiwyg-input {
992
+ min-height: inherit;
993
+ padding: 16px;
994
+ outline: none;
995
+ line-height: 1.65;
996
+ }
997
+
998
+ .me-wysiwyg-placeholder-text {
999
+ position: absolute;
1000
+ top: 16px;
1001
+ left: 16px;
1002
+ color: var(--me-muted);
1003
+ pointer-events: none;
1004
+ }
1005
+
1006
+ .me-wysiwyg-heading {
1007
+ margin: 0 0 10px;
1008
+ line-height: 1.2;
1009
+ }
1010
+
1011
+ .me-wysiwyg-heading-1 {
1012
+ font-size: 1.75rem;
1013
+ }
1014
+
1015
+ .me-wysiwyg-heading-2 {
1016
+ font-size: 1.4rem;
1017
+ }
1018
+
1019
+ .me-wysiwyg-heading-3 {
1020
+ font-size: 1.2rem;
1021
+ }
1022
+
1023
+ .me-wysiwyg-paragraph,
1024
+ .me-wysiwyg-list,
1025
+ .me-wysiwyg-quote,
1026
+ .me-wysiwyg-code {
1027
+ margin-top: 0;
1028
+ }
1029
+
1030
+ .me-wysiwyg-list {
1031
+ padding-left: 1.45rem;
1032
+ }
1033
+
1034
+ /* Render real list markers. ul/ol share the .me-wysiwyg-list class, so target by
1035
+ element; the element+class selector also wins over a generic `ul {}` reset in
1036
+ a host app. Check lists use a separate class and keep their custom markers. */
1037
+ ul.me-wysiwyg-list {
1038
+ list-style: disc outside;
1039
+ }
1040
+ ol.me-wysiwyg-list {
1041
+ list-style: decimal outside;
1042
+ }
1043
+ ul.me-wysiwyg-list ul.me-wysiwyg-list {
1044
+ list-style-type: circle;
1045
+ }
1046
+ ul.me-wysiwyg-list ul.me-wysiwyg-list ul.me-wysiwyg-list {
1047
+ list-style-type: square;
1048
+ }
1049
+ .me-wysiwyg-list-item {
1050
+ margin: 0;
1051
+ }
1052
+
1053
+ .me-wysiwyg-check-list {
1054
+ padding-left: 0;
1055
+ list-style: none;
1056
+ }
1057
+
1058
+ .me-wysiwyg-list-item-checked,
1059
+ .me-wysiwyg-list-item-unchecked {
1060
+ position: relative;
1061
+ list-style: none;
1062
+ padding-left: 1.7rem;
1063
+ }
1064
+
1065
+ .me-wysiwyg-list-item-checked::before,
1066
+ .me-wysiwyg-list-item-unchecked::before {
1067
+ position: absolute;
1068
+ top: 0.36em;
1069
+ left: 0.1rem;
1070
+ width: 1.05em;
1071
+ height: 1.05em;
1072
+ box-sizing: border-box;
1073
+ border: 1px solid #9aa7b2;
1074
+ border-radius: 4px;
1075
+ background: var(--me-surface);
1076
+ content: "";
1077
+ }
1078
+
1079
+ .me-wysiwyg-list-item-checked {
1080
+ color: var(--me-muted);
1081
+ text-decoration: line-through;
1082
+ }
1083
+
1084
+ .me-wysiwyg-list-item-checked::before {
1085
+ border-color: var(--me-accent);
1086
+ background-color: var(--me-accent);
1087
+ background-image: linear-gradient(45deg, transparent 58%, #ffffff 58%),
1088
+ linear-gradient(-45deg, transparent 48%, #ffffff 48%),
1089
+ linear-gradient(45deg, #ffffff 42%, transparent 42%);
1090
+ background-position: 0.14em 0.42em, 0.42em 0.42em, 0.28em 0.58em;
1091
+ background-repeat: no-repeat;
1092
+ background-size: 0.36em 0.12em, 0.48em 0.12em, 0.12em 0.28em;
1093
+ }
1094
+
1095
+ .me-wysiwyg-quote {
1096
+ border-left: 4px solid var(--me-accent);
1097
+ color: var(--me-muted);
1098
+ padding-left: 12px;
1099
+ }
1100
+
1101
+ .me-wysiwyg-code {
1102
+ display: block;
1103
+ width: 100%;
1104
+ box-sizing: border-box;
1105
+ overflow: auto;
1106
+ border: 1px solid var(--me-border);
1107
+ border-radius: 6px;
1108
+ background: var(--me-code-bg);
1109
+ margin: 14px 0;
1110
+ padding: 40px 12px 12px;
1111
+ font-family: var(--me-font-mono);
1112
+ line-height: 1.55;
1113
+ tab-size: 2;
1114
+ }
1115
+
1116
+ .me-wysiwyg-code-language-popover {
1117
+ position: absolute;
1118
+ z-index: 4;
1119
+ display: flex;
1120
+ gap: 8px;
1121
+ align-items: center;
1122
+ justify-content: space-between;
1123
+ min-height: 30px;
1124
+ box-sizing: border-box;
1125
+ border-bottom: 1px solid var(--me-border);
1126
+ color: var(--me-muted);
1127
+ font-size: 12px;
1128
+ pointer-events: auto;
1129
+ }
1130
+
1131
+ .me-wysiwyg-code-language-popover select {
1132
+ min-height: 26px;
1133
+ border: 1px solid var(--me-border);
1134
+ border-radius: 5px;
1135
+ background: var(--me-surface);
1136
+ color: var(--me-text);
1137
+ font: inherit;
1138
+ }
1139
+
1140
+ .me-wysiwyg-token-comment,
1141
+ .me-wysiwyg-token-prolog,
1142
+ .me-wysiwyg-token-doctype,
1143
+ .me-wysiwyg-token-cdata {
1144
+ color: #64748b;
1145
+ }
1146
+
1147
+ .me-wysiwyg-token-punctuation,
1148
+ .me-wysiwyg-token-operator,
1149
+ .me-wysiwyg-token-namespace {
1150
+ color: #475569;
1151
+ }
1152
+
1153
+ .me-wysiwyg-token-property,
1154
+ .me-wysiwyg-token-tag,
1155
+ .me-wysiwyg-token-boolean,
1156
+ .me-wysiwyg-token-number,
1157
+ .me-wysiwyg-token-constant,
1158
+ .me-wysiwyg-token-symbol,
1159
+ .me-wysiwyg-token-deleted {
1160
+ color: #b45309;
1161
+ }
1162
+
1163
+ .me-wysiwyg-token-selector,
1164
+ .me-wysiwyg-token-attr-name,
1165
+ .me-wysiwyg-token-string,
1166
+ .me-wysiwyg-token-char,
1167
+ .me-wysiwyg-token-builtin,
1168
+ .me-wysiwyg-token-inserted {
1169
+ color: #047857;
1170
+ }
1171
+
1172
+ .me-wysiwyg-token-function,
1173
+ .me-wysiwyg-token-class-name,
1174
+ .me-wysiwyg-token-entity,
1175
+ .me-wysiwyg-token-url {
1176
+ color: #2563eb;
1177
+ }
1178
+
1179
+ .me-wysiwyg-token-keyword,
1180
+ .me-wysiwyg-token-atrule,
1181
+ .me-wysiwyg-token-attr-value,
1182
+ .me-wysiwyg-token-important,
1183
+ .me-wysiwyg-token-regex,
1184
+ .me-wysiwyg-token-variable {
1185
+ color: #7c3aed;
1186
+ }
1187
+
1188
+ .me-wysiwyg-link {
1189
+ color: var(--me-accent);
1190
+ text-decoration: underline;
1191
+ }
1192
+
1193
+ .me-wysiwyg-text-bold {
1194
+ font-weight: 700;
1195
+ }
1196
+
1197
+ .me-wysiwyg-text-italic {
1198
+ font-style: italic;
1199
+ }
1200
+
1201
+ .me-wysiwyg-text-code {
1202
+ border-radius: 4px;
1203
+ background: var(--me-surface-muted);
1204
+ font-family: var(--me-font-mono);
1205
+ padding: 0 3px;
1206
+ }
1207
+
1208
+ .me-wysiwyg-mermaid,
1209
+ .me-wysiwyg-plantuml,
1210
+ .me-wysiwyg-image {
1211
+ margin: 14px 0;
1212
+ overflow: auto;
1213
+ border: 1px solid var(--me-border);
1214
+ border-radius: 6px;
1215
+ background: var(--me-surface);
1216
+ }
1217
+
1218
+ .me-wysiwyg-mermaid figcaption,
1219
+ .me-wysiwyg-plantuml figcaption,
1220
+ .me-wysiwyg-image figcaption {
1221
+ display: flex;
1222
+ gap: 8px;
1223
+ align-items: center;
1224
+ justify-content: space-between;
1225
+ border-bottom: 1px solid var(--me-border);
1226
+ background: var(--me-code-bg);
1227
+ color: var(--me-muted);
1228
+ font-size: 13px;
1229
+ padding: 7px 10px;
1230
+ }
1231
+
1232
+ .me-wysiwyg-mermaid figcaption button,
1233
+ .me-wysiwyg-plantuml figcaption button,
1234
+ .me-wysiwyg-image figcaption button,
1235
+ .me-wysiwyg-mermaid-editor button,
1236
+ .me-wysiwyg-diagram-editor button,
1237
+ .me-wysiwyg-image-editor button {
1238
+ min-height: 28px;
1239
+ border: 1px solid var(--me-border);
1240
+ border-radius: 6px;
1241
+ background: var(--me-surface);
1242
+ color: var(--me-text);
1243
+ cursor: pointer;
1244
+ font: inherit;
1245
+ padding: 0 8px;
1246
+ }
1247
+
1248
+ .me-wysiwyg-mermaid-rendered,
1249
+ .me-wysiwyg-mermaid-loading,
1250
+ .me-wysiwyg-mermaid-error,
1251
+ .me-wysiwyg-diagram-rendered,
1252
+ .me-wysiwyg-diagram-loading,
1253
+ .me-wysiwyg-diagram-error {
1254
+ margin: 0;
1255
+ padding: 12px;
1256
+ }
1257
+
1258
+ .me-wysiwyg-mermaid-rendered svg,
1259
+ .me-wysiwyg-diagram-rendered svg {
1260
+ display: block;
1261
+ max-width: 100%;
1262
+ height: auto;
1263
+ margin: 0 auto;
1264
+ }
1265
+
1266
+ .me-wysiwyg-mermaid-editor,
1267
+ .me-wysiwyg-diagram-editor {
1268
+ display: grid;
1269
+ gap: 8px;
1270
+ padding: 10px;
1271
+ }
1272
+
1273
+ .me-wysiwyg-mermaid-editor textarea,
1274
+ .me-wysiwyg-diagram-editor textarea {
1275
+ width: 100%;
1276
+ min-width: 0;
1277
+ resize: vertical;
1278
+ border: 1px solid var(--me-border);
1279
+ border-radius: 6px;
1280
+ color: var(--me-text);
1281
+ font: 13px/1.45 var(--me-font-mono);
1282
+ padding: 8px;
1283
+ }
1284
+
1285
+ .me-wysiwyg-mermaid-error,
1286
+ .me-wysiwyg-diagram-error {
1287
+ color: #991b1b;
1288
+ background: var(--me-error-bg);
1289
+ font-family: var(--me-font-mono);
1290
+ }
1291
+
1292
+ .me-wysiwyg-image img {
1293
+ display: block;
1294
+ max-width: calc(100% - 24px);
1295
+ height: auto;
1296
+ margin: 12px auto;
1297
+ border-radius: 6px;
1298
+ }
1299
+
1300
+ .me-wysiwyg-image p {
1301
+ margin: -2px 12px 12px;
1302
+ color: var(--me-muted);
1303
+ font-size: 13px;
1304
+ text-align: center;
1305
+ }
1306
+
1307
+ .me-wysiwyg-image-editor {
1308
+ display: grid;
1309
+ gap: 8px;
1310
+ padding: 10px;
1311
+ }
1312
+
1313
+ .me-wysiwyg-image-editor label {
1314
+ display: grid;
1315
+ gap: 4px;
1316
+ color: var(--me-muted);
1317
+ font-size: 12px;
1318
+ }
1319
+
1320
+ .me-wysiwyg-image-editor input {
1321
+ min-height: 30px;
1322
+ min-width: 0;
1323
+ border: 1px solid var(--me-border);
1324
+ border-radius: 6px;
1325
+ color: var(--me-text);
1326
+ font: 13px/1.4 var(--me-font-ui);
1327
+ padding: 0 8px;
1328
+ }
1329
+
1330
+ @media (max-width: 640px) {
1331
+ .me-editor {
1332
+ border-right: 0;
1333
+ border-left: 0;
1334
+ border-radius: 0;
1335
+ }
1336
+
1337
+ .me-mode-button {
1338
+ flex: 1 1 auto;
1339
+ }
1340
+
1341
+ .me-properties-toggle {
1342
+ margin-left: 0;
1343
+ }
1344
+
1345
+ .me-host-tools {
1346
+ flex-basis: 100%;
1347
+ justify-content: stretch;
1348
+ margin-left: 0;
1349
+ }
1350
+
1351
+ .me-link-search,
1352
+ .me-upload-control,
1353
+ .me-upload-button {
1354
+ flex: 1 1 100%;
1355
+ }
1356
+
1357
+ .me-codemirror .cm-me-properties {
1358
+ padding-right: 8px;
1359
+ padding-left: 8px;
1360
+ }
1361
+
1362
+ .me-codemirror .cm-me-property-row {
1363
+ grid-template-columns: 24px minmax(0, 1fr) 28px;
1364
+ gap: 6px;
1365
+ align-items: start;
1366
+ }
1367
+
1368
+ .me-codemirror .cm-me-property-key-cell {
1369
+ grid-column: 2;
1370
+ }
1371
+
1372
+ .me-codemirror .cm-me-property-value-cell {
1373
+ grid-column: 2 / 4;
1374
+ }
1375
+
1376
+ .me-codemirror .cm-me-property-remove-cell {
1377
+ grid-column: 3;
1378
+ grid-row: 1;
1379
+ }
1380
+
1381
+ .me-codemirror .cm-me-property-menu {
1382
+ width: min(290px, 84vw);
1383
+ }
1384
+ }
1385
+
1386
+ @media (prefers-reduced-motion: reduce) {
1387
+ .me-editor *,
1388
+ .me-editor *::before,
1389
+ .me-editor *::after {
1390
+ animation-duration: 0.01ms !important;
1391
+ animation-iteration-count: 1 !important;
1392
+ scroll-behavior: auto !important;
1393
+ transition-duration: 0.01ms !important;
1394
+ }
1395
+ }