@parathantl/react-email-editor 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/dist/index.css ADDED
@@ -0,0 +1,1616 @@
1
+ /* src/styles/toolbar.module.css */
2
+ .toolbar {
3
+ display: flex;
4
+ align-items: center;
5
+ height: var(--ee-toolbar-height);
6
+ padding: 0 var(--ee-space-lg);
7
+ background: var(--ee-bg-toolbar);
8
+ border-bottom: 1px solid var(--ee-border-color);
9
+ gap: var(--ee-space-sm);
10
+ flex-shrink: 0;
11
+ }
12
+ .toolbarGroup {
13
+ display: flex;
14
+ align-items: center;
15
+ gap: 4px;
16
+ }
17
+ .toolbarSeparator {
18
+ width: 1px;
19
+ height: 24px;
20
+ background: var(--ee-border-color);
21
+ margin: 0 var(--ee-space-sm);
22
+ }
23
+ .toolbarSpacer {
24
+ flex: 1;
25
+ }
26
+ .toolbarBtn {
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: center;
30
+ gap: var(--ee-space-xs);
31
+ padding: 6px 10px;
32
+ font-size: var(--ee-font-size-sm);
33
+ font-family: var(--ee-font-family);
34
+ font-weight: var(--ee-font-weight-medium);
35
+ background: transparent;
36
+ border: 1px solid transparent;
37
+ border-radius: var(--ee-border-radius-sm);
38
+ cursor: pointer;
39
+ color: var(--ee-text-secondary);
40
+ transition: all var(--ee-transition-fast);
41
+ white-space: nowrap;
42
+ }
43
+ .toolbarBtn:hover {
44
+ background: var(--ee-bg-hover);
45
+ color: var(--ee-text-primary);
46
+ border-color: var(--ee-border-color);
47
+ }
48
+ .toolbarBtn:disabled {
49
+ opacity: 0.4;
50
+ cursor: not-allowed;
51
+ }
52
+ .toolbarBtnActive {
53
+ background: var(--ee-bg-selected);
54
+ color: var(--ee-color-primary);
55
+ border-color: var(--ee-color-primary);
56
+ }
57
+ .toolbarBtnPrimary {
58
+ background: var(--ee-color-primary);
59
+ color: var(--ee-text-inverse);
60
+ border-color: var(--ee-color-primary);
61
+ }
62
+ .toolbarBtnPrimary:hover {
63
+ background: var(--ee-color-primary-hover);
64
+ color: var(--ee-text-inverse);
65
+ border-color: var(--ee-color-primary-hover);
66
+ }
67
+ .tabBar {
68
+ display: flex;
69
+ gap: 2px;
70
+ background: var(--ee-bg-app);
71
+ border-radius: var(--ee-border-radius);
72
+ padding: 2px;
73
+ }
74
+ .tabBtn {
75
+ padding: 4px 12px;
76
+ font-size: var(--ee-font-size-sm);
77
+ font-family: var(--ee-font-family);
78
+ font-weight: var(--ee-font-weight-medium);
79
+ background: transparent;
80
+ border: none;
81
+ border-radius: var(--ee-border-radius-sm);
82
+ cursor: pointer;
83
+ color: var(--ee-text-secondary);
84
+ transition: all var(--ee-transition-fast);
85
+ }
86
+ .tabBtn:hover {
87
+ color: var(--ee-text-primary);
88
+ }
89
+ .tabBtnActive {
90
+ background: var(--ee-bg-panel);
91
+ color: var(--ee-text-primary);
92
+ box-shadow: var(--ee-shadow-sm);
93
+ }
94
+ .panelToggleBtn {
95
+ composes: toolbarBtn;
96
+ font-size: var(--ee-font-size-lg);
97
+ padding: 4px 8px;
98
+ line-height: 1;
99
+ }
100
+ .panelToggleBtnActive {
101
+ background: var(--ee-bg-selected);
102
+ color: var(--ee-color-primary);
103
+ border-color: var(--ee-color-primary);
104
+ }
105
+ .richTextToolbar {
106
+ display: flex;
107
+ align-items: center;
108
+ gap: 2px;
109
+ padding: var(--ee-space-xs) var(--ee-space-sm);
110
+ background: var(--ee-bg-panel);
111
+ border: 1px solid var(--ee-border-color);
112
+ border-radius: var(--ee-border-radius);
113
+ box-shadow: var(--ee-shadow-sm);
114
+ flex-wrap: wrap;
115
+ }
116
+ .richTextBtn {
117
+ display: flex;
118
+ align-items: center;
119
+ justify-content: center;
120
+ width: 28px;
121
+ height: 28px;
122
+ font-size: var(--ee-font-size-sm);
123
+ background: transparent;
124
+ border: none;
125
+ border-radius: var(--ee-border-radius-sm);
126
+ cursor: pointer;
127
+ color: var(--ee-text-secondary);
128
+ transition: all var(--ee-transition-fast);
129
+ }
130
+ .richTextBtn:hover {
131
+ background: var(--ee-bg-hover);
132
+ color: var(--ee-text-primary);
133
+ }
134
+ .richTextBtnActive {
135
+ background: var(--ee-bg-selected);
136
+ color: var(--ee-color-primary);
137
+ }
138
+ .richTextSeparator {
139
+ width: 1px;
140
+ height: 20px;
141
+ background: var(--ee-border-color);
142
+ margin: 0 2px;
143
+ }
144
+ .richTextSelect {
145
+ height: 28px;
146
+ padding: 0 4px;
147
+ font-size: var(--ee-font-size-xs);
148
+ font-family: var(--ee-font-family);
149
+ border: 1px solid var(--ee-border-color);
150
+ border-radius: var(--ee-border-radius-sm);
151
+ background: var(--ee-bg-input);
152
+ color: var(--ee-text-primary);
153
+ outline: none;
154
+ cursor: pointer;
155
+ max-width: 110px;
156
+ }
157
+ .richTextSelect:focus {
158
+ border-color: var(--ee-border-focus);
159
+ }
160
+ .richTextSelectSmall {
161
+ composes: richTextSelect;
162
+ max-width: 64px;
163
+ }
164
+ .richTextColorWrapper {
165
+ position: relative;
166
+ }
167
+ .richTextColorLabel {
168
+ font-weight: var(--ee-font-weight-semibold);
169
+ font-size: var(--ee-font-size-sm);
170
+ }
171
+ .richTextColorIndicator {
172
+ display: block;
173
+ width: 16px;
174
+ height: 3px;
175
+ border-radius: 1px;
176
+ margin-top: 1px;
177
+ }
178
+ .richTextColorDropdown {
179
+ position: absolute;
180
+ top: 100%;
181
+ left: 0;
182
+ margin-top: 4px;
183
+ padding: var(--ee-space-sm);
184
+ background: var(--ee-bg-panel);
185
+ border: 1px solid var(--ee-border-color);
186
+ border-radius: var(--ee-border-radius);
187
+ box-shadow: var(--ee-shadow-md);
188
+ z-index: var(--ee-z-dropdown);
189
+ min-width: 176px;
190
+ }
191
+ .richTextColorGrid {
192
+ display: grid;
193
+ grid-template-columns: repeat(6, 1fr);
194
+ gap: 4px;
195
+ margin-bottom: var(--ee-space-sm);
196
+ }
197
+ .richTextColorSwatch {
198
+ width: 24px;
199
+ height: 24px;
200
+ border-radius: 3px;
201
+ border: 2px solid transparent;
202
+ cursor: pointer;
203
+ padding: 0;
204
+ transition: all var(--ee-transition-fast);
205
+ }
206
+ .richTextColorSwatch:hover {
207
+ transform: scale(1.2);
208
+ border-color: var(--ee-border-color-strong);
209
+ }
210
+ .richTextColorActions {
211
+ display: flex;
212
+ align-items: center;
213
+ gap: var(--ee-space-sm);
214
+ border-top: 1px solid var(--ee-border-color);
215
+ padding-top: var(--ee-space-sm);
216
+ }
217
+ .richTextColorInput {
218
+ width: 28px;
219
+ height: 28px;
220
+ padding: 0;
221
+ border: 1px solid var(--ee-border-color);
222
+ border-radius: 3px;
223
+ cursor: pointer;
224
+ background: none;
225
+ }
226
+ .richTextColorClearBtn {
227
+ font-size: var(--ee-font-size-xs);
228
+ font-family: var(--ee-font-family);
229
+ color: var(--ee-text-secondary);
230
+ background: transparent;
231
+ border: 1px solid var(--ee-border-color);
232
+ border-radius: var(--ee-border-radius-sm);
233
+ padding: 3px 8px;
234
+ cursor: pointer;
235
+ transition: all var(--ee-transition-fast);
236
+ }
237
+ .richTextColorClearBtn:hover {
238
+ background: var(--ee-bg-hover);
239
+ color: var(--ee-text-primary);
240
+ }
241
+ .richTextLinkDropdown {
242
+ position: absolute;
243
+ top: 100%;
244
+ left: 0;
245
+ margin-top: 4px;
246
+ padding: var(--ee-space-sm);
247
+ background: var(--ee-bg-panel);
248
+ border: 1px solid var(--ee-border-color);
249
+ border-radius: var(--ee-border-radius);
250
+ box-shadow: var(--ee-shadow-md);
251
+ z-index: var(--ee-z-dropdown);
252
+ min-width: 260px;
253
+ display: flex;
254
+ flex-direction: column;
255
+ gap: 6px;
256
+ }
257
+ .richTextLinkLabel {
258
+ font-size: var(--ee-font-size-xs);
259
+ font-weight: var(--ee-font-weight-semibold);
260
+ color: var(--ee-text-secondary);
261
+ }
262
+ .richTextLinkInput {
263
+ width: 100%;
264
+ padding: 6px 8px;
265
+ font-size: var(--ee-font-size-sm);
266
+ font-family: var(--ee-font-family);
267
+ border: 1px solid var(--ee-border-color);
268
+ border-radius: var(--ee-border-radius-sm);
269
+ background: var(--ee-bg-input);
270
+ color: var(--ee-text-primary);
271
+ outline: none;
272
+ box-sizing: border-box;
273
+ }
274
+ .richTextLinkInput:focus {
275
+ border-color: var(--ee-border-focus);
276
+ }
277
+ .richTextLinkActions {
278
+ display: flex;
279
+ gap: 6px;
280
+ }
281
+ .richTextLinkApply {
282
+ flex: 1;
283
+ padding: 4px 10px;
284
+ font-size: var(--ee-font-size-xs);
285
+ font-family: var(--ee-font-family);
286
+ font-weight: var(--ee-font-weight-medium);
287
+ color: var(--ee-text-inverse);
288
+ background: var(--ee-color-primary);
289
+ border: none;
290
+ border-radius: var(--ee-border-radius-sm);
291
+ cursor: pointer;
292
+ transition: background var(--ee-transition-fast);
293
+ }
294
+ .richTextLinkApply:hover {
295
+ background: var(--ee-color-primary-hover);
296
+ }
297
+ .richTextLinkRemove {
298
+ padding: 4px 10px;
299
+ font-size: var(--ee-font-size-xs);
300
+ font-family: var(--ee-font-family);
301
+ color: var(--ee-color-danger, #ef4444);
302
+ background: transparent;
303
+ border: 1px solid var(--ee-color-danger, #ef4444);
304
+ border-radius: var(--ee-border-radius-sm);
305
+ cursor: pointer;
306
+ transition: all var(--ee-transition-fast);
307
+ }
308
+ .richTextLinkRemove:hover {
309
+ background: var(--ee-color-danger, #ef4444);
310
+ color: #fff;
311
+ }
312
+
313
+ /* src/styles/editor.module.css */
314
+ .editorContainer {
315
+ display: flex;
316
+ flex-direction: column;
317
+ height: 100%;
318
+ min-height: 500px;
319
+ font-family: var(--ee-font-family);
320
+ font-size: var(--ee-font-size-base);
321
+ color: var(--ee-text-primary);
322
+ background: var(--ee-bg-app);
323
+ border: 1px solid var(--ee-border-color);
324
+ border-radius: var(--ee-border-radius-lg);
325
+ overflow: hidden;
326
+ }
327
+ .editorContainer:focus {
328
+ outline: none;
329
+ }
330
+ .editorBody {
331
+ display: flex;
332
+ flex: 1;
333
+ min-height: 0;
334
+ overflow: hidden;
335
+ }
336
+ .editorPanel {
337
+ min-height: 0;
338
+ max-height: 100%;
339
+ }
340
+ .sidebarPanel {
341
+ width: var(--ee-sidebar-width);
342
+ border-right: 1px solid var(--ee-border-color);
343
+ background: var(--ee-bg-panel);
344
+ overflow-y: auto;
345
+ flex-shrink: 0;
346
+ }
347
+ .canvasPanel {
348
+ flex: 1;
349
+ min-width: 0;
350
+ background: var(--ee-bg-canvas);
351
+ overflow-y: auto;
352
+ }
353
+ .propertiesPanel {
354
+ width: var(--ee-properties-width);
355
+ border-left: 1px solid var(--ee-border-color);
356
+ background: var(--ee-bg-panel);
357
+ overflow-y: auto;
358
+ flex-shrink: 0;
359
+ }
360
+ .panelToggle {
361
+ display: none;
362
+ }
363
+ .panelOverlay {
364
+ display: none;
365
+ }
366
+ @media (max-width: 1023px) {
367
+ .editorBody {
368
+ position: relative;
369
+ }
370
+ .sidebarPanel {
371
+ display: none;
372
+ }
373
+ .propertiesPanel {
374
+ display: none;
375
+ }
376
+ .panelToggle {
377
+ display: flex;
378
+ }
379
+ .sidebarPanel.sidebarOpen {
380
+ display: block;
381
+ position: absolute;
382
+ z-index: var(--ee-z-overlay);
383
+ left: 0;
384
+ top: 0;
385
+ bottom: 0;
386
+ box-shadow: var(--ee-shadow-lg);
387
+ }
388
+ .propertiesPanel.propertiesOpen {
389
+ display: block;
390
+ position: absolute;
391
+ z-index: var(--ee-z-overlay);
392
+ right: 0;
393
+ top: 0;
394
+ bottom: 0;
395
+ box-shadow: var(--ee-shadow-lg);
396
+ }
397
+ .panelOverlay.panelOverlayVisible {
398
+ display: block;
399
+ position: absolute;
400
+ inset: 0;
401
+ background: var(--ee-overlay-backdrop);
402
+ z-index: calc(var(--ee-z-overlay) - 1);
403
+ }
404
+ }
405
+ @media (max-width: 767px) {
406
+ .editorContainer {
407
+ min-height: 400px;
408
+ }
409
+ }
410
+
411
+ /* src/styles/sidebar.module.css */
412
+ .sidebar {
413
+ display: flex;
414
+ flex-direction: column;
415
+ flex: 1;
416
+ min-height: 0;
417
+ }
418
+ .sectionTitle {
419
+ font-size: var(--ee-font-size-sm);
420
+ font-weight: var(--ee-font-weight-semibold);
421
+ color: var(--ee-text-secondary);
422
+ text-transform: uppercase;
423
+ letter-spacing: 0.5px;
424
+ padding: var(--ee-space-md) var(--ee-space-lg);
425
+ margin: 0;
426
+ border-bottom: 1px solid var(--ee-border-color);
427
+ }
428
+ .blockPalette {
429
+ padding: var(--ee-space-sm);
430
+ display: grid;
431
+ grid-template-columns: 1fr 1fr;
432
+ gap: var(--ee-space-sm);
433
+ }
434
+ .blockCard {
435
+ display: flex;
436
+ flex-direction: column;
437
+ align-items: center;
438
+ gap: var(--ee-space-xs);
439
+ padding: var(--ee-space-md) var(--ee-space-sm);
440
+ background: var(--ee-bg-panel);
441
+ border: 1px solid var(--ee-border-color);
442
+ border-radius: var(--ee-border-radius);
443
+ cursor: grab;
444
+ transition: all var(--ee-transition-fast);
445
+ user-select: none;
446
+ }
447
+ .blockCard:hover {
448
+ border-color: var(--ee-border-focus);
449
+ background: var(--ee-bg-selected);
450
+ box-shadow: var(--ee-shadow-sm);
451
+ }
452
+ .blockCard:active {
453
+ cursor: grabbing;
454
+ opacity: 0.7;
455
+ }
456
+ .blockCardIcon {
457
+ font-size: 20px;
458
+ line-height: 1;
459
+ }
460
+ .blockCardLabel {
461
+ font-size: var(--ee-font-size-sm);
462
+ font-weight: var(--ee-font-weight-medium);
463
+ color: var(--ee-text-primary);
464
+ }
465
+ .variableList {
466
+ padding: var(--ee-space-sm) var(--ee-space-lg);
467
+ }
468
+ .variableHint {
469
+ font-size: var(--ee-font-size-xs);
470
+ color: var(--ee-text-muted);
471
+ margin: 0 0 var(--ee-space-sm) 0;
472
+ line-height: 1.4;
473
+ font-style: italic;
474
+ }
475
+ .variableGroup {
476
+ margin-bottom: var(--ee-space-md);
477
+ }
478
+ .variableGroupTitle {
479
+ font-size: var(--ee-font-size-xs);
480
+ font-weight: var(--ee-font-weight-semibold);
481
+ color: var(--ee-text-muted);
482
+ margin: 0 0 var(--ee-space-xs) 0;
483
+ text-transform: uppercase;
484
+ }
485
+ .variableChips {
486
+ display: flex;
487
+ flex-wrap: wrap;
488
+ gap: var(--ee-space-xs);
489
+ }
490
+ .variableChip {
491
+ display: inline-flex;
492
+ align-items: center;
493
+ gap: 3px;
494
+ padding: 2px 8px;
495
+ font-size: var(--ee-font-size-xs);
496
+ font-weight: var(--ee-font-weight-medium);
497
+ background: var(--ee-variable-bg);
498
+ color: var(--ee-variable-color);
499
+ border: 1px solid var(--ee-variable-border);
500
+ border-radius: 12px;
501
+ cursor: pointer;
502
+ transition: all var(--ee-transition-fast);
503
+ white-space: nowrap;
504
+ }
505
+ .variableChip:hover {
506
+ background: var(--ee-color-primary-light);
507
+ border-color: var(--ee-color-primary);
508
+ transform: translateY(-1px);
509
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
510
+ }
511
+ .variableChip:active {
512
+ transform: translateY(0);
513
+ box-shadow: none;
514
+ }
515
+ .variableChipInserted {
516
+ background: var(--ee-color-primary);
517
+ color: var(--ee-text-inverse);
518
+ border-color: var(--ee-color-primary);
519
+ transition: all 0.15s ease;
520
+ }
521
+ .variableChipCustom {
522
+ background: #f0fdf4;
523
+ color: #166534;
524
+ border-color: #86efac;
525
+ }
526
+ .variableChipCustom:hover {
527
+ background: #dcfce7;
528
+ border-color: #22c55e;
529
+ }
530
+ .variableChipDelete {
531
+ display: inline-flex;
532
+ align-items: center;
533
+ justify-content: center;
534
+ width: 14px;
535
+ height: 14px;
536
+ margin-left: 2px;
537
+ padding: 0;
538
+ font-size: 9px;
539
+ line-height: 1;
540
+ background: transparent;
541
+ border: none;
542
+ border-radius: 50%;
543
+ cursor: pointer;
544
+ color: inherit;
545
+ opacity: 0.5;
546
+ transition: all var(--ee-transition-fast);
547
+ }
548
+ .variableChipDelete:hover {
549
+ opacity: 1;
550
+ background: rgba(0, 0, 0, 0.1);
551
+ }
552
+ .variableChipIcon {
553
+ font-size: 11px;
554
+ }
555
+ .addVariableSection {
556
+ padding: var(--ee-space-xs) var(--ee-space-lg) var(--ee-space-lg);
557
+ }
558
+ .addVariableBtn {
559
+ width: 100%;
560
+ padding: 6px 12px;
561
+ font-size: var(--ee-font-size-sm);
562
+ font-family: var(--ee-font-family);
563
+ font-weight: var(--ee-font-weight-medium);
564
+ color: var(--ee-color-primary);
565
+ background: transparent;
566
+ border: 1px dashed var(--ee-color-primary);
567
+ border-radius: var(--ee-border-radius);
568
+ cursor: pointer;
569
+ transition: all var(--ee-transition-fast);
570
+ }
571
+ .addVariableBtn:hover {
572
+ background: var(--ee-color-primary-light);
573
+ }
574
+ .addVariableForm {
575
+ display: flex;
576
+ flex-direction: column;
577
+ gap: var(--ee-space-sm);
578
+ padding: var(--ee-space-md);
579
+ background: var(--ee-bg-hover);
580
+ border: 1px solid var(--ee-border-color);
581
+ border-radius: var(--ee-border-radius);
582
+ }
583
+ .addVariableField {
584
+ display: flex;
585
+ flex-direction: column;
586
+ gap: 2px;
587
+ }
588
+ .addVariableLabel {
589
+ font-size: 10px;
590
+ font-weight: var(--ee-font-weight-medium);
591
+ color: var(--ee-text-secondary);
592
+ text-transform: uppercase;
593
+ letter-spacing: 0.3px;
594
+ }
595
+ .addVariableInput {
596
+ width: 100%;
597
+ padding: 5px 8px;
598
+ font-size: var(--ee-font-size-sm);
599
+ font-family: var(--ee-font-family);
600
+ border: 1px solid var(--ee-border-color);
601
+ border-radius: var(--ee-border-radius-sm);
602
+ background: var(--ee-bg-input);
603
+ color: var(--ee-text-primary);
604
+ outline: none;
605
+ box-sizing: border-box;
606
+ transition: border-color var(--ee-transition-fast);
607
+ }
608
+ .addVariableInput:focus {
609
+ border-color: var(--ee-border-focus);
610
+ box-shadow: var(--ee-shadow-focus);
611
+ }
612
+ .addVariableError {
613
+ font-size: var(--ee-font-size-xs);
614
+ color: var(--ee-color-danger);
615
+ padding: 2px 0;
616
+ }
617
+ .addVariableActions {
618
+ display: flex;
619
+ gap: var(--ee-space-sm);
620
+ justify-content: flex-end;
621
+ padding-top: var(--ee-space-xs);
622
+ }
623
+ .addVariableCancelBtn {
624
+ padding: 4px 12px;
625
+ font-size: var(--ee-font-size-sm);
626
+ font-family: var(--ee-font-family);
627
+ color: var(--ee-text-secondary);
628
+ background: transparent;
629
+ border: 1px solid var(--ee-border-color);
630
+ border-radius: var(--ee-border-radius-sm);
631
+ cursor: pointer;
632
+ transition: all var(--ee-transition-fast);
633
+ }
634
+ .addVariableCancelBtn:hover {
635
+ background: var(--ee-bg-hover);
636
+ }
637
+ .addVariableSubmitBtn {
638
+ padding: 4px 16px;
639
+ font-size: var(--ee-font-size-sm);
640
+ font-family: var(--ee-font-family);
641
+ font-weight: var(--ee-font-weight-medium);
642
+ color: var(--ee-text-inverse);
643
+ background: var(--ee-color-primary);
644
+ border: 1px solid var(--ee-color-primary);
645
+ border-radius: var(--ee-border-radius-sm);
646
+ cursor: pointer;
647
+ transition: all var(--ee-transition-fast);
648
+ }
649
+ .addVariableSubmitBtn:hover {
650
+ background: var(--ee-color-primary-hover);
651
+ }
652
+ .layoutSection {
653
+ padding: var(--ee-space-sm) var(--ee-space-lg);
654
+ }
655
+ .layoutOption {
656
+ display: flex;
657
+ align-items: center;
658
+ gap: var(--ee-space-sm);
659
+ padding: var(--ee-space-sm) var(--ee-space-md);
660
+ border: 1px solid var(--ee-border-color);
661
+ border-radius: var(--ee-border-radius);
662
+ cursor: pointer;
663
+ margin-bottom: var(--ee-space-xs);
664
+ transition: all var(--ee-transition-fast);
665
+ }
666
+ .layoutOption:hover {
667
+ border-color: var(--ee-border-focus);
668
+ background: var(--ee-bg-selected);
669
+ }
670
+ .layoutPreview {
671
+ display: flex;
672
+ gap: 2px;
673
+ flex: 1;
674
+ height: 20px;
675
+ }
676
+ .layoutColumn {
677
+ background: var(--ee-color-primary-light);
678
+ border: 1px solid var(--ee-color-primary);
679
+ border-radius: 2px;
680
+ height: 100%;
681
+ }
682
+ .layoutLabel {
683
+ font-size: var(--ee-font-size-xs);
684
+ color: var(--ee-text-secondary);
685
+ white-space: nowrap;
686
+ }
687
+
688
+ /* src/styles/blocks.module.css */
689
+ .textBlock {
690
+ min-height: 24px;
691
+ cursor: text;
692
+ position: relative;
693
+ }
694
+ .textBlockToolbar {
695
+ position: sticky;
696
+ top: 0;
697
+ z-index: 20;
698
+ margin-bottom: 4px;
699
+ }
700
+ .buttonBlock {
701
+ display: flex;
702
+ padding: 10px 25px;
703
+ }
704
+ .buttonBlockLeft {
705
+ justify-content: flex-start;
706
+ }
707
+ .buttonBlockCenter {
708
+ justify-content: center;
709
+ }
710
+ .buttonBlockRight {
711
+ justify-content: flex-end;
712
+ }
713
+ .buttonPreview {
714
+ display: inline-block;
715
+ padding: 12px 24px;
716
+ font-weight: var(--ee-font-weight-medium);
717
+ text-decoration: none;
718
+ cursor: pointer;
719
+ text-align: center;
720
+ line-height: 1.4;
721
+ border: none;
722
+ }
723
+ .imageBlock {
724
+ display: flex;
725
+ padding: 10px 25px;
726
+ }
727
+ .imageBlockLeft {
728
+ justify-content: flex-start;
729
+ }
730
+ .imageBlockCenter {
731
+ justify-content: center;
732
+ }
733
+ .imageBlockRight {
734
+ justify-content: flex-end;
735
+ }
736
+ .imagePreview {
737
+ max-width: 100%;
738
+ height: auto;
739
+ display: block;
740
+ }
741
+ .imagePlaceholder {
742
+ display: flex;
743
+ flex-direction: column;
744
+ align-items: center;
745
+ justify-content: center;
746
+ gap: var(--ee-space-sm);
747
+ width: 100%;
748
+ min-height: 120px;
749
+ background: var(--ee-bg-app);
750
+ border: 2px dashed var(--ee-border-color);
751
+ border-radius: var(--ee-border-radius);
752
+ color: var(--ee-text-muted);
753
+ font-size: var(--ee-font-size-sm);
754
+ cursor: pointer;
755
+ transition: all var(--ee-transition-fast);
756
+ }
757
+ .imagePlaceholder:hover {
758
+ border-color: var(--ee-color-primary);
759
+ color: var(--ee-color-primary);
760
+ background: var(--ee-color-primary-light);
761
+ }
762
+ .imagePlaceholderIcon {
763
+ font-size: 32px;
764
+ }
765
+ .imageUploading {
766
+ position: relative;
767
+ }
768
+ .imageProgress {
769
+ position: absolute;
770
+ bottom: 0;
771
+ left: 0;
772
+ height: 4px;
773
+ background: var(--ee-color-primary);
774
+ border-radius: 2px;
775
+ transition: width 200ms ease;
776
+ }
777
+ .imageError {
778
+ color: var(--ee-color-danger);
779
+ font-size: var(--ee-font-size-xs);
780
+ padding: var(--ee-space-xs);
781
+ text-align: center;
782
+ }
783
+ .dividerBlock {
784
+ display: flex;
785
+ align-items: center;
786
+ }
787
+ .dividerLine {
788
+ height: 0;
789
+ border: none;
790
+ margin: 0;
791
+ }
792
+ .spacerBlock {
793
+ position: relative;
794
+ background:
795
+ repeating-linear-gradient(
796
+ 45deg,
797
+ transparent,
798
+ transparent 5px,
799
+ var(--ee-bg-app) 5px,
800
+ var(--ee-bg-app) 10px);
801
+ opacity: 0.5;
802
+ display: flex;
803
+ align-items: center;
804
+ justify-content: center;
805
+ }
806
+ .spacerLabel {
807
+ font-size: var(--ee-font-size-xs);
808
+ color: var(--ee-text-muted);
809
+ background: var(--ee-bg-panel);
810
+ padding: 2px 6px;
811
+ border-radius: 3px;
812
+ }
813
+ .socialBlock {
814
+ display: flex;
815
+ flex-wrap: wrap;
816
+ gap: 4px;
817
+ min-height: 30px;
818
+ }
819
+ .socialElement {
820
+ display: flex;
821
+ align-items: center;
822
+ gap: 4px;
823
+ }
824
+ .socialIcon {
825
+ display: flex;
826
+ align-items: center;
827
+ justify-content: center;
828
+ font-weight: bold;
829
+ line-height: 1;
830
+ flex-shrink: 0;
831
+ }
832
+ .socialLabel {
833
+ white-space: nowrap;
834
+ }
835
+ .socialElementsContainer {
836
+ display: flex;
837
+ flex-direction: column;
838
+ gap: 8px;
839
+ }
840
+ .socialElementItem {
841
+ padding: 8px;
842
+ border: 1px solid var(--ee-border-color);
843
+ border-radius: var(--ee-border-radius-sm);
844
+ background: var(--ee-bg-app);
845
+ }
846
+ .htmlBlock {
847
+ min-height: 24px;
848
+ position: relative;
849
+ }
850
+ .htmlPlaceholder {
851
+ display: flex;
852
+ flex-direction: column;
853
+ align-items: center;
854
+ justify-content: center;
855
+ gap: var(--ee-space-sm);
856
+ width: 100%;
857
+ min-height: 80px;
858
+ background: var(--ee-bg-app);
859
+ border: 2px dashed var(--ee-border-color);
860
+ border-radius: var(--ee-border-radius);
861
+ color: var(--ee-text-muted);
862
+ font-size: var(--ee-font-size-sm);
863
+ font-family: monospace;
864
+ }
865
+ .videoBlock {
866
+ display: flex;
867
+ padding: 10px 25px;
868
+ }
869
+ .videoBlockLeft {
870
+ justify-content: flex-start;
871
+ }
872
+ .videoBlockCenter {
873
+ justify-content: center;
874
+ }
875
+ .videoBlockRight {
876
+ justify-content: flex-end;
877
+ }
878
+ .videoPreview {
879
+ position: relative;
880
+ display: inline-block;
881
+ max-width: 100%;
882
+ }
883
+ .playOverlay {
884
+ position: absolute;
885
+ top: 50%;
886
+ left: 50%;
887
+ transform: translate(-50%, -50%);
888
+ width: 60px;
889
+ height: 60px;
890
+ background: rgba(0, 0, 0, 0.6);
891
+ border-radius: 50%;
892
+ display: flex;
893
+ align-items: center;
894
+ justify-content: center;
895
+ color: #fff;
896
+ font-size: 24px;
897
+ pointer-events: none;
898
+ }
899
+ .videoPlaceholder {
900
+ display: flex;
901
+ flex-direction: column;
902
+ align-items: center;
903
+ justify-content: center;
904
+ gap: var(--ee-space-sm);
905
+ width: 100%;
906
+ min-height: 120px;
907
+ background: var(--ee-bg-app);
908
+ border: 2px dashed var(--ee-border-color);
909
+ border-radius: var(--ee-border-radius);
910
+ color: var(--ee-text-muted);
911
+ font-size: var(--ee-font-size-sm);
912
+ }
913
+ .headingBlock {
914
+ min-height: 24px;
915
+ cursor: text;
916
+ position: relative;
917
+ }
918
+ .countdownBlock {
919
+ display: flex;
920
+ flex-direction: column;
921
+ gap: 8px;
922
+ }
923
+ .countdownLabel {
924
+ font-size: 14px;
925
+ font-weight: 500;
926
+ }
927
+ .countdownDigits {
928
+ display: flex;
929
+ gap: 12px;
930
+ }
931
+ .countdownUnit {
932
+ display: flex;
933
+ flex-direction: column;
934
+ align-items: center;
935
+ gap: 4px;
936
+ }
937
+ .countdownDigitBox {
938
+ display: flex;
939
+ align-items: center;
940
+ justify-content: center;
941
+ min-width: 56px;
942
+ padding: 8px 12px;
943
+ border-radius: 6px;
944
+ font-weight: bold;
945
+ font-variant-numeric: tabular-nums;
946
+ }
947
+ .countdownUnitLabel {
948
+ font-size: 11px;
949
+ text-transform: uppercase;
950
+ letter-spacing: 0.5px;
951
+ }
952
+ .menuBlock {
953
+ display: flex;
954
+ }
955
+ .menuItems {
956
+ display: flex;
957
+ flex-wrap: wrap;
958
+ gap: 4px;
959
+ }
960
+ .menuItem {
961
+ padding: 6px 12px;
962
+ text-decoration: none;
963
+ cursor: pointer;
964
+ white-space: nowrap;
965
+ }
966
+ .menuItemsContainer {
967
+ display: flex;
968
+ flex-direction: column;
969
+ gap: 8px;
970
+ }
971
+ .menuItemEntry {
972
+ padding: 8px;
973
+ border: 1px solid var(--ee-border-color);
974
+ border-radius: var(--ee-border-radius-sm);
975
+ background: var(--ee-bg-app);
976
+ }
977
+ .heroBlock {
978
+ display: flex;
979
+ flex-direction: column;
980
+ align-items: center;
981
+ gap: 16px;
982
+ }
983
+ .heroHeading {
984
+ margin: 0;
985
+ font-weight: bold;
986
+ line-height: 1.2;
987
+ }
988
+ .heroSubtext {
989
+ margin: 0;
990
+ line-height: 1.5;
991
+ }
992
+ .heroButton {
993
+ display: inline-block;
994
+ padding: 12px 28px;
995
+ font-weight: 600;
996
+ font-size: 16px;
997
+ text-decoration: none;
998
+ cursor: pointer;
999
+ }
1000
+
1001
+ /* src/styles/tiptap.module.css */
1002
+ .tiptapWrapper {
1003
+ position: relative;
1004
+ }
1005
+ .tiptapWrapper :global(.ProseMirror) {
1006
+ outline: none;
1007
+ min-height: 24px;
1008
+ padding: 4px;
1009
+ word-break: break-word;
1010
+ }
1011
+ .tiptapWrapper :global(.ProseMirror) p {
1012
+ margin: 0 0 0.5em 0;
1013
+ }
1014
+ .tiptapWrapper :global(.ProseMirror) p:last-child {
1015
+ margin-bottom: 0;
1016
+ }
1017
+ .tiptapWrapper :global(.ProseMirror) h1,
1018
+ .tiptapWrapper :global(.ProseMirror) h2,
1019
+ .tiptapWrapper :global(.ProseMirror) h3,
1020
+ .tiptapWrapper :global(.ProseMirror) h4 {
1021
+ margin: 0 0 0.5em 0;
1022
+ line-height: 1.3;
1023
+ }
1024
+ .tiptapWrapper :global(.ProseMirror) ul,
1025
+ .tiptapWrapper :global(.ProseMirror) ol {
1026
+ margin: 0 0 0.5em 0;
1027
+ padding-left: 1.5em;
1028
+ }
1029
+ .tiptapWrapper :global(.ProseMirror) blockquote {
1030
+ border-left: 3px solid var(--ee-border-color-strong);
1031
+ margin: 0 0 0.5em 0;
1032
+ padding-left: 1em;
1033
+ color: var(--ee-text-secondary);
1034
+ }
1035
+ .tiptapWrapper :global(.ProseMirror) a {
1036
+ color: var(--ee-text-link);
1037
+ text-decoration: underline;
1038
+ }
1039
+ .tiptapWrapper :global(.ee-variable-chip) {
1040
+ display: inline-flex;
1041
+ align-items: center;
1042
+ padding: 1px 6px;
1043
+ margin: 0 1px;
1044
+ font-size: inherit;
1045
+ font-family: inherit;
1046
+ font-weight: inherit;
1047
+ font-style: inherit;
1048
+ background: #dbeafe;
1049
+ color: #1e40af;
1050
+ border: 1px solid #93c5fd;
1051
+ border-radius: 4px;
1052
+ vertical-align: baseline;
1053
+ user-select: none;
1054
+ white-space: nowrap;
1055
+ }
1056
+ .tiptapWrapper :global(.ProseMirror-focused) {
1057
+ outline: none;
1058
+ }
1059
+ .tiptapWrapper :global(.ProseMirror) :global(.is-editor-empty):first-child::before {
1060
+ content: attr(data-placeholder);
1061
+ float: left;
1062
+ color: var(--ee-text-muted);
1063
+ pointer-events: none;
1064
+ height: 0;
1065
+ font-style: italic;
1066
+ opacity: 0.6;
1067
+ }
1068
+
1069
+ /* src/styles/canvas.module.css */
1070
+ .canvasWrapper {
1071
+ display: flex;
1072
+ justify-content: center;
1073
+ padding: var(--ee-space-xl);
1074
+ }
1075
+ .canvasBody {
1076
+ width: 600px;
1077
+ min-height: 400px;
1078
+ background: #ffffff;
1079
+ box-shadow: var(--ee-shadow-lg);
1080
+ border-radius: var(--ee-border-radius);
1081
+ position: relative;
1082
+ transition: box-shadow var(--ee-transition-fast);
1083
+ }
1084
+ .canvasBodyDragOver {
1085
+ box-shadow: var(--ee-shadow-lg), 0 0 0 3px var(--ee-dropzone-color);
1086
+ }
1087
+ .section {
1088
+ position: relative;
1089
+ border: 2px solid transparent;
1090
+ transition: border-color var(--ee-transition-fast);
1091
+ cursor: pointer;
1092
+ }
1093
+ .section:hover {
1094
+ border-color: var(--ee-border-color-strong);
1095
+ }
1096
+ .sectionSelected {
1097
+ border-color: var(--ee-border-selected) !important;
1098
+ }
1099
+ .sectionFullWidth {
1100
+ border-left: 3px solid var(--ee-color-primary);
1101
+ }
1102
+ .sectionOverlay {
1103
+ position: absolute;
1104
+ top: -1px;
1105
+ right: -1px;
1106
+ display: flex;
1107
+ gap: 2px;
1108
+ opacity: 0;
1109
+ transition: opacity var(--ee-transition-fast);
1110
+ z-index: 10;
1111
+ }
1112
+ .section:hover .sectionOverlay {
1113
+ opacity: 1;
1114
+ }
1115
+ .sectionBtn {
1116
+ display: flex;
1117
+ align-items: center;
1118
+ justify-content: center;
1119
+ width: 24px;
1120
+ height: 24px;
1121
+ background: var(--ee-bg-panel);
1122
+ border: 1px solid var(--ee-border-color);
1123
+ border-radius: var(--ee-border-radius-sm);
1124
+ cursor: pointer;
1125
+ font-size: 12px;
1126
+ color: var(--ee-text-secondary);
1127
+ transition: all var(--ee-transition-fast);
1128
+ }
1129
+ .sectionBtn:hover {
1130
+ background: var(--ee-color-danger);
1131
+ color: var(--ee-text-inverse);
1132
+ border-color: var(--ee-color-danger);
1133
+ }
1134
+ .sectionBtnDuplicate:hover {
1135
+ background: var(--ee-color-primary);
1136
+ color: var(--ee-text-inverse);
1137
+ border-color: var(--ee-color-primary);
1138
+ }
1139
+ .sectionDragHandle {
1140
+ display: flex;
1141
+ align-items: center;
1142
+ justify-content: center;
1143
+ width: 24px;
1144
+ height: 24px;
1145
+ background: var(--ee-bg-panel);
1146
+ border: 1px solid var(--ee-border-color);
1147
+ border-radius: var(--ee-border-radius-sm);
1148
+ cursor: grab;
1149
+ font-size: 14px;
1150
+ color: var(--ee-text-secondary);
1151
+ transition: all var(--ee-transition-fast);
1152
+ user-select: none;
1153
+ line-height: 1;
1154
+ }
1155
+ .sectionDragHandle:hover {
1156
+ background: var(--ee-color-primary);
1157
+ color: var(--ee-text-inverse);
1158
+ border-color: var(--ee-color-primary);
1159
+ }
1160
+ .sectionDragHandle:active {
1161
+ cursor: grabbing;
1162
+ }
1163
+ .sectionContent {
1164
+ display: flex;
1165
+ min-height: 40px;
1166
+ }
1167
+ .column {
1168
+ flex: 1;
1169
+ min-height: 40px;
1170
+ padding: 4px;
1171
+ position: relative;
1172
+ }
1173
+ .blockWrapper {
1174
+ position: relative;
1175
+ border: 1px solid transparent;
1176
+ border-radius: var(--ee-border-radius-sm);
1177
+ transition: all var(--ee-transition-fast);
1178
+ cursor: pointer;
1179
+ }
1180
+ .blockWrapper:hover {
1181
+ border-color: var(--ee-border-color-strong);
1182
+ }
1183
+ .blockSelected {
1184
+ border-color: var(--ee-border-selected) !important;
1185
+ box-shadow: var(--ee-shadow-focus);
1186
+ }
1187
+ .blockOverlay {
1188
+ position: absolute;
1189
+ top: -1px;
1190
+ right: -1px;
1191
+ display: flex;
1192
+ gap: 2px;
1193
+ opacity: 0;
1194
+ transition: opacity var(--ee-transition-fast);
1195
+ z-index: 10;
1196
+ }
1197
+ .blockWrapper:hover .blockOverlay {
1198
+ opacity: 1;
1199
+ }
1200
+ .blockBtn {
1201
+ display: flex;
1202
+ align-items: center;
1203
+ justify-content: center;
1204
+ width: 20px;
1205
+ height: 20px;
1206
+ background: var(--ee-bg-panel);
1207
+ border: 1px solid var(--ee-border-color);
1208
+ border-radius: 3px;
1209
+ cursor: pointer;
1210
+ font-size: 10px;
1211
+ color: var(--ee-text-secondary);
1212
+ transition: all var(--ee-transition-fast);
1213
+ }
1214
+ .blockBtn:hover {
1215
+ background: var(--ee-color-danger);
1216
+ color: var(--ee-text-inverse);
1217
+ border-color: var(--ee-color-danger);
1218
+ }
1219
+ .blockBtnDuplicate:hover {
1220
+ background: var(--ee-color-primary);
1221
+ color: var(--ee-text-inverse);
1222
+ border-color: var(--ee-color-primary);
1223
+ }
1224
+ .dropZone {
1225
+ min-height: 8px;
1226
+ padding: 4px 0;
1227
+ transition: all var(--ee-transition-fast);
1228
+ position: relative;
1229
+ margin: 0 4px;
1230
+ }
1231
+ .dropZoneActive {
1232
+ min-height: var(--ee-dropzone-height-active);
1233
+ background: var(--ee-dropzone-bg);
1234
+ border: 2px dashed var(--ee-dropzone-color);
1235
+ border-radius: var(--ee-border-radius-sm);
1236
+ }
1237
+ .dropZoneLabel {
1238
+ position: absolute;
1239
+ inset: 0;
1240
+ display: flex;
1241
+ align-items: center;
1242
+ justify-content: center;
1243
+ font-size: var(--ee-font-size-xs);
1244
+ color: var(--ee-dropzone-color);
1245
+ font-weight: var(--ee-font-weight-medium);
1246
+ }
1247
+ .emptyColumn {
1248
+ display: flex;
1249
+ align-items: center;
1250
+ justify-content: center;
1251
+ min-height: 100px;
1252
+ border: 2px dashed var(--ee-border-color);
1253
+ border-radius: var(--ee-border-radius);
1254
+ color: var(--ee-text-muted);
1255
+ font-size: var(--ee-font-size-sm);
1256
+ margin: var(--ee-space-sm);
1257
+ transition: all var(--ee-transition-fast);
1258
+ cursor: default;
1259
+ }
1260
+ .emptyColumnActive {
1261
+ border-color: var(--ee-dropzone-color);
1262
+ background: var(--ee-dropzone-bg);
1263
+ color: var(--ee-dropzone-color);
1264
+ font-weight: var(--ee-font-weight-medium);
1265
+ }
1266
+ .sectionDropZone {
1267
+ min-height: 4px;
1268
+ transition: all var(--ee-transition-fast);
1269
+ position: relative;
1270
+ }
1271
+ .sectionDropZoneActive {
1272
+ min-height: 40px;
1273
+ background: var(--ee-dropzone-bg);
1274
+ border: 2px dashed var(--ee-dropzone-color);
1275
+ border-radius: var(--ee-border-radius-sm);
1276
+ margin: 2px 4px;
1277
+ }
1278
+ .sectionDropZoneLabel {
1279
+ position: absolute;
1280
+ inset: 0;
1281
+ display: flex;
1282
+ align-items: center;
1283
+ justify-content: center;
1284
+ font-size: var(--ee-font-size-xs);
1285
+ color: var(--ee-dropzone-color);
1286
+ font-weight: var(--ee-font-weight-medium);
1287
+ }
1288
+ .addSectionBtn {
1289
+ display: flex;
1290
+ align-items: center;
1291
+ justify-content: center;
1292
+ gap: var(--ee-space-sm);
1293
+ padding: var(--ee-space-md);
1294
+ margin: var(--ee-space-sm) var(--ee-space-lg);
1295
+ border: 2px dashed var(--ee-border-color);
1296
+ border-radius: var(--ee-border-radius);
1297
+ background: transparent;
1298
+ color: var(--ee-text-secondary);
1299
+ font-size: var(--ee-font-size-sm);
1300
+ cursor: pointer;
1301
+ transition: all var(--ee-transition-fast);
1302
+ width: calc(100% - 2 * var(--ee-space-lg));
1303
+ }
1304
+ .addSectionBtn:hover {
1305
+ border-color: var(--ee-color-primary);
1306
+ color: var(--ee-color-primary);
1307
+ background: var(--ee-color-primary-light);
1308
+ }
1309
+
1310
+ /* src/styles/properties.module.css */
1311
+ .propertiesPanel {
1312
+ display: flex;
1313
+ flex-direction: column;
1314
+ flex: 1;
1315
+ min-height: 0;
1316
+ }
1317
+ .propertiesHeader {
1318
+ padding: var(--ee-space-md) var(--ee-space-lg);
1319
+ border-bottom: 1px solid var(--ee-border-color);
1320
+ font-size: var(--ee-font-size-sm);
1321
+ font-weight: var(--ee-font-weight-semibold);
1322
+ color: var(--ee-text-primary);
1323
+ text-transform: uppercase;
1324
+ letter-spacing: 0.5px;
1325
+ }
1326
+ .propertiesBody {
1327
+ padding: var(--ee-space-md) var(--ee-space-lg);
1328
+ display: flex;
1329
+ flex-direction: column;
1330
+ gap: var(--ee-space-md);
1331
+ }
1332
+ .emptyProperties {
1333
+ display: flex;
1334
+ flex-direction: column;
1335
+ align-items: center;
1336
+ justify-content: center;
1337
+ height: 200px;
1338
+ color: var(--ee-text-muted);
1339
+ font-size: var(--ee-font-size-sm);
1340
+ text-align: center;
1341
+ padding: var(--ee-space-lg);
1342
+ }
1343
+ .fieldHint {
1344
+ font-size: var(--ee-font-size-xs);
1345
+ color: var(--ee-text-muted);
1346
+ background: var(--ee-bg-hover);
1347
+ padding: var(--ee-space-sm) var(--ee-space-md);
1348
+ border-radius: var(--ee-border-radius-sm);
1349
+ margin: 0;
1350
+ line-height: 1.4;
1351
+ }
1352
+ .fieldGroup {
1353
+ display: flex;
1354
+ flex-direction: column;
1355
+ gap: var(--ee-space-xs);
1356
+ }
1357
+ .fieldLabel {
1358
+ font-size: var(--ee-font-size-xs);
1359
+ font-weight: var(--ee-font-weight-medium);
1360
+ color: var(--ee-text-secondary);
1361
+ text-transform: uppercase;
1362
+ letter-spacing: 0.3px;
1363
+ }
1364
+ .fieldInput {
1365
+ width: 100%;
1366
+ padding: 6px 8px;
1367
+ font-size: var(--ee-font-size-md);
1368
+ font-family: var(--ee-font-family);
1369
+ border: 1px solid var(--ee-border-color);
1370
+ border-radius: var(--ee-border-radius-sm);
1371
+ background: var(--ee-bg-input);
1372
+ color: var(--ee-text-primary);
1373
+ outline: none;
1374
+ transition: border-color var(--ee-transition-fast);
1375
+ box-sizing: border-box;
1376
+ }
1377
+ .fieldInput:focus {
1378
+ border-color: var(--ee-border-focus);
1379
+ box-shadow: var(--ee-shadow-focus);
1380
+ }
1381
+ .fieldTextarea {
1382
+ composes: fieldInput;
1383
+ resize: vertical;
1384
+ min-height: 60px;
1385
+ }
1386
+ .fieldSelect {
1387
+ composes: fieldInput;
1388
+ appearance: none;
1389
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M3 5l3 3 3-3z'/%3E%3C/svg%3E");
1390
+ background-repeat: no-repeat;
1391
+ background-position: right 8px center;
1392
+ padding-right: 24px;
1393
+ }
1394
+ .fieldRow {
1395
+ display: flex;
1396
+ gap: var(--ee-space-sm);
1397
+ align-items: center;
1398
+ }
1399
+ .fieldHalf {
1400
+ flex: 1;
1401
+ }
1402
+ .colorPickerWrapper {
1403
+ position: relative;
1404
+ }
1405
+ .colorPickerTrigger {
1406
+ display: flex;
1407
+ align-items: center;
1408
+ gap: var(--ee-space-sm);
1409
+ padding: 6px 8px;
1410
+ border: 1px solid var(--ee-border-color);
1411
+ border-radius: var(--ee-border-radius-sm);
1412
+ background: var(--ee-bg-input);
1413
+ cursor: pointer;
1414
+ width: 100%;
1415
+ box-sizing: border-box;
1416
+ }
1417
+ .colorSwatch {
1418
+ width: 20px;
1419
+ height: 20px;
1420
+ border-radius: 3px;
1421
+ border: 1px solid var(--ee-border-color);
1422
+ flex-shrink: 0;
1423
+ }
1424
+ .colorValue {
1425
+ font-size: var(--ee-font-size-sm);
1426
+ color: var(--ee-text-primary);
1427
+ font-family: monospace;
1428
+ }
1429
+ .colorPresets {
1430
+ display: grid;
1431
+ grid-template-columns: repeat(6, 1fr);
1432
+ gap: 4px;
1433
+ padding: var(--ee-space-sm);
1434
+ background: var(--ee-bg-panel);
1435
+ border: 1px solid var(--ee-border-color);
1436
+ border-radius: var(--ee-border-radius);
1437
+ box-shadow: var(--ee-shadow-md);
1438
+ position: absolute;
1439
+ top: 100%;
1440
+ left: 0;
1441
+ right: 0;
1442
+ z-index: var(--ee-z-dropdown);
1443
+ margin-top: 4px;
1444
+ }
1445
+ .colorPresetBtn {
1446
+ width: 28px;
1447
+ height: 28px;
1448
+ border-radius: 4px;
1449
+ border: 2px solid transparent;
1450
+ cursor: pointer;
1451
+ transition: all var(--ee-transition-fast);
1452
+ }
1453
+ .colorPresetBtn:hover {
1454
+ transform: scale(1.15);
1455
+ }
1456
+ .colorPresetBtnActive {
1457
+ border-color: var(--ee-color-primary);
1458
+ }
1459
+ .paddingGrid {
1460
+ display: grid;
1461
+ grid-template-columns: 1fr 1fr;
1462
+ gap: var(--ee-space-xs);
1463
+ }
1464
+ .paddingField {
1465
+ display: flex;
1466
+ flex-direction: column;
1467
+ gap: 2px;
1468
+ }
1469
+ .paddingLabel {
1470
+ font-size: 10px;
1471
+ color: var(--ee-text-muted);
1472
+ text-align: center;
1473
+ }
1474
+ .paddingInput {
1475
+ composes: fieldInput;
1476
+ text-align: center;
1477
+ padding: 4px;
1478
+ font-size: var(--ee-font-size-xs);
1479
+ }
1480
+ .alignmentPicker {
1481
+ display: flex;
1482
+ border: 1px solid var(--ee-border-color);
1483
+ border-radius: var(--ee-border-radius-sm);
1484
+ overflow: hidden;
1485
+ }
1486
+ .alignmentBtn {
1487
+ flex: 1;
1488
+ display: flex;
1489
+ align-items: center;
1490
+ justify-content: center;
1491
+ padding: 6px;
1492
+ background: var(--ee-bg-input);
1493
+ border: none;
1494
+ border-right: 1px solid var(--ee-border-color);
1495
+ cursor: pointer;
1496
+ font-size: var(--ee-font-size-sm);
1497
+ color: var(--ee-text-secondary);
1498
+ transition: all var(--ee-transition-fast);
1499
+ }
1500
+ .alignmentBtn:last-child {
1501
+ border-right: none;
1502
+ }
1503
+ .alignmentBtn:hover {
1504
+ background: var(--ee-bg-hover);
1505
+ }
1506
+ .alignmentBtnActive {
1507
+ background: var(--ee-color-primary) !important;
1508
+ color: var(--ee-text-inverse);
1509
+ }
1510
+ .sliderWrapper {
1511
+ display: flex;
1512
+ align-items: center;
1513
+ gap: var(--ee-space-sm);
1514
+ }
1515
+ .sliderInput {
1516
+ flex: 1;
1517
+ height: 4px;
1518
+ appearance: none;
1519
+ background: var(--ee-border-color);
1520
+ border-radius: 2px;
1521
+ outline: none;
1522
+ }
1523
+ .sliderInput::-webkit-slider-thumb {
1524
+ appearance: none;
1525
+ width: 14px;
1526
+ height: 14px;
1527
+ border-radius: 50%;
1528
+ background: var(--ee-color-primary);
1529
+ cursor: pointer;
1530
+ }
1531
+ .sliderValue {
1532
+ font-size: var(--ee-font-size-xs);
1533
+ color: var(--ee-text-secondary);
1534
+ min-width: 36px;
1535
+ text-align: right;
1536
+ font-family: monospace;
1537
+ }
1538
+ .separator {
1539
+ height: 1px;
1540
+ background: var(--ee-border-color);
1541
+ margin: var(--ee-space-xs) 0;
1542
+ }
1543
+
1544
+ /* src/styles/variables.css */
1545
+ :root {
1546
+ --ee-color-primary: #2563eb;
1547
+ --ee-color-primary-hover: #1d4ed8;
1548
+ --ee-color-primary-light: #dbeafe;
1549
+ --ee-color-danger: #ef4444;
1550
+ --ee-color-danger-hover: #dc2626;
1551
+ --ee-color-success: #22c55e;
1552
+ --ee-color-warning: #f59e0b;
1553
+ --ee-bg-app: #f3f4f6;
1554
+ --ee-bg-panel: #ffffff;
1555
+ --ee-bg-canvas: #e5e7eb;
1556
+ --ee-bg-hover: #f9fafb;
1557
+ --ee-bg-selected: #eff6ff;
1558
+ --ee-bg-input: #ffffff;
1559
+ --ee-bg-toolbar: #ffffff;
1560
+ --ee-border-color: #e5e7eb;
1561
+ --ee-border-color-strong: #d1d5db;
1562
+ --ee-border-focus: #2563eb;
1563
+ --ee-border-selected: #3b82f6;
1564
+ --ee-border-radius: 6px;
1565
+ --ee-border-radius-sm: 4px;
1566
+ --ee-border-radius-lg: 8px;
1567
+ --ee-text-primary: #111827;
1568
+ --ee-text-secondary: #6b7280;
1569
+ --ee-text-muted: #9ca3af;
1570
+ --ee-text-inverse: #ffffff;
1571
+ --ee-text-link: #2563eb;
1572
+ --ee-space-xs: 4px;
1573
+ --ee-space-sm: 8px;
1574
+ --ee-space-md: 12px;
1575
+ --ee-space-lg: 16px;
1576
+ --ee-space-xl: 24px;
1577
+ --ee-space-2xl: 32px;
1578
+ --ee-font-family:
1579
+ -apple-system,
1580
+ BlinkMacSystemFont,
1581
+ "Segoe UI",
1582
+ Roboto,
1583
+ sans-serif;
1584
+ --ee-font-size-xs: 11px;
1585
+ --ee-font-size-sm: 12px;
1586
+ --ee-font-size-md: 13px;
1587
+ --ee-font-size-base: 14px;
1588
+ --ee-font-size-lg: 16px;
1589
+ --ee-font-size-xl: 18px;
1590
+ --ee-font-weight-normal: 400;
1591
+ --ee-font-weight-medium: 500;
1592
+ --ee-font-weight-semibold: 600;
1593
+ --ee-sidebar-width: 260px;
1594
+ --ee-properties-width: 280px;
1595
+ --ee-toolbar-height: 48px;
1596
+ --ee-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
1597
+ --ee-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
1598
+ --ee-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
1599
+ --ee-shadow-focus: 0 0 0 3px rgba(37, 99, 235, 0.15);
1600
+ --ee-transition-fast: 150ms ease;
1601
+ --ee-transition-normal: 200ms ease;
1602
+ --ee-z-dropdown: 100;
1603
+ --ee-z-toolbar: 200;
1604
+ --ee-z-overlay: 250;
1605
+ --ee-z-modal: 300;
1606
+ --ee-z-tooltip: 400;
1607
+ --ee-overlay-backdrop: rgba(0, 0, 0, 0.2);
1608
+ --ee-dropzone-color: #3b82f6;
1609
+ --ee-dropzone-bg: rgba(59, 130, 246, 0.08);
1610
+ --ee-dropzone-height: 4px;
1611
+ --ee-dropzone-height-active: 40px;
1612
+ --ee-variable-bg: #dbeafe;
1613
+ --ee-variable-color: #1e40af;
1614
+ --ee-variable-border: #93c5fd;
1615
+ }
1616
+ /*# sourceMappingURL=index.css.map */