@screenbook/ui 1.1.0 → 1.1.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.
Files changed (37) hide show
  1. package/README.md +30 -0
  2. package/dist/client/_astro/coverage.BzPU-EGZ.css +1 -0
  3. package/dist/server/entry.mjs +1 -1
  4. package/dist/server/{manifest_smcahUO6.mjs → manifest_BGl49hHW.mjs} +1 -1
  5. package/dist/server/pages/coverage.astro.mjs +1 -1
  6. package/dist/server/pages/editor.astro.mjs +1 -1
  7. package/dist/server/pages/graph.astro.mjs +1 -1
  8. package/dist/server/pages/impact.astro.mjs +1 -1
  9. package/dist/server/pages/index.astro.mjs +1 -1
  10. package/dist/server/pages/screen/_id_.astro.mjs +1 -1
  11. package/package.json +5 -1
  12. package/.astro/content-assets.mjs +0 -1
  13. package/.astro/content-modules.mjs +0 -1
  14. package/.astro/content.d.ts +0 -199
  15. package/.astro/types.d.ts +0 -2
  16. package/.prettierrc +0 -15
  17. package/CHANGELOG.md +0 -77
  18. package/astro.config.mjs +0 -20
  19. package/dist/client/_astro/coverage.DLKSOM4m.css +0 -1
  20. package/public/logo.svg +0 -5
  21. package/src/components/MockFormEditor.tsx +0 -1280
  22. package/src/components/MockPreview.astro +0 -811
  23. package/src/layouts/Layout.astro +0 -77
  24. package/src/pages/api/save-mock.ts +0 -182
  25. package/src/pages/coverage.astro +0 -399
  26. package/src/pages/editor.astro +0 -33
  27. package/src/pages/graph.astro +0 -368
  28. package/src/pages/impact.astro +0 -462
  29. package/src/pages/index.astro +0 -176
  30. package/src/pages/screen/[id].astro +0 -195
  31. package/src/styles/global.css +0 -904
  32. package/src/styles/mock-editor.css +0 -1351
  33. package/src/utils/impactAnalysis.ts +0 -304
  34. package/src/utils/loadCoverage.ts +0 -30
  35. package/src/utils/loadScreens.ts +0 -18
  36. package/tsconfig.json +0 -10
  37. /package/dist/server/chunks/{loadScreens_CkCqdbH2.mjs → loadScreens_B8bVK3q5.mjs} +0 -0
