plutonium 0.23.0 → 0.23.2

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.
data/src/css/easymde.css CHANGED
@@ -1,722 +1,168 @@
1
1
  /**
2
- * EasyMDE + CodeMirror Styles
3
- * Based on https://cdn.jsdelivr.net/npm/easymde@2.18.0/dist/easymde.min.css
4
- * Adapted for Flowbite with dark mode support
5
- */
6
-
7
- @layer components {
8
-
9
- /* CodeMirror Core */
10
- .CodeMirror {
11
- @apply font-mono relative overflow-hidden bg-white dark:bg-gray-800 text-black dark:text-white;
12
- direction: ltr;
13
- }
14
-
15
- .CodeMirror-lines {
16
- padding: 4px 0;
17
- }
18
-
19
- .CodeMirror-scroll {
20
- overflow: scroll;
21
- margin-bottom: -50px;
22
- margin-right: -50px;
23
- padding-bottom: 50px;
24
- height: 100%;
25
- outline: none;
26
- position: relative;
27
- z-index: 0;
28
- -webkit-overflow-scrolling: touch;
29
- }
30
-
31
- .CodeMirror-sizer {
32
- position: relative;
33
- border-right: 50px solid transparent;
34
- box-sizing: content-box;
35
- }
36
-
37
- .CodeMirror-vscrollbar,
38
- .CodeMirror-hscrollbar,
39
- .CodeMirror-scrollbar-filler,
40
- .CodeMirror-gutter-filler {
41
- position: absolute;
42
- z-index: 6;
43
- display: none;
44
- outline: none;
45
- }
46
-
47
- .CodeMirror-vscrollbar {
48
- right: 0;
49
- top: 0;
50
- overflow-x: hidden;
51
- overflow-y: scroll;
52
- }
53
-
54
- .CodeMirror-hscrollbar {
55
- bottom: 0;
56
- left: 0;
57
- overflow-y: hidden;
58
- overflow-x: scroll;
59
- }
60
-
61
- .CodeMirror-scrollbar-filler {
62
- right: 0;
63
- bottom: 0;
64
- }
65
-
66
- .CodeMirror-gutter-filler {
67
- left: 0;
68
- bottom: 0;
69
- }
70
-
71
- .CodeMirror-gutters {
72
- @apply absolute left-0 top-0 min-h-full z-[3] border-r border-gray-200 dark:border-gray-600 bg-gray-50 dark:bg-gray-700;
73
- white-space: nowrap;
74
- box-sizing: content-box;
75
- }
76
-
77
- .CodeMirror-linenumber {
78
- @apply text-gray-500 dark:text-gray-400;
79
- padding: 0 3px 0 5px;
80
- min-width: 20px;
81
- text-align: right;
82
- white-space: nowrap;
83
- }
84
-
85
- /* Cursor and Selection */
86
- .CodeMirror-cursor {
87
- @apply border-l border-black dark:border-white border-r-0;
88
- width: 0;
89
- position: absolute;
90
- pointer-events: none;
91
- }
92
-
93
- .cm-fat-cursor .CodeMirror-cursor {
94
- width: auto;
95
- border: 0;
96
- background: #77ee77;
97
- }
98
-
99
- .cm-fat-cursor div.CodeMirror-cursors {
100
- z-index: 1;
101
- }
102
-
103
- .CodeMirror-selected {
104
- @apply bg-gray-200 dark:bg-gray-600;
105
- }
106
-
107
- .CodeMirror-focused .CodeMirror-selected {
108
- @apply bg-blue-100 dark:bg-blue-900/30;
109
- }
110
-
111
- /* Line Styles */
112
- .CodeMirror pre.CodeMirror-line,
113
- .CodeMirror pre.CodeMirror-line-like {
114
- padding: 0 4px;
115
- margin: 0;
116
- border-radius: 0;
117
- border-width: 0;
118
- background: transparent;
119
- font-family: inherit;
120
- font-size: inherit;
121
- white-space: pre;
122
- word-wrap: normal;
123
- line-height: inherit;
124
- color: inherit;
125
- z-index: 2;
126
- position: relative;
127
- overflow: visible;
128
- -webkit-tap-highlight-color: transparent;
129
- font-variant-ligatures: contextual;
130
- }
131
-
132
- .CodeMirror-wrap pre.CodeMirror-line,
133
- .CodeMirror-wrap pre.CodeMirror-line-like {
134
- word-wrap: break-word;
135
- white-space: pre-wrap;
136
- word-break: normal;
137
- }
138
-
139
- /* Gutter */
140
- .CodeMirror-gutter {
141
- white-space: normal;
142
- height: 100%;
143
- display: inline-block;
144
- vertical-align: top;
145
- margin-bottom: -50px;
146
- box-sizing: content-box;
147
- }
148
-
149
- .CodeMirror-gutter-wrapper {
150
- position: absolute;
151
- z-index: 4;
152
- background: none;
153
- border: none;
154
- }
155
-
156
- /* EasyMDE Container */
157
- .EasyMDEContainer {
158
- @apply block;
159
- }
160
-
161
- .EasyMDEContainer.sided--no-fullscreen {
162
- @apply flex flex-row flex-wrap;
163
- }
164
-
165
- .EasyMDEContainer .CodeMirror {
166
- @apply box-border border h-auto border-gray-300 dark:border-gray-600 rounded-b-lg p-2.5 z-0 break-words;
167
- }
168
-
169
- .EasyMDEContainer .CodeMirror-fullscreen {
170
- @apply fixed inset-x-0 top-[50px] bottom-0 h-auto z-40 border-r-0 rounded-br-none bg-white dark:bg-gray-800;
171
- }
172
-
173
- .EasyMDEContainer .CodeMirror-sided {
174
- width: 50% !important;
175
- }
176
-
177
- .EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided {
178
- @apply border-r-0 rounded-br-none relative flex-1;
179
- }
180
-
181
- .EasyMDEContainer .CodeMirror-placeholder {
182
- @apply opacity-50;
183
- }
184
-
185
- /* Editor Toolbar */
186
- .editor-toolbar {
187
- @apply relative select-none p-2.5 border-t border-l border-r border-gray-300 dark:border-gray-600 rounded-t-lg bg-white dark:bg-gray-800 space-x-1;
188
- }
189
-
190
- .editor-toolbar.fullscreen {
191
- @apply w-full h-[50px] py-2.5 px-0 box-border fixed top-0 left-0 opacity-100 z-50 border-0;
192
- }
193
-
194
- .editor-toolbar button {
195
- @apply bg-transparent inline-block text-center no-underline h-[30px] m-0 p-0 border border-transparent rounded cursor-pointer min-w-[30px] px-1.5 whitespace-nowrap text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 font-bold;
196
- }
197
-
198
- .editor-toolbar button.active {
199
- @apply bg-gray-100 dark:bg-gray-700 border-gray-300 dark:border-gray-600;
200
- }
201
-
202
- .editor-toolbar i.separator {
203
- @apply inline-block w-0 border-l border-r border-l-gray-300 border-r-white dark:border-l-gray-600 dark:border-r-gray-800 text-transparent -indent-[10px] mx-1.5;
204
- }
205
-
206
- .editor-toolbar button:after {
207
- font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
208
- font-size: 65%;
209
- vertical-align: text-bottom;
210
- position: relative;
211
- top: 2px;
212
- }
213
-
214
- .editor-toolbar button.heading-1:after {
215
- content: "1";
216
- }
217
-
218
- .editor-toolbar button.heading-2:after {
219
- content: "2";
220
- }
221
-
222
- .editor-toolbar button.heading-3:after {
223
- content: "3";
224
- }
225
-
226
- .editor-toolbar button.heading-bigger:after {
227
- content: "▲";
228
- }
229
-
230
- .editor-toolbar button.heading-smaller:after {
231
- content: "▼";
232
- }
233
-
234
- /* Preview */
235
- .editor-preview {
236
- @apply p-2.5 bg-gray-50 dark:bg-gray-900 format dark:format-invert format-primary max-w-none;
237
- }
238
-
239
- .editor-preview-side {
240
- @apply fixed bottom-0 w-1/2 top-[50px] right-0 z-50 overflow-auto hidden box-border border border-gray-300 dark:border-gray-600 break-words format dark:format-invert format-primary max-w-none;
241
- }
242
-
243
- .editor-preview-active-side {
244
- @apply block;
245
- }
246
-
247
- .EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side {
248
- @apply flex-1 h-auto static;
249
- }
250
-
251
- .editor-preview>p {
252
- @apply mt-0;
253
- }
254
-
255
- .editor-preview pre {
256
- @apply bg-gray-100 dark:bg-gray-800 mb-2.5;
257
- }
258
-
259
- .editor-preview table td,
260
- .editor-preview table th {
261
- @apply border border-gray-300 dark:border-gray-600 p-1.5;
262
- }
263
-
264
- /* Status Bar */
265
- .editor-statusbar {
266
- @apply p-2 text-sm text-gray-500 dark:text-gray-400 text-right;
267
- }
268
-
269
- .EasyMDEContainer.sided--no-fullscreen .editor-statusbar {
270
- @apply w-full;
271
- }
272
-
273
- .editor-statusbar span {
274
- @apply inline-block min-w-[4em] ml-4;
275
- }
276
-
277
- .editor-statusbar .lines:before {
278
- content: 'lines: ';
279
- }
280
-
281
- .editor-statusbar .words:before {
282
- content: 'words: ';
283
- }
284
-
285
- .editor-statusbar .characters:before {
286
- content: 'characters: ';
287
- }
288
-
289
- /* Syntax Highlighting */
290
- .cm-s-easymde .cm-em {
291
- @apply italic text-secondary-600 dark:text-secondary-400;
292
- }
293
-
294
- .cm-s-easymde .cm-strong {
295
- @apply font-bold text-secondary-600 dark:text-secondary-400;
296
- }
297
-
298
- .cm-s-easymde .cm-strikethrough {
299
- @apply line-through italic text-secondary-600 dark:text-secondary-400;
300
- }
301
-
302
- .cm-s-easymde .cm-quote {
303
- @apply text-gray-900 dark:text-white;
304
- }
305
-
306
- .cm-s-easymde .cm-keyword {
307
- @apply text-gray-900 dark:text-white;
308
- }
309
-
310
- .cm-s-easymde .cm-atom {
311
- @apply text-gray-900 dark:text-white;
312
- }
313
-
314
- .cm-s-easymde .cm-number {
315
- @apply text-gray-900 dark:text-white;
316
- }
317
-
318
- .cm-s-easymde .cm-def {
319
- @apply text-gray-900 dark:text-white;
320
- }
321
-
322
- .cm-s-easymde .cm-variable {
323
- @apply text-gray-900 dark:text-white;
324
- }
325
-
326
- .cm-s-easymde .cm-variable-2 {
327
- @apply text-gray-900 dark:text-white;
328
- }
329
-
330
- .cm-s-easymde .cm-variable-3 {
331
- @apply text-gray-900 dark:text-white;
332
- }
333
-
334
- .cm-formatting.cm-formatting-list {
335
- @apply text-gray-900 dark:text-white;
336
- }
337
-
338
- .cm-formatting.cm-formatting-link {
339
- @apply text-secondary-900 dark:text-secondary-400;
340
- }
341
-
342
- .cm-formatting.cm-formatting-link-string {
343
- @apply text-secondary-900 dark:text-secondary-400;
344
- }
345
-
346
- .cm-s-easymde .cm-string {
347
- @apply text-accent-600 dark:text-accent-400;
348
- }
349
-
350
- .cm-s-easymde .cm-string.cm-url {
351
- @apply text-accent-600 dark:text-accent-400;
352
- }
353
-
354
- .cm-s-easymde .cm-url {
355
- @apply text-gray-900 dark:text-white;
356
- }
357
-
358
- .cm-s-easymde .cm-string-2 {
359
- @apply text-gray-900 dark:text-white;
360
- }
361
-
362
- .cm-s-easymde .cm-comment {
363
- @apply text-gray-600 dark:text-gray-400 font-mono;
364
- }
365
-
366
- .cm-s-easymde .cm-tag {
367
- color: #63a35c;
368
- }
369
-
370
- .cm-s-easymde .cm-meta {
371
- @apply text-gray-600 dark:text-gray-400;
372
- }
373
-
374
- .cm-s-easymde .cm-attribute {
375
- @apply text-secondary-600 dark:text-secondary-400;
376
- }
377
-
378
- .cm-s-easymde .cm-error {
379
- @apply text-red-600 dark:text-red-400;
380
- }
381
-
382
- .cm-s-easymde .cm-header-1 {
383
- font-size: calc(1.375rem + 1.5vw);
384
- }
385
-
386
- .cm-s-easymde .cm-header-2 {
387
- font-size: calc(1.325rem + .9vw);
388
- }
389
-
390
- .cm-s-easymde .cm-header-3 {
391
- font-size: calc(1.3rem + .6vw);
392
- }
393
-
394
- .cm-s-easymde .cm-header-4 {
395
- font-size: calc(1.275rem + .3vw);
396
- }
397
-
398
- .cm-s-easymde .cm-header-5 {
399
- font-size: 1.25rem;
400
- }
401
-
402
- .cm-s-easymde .cm-header-6 {
403
- font-size: 1rem;
404
- }
405
-
406
- .cm-s-easymde .cm-header-1,
407
- .cm-s-easymde .cm-header-2,
408
- .cm-s-easymde .cm-header-3,
409
- .cm-s-easymde .cm-header-4,
410
- .cm-s-easymde .cm-header-5,
411
- .cm-s-easymde .cm-header-6 {
412
- @apply mb-2 leading-tight;
413
- }
414
-
415
- /* Dropdown */
416
- .editor-toolbar .easymde-dropdown {
417
- @apply relative bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600;
418
- background: linear-gradient(to bottom right, #fff 0, #fff 84%, #333 50%, #333 100%);
419
- }
420
-
421
- .editor-toolbar .easymde-dropdown:hover {
422
- background: linear-gradient(to bottom right, #fff 0, #fff 84%, #333 50%, #333 100%);
423
- }
424
-
425
- .easymde-dropdown-content {
426
- @apply block invisible absolute bg-gray-50 dark:bg-gray-800 shadow-lg p-2 z-20 top-[30px];
427
- }
428
-
429
- .easymde-dropdown:active .easymde-dropdown-content,
430
- .easymde-dropdown:focus .easymde-dropdown-content,
431
- .easymde-dropdown:focus-within .easymde-dropdown-content {
432
- @apply visible;
433
- }
434
-
435
- /* Fullscreen Gradients */
436
- .editor-toolbar.fullscreen::before {
437
- @apply w-5 h-[50px] fixed top-0 left-0 m-0 p-0;
438
- background: linear-gradient(to right, #fff 0%, rgba(255, 255, 255, 0) 100%);
439
- }
440
-
441
- .editor-toolbar.fullscreen::after {
442
- @apply w-5 h-[50px] fixed top-0 right-0 m-0 p-0;
443
- background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #fff 100%);
444
- }
445
-
446
- /* Dark mode fullscreen gradients */
447
- .dark .editor-toolbar.fullscreen::before {
448
- background: linear-gradient(to right, #1f2937 0%, rgba(31, 41, 55, 0) 100%);
449
- }
450
-
451
- .dark .editor-toolbar.fullscreen::after {
452
- background: linear-gradient(to right, rgba(31, 41, 55, 0) 0%, #1f2937 100%);
453
- }
454
-
455
- /* Mobile Responsiveness */
456
- @media only screen and (max-width: 700px) {
457
- .editor-toolbar i.no-mobile {
458
- @apply hidden;
459
- }
460
- }
461
-
462
- /* Spell Check */
463
- .CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word) {
464
- @apply bg-red-100/50 dark:bg-red-900/30;
465
- }
466
-
467
- /* Image Handling */
468
- span[data-img-src]::after {
469
- content: '';
470
- background-image: var(--bg-image);
471
- @apply block max-h-full max-w-full bg-contain bg-no-repeat;
472
- height: 0;
473
- padding-top: var(--height);
474
- width: var(--width);
475
- }
476
-
477
- /* RTL Support */
478
- .CodeMirror-rtl pre {
479
- direction: rtl;
480
- }
481
-
482
- .CodeMirror-selectedtext {
483
- @apply bg-gray-200/70 dark:bg-gray-600/50;
484
- }
485
-
486
- /* Cursor Animations */
487
- @keyframes blink {
488
- 50% {
489
- background-color: transparent;
490
- }
491
- }
492
-
493
- @-moz-keyframes blink {
494
- 50% {
495
- background-color: transparent;
496
- }
497
- }
498
-
499
- @-webkit-keyframes blink {
500
- 50% {
501
- background-color: transparent;
502
- }
503
- }
504
-
505
- .cm-fat-cursor .CodeMirror-cursor {
506
- @apply bg-[#7e7];
507
- width: auto;
508
- border: 0;
509
- }
510
-
511
- .cm-fat-cursor div.CodeMirror-cursors {
512
- z-index: 1;
513
- }
514
-
515
- .cm-fat-cursor .CodeMirror-line::selection,
516
- .cm-fat-cursor .CodeMirror-line>span::selection,
517
- .cm-fat-cursor .CodeMirror-line>span>span::selection {
518
- background: transparent;
519
- }
520
-
521
- .cm-fat-cursor .CodeMirror-line::-moz-selection,
522
- .cm-fat-cursor .CodeMirror-line>span::-moz-selection,
523
- .cm-fat-cursor .CodeMirror-line>span>span::-moz-selection {
524
- background: transparent;
525
- }
526
-
527
- .cm-fat-cursor {
528
- caret-color: transparent;
529
- }
530
-
531
- /* Print Styles */
532
- @media print {
533
- .CodeMirror div.CodeMirror-cursors {
534
- visibility: hidden;
535
- }
536
- }
537
-
538
- /* Additional Utility Classes */
539
- .CodeMirror-selected {
540
- @apply bg-gray-200 dark:bg-gray-600;
541
- }
542
-
543
- .CodeMirror-focused .CodeMirror-selected {
544
- @apply bg-blue-100 dark:bg-blue-900/30;
545
- }
546
-
547
- .CodeMirror-crosshair {
548
- @apply cursor-crosshair;
549
- }
550
-
551
- .CodeMirror-line {
552
- @apply outline-none;
553
- }
554
-
555
- .cm-tab {
556
- @apply inline-block no-underline;
557
- }
558
-
559
- /* Fix for tab character rendering */
560
- .cm-tab-wrap-hack:after {
561
- content: '';
562
- }
563
-
564
- /* Cursor visibility states */
565
- div.CodeMirror-cursors {
566
- @apply invisible relative z-[3];
567
- }
568
-
569
- div.CodeMirror-dragcursors {
570
- @apply visible;
571
- }
572
-
573
- .CodeMirror-focused div.CodeMirror-cursors {
574
- @apply visible;
575
- }
576
-
577
- /* Measure element used for character width calculations */
578
- .CodeMirror-measure {
579
- @apply absolute w-full h-0 overflow-hidden invisible;
580
- }
581
-
582
- /* Line background and widgets */
583
- .CodeMirror-linebackground {
584
- @apply absolute inset-0 z-0;
585
- }
586
-
587
- .CodeMirror-linewidget {
588
- @apply relative z-[2];
589
- padding: 0.1px;
590
- }
591
-
592
- /* Gutter click prevention */
593
- .CodeMirror-gutter,
594
- .CodeMirror-gutters,
595
- .CodeMirror-linenumber {
596
- -moz-user-select: none;
597
- -webkit-user-select: none;
598
- user-select: none;
599
- }
600
-
601
- /* Ensure proper line wrapping in various scenarios */
602
- .CodeMirror-wrap pre.CodeMirror-line,
603
- .CodeMirror-wrap pre.CodeMirror-line-like {
604
- @apply break-words whitespace-pre-wrap break-normal;
605
- }
606
-
607
- /* Composing indicator for IME */
608
- .CodeMirror-composing {
609
- @apply border-b-2 border-solid;
610
- }
611
-
612
- /* Matching brackets highlighting */
613
- div.CodeMirror span.CodeMirror-matchingbracket {
614
- @apply text-green-700 dark:text-green-400;
615
- }
616
-
617
- div.CodeMirror span.CodeMirror-nonmatchingbracket {
618
- @apply text-red-600 dark:text-red-400;
619
- }
620
-
621
- /* Active line background */
622
- .CodeMirror-activeline-background {
623
- @apply bg-blue-50 dark:bg-blue-900/10;
624
- }
625
-
626
- /* Ensure proper z-index stacking in fullscreen mode */
627
- .CodeMirror-fullscreen {
628
- @apply z-[9999];
629
- }
630
-
631
- /* Preview mode button states */
632
- .editor-toolbar.disabled-for-preview button:not(.no-disable) {
633
- @apply opacity-60 pointer-events-none;
634
- }
635
-
636
- /* Ensure proper box sizing for measurement */
637
- .CodeMirror-measure pre {
638
- @apply static;
639
- }
640
-
641
- /* Fix for Safari overflow issues */
642
- .CodeMirror-scroll {
643
- -webkit-overflow-scrolling: touch;
644
- }
645
-
646
- /* System-specific font smoothing */
647
- .CodeMirror pre.CodeMirror-line,
648
- .CodeMirror pre.CodeMirror-line-like {
649
- -webkit-font-smoothing: antialiased;
650
- -moz-osx-font-smoothing: grayscale;
651
- }
652
-
653
- /* Typography Styles */
654
- .cm-s-easymde .cm-header {
655
- @apply text-gray-900 dark:text-white;
656
- }
657
-
658
- /* Focus/Selection Styles */
659
- .CodeMirror-line::selection,
660
- .CodeMirror-line>span::selection,
661
- .CodeMirror-line>span>span::selection {
662
- @apply bg-primary-100 dark:bg-primary-900/30;
663
- }
664
-
665
- .CodeMirror-line::-moz-selection,
666
- .CodeMirror-line>span::-moz-selection,
667
- .CodeMirror-line>span>span::-moz-selection {
668
- @apply bg-primary-100 dark:bg-primary-900/30;
669
- }
670
-
671
- /* Tag Match Styles */
672
- .CodeMirror-matchingtag {
673
- @apply bg-yellow-200/30 dark:bg-yellow-900/30;
674
- }
675
-
676
- /* Search Highlight Styles */
677
- .cm-searching {
678
- @apply bg-yellow-200/40 dark:bg-yellow-900/40;
679
- }
680
-
681
- /* Ruler Styles */
682
- .CodeMirror-rulers {
683
- @apply absolute inset-x-0 -top-[50px] bottom-0 overflow-hidden;
684
- }
685
-
686
- .CodeMirror-ruler {
687
- @apply border-l border-gray-300 dark:border-gray-600 top-0 bottom-0 absolute;
688
- }
689
-
690
- /* Editor Preview Full */
691
- .editor-preview-full {
692
- @apply absolute w-full h-full top-0 left-0 z-[7] overflow-auto hidden box-border;
693
- }
694
-
695
- /* Add active state for full preview */
696
- .editor-preview-active {
697
- @apply block;
698
- }
699
-
700
- /* Preview content specific styles */
701
- .editor-preview-full {
702
- @apply p-2.5 bg-gray-50 dark:bg-gray-900 format dark:format-invert format-primary max-w-none;
703
- }
704
-
705
- .editor-preview-full>p {
706
- @apply mt-0;
707
- }
708
-
709
- .editor-preview-full pre {
710
- @apply bg-gray-100 dark:bg-gray-800 mb-2.5;
711
- }
712
-
713
- .editor-preview-full table td,
714
- .editor-preview-full table th {
715
- @apply border border-gray-300 dark:border-gray-600 p-1.5;
716
- }
717
-
718
- /* Hide elements that need to be hidden without !important */
719
- .ss-content .ss-list .ss-optgroup.ss-close .ss-option {
720
- display: none;
721
- }
2
+ * EasyMDE Tailwind Integration
3
+ * Overrides for theming with Tailwind colors and dark mode support
4
+ * Import this AFTER the original easymde.css
5
+ */
6
+
7
+ /* Container and CodeMirror theming */
8
+ .EasyMDEContainer .CodeMirror {
9
+ @apply border-gray-300 bg-white text-gray-900 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100;
10
+ }
11
+
12
+ .EasyMDEContainer .CodeMirror-focused .CodeMirror-selected {
13
+ @apply bg-primary-100 dark:bg-primary-900;
14
+ }
15
+
16
+ .CodeMirror-selected {
17
+ @apply bg-gray-200 dark:bg-gray-700;
18
+ }
19
+
20
+ .CodeMirror-line::selection,
21
+ .CodeMirror-line>span::selection,
22
+ .CodeMirror-line>span>span::selection {
23
+ @apply bg-primary-100 dark:bg-primary-900;
24
+ }
25
+
26
+ .CodeMirror-line::-moz-selection,
27
+ .CodeMirror-line>span::-moz-selection,
28
+ .CodeMirror-line>span>span::-moz-selection {
29
+ @apply bg-primary-100 dark:bg-primary-900;
30
+ }
31
+
32
+ /* Gutter theming */
33
+ .CodeMirror-gutters {
34
+ @apply border-gray-300 bg-gray-50 dark:border-gray-600 dark:bg-gray-700;
35
+ }
36
+
37
+ .CodeMirror-linenumber {
38
+ @apply text-gray-500 dark:text-gray-400;
39
+ }
40
+
41
+ .CodeMirror-cursor {
42
+ @apply border-gray-900 dark:border-gray-100;
43
+ }
44
+
45
+ /* Toolbar theming */
46
+ .editor-toolbar {
47
+ @apply border-gray-300 bg-white dark:border-gray-600 dark:bg-gray-800;
48
+ }
49
+
50
+ .editor-toolbar.fullscreen {
51
+ @apply bg-white dark:bg-gray-800;
52
+ }
53
+
54
+ .editor-toolbar button {
55
+ @apply text-gray-700 hover:bg-gray-100 hover:border-gray-400 dark:text-gray-300 dark:hover:bg-gray-700 dark:hover:border-gray-500;
56
+ }
57
+
58
+ .editor-toolbar button.active,
59
+ .editor-toolbar button:hover {
60
+ @apply bg-gray-100 border-gray-400 dark:bg-gray-700 dark:border-gray-500;
61
+ }
62
+
63
+ .editor-toolbar i.separator {
64
+ @apply border-l-gray-300 border-r-white dark:border-l-gray-600 dark:border-r-gray-800;
65
+ }
66
+
67
+ /* Status bar */
68
+ .editor-statusbar {
69
+ @apply text-gray-600 dark:text-gray-400;
70
+ }
71
+
72
+ /* Preview theming */
73
+ .editor-preview {
74
+ @apply bg-gray-50 text-gray-900 dark:bg-gray-800 dark:text-gray-100;
75
+ }
76
+
77
+ .editor-preview pre {
78
+ @apply bg-gray-200 dark:bg-gray-700;
79
+ }
80
+
81
+ .editor-preview table td,
82
+ .editor-preview table th {
83
+ @apply border-gray-300 dark:border-gray-600;
84
+ }
85
+
86
+ .editor-preview-side {
87
+ @apply border-gray-300 bg-white dark:border-gray-600 dark:bg-gray-800;
88
+ }
89
+
90
+ /* CodeMirror syntax highlighting - dark mode support */
91
+ .dark .cm-s-easymde .cm-header-1,
92
+ .dark .cm-s-easymde .cm-header-2,
93
+ .dark .cm-s-easymde .cm-header-3,
94
+ .dark .cm-s-easymde .cm-header-4,
95
+ .dark .cm-s-easymde .cm-header-5,
96
+ .dark .cm-s-easymde .cm-header-6 {
97
+ @apply text-blue-300;
98
+ }
99
+
100
+ .dark .cm-s-easymde .cm-quote {
101
+ @apply text-green-400;
102
+ }
103
+
104
+ .dark .cm-s-easymde .cm-comment {
105
+ @apply bg-gray-700;
106
+ }
107
+
108
+ .dark .cm-s-easymde .cm-link {
109
+ @apply text-blue-400;
110
+ }
111
+
112
+ .dark .cm-s-easymde .cm-url {
113
+ @apply text-blue-300;
114
+ }
115
+
116
+ .dark .cm-s-easymde .cm-tag {
117
+ @apply text-green-400;
118
+ }
119
+
120
+ .dark .cm-s-easymde .cm-attribute {
121
+ @apply text-purple-400;
122
+ }
123
+
124
+ .dark .cm-s-easymde .cm-string {
125
+ @apply text-orange-400;
126
+ }
127
+
128
+ /* Dropdown theming */
129
+ .editor-toolbar .easymde-dropdown {
130
+ @apply bg-white border-gray-300 dark:bg-gray-800 dark:border-gray-600;
131
+ }
132
+
133
+ .easymde-dropdown-content {
134
+ @apply bg-white shadow-lg border border-gray-200 dark:bg-gray-800 dark:border-gray-600 dark:shadow-gray-900/20;
135
+ }
136
+
137
+ .easymde-dropdown-content button {
138
+ @apply text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-700;
139
+ }
140
+
141
+ /* Spell check error in dark mode */
142
+ .dark .CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word) {
143
+ @apply bg-red-500/20;
144
+ }
145
+
146
+ /* Placeholder text */
147
+ .dark .EasyMDEContainer .CodeMirror-placeholder {
148
+ @apply text-gray-500;
149
+ }
150
+
151
+ /* Active line background */
152
+ .dark .CodeMirror-activeline-background {
153
+ @apply bg-gray-700/50;
154
+ }
155
+
156
+ /* Matching brackets */
157
+ .dark div.CodeMirror span.CodeMirror-matchingbracket {
158
+ @apply text-green-400;
159
+ }
160
+
161
+ .dark div.CodeMirror span.CodeMirror-nonmatchingbracket {
162
+ @apply text-red-400;
163
+ }
164
+
165
+ /* Search highlighting */
166
+ .dark .cm-searching {
167
+ @apply bg-yellow-500/30;
722
168
  }