@@ -1,1351 +0,0 @@
1
- /* Mock Editor - Tabbed Panels Design (v2 Accessible) */
2
-
3
- /* Import distinctive fonts */
4
- @import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=DM+Sans:wght@400;500;600;700&display=swap");
5
-
6
- /* CSS Variables for Mock Editor */
7
- .mock-editor {
8
- --me-font-mono: "JetBrains Mono", ui-monospace, monospace;
9
- --me-font-sans: "DM Sans", system-ui, sans-serif;
10
-
11
- /* Blueprint colors - improved contrast */
12
- --me-bg-deep: #0a0e14;
13
- --me-bg-panel: #0f1318;
14
- --me-bg-surface: #151a22;
15
- --me-bg-elevated: #1a2029;
16
- --me-bg-hover: #1f2530;
17
-
18
- --me-border: #252d3a;
19
- --me-border-subtle: #1c2330;
20
- --me-border-accent: #2dd4bf;
21
-
22
- /* Improved contrast colors for accessibility */
23
- --me-text: #e8ecf1;
24
- --me-text-secondary: #a1afc2;
25
- --me-text-muted: #7c8a9d;
26
-
27
- --me-accent: #2dd4bf;
28
- --me-accent-light: #5eead4;
29
- --me-accent-glow: rgba(45, 212, 191, 0.15);
30
- --me-accent-subtle: rgba(45, 212, 191, 0.08);
31
-
32
- /* Element type colors */
33
- --me-color-button: #2dd4bf;
34
- --me-color-input: #818cf8;
35
- --me-color-link: #a78bfa;
36
- --me-color-text: #94a3b8;
37
- --me-color-image: #fbbf24;
38
- --me-color-list: #f472b6;
39
- --me-color-table: #22d3ee;
40
-
41
- /* Grid pattern */
42
- --me-grid-color: rgba(45, 212, 191, 0.03);
43
- --me-grid-line: rgba(45, 212, 191, 0.06);
44
-
45
- /* Shadows */
46
- --me-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
47
- --me-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.25);
48
- --me-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.3);
49
- --me-shadow-glow: 0 0 20px var(--me-accent-glow);
50
-
51
- /* Focus ring for accessibility */
52
- --me-focus-ring: 0 0 0 2px var(--me-bg-deep), 0 0 0 4px var(--me-accent);
53
- }
54
-
55
- /* Reduced motion support */
56
- @media (prefers-reduced-motion: reduce) {
57
- .mock-editor,
58
- .mock-editor *,
59
- .mock-editor *::before,
60
- .mock-editor *::after {
61
- animation: none;
62
- transition: none;
63
- }
64
- }
65
-
66
- /* Screen reader only utility */
67
- .mock-editor__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
- /* Skip link for keyboard navigation */
80
- .mock-editor__skip-link {
81
- position: absolute;
82
- left: -9999px;
83
- top: 8px;
84
- z-index: 1000;
85
- padding: 12px 24px;
86
- background: var(--me-accent);
87
- color: var(--me-bg-deep);
88
- font-weight: 600;
89
- font-size: 14px;
90
- border-radius: 8px;
91
- text-decoration: none;
92
- transition: left 0.2s ease;
93
- }
94
-
95
- .mock-editor__skip-link:focus {
96
- left: 16px;
97
- }
98
-
99
- /* Main Container - 3-column layout */
100
- .mock-editor {
101
- display: grid;
102
- grid-template-columns: 240px 1fr 420px;
103
- height: 100%;
104
- min-height: 100vh;
105
- background: var(--me-bg-deep);
106
- font-family: var(--me-font-sans);
107
- position: relative;
108
- }
109
-
110
- /* Two-layer grid background */
111
- .mock-editor::before,
112
- .mock-editor::after {
113
- content: "";
114
- position: fixed;
115
- inset: 0;
116
- pointer-events: none;
117
- }
118
-
119
- .mock-editor::before {
120
- background-image:
121
- linear-gradient(var(--me-grid-line) 1px, transparent 1px),
122
- linear-gradient(90deg, var(--me-grid-line) 1px, transparent 1px);
123
- background-size: 24px 24px;
124
- opacity: 0.5;
125
- }
126
-
127
- .mock-editor::after {
128
- background-image:
129
- linear-gradient(rgba(45, 212, 191, 0.02) 1px, transparent 1px),
130
- linear-gradient(90deg, rgba(45, 212, 191, 0.02) 1px, transparent 1px);
131
- background-size: 96px 96px;
132
- opacity: 0.3;
133
- }
134
-
135
- /* ========================================
136
- LEFT SIDEBAR - Section Navigation
137
- ======================================== */
138
- .mock-editor__sidebar {
139
- background: var(--me-bg-panel);
140
- border-right: 1px solid var(--me-border);
141
- display: flex;
142
- flex-direction: column;
143
- position: relative;
144
- z-index: 2;
145
- }
146
-
147
- .mock-editor__sidebar-header {
148
- padding: 20px;
149
- border-bottom: 1px solid var(--me-border);
150
- }
151
-
152
- .mock-editor__title {
153
- font-family: var(--me-font-mono);
154
- font-size: 14px;
155
- font-weight: 600;
156
- color: var(--me-text);
157
- letter-spacing: -0.02em;
158
- display: block;
159
- }
160
-
161
- .mock-editor__screen-info {
162
- margin-top: 12px;
163
- display: flex;
164
- flex-direction: column;
165
- gap: 4px;
166
- }
167
-
168
- .mock-editor__screen-label {
169
- font-family: var(--me-font-mono);
170
- font-size: 9px;
171
- font-weight: 600;
172
- color: var(--me-text-muted);
173
- text-transform: uppercase;
174
- letter-spacing: 0.1em;
175
- }
176
-
177
- .mock-editor__screen-badge {
178
- font-family: var(--me-font-mono);
179
- font-size: 12px;
180
- font-weight: 500;
181
- color: var(--me-accent);
182
- }
183
-
184
- .mock-editor__sidebar-content {
185
- flex: 1;
186
- padding: 16px;
187
- overflow-y: auto;
188
- }
189
-
190
- .mock-editor__sections-label {
191
- font-family: var(--me-font-mono);
192
- font-size: 10px;
193
- font-weight: 600;
194
- color: var(--me-text-muted);
195
- text-transform: uppercase;
196
- letter-spacing: 0.1em;
197
- margin-bottom: 12px;
198
- }
199
-
200
- /* Tab List */
201
- .mock-editor__tab-list {
202
- display: flex;
203
- flex-direction: column;
204
- gap: 4px;
205
- }
206
-
207
- /* Section Tab */
208
- .mock-editor__section-tab {
209
- display: flex;
210
- align-items: center;
211
- gap: 12px;
212
- padding: 12px 14px;
213
- background: var(--me-bg-surface);
214
- border: 1px solid var(--me-border-subtle);
215
- border-radius: 10px;
216
- cursor: pointer;
217
- transition: all 0.2s ease;
218
- text-align: left;
219
- position: relative;
220
- overflow: hidden;
221
- }
222
-
223
- .mock-editor__section-tab:hover {
224
- background: var(--me-bg-elevated);
225
- border-color: var(--me-border);
226
- }
227
-
228
- .mock-editor__section-tab:focus-visible {
229
- outline: none;
230
- box-shadow: var(--me-focus-ring);
231
- }
232
-
233
- .mock-editor__section-tab--active {
234
- background: var(--me-accent-subtle);
235
- border-color: var(--me-accent);
236
- }
237
-
238
- .mock-editor__section-tab--active:hover {
239
- background: var(--me-accent-subtle);
240
- }
241
-
242
- /* Tab Icon */
243
- .mock-editor__tab-icon {
244
- width: 32px;
245
- height: 32px;
246
- background: var(--me-bg-elevated);
247
- border-radius: 8px;
248
- display: flex;
249
- align-items: center;
250
- justify-content: center;
251
- font-family: var(--me-font-mono);
252
- font-size: 12px;
253
- font-weight: 600;
254
- color: var(--me-text-muted);
255
- flex-shrink: 0;
256
- transition: all 0.2s ease;
257
- }
258
-
259
- .mock-editor__section-tab--active .mock-editor__tab-icon {
260
- background: var(--me-accent);
261
- color: var(--me-bg-deep);
262
- }
263
-
264
- /* Tab Content */
265
- .mock-editor__tab-content {
266
- flex: 1;
267
- min-width: 0;
268
- display: flex;
269
- flex-direction: column;
270
- gap: 2px;
271
- }
272
-
273
- .mock-editor__tab-title {
274
- font-size: 13px;
275
- font-weight: 500;
276
- color: var(--me-text);
277
- white-space: nowrap;
278
- overflow: hidden;
279
- text-overflow: ellipsis;
280
- }
281
-
282
- .mock-editor__tab-count {
283
- font-family: var(--me-font-mono);
284
- font-size: 10px;
285
- color: var(--me-text-muted);
286
- }
287
-
288
- .mock-editor__section-tab--active .mock-editor__tab-count {
289
- color: var(--me-accent);
290
- }
291
-
292
- /* Tab Indicator (glow effect) */
293
- .mock-editor__tab-indicator {
294
- position: absolute;
295
- left: 0;
296
- top: 50%;
297
- transform: translateY(-50%);
298
- width: 3px;
299
- height: 60%;
300
- background: var(--me-accent);
301
- border-radius: 0 2px 2px 0;
302
- box-shadow: 0 0 12px var(--me-accent);
303
- }
304
-
305
- /* Add Section Button */
306
- .mock-editor__add-section-btn {
307
- width: 100%;
308
- font-family: var(--me-font-mono);
309
- font-size: 12px;
310
- font-weight: 500;
311
- color: var(--me-text-muted);
312
- background: transparent;
313
- border: 1px dashed var(--me-border);
314
- border-radius: 10px;
315
- padding: 14px;
316
- margin-top: 12px;
317
- cursor: pointer;
318
- transition: all 0.2s ease;
319
- }
320
-
321
- .mock-editor__add-section-btn:hover {
322
- color: var(--me-accent);
323
- border-color: var(--me-accent);
324
- background: var(--me-accent-subtle);
325
- }
326
-
327
- .mock-editor__add-section-btn:focus-visible {
328
- outline: none;
329
- box-shadow: var(--me-focus-ring);
330
- }
331
-
332
- /* ========================================
333
- CENTER PANEL - Editor
334
- ======================================== */
335
- .mock-editor__main {
336
- display: flex;
337
- flex-direction: column;
338
- position: relative;
339
- z-index: 1;
340
- background: linear-gradient(
341
- 180deg,
342
- var(--me-bg-panel) 0%,
343
- var(--me-bg-deep) 100%
344
- );
345
- }
346
-
347
- /* Editor Header */
348
- .mock-editor__header {
349
- display: flex;
350
- align-items: center;
351
- justify-content: space-between;
352
- gap: 16px;
353
- padding: 16px 24px;
354
- background: var(--me-bg-surface);
355
- border-bottom: 1px solid var(--me-border);
356
- }
357
-
358
- .mock-editor__header-left {
359
- display: flex;
360
- align-items: center;
361
- gap: 16px;
362
- }
363
-
364
- .mock-editor__header-right {
365
- display: flex;
366
- align-items: center;
367
- gap: 8px;
368
- }
369
-
370
- /* Field Label */
371
- .mock-editor__field-label {
372
- display: flex;
373
- flex-direction: column;
374
- gap: 4px;
375
- }
376
-
377
- .mock-editor__field-label-text {
378
- font-family: var(--me-font-mono);
379
- font-size: 9px;
380
- font-weight: 600;
381
- color: var(--me-text-muted);
382
- text-transform: uppercase;
383
- letter-spacing: 0.05em;
384
- }
385
-
386
- /* Section Title Input */
387
- .mock-editor__section-input {
388
- font-family: var(--me-font-sans);
389
- font-size: 14px;
390
- font-weight: 500;
391
- color: var(--me-text);
392
- background: var(--me-bg-elevated);
393
- border: 1px solid var(--me-border);
394
- border-radius: 8px;
395
- padding: 10px 14px;
396
- min-width: 200px;
397
- transition: all 0.15s ease;
398
- }
399
-
400
- .mock-editor__section-input:hover {
401
- border-color: var(--me-border-accent);
402
- }
403
-
404
- .mock-editor__section-input:focus {
405
- outline: none;
406
- border-color: var(--me-accent);
407
- box-shadow: 0 0 0 3px var(--me-accent-glow);
408
- }
409
-
410
- .mock-editor__section-input::placeholder {
411
- color: var(--me-text-muted);
412
- }
413
-
414
- /* Layout Toggle Group */
415
- .mock-editor__layout-group {
416
- display: flex;
417
- gap: 4px;
418
- background: var(--me-bg-elevated);
419
- padding: 4px;
420
- border-radius: 8px;
421
- border: none;
422
- margin: 0;
423
- }
424
-
425
- .mock-editor__layout-option {
426
- cursor: pointer;
427
- }
428
-
429
- .mock-editor__layout-label {
430
- display: block;
431
- font-family: var(--me-font-mono);
432
- font-size: 11px;
433
- font-weight: 500;
434
- color: var(--me-text-muted);
435
- padding: 8px 12px;
436
- border-radius: 6px;
437
- transition: all 0.15s ease;
438
- }
439
-
440
- .mock-editor__layout-option:hover .mock-editor__layout-label {
441
- color: var(--me-text);
442
- background: var(--me-bg-hover);
443
- }
444
-
445
- .mock-editor__layout-option--active .mock-editor__layout-label {
446
- color: var(--me-accent);
447
- background: var(--me-bg-surface);
448
- }
449
-
450
- .mock-editor__layout-option input:focus-visible + .mock-editor__layout-label {
451
- box-shadow: var(--me-focus-ring);
452
- }
453
-
454
- /* Template Select */
455
- .mock-editor__template-select {
456
- font-family: var(--me-font-sans);
457
- font-size: 13px;
458
- font-weight: 500;
459
- color: var(--me-text-secondary);
460
- background: var(--me-bg-elevated);
461
- border: 1px solid var(--me-border);
462
- border-radius: 6px;
463
- padding: 8px 32px 8px 12px;
464
- cursor: pointer;
465
- transition: all 0.15s ease;
466
- appearance: none;
467
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
468
- background-repeat: no-repeat;
469
- background-position: right 10px center;
470
- }
471
-
472
- .mock-editor__template-select:hover {
473
- border-color: var(--me-border-accent);
474
- color: var(--me-text);
475
- }
476
-
477
- .mock-editor__template-select:focus {
478
- outline: none;
479
- border-color: var(--me-accent);
480
- box-shadow: 0 0 0 3px var(--me-accent-glow);
481
- }
482
-
483
- /* Status Messages */
484
- .mock-editor__status {
485
- font-size: 12px;
486
- font-weight: 500;
487
- }
488
-
489
- .mock-editor__status--success {
490
- color: #4ade80;
491
- }
492
-
493
- .mock-editor__status--error {
494
- color: #f87171;
495
- }
496
-
497
- /* Buttons */
498
- .mock-editor__btn {
499
- font-family: var(--me-font-sans);
500
- font-size: 13px;
501
- font-weight: 500;
502
- padding: 8px 16px;
503
- border-radius: 6px;
504
- cursor: pointer;
505
- transition: all 0.15s ease;
506
- display: inline-flex;
507
- align-items: center;
508
- gap: 6px;
509
- }
510
-
511
- .mock-editor__btn:focus-visible {
512
- outline: none;
513
- box-shadow: var(--me-focus-ring);
514
- }
515
-
516
- .mock-editor__btn--secondary {
517
- color: var(--me-text-secondary);
518
- background: var(--me-bg-elevated);
519
- border: 1px solid var(--me-border);
520
- }
521
-
522
- .mock-editor__btn--secondary:hover {
523
- color: var(--me-text);
524
- background: var(--me-bg-hover);
525
- border-color: var(--me-border-accent);
526
- }
527
-
528
- .mock-editor__btn--primary {
529
- color: var(--me-bg-deep);
530
- background: linear-gradient(135deg, var(--me-accent) 0%, #14b8a6 100%);
531
- border: none;
532
- font-weight: 600;
533
- }
534
-
535
- .mock-editor__btn--primary:hover {
536
- transform: translateY(-1px);
537
- box-shadow: var(--me-shadow-glow);
538
- }
539
-
540
- .mock-editor__btn--primary:disabled {
541
- opacity: 0.5;
542
- cursor: not-allowed;
543
- transform: none;
544
- box-shadow: none;
545
- }
546
-
547
- /* Editor Content */
548
- .mock-editor__editor-content {
549
- flex: 1;
550
- padding: 24px;
551
- overflow-y: auto;
552
- }
553
-
554
- .mock-editor__editor-content:focus {
555
- outline: none;
556
- }
557
-
558
- .mock-editor__editor-content:focus-visible {
559
- box-shadow: inset 0 0 0 2px var(--me-accent-glow);
560
- }
561
-
562
- /* Elements Container */
563
- .mock-editor__elements {
564
- display: flex;
565
- flex-direction: column;
566
- gap: 12px;
567
- margin-bottom: 20px;
568
- }
569
-
570
- /* Empty State */
571
- .mock-editor__empty-elements {
572
- font-family: var(--me-font-mono);
573
- font-size: 12px;
574
- color: var(--me-text-muted);
575
- font-style: italic;
576
- padding: 32px 24px;
577
- text-align: center;
578
- border: 1px dashed var(--me-border);
579
- border-radius: 12px;
580
- background: var(--me-bg-surface);
581
- }
582
-
583
- /* Element Card */
584
- .mock-editor__element {
585
- background: var(--me-bg-surface);
586
- border: 1px solid var(--me-border);
587
- border-radius: 12px;
588
- overflow: hidden;
589
- transition: all 0.2s ease;
590
- }
591
-
592
- .mock-editor__element:hover {
593
- border-color: var(--me-border-accent);
594
- box-shadow: var(--me-shadow-md);
595
- }
596
-
597
- .mock-editor__element:focus-within {
598
- border-color: var(--me-accent);
599
- }
600
-
601
- /* Element color variations */
602
- .mock-editor__element--button {
603
- border-left: 3px solid var(--me-color-button);
604
- }
605
- .mock-editor__element--input {
606
- border-left: 3px solid var(--me-color-input);
607
- }
608
- .mock-editor__element--link {
609
- border-left: 3px solid var(--me-color-link);
610
- }
611
- .mock-editor__element--text {
612
- border-left: 3px solid var(--me-color-text);
613
- }
614
- .mock-editor__element--image {
615
- border-left: 3px solid var(--me-color-image);
616
- }
617
- .mock-editor__element--list {
618
- border-left: 3px solid var(--me-color-list);
619
- }
620
- .mock-editor__element--table {
621
- border-left: 3px solid var(--me-color-table);
622
- }
623
-
624
- .mock-editor__element-header {
625
- display: flex;
626
- align-items: center;
627
- justify-content: space-between;
628
- padding: 12px 16px;
629
- background: var(--me-bg-elevated);
630
- border-bottom: 1px solid var(--me-border-subtle);
631
- }
632
-
633
- .mock-editor__element-type {
634
- font-family: var(--me-font-mono);
635
- font-size: 10px;
636
- font-weight: 600;
637
- text-transform: uppercase;
638
- letter-spacing: 0.05em;
639
- padding: 4px 10px;
640
- border-radius: 4px;
641
- background: rgba(255, 255, 255, 0.05);
642
- }
643
-
644
- .mock-editor__element-type--button {
645
- color: var(--me-color-button);
646
- background: rgba(45, 212, 191, 0.1);
647
- }
648
- .mock-editor__element-type--input {
649
- color: var(--me-color-input);
650
- background: rgba(129, 140, 248, 0.1);
651
- }
652
- .mock-editor__element-type--link {
653
- color: var(--me-color-link);
654
- background: rgba(167, 139, 250, 0.1);
655
- }
656
- .mock-editor__element-type--text {
657
- color: var(--me-color-text);
658
- background: rgba(148, 163, 184, 0.1);
659
- }
660
- .mock-editor__element-type--image {
661
- color: var(--me-color-image);
662
- background: rgba(251, 191, 36, 0.1);
663
- }
664
- .mock-editor__element-type--list {
665
- color: var(--me-color-list);
666
- background: rgba(244, 114, 182, 0.1);
667
- }
668
- .mock-editor__element-type--table {
669
- color: var(--me-color-table);
670
- background: rgba(34, 211, 238, 0.1);
671
- }
672
-
673
- .mock-editor__element-actions {
674
- display: flex;
675
- align-items: center;
676
- gap: 4px;
677
- }
678
-
679
- .mock-editor__remove-btn {
680
- width: 28px;
681
- height: 28px;
682
- display: flex;
683
- align-items: center;
684
- justify-content: center;
685
- background: transparent;
686
- border: 1px solid transparent;
687
- border-radius: 6px;
688
- color: var(--me-text-muted);
689
- cursor: pointer;
690
- transition: all 0.15s ease;
691
- font-size: 16px;
692
- }
693
-
694
- .mock-editor__remove-btn:hover {
695
- color: #f87171;
696
- background: rgba(248, 113, 113, 0.1);
697
- border-color: rgba(248, 113, 113, 0.3);
698
- }
699
-
700
- .mock-editor__remove-btn:focus-visible {
701
- outline: none;
702
- box-shadow: var(--me-focus-ring);
703
- }
704
-
705
- .mock-editor__element-fields {
706
- padding: 16px;
707
- display: grid;
708
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
709
- gap: 12px;
710
- }
711
-
712
- .mock-editor__field-input,
713
- .mock-editor__field-select {
714
- width: 100%;
715
- font-family: var(--me-font-sans);
716
- font-size: 13px;
717
- color: var(--me-text);
718
- background: var(--me-bg-elevated);
719
- border: 1px solid var(--me-border);
720
- border-radius: 6px;
721
- padding: 10px 12px;
722
- transition: all 0.15s ease;
723
- }
724
-
725
- .mock-editor__field-input:hover,
726
- .mock-editor__field-select:hover {
727
- border-color: var(--me-border-accent);
728
- }
729
-
730
- .mock-editor__field-input:focus,
731
- .mock-editor__field-select:focus {
732
- outline: none;
733
- border-color: var(--me-accent);
734
- box-shadow: 0 0 0 3px var(--me-accent-glow);
735
- }
736
-
737
- .mock-editor__field-input::placeholder {
738
- color: var(--me-text-muted);
739
- }
740
-
741
- .mock-editor__field-input--small {
742
- width: 80px;
743
- }
744
-
745
- .mock-editor__field-row {
746
- display: flex;
747
- gap: 8px;
748
- }
749
-
750
- /* Element Add Buttons */
751
- .mock-editor__element-buttons {
752
- display: flex;
753
- flex-wrap: wrap;
754
- gap: 8px;
755
- padding: 16px 0;
756
- border: none;
757
- margin: 0;
758
- }
759
-
760
- .mock-editor__add-element-btn {
761
- font-family: var(--me-font-mono);
762
- font-size: 11px;
763
- font-weight: 500;
764
- color: var(--me-text-secondary);
765
- background: var(--me-bg-surface);
766
- border: 1px solid var(--me-border);
767
- border-radius: 6px;
768
- padding: 10px 14px;
769
- cursor: pointer;
770
- transition: all 0.15s ease;
771
- }
772
-
773
- .mock-editor__add-element-btn:hover {
774
- color: var(--me-text);
775
- background: var(--me-bg-elevated);
776
- border-color: var(--me-border-accent);
777
- transform: translateY(-1px);
778
- }
779
-
780
- .mock-editor__add-element-btn:focus-visible {
781
- outline: none;
782
- box-shadow: var(--me-focus-ring);
783
- }
784
-
785
- .mock-editor__add-element-btn--button:hover {
786
- border-color: var(--me-color-button);
787
- }
788
- .mock-editor__add-element-btn--input:hover {
789
- border-color: var(--me-color-input);
790
- }
791
- .mock-editor__add-element-btn--link:hover {
792
- border-color: var(--me-color-link);
793
- }
794
- .mock-editor__add-element-btn--text:hover {
795
- border-color: var(--me-color-text);
796
- }
797
- .mock-editor__add-element-btn--image:hover {
798
- border-color: var(--me-color-image);
799
- }
800
- .mock-editor__add-element-btn--list:hover {
801
- border-color: var(--me-color-list);
802
- }
803
- .mock-editor__add-element-btn--table:hover {
804
- border-color: var(--me-color-table);
805
- }
806
-
807
- /* Children Sections */
808
- .mock-editor__children {
809
- margin-top: 24px;
810
- padding-top: 24px;
811
- border-top: 1px solid var(--me-border);
812
- }
813
-
814
- .mock-editor__children-title {
815
- font-family: var(--me-font-mono);
816
- font-size: 11px;
817
- font-weight: 600;
818
- color: var(--me-text-muted);
819
- text-transform: uppercase;
820
- letter-spacing: 0.05em;
821
- margin-bottom: 12px;
822
- }
823
-
824
- /* Add Child Section Button */
825
- .mock-editor__add-child-btn {
826
- width: 100%;
827
- font-family: var(--me-font-mono);
828
- font-size: 12px;
829
- font-weight: 500;
830
- color: var(--me-text-muted);
831
- background: transparent;
832
- border: 1px dashed var(--me-border);
833
- border-radius: 8px;
834
- padding: 12px;
835
- margin-top: 16px;
836
- cursor: pointer;
837
- transition: all 0.2s ease;
838
- }
839
-
840
- .mock-editor__add-child-btn:hover {
841
- color: var(--me-accent);
842
- border-color: var(--me-accent);
843
- background: var(--me-accent-subtle);
844
- }
845
-
846
- .mock-editor__add-child-btn:focus-visible {
847
- outline: none;
848
- box-shadow: var(--me-focus-ring);
849
- }
850
-
851
- /* Section Card (for child sections) */
852
- .mock-editor__section {
853
- margin-bottom: 12px;
854
- border-radius: 10px;
855
- background: var(--me-bg-surface);
856
- border: 1px solid var(--me-border);
857
- overflow: hidden;
858
- transition: all 0.2s ease;
859
- }
860
-
861
- .mock-editor__section:hover {
862
- border-color: var(--me-border-accent);
863
- }
864
-
865
- .mock-editor__section--child {
866
- margin-left: 16px;
867
- border-left: 2px solid var(--me-accent);
868
- border-top-left-radius: 0;
869
- border-bottom-left-radius: 0;
870
- }
871
-
872
- .mock-editor__section-header {
873
- display: flex;
874
- align-items: center;
875
- gap: 10px;
876
- padding: 12px 14px;
877
- background: var(--me-bg-elevated);
878
- border-bottom: 1px solid var(--me-border-subtle);
879
- }
880
-
881
- .mock-editor__layout-select {
882
- font-family: var(--me-font-mono);
883
- font-size: 11px;
884
- font-weight: 500;
885
- color: var(--me-text-secondary);
886
- background: var(--me-bg-surface);
887
- border: 1px solid var(--me-border-subtle);
888
- border-radius: 4px;
889
- padding: 8px 28px 8px 10px;
890
- cursor: pointer;
891
- transition: all 0.15s ease;
892
- appearance: none;
893
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
894
- background-repeat: no-repeat;
895
- background-position: right 8px center;
896
- }
897
-
898
- .mock-editor__layout-select:hover,
899
- .mock-editor__layout-select:focus {
900
- border-color: var(--me-accent);
901
- color: var(--me-text);
902
- }
903
-
904
- .mock-editor__depth-badge {
905
- font-family: var(--me-font-mono);
906
- font-size: 9px;
907
- font-weight: 600;
908
- color: var(--me-accent);
909
- background: var(--me-accent-subtle);
910
- padding: 3px 6px;
911
- border-radius: 3px;
912
- text-transform: uppercase;
913
- letter-spacing: 0.05em;
914
- }
915
-
916
- .mock-editor__section-body {
917
- padding: 14px;
918
- }
919
-
920
- .mock-editor__section-footer {
921
- padding: 10px 14px;
922
- border-top: 1px solid var(--me-border-subtle);
923
- }
924
-
925
- /* ========================================
926
- RIGHT PANEL - Preview
927
- ======================================== */
928
- .mock-editor__preview-panel {
929
- background: var(--me-bg-panel);
930
- border-left: 1px solid var(--me-border);
931
- display: flex;
932
- flex-direction: column;
933
- position: relative;
934
- z-index: 2;
935
- }
936
-
937
- .mock-editor__preview-header {
938
- display: flex;
939
- align-items: center;
940
- justify-content: space-between;
941
- padding: 16px 20px;
942
- border-bottom: 1px solid var(--me-border);
943
- }
944
-
945
- .mock-editor__preview-label {
946
- font-family: var(--me-font-mono);
947
- font-size: 10px;
948
- font-weight: 600;
949
- color: var(--me-text-muted);
950
- text-transform: uppercase;
951
- letter-spacing: 0.1em;
952
- display: flex;
953
- align-items: center;
954
- gap: 8px;
955
- }
956
-
957
- .mock-editor__preview-label::before {
958
- content: "";
959
- width: 8px;
960
- height: 8px;
961
- background: var(--me-accent);
962
- border-radius: 50%;
963
- animation: pulse 2s ease-in-out infinite;
964
- }
965
-
966
- @keyframes pulse {
967
- 0%,
968
- 100% {
969
- opacity: 0.4;
970
- transform: scale(0.9);
971
- }
972
- 50% {
973
- opacity: 1;
974
- transform: scale(1.1);
975
- }
976
- }
977
-
978
- .mock-editor__preview-scale {
979
- font-family: var(--me-font-mono);
980
- font-size: 11px;
981
- color: var(--me-text-muted);
982
- }
983
-
984
- .mock-editor__preview-wrapper {
985
- flex: 1;
986
- padding: 20px;
987
- overflow-y: auto;
988
- }
989
-
990
- /* Preview Container */
991
- .mock-editor__preview {
992
- background: var(--me-bg-surface);
993
- border: 2px solid var(--me-border);
994
- border-radius: 16px;
995
- overflow: hidden;
996
- box-shadow: var(--me-shadow-lg);
997
- position: relative;
998
- }
999
-
1000
- /* Corner accents */
1001
- .mock-editor__preview::before,
1002
- .mock-editor__preview::after {
1003
- content: "";
1004
- position: absolute;
1005
- width: 24px;
1006
- height: 24px;
1007
- border: 2px solid rgba(45, 212, 191, 0.3);
1008
- pointer-events: none;
1009
- }
1010
-
1011
- .mock-editor__preview::before {
1012
- top: 8px;
1013
- left: 8px;
1014
- border-right: none;
1015
- border-bottom: none;
1016
- border-radius: 4px 0 0 0;
1017
- }
1018
-
1019
- .mock-editor__preview::after {
1020
- bottom: 8px;
1021
- right: 8px;
1022
- border-left: none;
1023
- border-top: none;
1024
- border-radius: 0 0 4px 0;
1025
- }
1026
-
1027
- .mock-editor__preview-header-bar {
1028
- background: linear-gradient(135deg, var(--me-accent) 0%, #14b8a6 100%);
1029
- padding: 12px 18px;
1030
- color: var(--me-bg-deep);
1031
- font-size: 14px;
1032
- font-weight: 600;
1033
- }
1034
-
1035
- .mock-editor__preview-body {
1036
- padding: 18px;
1037
- display: flex;
1038
- flex-direction: column;
1039
- gap: 16px;
1040
- }
1041
-
1042
- .mock-editor__preview-empty {
1043
- color: var(--me-text-muted);
1044
- font-size: 13px;
1045
- text-align: center;
1046
- padding: 48px 24px;
1047
- font-style: italic;
1048
- }
1049
-
1050
- /* Preview Section */
1051
- .mock-editor__preview-section {
1052
- background: var(--me-bg-elevated);
1053
- border-radius: 12px;
1054
- overflow: hidden;
1055
- }
1056
-
1057
- .mock-editor__preview-section--child {
1058
- margin-left: 12px;
1059
- border-left: 2px solid rgba(45, 212, 191, 0.3);
1060
- border-top-left-radius: 0;
1061
- border-bottom-left-radius: 0;
1062
- }
1063
-
1064
- .mock-editor__preview-section-title {
1065
- background: var(--me-accent-subtle);
1066
- padding: 10px 16px;
1067
- border-bottom: 1px solid rgba(45, 212, 191, 0.15);
1068
- font-family: var(--me-font-mono);
1069
- font-size: 11px;
1070
- font-weight: 600;
1071
- color: var(--me-accent);
1072
- text-transform: uppercase;
1073
- letter-spacing: 0.05em;
1074
- }
1075
-
1076
- .mock-editor__preview-section-title--child {
1077
- font-size: 10px;
1078
- background: rgba(45, 212, 191, 0.05);
1079
- }
1080
-
1081
- .mock-editor__preview-section-body {
1082
- padding: 16px;
1083
- display: flex;
1084
- flex-direction: column;
1085
- gap: 12px;
1086
- }
1087
-
1088
- .mock-editor__preview-section-body--horizontal {
1089
- flex-direction: row;
1090
- flex-wrap: wrap;
1091
- }
1092
-
1093
- .mock-editor__preview-section-body--grid {
1094
- display: grid;
1095
- grid-template-columns: repeat(2, 1fr);
1096
- gap: 12px;
1097
- }
1098
-
1099
- /* Preview Elements */
1100
- .mock-editor__preview-element {
1101
- flex: 1;
1102
- min-width: 0;
1103
- }
1104
-
1105
- .mock-editor__preview-element--horizontal {
1106
- min-width: 100px;
1107
- }
1108
-
1109
- /* Preview Button */
1110
- .mock-editor__preview-button {
1111
- padding: 12px 16px;
1112
- border-radius: 8px;
1113
- font-size: 12px;
1114
- font-weight: 600;
1115
- text-align: center;
1116
- }
1117
-
1118
- .mock-editor__preview-button--primary {
1119
- background: linear-gradient(135deg, var(--me-accent) 0%, #14b8a6 100%);
1120
- color: var(--me-bg-deep);
1121
- }
1122
-
1123
- .mock-editor__preview-button--secondary {
1124
- background: var(--me-bg-surface);
1125
- color: var(--me-text-secondary);
1126
- border: 1px solid var(--me-border);
1127
- }
1128
-
1129
- .mock-editor__preview-button--danger {
1130
- background: linear-gradient(135deg, #f87171 0%, #ef4444 100%);
1131
- color: white;
1132
- }
1133
-
1134
- /* Preview Input */
1135
- .mock-editor__preview-input {
1136
- display: flex;
1137
- flex-direction: column;
1138
- gap: 6px;
1139
- }
1140
-
1141
- .mock-editor__preview-input-label {
1142
- font-size: 11px;
1143
- color: var(--me-text-muted);
1144
- text-transform: uppercase;
1145
- font-weight: 500;
1146
- letter-spacing: 0.03em;
1147
- }
1148
-
1149
- .mock-editor__preview-input-field {
1150
- background: var(--me-bg-deep);
1151
- border: 1px solid var(--me-border);
1152
- border-radius: 6px;
1153
- padding: 12px 14px;
1154
- font-size: 12px;
1155
- color: var(--me-text-muted);
1156
- }
1157
-
1158
- /* Preview Text */
1159
- .mock-editor__preview-text--heading {
1160
- font-size: 18px;
1161
- font-weight: 700;
1162
- color: var(--me-text);
1163
- }
1164
-
1165
- .mock-editor__preview-text--subheading {
1166
- font-size: 14px;
1167
- font-weight: 600;
1168
- color: var(--me-text-secondary);
1169
- }
1170
-
1171
- .mock-editor__preview-text--body {
1172
- font-size: 13px;
1173
- color: var(--me-text-secondary);
1174
- }
1175
-
1176
- .mock-editor__preview-text--caption {
1177
- font-size: 11px;
1178
- color: var(--me-text-muted);
1179
- }
1180
-
1181
- /* Preview Link */
1182
- .mock-editor__preview-link {
1183
- font-size: 12px;
1184
- color: var(--me-accent);
1185
- text-decoration: underline;
1186
- text-underline-offset: 2px;
1187
- }
1188
-
1189
- /* Preview Image */
1190
- .mock-editor__preview-image {
1191
- background: var(--me-bg-surface);
1192
- border: 2px dashed var(--me-border);
1193
- border-radius: 8px;
1194
- display: flex;
1195
- align-items: center;
1196
- justify-content: center;
1197
- font-size: 11px;
1198
- color: var(--me-text-muted);
1199
- max-height: 120px;
1200
- }
1201
-
1202
- /* Preview List */
1203
- .mock-editor__preview-list {
1204
- background: var(--me-bg-deep);
1205
- border-radius: 8px;
1206
- overflow: hidden;
1207
- }
1208
-
1209
- .mock-editor__preview-list-header {
1210
- padding: 10px 14px;
1211
- background: var(--me-bg-surface);
1212
- font-size: 11px;
1213
- color: var(--me-text-muted);
1214
- border-bottom: 1px solid var(--me-border);
1215
- }
1216
-
1217
- .mock-editor__preview-list-item {
1218
- padding: 10px 14px;
1219
- border-bottom: 1px solid var(--me-border-subtle);
1220
- }
1221
-
1222
- .mock-editor__preview-list-item:last-child {
1223
- border-bottom: none;
1224
- }
1225
-
1226
- .mock-editor__preview-list-placeholder {
1227
- height: 4px;
1228
- background: var(--me-border);
1229
- border-radius: 2px;
1230
- width: 70%;
1231
- }
1232
-
1233
- /* Preview Table */
1234
- .mock-editor__preview-table {
1235
- background: var(--me-bg-deep);
1236
- border-radius: 8px;
1237
- overflow: hidden;
1238
- }
1239
-
1240
- .mock-editor__preview-table-header {
1241
- padding: 10px 14px;
1242
- background: var(--me-bg-surface);
1243
- font-size: 11px;
1244
- color: var(--me-text-muted);
1245
- border-bottom: 1px solid var(--me-border);
1246
- }
1247
-
1248
- .mock-editor__preview-table table {
1249
- width: 100%;
1250
- border-collapse: collapse;
1251
- font-size: 11px;
1252
- }
1253
-
1254
- .mock-editor__preview-table th {
1255
- padding: 8px 10px;
1256
- text-align: left;
1257
- color: var(--me-text-muted);
1258
- font-weight: 600;
1259
- border-bottom: 1px solid var(--me-border);
1260
- }
1261
-
1262
- .mock-editor__preview-table td {
1263
- padding: 8px 10px;
1264
- border-bottom: 1px solid var(--me-border-subtle);
1265
- }
1266
-
1267
- .mock-editor__preview-table tr:last-child td {
1268
- border-bottom: none;
1269
- }
1270
-
1271
- .mock-editor__preview-table-placeholder {
1272
- height: 4px;
1273
- background: var(--me-border);
1274
- border-radius: 2px;
1275
- width: 60%;
1276
- }
1277
-
1278
- /* Animations */
1279
- .mock-editor__element,
1280
- .mock-editor__section,
1281
- .mock-editor__preview-section {
1282
- animation: fadeSlideIn 0.2s ease;
1283
- }
1284
-
1285
- @keyframes fadeSlideIn {
1286
- from {
1287
- opacity: 0;
1288
- transform: translateY(-8px);
1289
- }
1290
- to {
1291
- opacity: 1;
1292
- transform: translateY(0);
1293
- }
1294
- }
1295
-
1296
- /* Tab glow animation */
1297
- .mock-editor__section-tab--active::before {
1298
- content: "";
1299
- position: absolute;
1300
- inset: 0;
1301
- background: radial-gradient(
1302
- circle at left center,
1303
- var(--me-accent-glow) 0%,
1304
- transparent 70%
1305
- );
1306
- pointer-events: none;
1307
- }
1308
-
1309
- /* Scrollbar styling */
1310
- .mock-editor ::-webkit-scrollbar {
1311
- width: 8px;
1312
- height: 8px;
1313
- }
1314
-
1315
- .mock-editor ::-webkit-scrollbar-track {
1316
- background: transparent;
1317
- }
1318
-
1319
- .mock-editor ::-webkit-scrollbar-thumb {
1320
- background: var(--me-border);
1321
- border-radius: 4px;
1322
- }
1323
-
1324
- .mock-editor ::-webkit-scrollbar-thumb:hover {
1325
- background: var(--me-border-accent);
1326
- }
1327
-
1328
- /* Responsive adjustments */
1329
- @media (max-width: 1200px) {
1330
- .mock-editor {
1331
- grid-template-columns: 200px 1fr 360px;
1332
- }
1333
- }
1334
-
1335
- @media (max-width: 900px) {
1336
- .mock-editor {
1337
- grid-template-columns: 1fr;
1338
- grid-template-rows: auto 1fr auto;
1339
- }
1340
-
1341
- .mock-editor__sidebar {
1342
- border-right: none;
1343
- border-bottom: 1px solid var(--me-border);
1344
- }
1345
-
1346
- .mock-editor__preview-panel {
1347
- border-left: none;
1348
- border-top: 1px solid var(--me-border);
1349
- max-height: 50vh;
1350
- }
1351
- }