@composy/layout-vue 0.0.1

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 (109) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +21 -0
  3. package/README.md +75 -0
  4. package/dist/index.css +2383 -0
  5. package/dist/index.js +2665 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.min.css +1 -0
  8. package/dist/index.min.js +1 -0
  9. package/es/components/LGrid.d.ts +3 -0
  10. package/es/components/LGrid.d.ts.map +1 -0
  11. package/es/components/LGrid.js +91 -0
  12. package/es/components/LGrid.js.map +1 -0
  13. package/es/components/LGridItem.d.ts +52 -0
  14. package/es/components/LGridItem.d.ts.map +1 -0
  15. package/es/components/LGridItem.js +52 -0
  16. package/es/components/LGridItem.js.map +1 -0
  17. package/es/components/LLayoutEditor.d.ts +49 -0
  18. package/es/components/LLayoutEditor.d.ts.map +1 -0
  19. package/es/components/LLayoutEditor.js +81 -0
  20. package/es/components/LLayoutEditor.js.map +1 -0
  21. package/es/components/LLayoutWorkspace.js +17 -0
  22. package/es/components/LLayoutWorkspace.js.map +1 -0
  23. package/es/components/LLayoutWorkspace.vue_vue_type_script_setup_true_lang.js +2217 -0
  24. package/es/components/LLayoutWorkspace.vue_vue_type_script_setup_true_lang.js.map +1 -0
  25. package/es/components/LMaterialDragSource.d.ts +55 -0
  26. package/es/components/LMaterialDragSource.d.ts.map +1 -0
  27. package/es/components/LMaterialDragSource.js +92 -0
  28. package/es/components/LMaterialDragSource.js.map +1 -0
  29. package/es/components/LMaterialRenderer.d.ts +63 -0
  30. package/es/components/LMaterialRenderer.d.ts.map +1 -0
  31. package/es/components/LMaterialRenderer.js +48 -0
  32. package/es/components/LMaterialRenderer.js.map +1 -0
  33. package/es/components/LMetricCard.d.ts +29 -0
  34. package/es/components/LMetricCard.d.ts.map +1 -0
  35. package/es/components/LMetricCard.js +39 -0
  36. package/es/components/LMetricCard.js.map +1 -0
  37. package/es/components/LTrendCard.d.ts +17 -0
  38. package/es/components/LTrendCard.d.ts.map +1 -0
  39. package/es/components/LTrendCard.js +36 -0
  40. package/es/components/LTrendCard.js.map +1 -0
  41. package/es/components/index.d.ts +10 -0
  42. package/es/components/index.d.ts.map +1 -0
  43. package/es/components/index.js +19 -0
  44. package/es/components/material-renderer.d.ts +26 -0
  45. package/es/components/material-renderer.d.ts.map +1 -0
  46. package/es/components/material-renderer.js +96 -0
  47. package/es/components/material-renderer.js.map +1 -0
  48. package/es/composables/index.d.ts +2 -0
  49. package/es/composables/index.d.ts.map +1 -0
  50. package/es/composables/index.js +12 -0
  51. package/es/composables/useLayoutEditor.d.ts +3 -0
  52. package/es/composables/useLayoutEditor.d.ts.map +1 -0
  53. package/es/composables/useLayoutEditor.js +22 -0
  54. package/es/composables/useLayoutEditor.js.map +1 -0
  55. package/es/index.d.ts +7 -0
  56. package/es/index.d.ts.map +1 -0
  57. package/es/index.js +22 -0
  58. package/es/style/css.js +1 -0
  59. package/es/style/index.js +1 -0
  60. package/es/style/index.less +1 -0
  61. package/es/style/workspace.css +2370 -0
  62. package/es/types.d.ts +26 -0
  63. package/es/types.d.ts.map +1 -0
  64. package/es/types.js +10 -0
  65. package/lib/components/LGrid.cjs +92 -0
  66. package/lib/components/LGrid.cjs.map +1 -0
  67. package/lib/components/LGrid.d.ts +3 -0
  68. package/lib/components/LGridItem.cjs +53 -0
  69. package/lib/components/LGridItem.cjs.map +1 -0
  70. package/lib/components/LGridItem.d.ts +52 -0
  71. package/lib/components/LLayoutEditor.cjs +82 -0
  72. package/lib/components/LLayoutEditor.cjs.map +1 -0
  73. package/lib/components/LLayoutEditor.d.ts +49 -0
  74. package/lib/components/LLayoutWorkspace.cjs +21 -0
  75. package/lib/components/LLayoutWorkspace.cjs.map +1 -0
  76. package/lib/components/LLayoutWorkspace.vue_vue_type_script_setup_true_lang.cjs +2217 -0
  77. package/lib/components/LLayoutWorkspace.vue_vue_type_script_setup_true_lang.cjs.map +1 -0
  78. package/lib/components/LMaterialDragSource.cjs +93 -0
  79. package/lib/components/LMaterialDragSource.cjs.map +1 -0
  80. package/lib/components/LMaterialDragSource.d.ts +55 -0
  81. package/lib/components/LMaterialRenderer.cjs +49 -0
  82. package/lib/components/LMaterialRenderer.cjs.map +1 -0
  83. package/lib/components/LMaterialRenderer.d.ts +63 -0
  84. package/lib/components/LMetricCard.cjs +40 -0
  85. package/lib/components/LMetricCard.cjs.map +1 -0
  86. package/lib/components/LMetricCard.d.ts +29 -0
  87. package/lib/components/LTrendCard.cjs +37 -0
  88. package/lib/components/LTrendCard.cjs.map +1 -0
  89. package/lib/components/LTrendCard.d.ts +17 -0
  90. package/lib/components/index.cjs +27 -0
  91. package/lib/components/index.d.ts +10 -0
  92. package/lib/components/material-renderer.cjs +99 -0
  93. package/lib/components/material-renderer.cjs.map +1 -0
  94. package/lib/components/material-renderer.d.ts +26 -0
  95. package/lib/composables/index.cjs +13 -0
  96. package/lib/composables/index.d.ts +2 -0
  97. package/lib/composables/useLayoutEditor.cjs +23 -0
  98. package/lib/composables/useLayoutEditor.cjs.map +1 -0
  99. package/lib/composables/useLayoutEditor.d.ts +3 -0
  100. package/lib/index.cjs +29 -0
  101. package/lib/index.d.ts +7 -0
  102. package/lib/package.json +3 -0
  103. package/lib/style/css.js +1 -0
  104. package/lib/style/index.css +2 -0
  105. package/lib/style/index.js +1 -0
  106. package/lib/style/workspace.css +2378 -0
  107. package/lib/types.cjs +11 -0
  108. package/lib/types.d.ts +26 -0
  109. package/package.json +117 -0
@@ -0,0 +1,2378 @@
1
+ :root {
2
+ color: #172033;
3
+ background: #eef2f7;
4
+ font-family: Inter, "Segoe UI", "Microsoft YaHei", sans-serif;
5
+ font-synthesis: none;
6
+ }
7
+
8
+ * {
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ html,
13
+ body,
14
+ #app {
15
+ width: 100%;
16
+ height: 100%;
17
+ margin: 0;
18
+ overflow: hidden;
19
+ }
20
+
21
+ body {
22
+ min-width: 0;
23
+ }
24
+
25
+ button {
26
+ font: inherit;
27
+ }
28
+
29
+ button:focus-visible {
30
+ outline: 2px solid #5b7cfa;
31
+ outline-offset: 2px;
32
+ }
33
+
34
+ .layout-demo {
35
+ --ink: #172033;
36
+ --muted: #768198;
37
+ --line: #dce3ed;
38
+ --line-strong: #c7d1df;
39
+ --panel: #fff;
40
+ --canvas: #f5f7fb;
41
+ --topbar: rgb(255 255 255 / 92%);
42
+ --stage: #fff;
43
+ --stage-header: rgb(250 251 255 / 88%);
44
+ --card: #fff;
45
+ --card-line: #d8def0;
46
+ --checker-a: #e7e9ed;
47
+ --checker-b: #f8f9fb;
48
+ --accent: #536df1;
49
+ --accent-soft: #eef0ff;
50
+ --shadow: 0 16px 40px rgb(36 52 82 / 8%);
51
+ width: 100%;
52
+ height: 100%;
53
+ min-width: 0;
54
+ min-height: 0;
55
+ display: grid;
56
+ grid-template-rows: 82px minmax(0, 1fr);
57
+ overflow: hidden;
58
+ background: var(--canvas);
59
+ color: var(--ink);
60
+ }
61
+
62
+ .topbar {
63
+ min-width: 0;
64
+ min-height: 0;
65
+ position: relative;
66
+ z-index: 60;
67
+ padding: 10px 18px;
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: space-between;
71
+ gap: 20px;
72
+ overflow: visible;
73
+ background: var(--topbar);
74
+ border-bottom: 1px solid var(--line);
75
+ box-shadow: 0 1px 0 rgb(255 255 255 / 80%);
76
+ }
77
+
78
+ .brand,
79
+ .actions,
80
+ .route-tabs,
81
+ .route-tabs button,
82
+ .mode-button,
83
+ .material-source,
84
+ .breakpoint-button {
85
+ display: flex;
86
+ align-items: center;
87
+ }
88
+
89
+ .brand {
90
+ min-width: 150px;
91
+ gap: 10px;
92
+ }
93
+
94
+ .brand-copy {
95
+ min-width: 0;
96
+ display: grid;
97
+ gap: 2px;
98
+ }
99
+
100
+ .brand-copy strong {
101
+ color: var(--ink);
102
+ font-size: 14px;
103
+ line-height: 1.1;
104
+ white-space: nowrap;
105
+ }
106
+
107
+ .brand-copy span {
108
+ color: var(--muted);
109
+ font-size: 10px;
110
+ white-space: nowrap;
111
+ }
112
+
113
+ .topbar-center {
114
+ min-width: 0;
115
+ display: flex;
116
+ align-items: center;
117
+ gap: 10px;
118
+ overflow-x: auto;
119
+ scrollbar-width: none;
120
+ }
121
+
122
+ .topbar-center__shell {
123
+ min-width: -moz-max-content;
124
+ min-width: max-content;
125
+ padding: 4px 6px;
126
+ display: flex;
127
+ align-items: center;
128
+ gap: 8px;
129
+ border: 1px solid var(--line);
130
+ border-radius: 14px;
131
+ background: color-mix(in srgb, var(--panel) 86%, #f0f3fa);
132
+ box-shadow: 0 5px 18px rgb(49 68 104 / 6%);
133
+ }
134
+
135
+ .topbar-center__section {
136
+ display: flex;
137
+ align-items: center;
138
+ gap: 7px;
139
+ }
140
+
141
+ .workspace-mode,
142
+ .device-select {
143
+ min-height: 34px;
144
+ display: inline-flex;
145
+ align-items: center;
146
+ gap: 7px;
147
+ padding: 0 10px;
148
+ border: 1px solid transparent;
149
+ border-radius: 9px;
150
+ color: var(--muted);
151
+ }
152
+
153
+ .workspace-mode {
154
+ color: var(--accent);
155
+ font-size: 12px;
156
+ font-weight: 700;
157
+ white-space: nowrap;
158
+ }
159
+
160
+ .development-mode {
161
+ position: relative;
162
+ min-width: 124px;
163
+ min-height: 36px;
164
+ border: 1px solid var(--line);
165
+ border-radius: 10px;
166
+ background: color-mix(in srgb, var(--panel) 86%, #eef1f7);
167
+ color: var(--ink);
168
+ box-shadow: 0 4px 12px rgb(49 68 104 / 5%);
169
+ }
170
+
171
+ .development-mode:hover,
172
+ .development-mode.is-open {
173
+ border-color: var(--accent);
174
+ background: var(--panel);
175
+ color: var(--accent);
176
+ box-shadow: 0 0 0 3px rgb(88 105 241 / 10%);
177
+ }
178
+
179
+ .development-mode .custom-select__trigger {
180
+ min-width: 122px;
181
+ min-height: 34px;
182
+ font-size: 11px;
183
+ font-weight: 700;
184
+ }
185
+
186
+ .development-mode__menu {
187
+ min-width: 226px;
188
+ right: 0;
189
+ left: auto;
190
+ }
191
+
192
+ .development-mode__menu .custom-select__option {
193
+ min-height: 44px;
194
+ }
195
+
196
+ .development-mode__menu .custom-select__option > span {
197
+ min-width: 0;
198
+ display: grid;
199
+ gap: 2px;
200
+ }
201
+
202
+ .development-mode__menu strong {
203
+ color: inherit;
204
+ font-size: 11px;
205
+ font-weight: 700;
206
+ }
207
+
208
+ .development-mode__menu small {
209
+ color: var(--muted);
210
+ font-size: 9px;
211
+ line-height: 1.2;
212
+ }
213
+
214
+ .workspace-mode__hint {
215
+ padding-left: 7px;
216
+ border-left: 1px solid var(--line);
217
+ color: var(--muted);
218
+ font-size: 10px;
219
+ font-weight: 500;
220
+ }
221
+
222
+ .device-select {
223
+ position: relative;
224
+ padding: 0;
225
+ background: color-mix(in srgb, var(--panel) 72%, #eef1f7);
226
+ }
227
+
228
+ .device-select:hover,
229
+ .device-select.is-open {
230
+ border-color: var(--line);
231
+ background: var(--panel);
232
+ color: var(--ink);
233
+ }
234
+
235
+ .custom-select__trigger {
236
+ min-height: 32px;
237
+ display: inline-flex;
238
+ align-items: center;
239
+ gap: 7px;
240
+ min-width: 104px;
241
+ padding: 0 9px;
242
+ border: 0;
243
+ border-radius: inherit;
244
+ background: transparent;
245
+ color: inherit;
246
+ cursor: pointer;
247
+ font-size: 11px;
248
+ text-align: left;
249
+ }
250
+
251
+ .custom-select__trigger svg:last-child {
252
+ margin-left: auto;
253
+ transition: transform 140ms ease;
254
+ }
255
+
256
+ .custom-select.is-open .custom-select__trigger svg:last-child {
257
+ transform: rotate(180deg);
258
+ }
259
+
260
+ .custom-select__menu {
261
+ position: absolute;
262
+ z-index: 40;
263
+ top: calc(100% + 7px);
264
+ left: 0;
265
+ min-width: 154px;
266
+ padding: 5px;
267
+ display: grid;
268
+ gap: 2px;
269
+ border: 1px solid var(--line);
270
+ border-radius: 11px;
271
+ background: var(--panel);
272
+ box-shadow: 0 14px 32px rgb(37 53 91 / 16%);
273
+ animation: select-menu-in 140ms ease-out;
274
+ }
275
+
276
+ .custom-select__option {
277
+ min-height: 31px;
278
+ display: flex;
279
+ align-items: center;
280
+ gap: 7px;
281
+ padding: 0 8px;
282
+ border: 0;
283
+ border-radius: 7px;
284
+ background: transparent;
285
+ color: var(--muted);
286
+ cursor: pointer;
287
+ font-size: 11px;
288
+ text-align: left;
289
+ }
290
+
291
+ .custom-select__option:hover,
292
+ .custom-select__option[aria-selected="true"] {
293
+ background: var(--accent-soft);
294
+ color: var(--accent);
295
+ }
296
+
297
+ .custom-select__option-meta {
298
+ margin-left: auto;
299
+ color: var(--muted);
300
+ font-size: 9px;
301
+ }
302
+
303
+ @keyframes select-menu-in {
304
+ from {
305
+ opacity: 0;
306
+ transform: translateY(-4px) scale(0.98);
307
+ }
308
+ to {
309
+ opacity: 1;
310
+ transform: translateY(0) scale(1);
311
+ }
312
+ }
313
+
314
+ .orientation-button {
315
+ width: 30px;
316
+ height: 30px;
317
+ display: grid;
318
+ place-items: center;
319
+ border: 1px solid transparent;
320
+ border-radius: 8px;
321
+ background: color-mix(in srgb, var(--panel) 72%, #eef1f7);
322
+ color: var(--muted);
323
+ cursor: pointer;
324
+ transition: 140ms ease;
325
+ }
326
+
327
+ .orientation-button:hover,
328
+ .orientation-button[aria-pressed="true"] {
329
+ border-color: var(--line);
330
+ background: var(--panel);
331
+ color: var(--accent);
332
+ }
333
+
334
+ .topbar-center__label {
335
+ padding: 0 2px 0 4px;
336
+ color: var(--muted);
337
+ font-size: 10px;
338
+ font-weight: 700;
339
+ letter-spacing: 0.08em;
340
+ white-space: nowrap;
341
+ }
342
+
343
+ .topbar-center__divider {
344
+ width: 1px;
345
+ height: 24px;
346
+ background: var(--line);
347
+ }
348
+
349
+ .topbar-center::-webkit-scrollbar {
350
+ display: none;
351
+ }
352
+
353
+ .brand-mark {
354
+ width: 34px;
355
+ height: 34px;
356
+ display: grid;
357
+ place-items: center;
358
+ flex: 0 0 auto;
359
+ border-radius: 11px;
360
+ background: linear-gradient(145deg, #5f74f6, #8495ff);
361
+ color: #fff;
362
+ font-size: 18px;
363
+ font-weight: 800;
364
+ box-shadow: 0 8px 18px rgb(83 109 241 / 25%);
365
+ }
366
+
367
+ .brand-mark svg,
368
+ .route-icon,
369
+ .actions svg,
370
+ .material-icon svg,
371
+ .material-add svg,
372
+ .breakpoint-icon svg,
373
+ .panel-tip > svg,
374
+ .inspector-icon svg {
375
+ display: block;
376
+ flex: 0 0 auto;
377
+ }
378
+
379
+ .brand strong,
380
+ .brand span {
381
+ display: block;
382
+ }
383
+
384
+ .brand strong {
385
+ font-size: 14px;
386
+ letter-spacing: 0.01em;
387
+ }
388
+
389
+ .brand div > span {
390
+ margin-top: 3px;
391
+ color: var(--muted);
392
+ font-size: 11px;
393
+ }
394
+
395
+ .actions {
396
+ min-width: 0;
397
+ gap: 6px;
398
+ overflow-x: auto;
399
+ overflow-y: hidden;
400
+ scrollbar-width: thin;
401
+ scrollbar-gutter: stable;
402
+ }
403
+
404
+ .route-tabs {
405
+ flex: 0 0 auto;
406
+ gap: 2px;
407
+ padding: 2px;
408
+ border-radius: 9px;
409
+ background: color-mix(in srgb, var(--panel) 72%, #eef1f7);
410
+ }
411
+
412
+ .breakpoint-tabs {
413
+ flex: 0 0 auto;
414
+ display: flex;
415
+ align-items: center;
416
+ gap: 2px;
417
+ padding: 2px;
418
+ border-radius: 9px;
419
+ background: color-mix(in srgb, var(--panel) 72%, #eef1f7);
420
+ }
421
+
422
+ .breakpoint-tab {
423
+ min-height: 30px;
424
+ padding: 4px 8px;
425
+ display: inline-flex;
426
+ align-items: center;
427
+ gap: 5px;
428
+ border: 0;
429
+ border-radius: 7px;
430
+ background: transparent;
431
+ color: #7a8498;
432
+ cursor: pointer;
433
+ white-space: nowrap;
434
+ transition: 140ms ease;
435
+ }
436
+
437
+ .breakpoint-tab:hover {
438
+ color: var(--ink);
439
+ background: #fff;
440
+ }
441
+
442
+ .breakpoint-tab[aria-pressed="true"] {
443
+ background: #fff;
444
+ color: var(--accent);
445
+ box-shadow: 0 2px 8px rgb(38 52 82 / 10%);
446
+ }
447
+
448
+ .breakpoint-download-button {
449
+ display: none;
450
+ }
451
+
452
+ .route-tabs button {
453
+ gap: 5px;
454
+ min-height: 30px;
455
+ padding: 4px 9px;
456
+ border: 0;
457
+ border-radius: 7px;
458
+ background: transparent;
459
+ color: #6a7488;
460
+ cursor: pointer;
461
+ white-space: nowrap;
462
+ transition: 140ms ease;
463
+ }
464
+
465
+ .route-tabs button:hover {
466
+ color: var(--ink);
467
+ background: rgb(255 255 255 / 70%);
468
+ }
469
+
470
+ .route-tabs button[aria-current="page"] {
471
+ background: #fff;
472
+ color: var(--accent);
473
+ box-shadow: 0 2px 8px rgb(38 52 82 / 10%);
474
+ }
475
+
476
+ .route-icon {
477
+ color: currentColor;
478
+ }
479
+
480
+ .actions button {
481
+ border: 1px solid transparent;
482
+ border-radius: 8px;
483
+ background: transparent;
484
+ color: #68748a;
485
+ cursor: pointer;
486
+ transition: 140ms ease;
487
+ }
488
+
489
+ .actions button:hover:not(:disabled) {
490
+ border-color: var(--line);
491
+ background: #fff;
492
+ color: var(--ink);
493
+ }
494
+
495
+ .actions button:disabled {
496
+ opacity: 0.35;
497
+ cursor: not-allowed;
498
+ }
499
+
500
+ .icon-button {
501
+ width: 32px;
502
+ height: 32px;
503
+ flex: 0 0 32px;
504
+ display: grid !important;
505
+ place-items: center;
506
+ font-size: 20px;
507
+ line-height: 1;
508
+ }
509
+
510
+ .icon-button:nth-of-type(5) {
511
+ color: #e36c7e;
512
+ }
513
+
514
+ .mode-button {
515
+ flex: 0 0 auto;
516
+ gap: 6px;
517
+ min-height: 32px;
518
+ padding: 0 11px;
519
+ border-color: #cbd4ff !important;
520
+ background: var(--accent-soft) !important;
521
+ color: #4d63dc !important;
522
+ font-size: 12px;
523
+ font-weight: 700;
524
+ }
525
+
526
+ .mode-button span:first-child {
527
+ font-size: 16px;
528
+ }
529
+
530
+ .preview-open-button {
531
+ min-height: 32px;
532
+ padding: 0 10px;
533
+ display: inline-flex;
534
+ align-items: center;
535
+ gap: 6px;
536
+ border: 1px solid #cbd4ff !important;
537
+ border-radius: 8px;
538
+ background: #fff !important;
539
+ color: #536df1 !important;
540
+ cursor: pointer;
541
+ font-size: 12px;
542
+ font-weight: 700;
543
+ white-space: nowrap;
544
+ }
545
+
546
+ .preview-open-button:hover {
547
+ background: var(--accent-soft) !important;
548
+ box-shadow: 0 5px 14px rgb(83 109 241 / 12%);
549
+ }
550
+
551
+ .workspace {
552
+ min-width: 0;
553
+ min-height: 0;
554
+ display: grid;
555
+ grid-template-columns: minmax(290px, 330px) minmax(0, 1fr) minmax(
556
+ 320px,
557
+ 400px
558
+ );
559
+ overflow: hidden;
560
+ }
561
+
562
+ .panel-scroll {
563
+ min-width: 0;
564
+ min-height: 0;
565
+ overflow: auto;
566
+ overscroll-behavior: contain;
567
+ scrollbar-gutter: stable;
568
+ scrollbar-width: thin;
569
+ }
570
+
571
+ .materials {
572
+ padding: 16px 16px 18px;
573
+ display: flex;
574
+ flex-direction: column;
575
+ align-items: stretch;
576
+ gap: 9px;
577
+ background: linear-gradient(
578
+ 180deg,
579
+ var(--panel) 0%,
580
+ color-mix(in srgb, var(--panel) 94%, var(--canvas)) 100%
581
+ );
582
+ border-right: 1px solid var(--line);
583
+ }
584
+
585
+ .panel-heading,
586
+ .inspector-heading {
587
+ min-width: 0;
588
+ display: flex;
589
+ align-items: flex-end;
590
+ justify-content: space-between;
591
+ gap: 8px;
592
+ }
593
+
594
+ .panel-heading {
595
+ padding: 0 3px 4px;
596
+ }
597
+
598
+ .materials .panel-heading .eyebrow {
599
+ display: none;
600
+ }
601
+
602
+ .materials .panel-heading h2 {
603
+ margin: 0;
604
+ font-size: 18px;
605
+ letter-spacing: -0.03em;
606
+ }
607
+
608
+ .panel-heading--breakpoint {
609
+ margin-top: 18px;
610
+ }
611
+
612
+ .eyebrow,
613
+ .stage-kicker {
614
+ display: block;
615
+ color: var(--muted);
616
+ font-size: 10px;
617
+ font-weight: 700;
618
+ letter-spacing: 0.12em;
619
+ text-transform: uppercase;
620
+ }
621
+
622
+ .panel-heading h2,
623
+ .inspector-heading h2 {
624
+ margin: 3px 0 0;
625
+ font-size: 14px;
626
+ line-height: 1.15;
627
+ }
628
+
629
+ .panel-count,
630
+ .breakpoint-icon,
631
+ .inspector-icon {
632
+ display: grid;
633
+ place-items: center;
634
+ width: 28px;
635
+ height: 28px;
636
+ border-radius: 9px;
637
+ background: var(--accent-soft);
638
+ color: var(--accent);
639
+ font-size: 11px;
640
+ font-weight: 700;
641
+ }
642
+
643
+ .material-toolbar {
644
+ position: relative;
645
+ z-index: 10;
646
+ display: grid;
647
+ gap: 6px;
648
+ padding-bottom: 4px;
649
+ margin: 0 0 2px;
650
+ border-bottom: 1px solid color-mix(in srgb, var(--line) 76%, transparent);
651
+ }
652
+
653
+ .material-search {
654
+ display: flex;
655
+ align-items: center;
656
+ gap: 7px;
657
+ min-height: 38px;
658
+ padding: 0 11px;
659
+ border: 1px solid var(--line);
660
+ border-radius: 11px;
661
+ background: color-mix(in srgb, var(--panel) 78%, #fff);
662
+ color: var(--muted);
663
+ }
664
+
665
+ .material-search:focus-within {
666
+ border-color: var(--accent);
667
+ box-shadow: 0 0 0 3px rgb(88 105 241 / 10%);
668
+ }
669
+
670
+ .material-search input {
671
+ width: 100%;
672
+ min-width: 0;
673
+ border: 0;
674
+ outline: 0;
675
+ background: transparent;
676
+ color: var(--ink);
677
+ font: inherit;
678
+ font-size: 11px;
679
+ }
680
+
681
+ .material-filter-row {
682
+ min-width: 0;
683
+ position: relative;
684
+ z-index: 20;
685
+ display: grid;
686
+ grid-template-columns: minmax(0, 1fr) 28px;
687
+ gap: 6px;
688
+ }
689
+
690
+ .material-select {
691
+ min-width: 0;
692
+ min-height: 34px;
693
+ position: relative;
694
+ display: flex;
695
+ align-items: center;
696
+ padding: 0;
697
+ border: 1px solid var(--line);
698
+ border-radius: 10px;
699
+ background: color-mix(in srgb, var(--panel) 78%, #eef2f8);
700
+ color: var(--muted);
701
+ }
702
+
703
+ .material-select:hover {
704
+ border-color: var(--accent);
705
+ color: var(--accent);
706
+ }
707
+
708
+ .material-select.is-open {
709
+ z-index: 30;
710
+ border-color: var(--accent);
711
+ background: var(--panel);
712
+ color: var(--ink);
713
+ box-shadow: 0 0 0 3px rgb(88 105 241 / 10%);
714
+ }
715
+
716
+ .material-select .custom-select__trigger {
717
+ width: 100%;
718
+ min-width: 0;
719
+ padding: 0 8px;
720
+ font-size: 10px;
721
+ }
722
+
723
+ .material-select .custom-select__trigger span {
724
+ overflow: hidden;
725
+ text-overflow: ellipsis;
726
+ white-space: nowrap;
727
+ }
728
+
729
+ .material-select .custom-select__menu {
730
+ min-width: max(100%, 180px);
731
+ max-width: min(260px, calc(100vw - 32px));
732
+ max-height: min(280px, calc(100vh - 180px));
733
+ overflow-y: auto;
734
+ }
735
+
736
+ .material-select:nth-child(2) .custom-select__menu {
737
+ right: 0;
738
+ left: auto;
739
+ }
740
+
741
+ .material-filter-reset {
742
+ width: 28px;
743
+ height: 30px;
744
+ display: grid;
745
+ place-items: center;
746
+ border: 1px solid var(--line);
747
+ border-radius: 8px;
748
+ background: transparent;
749
+ color: var(--muted);
750
+ cursor: pointer;
751
+ }
752
+
753
+ .material-filter-reset:hover {
754
+ border-color: var(--accent);
755
+ background: var(--accent-soft);
756
+ color: var(--accent);
757
+ }
758
+
759
+ .material-result-summary {
760
+ min-height: 16px;
761
+ display: flex;
762
+ align-items: center;
763
+ justify-content: space-between;
764
+ gap: 8px;
765
+ padding: 0 2px;
766
+ color: var(--muted);
767
+ font-size: 10px;
768
+ }
769
+
770
+ .material-result-summary span:last-child {
771
+ color: var(--accent);
772
+ }
773
+
774
+ .material-category-list {
775
+ display: flex;
776
+ gap: 5px;
777
+ overflow-x: auto;
778
+ padding-bottom: 2px;
779
+ scrollbar-width: none;
780
+ }
781
+
782
+ .material-category-list::-webkit-scrollbar {
783
+ display: none;
784
+ }
785
+
786
+ .material-category-button {
787
+ flex: 0 0 auto;
788
+ min-height: 25px;
789
+ padding: 0 9px;
790
+ border: 1px solid transparent;
791
+ border-radius: 7px;
792
+ background: transparent;
793
+ color: var(--muted);
794
+ cursor: pointer;
795
+ font: inherit;
796
+ font-size: 10px;
797
+ }
798
+
799
+ .material-category-button:hover,
800
+ .material-category-button.active {
801
+ border-color: rgb(88 105 241 / 18%);
802
+ background: var(--accent-soft);
803
+ color: var(--accent);
804
+ }
805
+
806
+ .material-empty {
807
+ min-height: 150px;
808
+ display: flex;
809
+ flex-direction: column;
810
+ align-items: center;
811
+ justify-content: center;
812
+ gap: 6px;
813
+ padding: 24px 12px;
814
+ border: 1px dashed var(--line-strong);
815
+ border-radius: 12px;
816
+ background: color-mix(in srgb, var(--panel) 76%, var(--canvas));
817
+ color: var(--muted);
818
+ font-size: 11px;
819
+ text-align: center;
820
+ }
821
+
822
+ .material-empty svg {
823
+ color: var(--accent);
824
+ }
825
+
826
+ .material-empty strong {
827
+ color: var(--ink);
828
+ font-size: 12px;
829
+ }
830
+
831
+ .material-empty span {
832
+ font-size: 10px;
833
+ }
834
+
835
+ .material-empty button {
836
+ min-height: 28px;
837
+ margin-top: 4px;
838
+ padding: 0 10px;
839
+ border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--line));
840
+ border-radius: 8px;
841
+ background: var(--accent-soft);
842
+ color: var(--accent);
843
+ cursor: pointer;
844
+ font: inherit;
845
+ font-size: 10px;
846
+ }
847
+
848
+ .material-empty button:hover {
849
+ background: color-mix(in srgb, var(--accent-soft) 72%, var(--accent));
850
+ }
851
+
852
+ .material-source {
853
+ min-height: 72px;
854
+ gap: 9px;
855
+ padding: 11px;
856
+ border: 1px solid var(--line);
857
+ border-radius: 12px;
858
+ background: #fff;
859
+ color: var(--ink);
860
+ text-align: left;
861
+ cursor: grab;
862
+ -webkit-user-select: none;
863
+ -moz-user-select: none;
864
+ user-select: none;
865
+ touch-action: none;
866
+ box-shadow: 0 4px 14px rgb(48 65 95 / 6%);
867
+ transition: 140ms ease;
868
+ }
869
+
870
+ .material-source {
871
+ display: grid;
872
+ grid-template-columns: 30px minmax(0, 1fr) auto auto;
873
+ align-items: center;
874
+ }
875
+
876
+ .material-source:hover {
877
+ border-color: #bcc6ff;
878
+ background: #fbfbff;
879
+ transform: translateY(-1px);
880
+ box-shadow: 0 8px 18px rgb(68 87 164 / 12%);
881
+ }
882
+
883
+ .material-source:active {
884
+ cursor: grabbing;
885
+ transform: translateY(0);
886
+ }
887
+
888
+ .material-source > span:nth-child(2) {
889
+ min-width: 0;
890
+ flex: 1;
891
+ }
892
+
893
+ .material-copy {
894
+ min-width: 0;
895
+ flex: 1;
896
+ }
897
+
898
+ .material-size {
899
+ flex: 0 0 auto;
900
+ align-self: flex-start;
901
+ padding: 3px 5px;
902
+ border-radius: 5px;
903
+ background: var(--accent-soft);
904
+ color: var(--accent);
905
+ font-size: 9px;
906
+ font-variant-numeric: tabular-nums;
907
+ }
908
+
909
+ .material-card-meta {
910
+ min-width: 0;
911
+ flex: 0 0 auto;
912
+ display: flex;
913
+ flex-direction: column;
914
+ align-items: flex-end;
915
+ gap: 5px;
916
+ }
917
+
918
+ .material-renderer-badges {
919
+ display: flex;
920
+ align-items: center;
921
+ gap: 3px;
922
+ }
923
+
924
+ .material-renderer-badge {
925
+ display: inline-flex;
926
+ align-items: center;
927
+ gap: 3px;
928
+ padding: 2px 4px;
929
+ border-radius: 5px;
930
+ background: #edf5ff;
931
+ color: #4381d9;
932
+ font-size: 8px;
933
+ line-height: 1;
934
+ white-space: nowrap;
935
+ }
936
+
937
+ .material-renderer-badge--vue {
938
+ background: #eaf8f1;
939
+ color: #3f9a74;
940
+ }
941
+
942
+ .material-source strong,
943
+ .material-source small {
944
+ display: block;
945
+ }
946
+
947
+ .material-source strong {
948
+ font-size: 12px;
949
+ }
950
+
951
+ .material-source small {
952
+ margin-top: 3px;
953
+ color: var(--muted);
954
+ font-size: 10px;
955
+ }
956
+
957
+ .material-icon {
958
+ width: 30px;
959
+ height: 30px;
960
+ display: grid;
961
+ place-items: center;
962
+ flex: 0 0 auto;
963
+ border-radius: 8px;
964
+ }
965
+
966
+ .material-icon--metric {
967
+ background: #edf5ff;
968
+ color: #4381d9;
969
+ }
970
+
971
+ .material-icon--chart {
972
+ background: #f2eeff;
973
+ color: #8167dd;
974
+ }
975
+
976
+ .material-add {
977
+ display: grid;
978
+ place-items: center;
979
+ color: #a1abc0;
980
+ }
981
+
982
+ .breakpoint-button {
983
+ min-height: 42px;
984
+ gap: 9px;
985
+ padding: 8px 9px;
986
+ border: 1px solid transparent;
987
+ border-radius: 9px;
988
+ background: transparent;
989
+ color: #69758b;
990
+ text-align: left;
991
+ cursor: pointer;
992
+ }
993
+
994
+ .breakpoint-button:hover {
995
+ background: #f6f8fc;
996
+ color: var(--ink);
997
+ }
998
+
999
+ .breakpoint-button[aria-pressed="true"] {
1000
+ border-color: #ccd4ff;
1001
+ background: var(--accent-soft);
1002
+ color: #4d63dc;
1003
+ }
1004
+
1005
+ .breakpoint-button span:nth-child(2) {
1006
+ flex: 1;
1007
+ font-size: 12px;
1008
+ font-weight: 700;
1009
+ }
1010
+
1011
+ .breakpoint-button small {
1012
+ color: #a0a9b9;
1013
+ font-size: 10px;
1014
+ }
1015
+
1016
+ .breakpoint-dot {
1017
+ width: 7px;
1018
+ height: 7px;
1019
+ border-radius: 50%;
1020
+ background: #c8d0dc;
1021
+ }
1022
+
1023
+ .breakpoint-button[aria-pressed="true"] .breakpoint-dot {
1024
+ background: var(--accent);
1025
+ box-shadow: 0 0 0 4px rgb(83 109 241 / 14%);
1026
+ }
1027
+
1028
+ .panel-tip {
1029
+ margin-top: auto;
1030
+ padding: 10px;
1031
+ display: flex;
1032
+ gap: 7px;
1033
+ align-items: flex-start;
1034
+ border-radius: 9px;
1035
+ background: #f7f8fb;
1036
+ color: #8993a5;
1037
+ font-size: 10px;
1038
+ line-height: 1.55;
1039
+ }
1040
+
1041
+ .panel-tip > svg {
1042
+ color: var(--accent);
1043
+ }
1044
+
1045
+ .canvas {
1046
+ position: relative;
1047
+ padding: 20px;
1048
+ display: flex;
1049
+ flex-direction: column;
1050
+ gap: 10px;
1051
+ background-color: var(--checker-a);
1052
+ background-image:
1053
+ linear-gradient(45deg, var(--checker-b) 25%, transparent 25%),
1054
+ linear-gradient(-45deg, var(--checker-b) 25%, transparent 25%),
1055
+ linear-gradient(45deg, transparent 75%, var(--checker-b) 75%),
1056
+ linear-gradient(-45deg, transparent 75%, var(--checker-b) 75%);
1057
+ background-size: 32px 32px;
1058
+ background-position:
1059
+ 0 0,
1060
+ 0 16px,
1061
+ 16px -16px,
1062
+ -16px 0;
1063
+ }
1064
+
1065
+ .canvas-toolbar {
1066
+ position: sticky;
1067
+ top: 0;
1068
+ z-index: 30;
1069
+ align-self: stretch;
1070
+ width: 100%;
1071
+ min-height: 38px;
1072
+ padding: 4px;
1073
+ display: flex;
1074
+ align-items: center;
1075
+ justify-content: flex-end;
1076
+ gap: 3px;
1077
+ border: 0;
1078
+ background: transparent;
1079
+ box-shadow: none;
1080
+ pointer-events: none;
1081
+ }
1082
+
1083
+ .canvas-toolbar > * {
1084
+ pointer-events: auto;
1085
+ }
1086
+
1087
+ .canvas-device-control {
1088
+ position: absolute;
1089
+ z-index: 35;
1090
+ left: 0;
1091
+ top: 4px;
1092
+ min-height: 34px;
1093
+ padding: 0;
1094
+ border: 1px solid rgb(198 208 225 / 78%);
1095
+ border-radius: 10px;
1096
+ background: var(--topbar);
1097
+ box-shadow:
1098
+ 0 8px 22px rgb(67 84 122 / 12%),
1099
+ inset 0 1px 0 rgb(255 255 255 / 80%);
1100
+ backdrop-filter: blur(12px);
1101
+ }
1102
+
1103
+ .canvas-device-control:hover,
1104
+ .canvas-device-control.is-open {
1105
+ border-color: var(--line-strong);
1106
+ background: var(--panel);
1107
+ color: var(--ink);
1108
+ }
1109
+
1110
+ .canvas-device-control .custom-select__trigger {
1111
+ min-width: 112px;
1112
+ }
1113
+
1114
+ .canvas-device-control .custom-select__menu {
1115
+ top: calc(100% + 7px);
1116
+ left: 0;
1117
+ }
1118
+
1119
+ .canvas-device-control + .orientation-button {
1120
+ position: absolute;
1121
+ z-index: 35;
1122
+ top: 4px;
1123
+ left: 120px;
1124
+ border: 1px solid rgb(198 208 225 / 78%);
1125
+ background: var(--topbar);
1126
+ box-shadow:
1127
+ 0 8px 22px rgb(67 84 122 / 12%),
1128
+ inset 0 1px 0 rgb(255 255 255 / 80%);
1129
+ backdrop-filter: blur(12px);
1130
+ }
1131
+
1132
+ .canvas-device-control + .orientation-button + .canvas-toolbar__divider {
1133
+ display: none;
1134
+ }
1135
+
1136
+ .canvas-toolbar__group {
1137
+ display: flex;
1138
+ align-items: center;
1139
+ gap: 2px;
1140
+ }
1141
+
1142
+ .canvas-toolbar__divider {
1143
+ width: 1px;
1144
+ height: 20px;
1145
+ margin: 0 3px;
1146
+ background: var(--line);
1147
+ }
1148
+
1149
+ .canvas-tool-button {
1150
+ width: 29px;
1151
+ height: 29px;
1152
+ display: grid;
1153
+ place-items: center;
1154
+ border: 0;
1155
+ border-radius: 8px;
1156
+ background: transparent;
1157
+ color: #7a879d;
1158
+ cursor: pointer;
1159
+ transition:
1160
+ background 140ms ease,
1161
+ color 140ms ease,
1162
+ transform 140ms ease;
1163
+ }
1164
+
1165
+ .canvas-tool-button:hover {
1166
+ background: #f0f3ff;
1167
+ color: var(--accent);
1168
+ }
1169
+
1170
+ .canvas-tool-button:active {
1171
+ transform: scale(0.94);
1172
+ }
1173
+
1174
+ .canvas-tool-button.active {
1175
+ background: var(--accent-soft);
1176
+ color: var(--accent);
1177
+ box-shadow: inset 0 0 0 1px rgb(83 109 241 / 12%);
1178
+ }
1179
+
1180
+ .canvas-zoom-label {
1181
+ min-width: 42px;
1182
+ color: #5f6d84;
1183
+ font-size: 11px;
1184
+ font-variant-numeric: tabular-nums;
1185
+ font-weight: 700;
1186
+ text-align: center;
1187
+ }
1188
+
1189
+ .canvas-viewport {
1190
+ position: relative;
1191
+ flex: 0 0 auto;
1192
+ min-width: 0;
1193
+ min-height: 620px;
1194
+ overflow: visible;
1195
+ border-radius: 16px;
1196
+ touch-action: none;
1197
+ cursor: default;
1198
+ }
1199
+
1200
+ .canvas-viewport.is-pan-tool {
1201
+ cursor: grab;
1202
+ }
1203
+
1204
+ .canvas-viewport.is-panning {
1205
+ cursor: grabbing;
1206
+ }
1207
+
1208
+ .canvas-scene {
1209
+ width: 100%;
1210
+ min-width: 0;
1211
+ transform-origin: 0 0;
1212
+ will-change: transform;
1213
+ }
1214
+
1215
+ .editor-stage,
1216
+ .preview-stage,
1217
+ .runtime-preview-stage,
1218
+ .vanilla-runtime-stage {
1219
+ flex: 0 0 auto;
1220
+ min-width: 0;
1221
+ min-height: 620px;
1222
+ display: flex;
1223
+ flex-direction: column;
1224
+ height: auto;
1225
+ overflow: visible;
1226
+ border: 1px solid var(--line);
1227
+ border-radius: 14px;
1228
+ background: var(--stage);
1229
+ box-shadow: var(--shadow);
1230
+ }
1231
+
1232
+ .editor-stage::before,
1233
+ .preview-stage::before,
1234
+ .runtime-preview-stage::before,
1235
+ .vanilla-runtime-stage::before {
1236
+ content: "";
1237
+ height: 3px;
1238
+ flex: 0 0 3px;
1239
+ background: linear-gradient(90deg, #5b73f2, #9c83ff 55%, #74cbb1);
1240
+ }
1241
+
1242
+ .stage-header {
1243
+ min-height: 62px;
1244
+ padding: 13px 16px;
1245
+ display: flex;
1246
+ align-items: center;
1247
+ justify-content: space-between;
1248
+ gap: 12px;
1249
+ border-bottom: 1px solid var(--line);
1250
+ background: var(--stage-header);
1251
+ }
1252
+
1253
+ .stage-header h2 {
1254
+ margin: 4px 0 0;
1255
+ font-size: 15px;
1256
+ line-height: 1.15;
1257
+ }
1258
+
1259
+ .stage-kicker {
1260
+ color: var(--muted);
1261
+ font-size: 10px;
1262
+ font-weight: 700;
1263
+ }
1264
+
1265
+ .stage-badge {
1266
+ display: inline-flex;
1267
+ align-items: center;
1268
+ gap: 6px;
1269
+ padding: 5px 8px;
1270
+ border: 1px solid var(--line);
1271
+ border-radius: 999px;
1272
+ background: var(--panel);
1273
+ color: var(--muted);
1274
+ font-size: 10px;
1275
+ white-space: nowrap;
1276
+ }
1277
+
1278
+ .stage-badge i {
1279
+ width: 6px;
1280
+ height: 6px;
1281
+ border-radius: 50%;
1282
+ background: #62c49c;
1283
+ box-shadow: 0 0 0 3px rgb(98 196 156 / 15%);
1284
+ }
1285
+
1286
+ .layout-editor-grid,
1287
+ .ldesign-layout-grid,
1288
+ .runtime-preview-grid {
1289
+ flex: 0 0 auto;
1290
+ min-width: 0;
1291
+ min-height: 558px;
1292
+ padding: 16px;
1293
+ position: relative;
1294
+ isolation: isolate;
1295
+ background: var(--stage);
1296
+ --gs-cell-height: 8px;
1297
+ --gs-item-margin-top: 16px !important;
1298
+ --gs-item-margin-bottom: 0px !important;
1299
+ --gs-item-margin-left: 16px !important;
1300
+ --gs-item-margin-right: 0px !important;
1301
+ }
1302
+
1303
+ .layout-editor-grid.gs-12 {
1304
+ --gs-column-width: calc((100% - 16px) / 12) !important;
1305
+ }
1306
+
1307
+ .layout-editor-grid.gs-8 {
1308
+ --gs-column-width: calc((100% - 16px) / 8) !important;
1309
+ --gs-item-margin-bottom: -4px !important;
1310
+ }
1311
+
1312
+ .layout-editor-grid.gs-4 {
1313
+ --gs-column-width: calc((100% - 16px) / 4) !important;
1314
+ --gs-item-margin-bottom: -8px !important;
1315
+ }
1316
+
1317
+ .layout-editor-grid .grid-stack-item-content {
1318
+ padding: 0;
1319
+ overflow: hidden;
1320
+ border: 0;
1321
+ border-radius: 12px;
1322
+ background: transparent;
1323
+ color: var(--ink);
1324
+ cursor: grab;
1325
+ }
1326
+
1327
+ .layout-editor-grid .grid-stack-item-content:active,
1328
+ .layout-editor-grid.grid-stack-dragging .grid-stack-item-content,
1329
+ .layout-editor-grid .ui-draggable-dragging .grid-stack-item-content {
1330
+ cursor: grabbing;
1331
+ }
1332
+
1333
+ .layout-editor-grid .ui-draggable-dragging,
1334
+ .layout-editor-grid .grid-stack-item.ui-draggable-dragging,
1335
+ .layout-editor-grid .grid-stack-item.ui-resizable-resizing {
1336
+ transition: none !important;
1337
+ will-change: left, top, width, height;
1338
+ }
1339
+
1340
+ body > .ui-draggable-dragging[data-layout-material] {
1341
+ transition: none !important;
1342
+ animation: none !important;
1343
+ will-change: left, top;
1344
+ }
1345
+
1346
+ .layout-editor-grid .grid-stack-placeholder > .placeholder-content {
1347
+ border: 1px dashed rgb(83 109 241 / 58%);
1348
+ border-radius: 12px;
1349
+ background: rgb(83 109 241 / 10%);
1350
+ box-shadow: inset 0 0 0 1px rgb(255 255 255 / 45%);
1351
+ }
1352
+
1353
+ .layout-editor-grid::after {
1354
+ content: "拖入物料开始布局";
1355
+ inset: 50% auto auto 50%;
1356
+ z-index: -1;
1357
+ transform: translate(-50%, -50%);
1358
+ color: #a8b2c5;
1359
+ font-size: 12px;
1360
+ letter-spacing: 0.08em;
1361
+ pointer-events: none;
1362
+ }
1363
+
1364
+ .layout-editor-grid:has(.grid-stack-item)::after {
1365
+ opacity: 0;
1366
+ }
1367
+
1368
+ .layout-editor-grid .grid-stack-item.is-selected .grid-stack-item-content {
1369
+ outline: 2px solid var(--accent);
1370
+ outline-offset: -2px;
1371
+ border-radius: 12px;
1372
+ }
1373
+
1374
+ .layout-editor-grid .grid-stack-item:focus-visible .grid-stack-item-content {
1375
+ outline: 2px solid #12a594;
1376
+ outline-offset: -4px;
1377
+ }
1378
+
1379
+ .ldesign-layout-grid {
1380
+ flex: 1 0 auto;
1381
+ min-height: max(180px, min(558px, var(--canvas-grid-height, 558px)));
1382
+ }
1383
+
1384
+ .runtime-preview-grid {
1385
+ flex: 1 0 auto;
1386
+ }
1387
+
1388
+ .layout-item-shell,
1389
+ .layout-card {
1390
+ position: relative;
1391
+ width: 100%;
1392
+ height: 100%;
1393
+ min-width: 0;
1394
+ min-height: 0;
1395
+ }
1396
+
1397
+ .layout-item-shell {
1398
+ display: block;
1399
+ padding: 0;
1400
+ overflow: hidden;
1401
+ border: 0;
1402
+ background: transparent;
1403
+ color: inherit;
1404
+ }
1405
+
1406
+ .layout-item-shell--interactive {
1407
+ cursor: pointer;
1408
+ }
1409
+
1410
+ .layout-card {
1411
+ min-height: 84px;
1412
+ padding: 14px;
1413
+ display: flex;
1414
+ flex-direction: column;
1415
+ overflow: hidden;
1416
+ border: 1px solid var(--card-line);
1417
+ border-radius: 12px;
1418
+ background:
1419
+ linear-gradient(145deg, rgb(255 255 255 / 98%), rgb(248 249 255 / 94%)),
1420
+ var(--card);
1421
+ color: var(--ink);
1422
+ box-shadow:
1423
+ 0 10px 24px rgb(71 86 132 / 9%),
1424
+ inset 0 1px 0 rgb(255 255 255 / 80%);
1425
+ transition:
1426
+ border-color 160ms ease,
1427
+ box-shadow 160ms ease,
1428
+ transform 160ms ease;
1429
+ }
1430
+
1431
+ .layout-card__actions {
1432
+ position: absolute;
1433
+ z-index: 2;
1434
+ top: 9px;
1435
+ right: 9px;
1436
+ display: flex;
1437
+ align-items: center;
1438
+ gap: 3px;
1439
+ opacity: 0;
1440
+ transform: translateY(-3px);
1441
+ pointer-events: none;
1442
+ transition:
1443
+ opacity 140ms ease,
1444
+ transform 140ms ease;
1445
+ isolation: isolate;
1446
+ }
1447
+
1448
+ .layout-editor-grid .grid-stack-item:hover .layout-card__actions,
1449
+ .layout-editor-grid .grid-stack-item.is-selected .layout-card__actions {
1450
+ opacity: 1;
1451
+ transform: translateY(0);
1452
+ pointer-events: auto;
1453
+ }
1454
+
1455
+ .layout-card__action {
1456
+ position: relative;
1457
+ z-index: 3;
1458
+ width: 24px;
1459
+ height: 24px;
1460
+ display: grid;
1461
+ place-items: center;
1462
+ padding: 0;
1463
+ border: 1px solid var(--line);
1464
+ border-radius: 7px;
1465
+ background: color-mix(in srgb, var(--panel) 94%, transparent);
1466
+ color: var(--muted);
1467
+ cursor: pointer;
1468
+ pointer-events: auto;
1469
+ box-shadow: 0 3px 8px rgb(37 53 91 / 10%);
1470
+ transition:
1471
+ color 140ms ease,
1472
+ border-color 140ms ease,
1473
+ background 140ms ease,
1474
+ transform 140ms ease;
1475
+ }
1476
+
1477
+ .layout-card__action:hover {
1478
+ border-color: #9aa9ff;
1479
+ background: var(--accent-soft);
1480
+ color: var(--accent);
1481
+ transform: translateY(-1px);
1482
+ }
1483
+
1484
+ .layout-card__meta,
1485
+ .layout-card__footer {
1486
+ display: flex;
1487
+ align-items: center;
1488
+ justify-content: space-between;
1489
+ gap: 8px;
1490
+ }
1491
+
1492
+ .layout-card__meta {
1493
+ color: #8590a5;
1494
+ font-size: 10px;
1495
+ }
1496
+
1497
+ .layout-card__type {
1498
+ color: var(--accent);
1499
+ font-weight: 700;
1500
+ }
1501
+
1502
+ .layout-card__status {
1503
+ padding: 2px 5px;
1504
+ border-radius: 4px;
1505
+ background: #edf8f3;
1506
+ color: #4aaf84;
1507
+ white-space: nowrap;
1508
+ }
1509
+
1510
+ .layout-card__title {
1511
+ margin: 10px 0 7px;
1512
+ overflow: hidden;
1513
+ color: #273249;
1514
+ font-size: 13px;
1515
+ font-weight: 700;
1516
+ line-height: 1.35;
1517
+ text-overflow: ellipsis;
1518
+ white-space: nowrap;
1519
+ }
1520
+
1521
+ .layout-card__value {
1522
+ display: block;
1523
+ color: #25345a;
1524
+ font-size: clamp(20px, 2.2vw, 30px);
1525
+ line-height: 1;
1526
+ letter-spacing: -0.04em;
1527
+ }
1528
+
1529
+ .layout-card__chart {
1530
+ height: 36px;
1531
+ display: flex;
1532
+ align-items: flex-end;
1533
+ gap: 5px;
1534
+ padding: 0 3px;
1535
+ }
1536
+
1537
+ .layout-card__chart i {
1538
+ width: 100%;
1539
+ border-radius: 4px 4px 1px 1px;
1540
+ background: linear-gradient(180deg, #8b9cff, #5e72ed);
1541
+ }
1542
+
1543
+ .layout-card__chart i:nth-child(1) {
1544
+ height: 38%;
1545
+ }
1546
+ .layout-card__chart i:nth-child(2) {
1547
+ height: 62%;
1548
+ }
1549
+ .layout-card__chart i:nth-child(3) {
1550
+ height: 48%;
1551
+ }
1552
+ .layout-card__chart i:nth-child(4) {
1553
+ height: 82%;
1554
+ }
1555
+ .layout-card__chart i:nth-child(5) {
1556
+ height: 100%;
1557
+ }
1558
+
1559
+ .layout-card__footer {
1560
+ margin-top: auto;
1561
+ padding-top: 12px;
1562
+ color: #9aa3b4;
1563
+ font-size: 10px;
1564
+ }
1565
+
1566
+ .layout-card__spark {
1567
+ color: #56b78e;
1568
+ font-size: 15px;
1569
+ font-weight: 700;
1570
+ }
1571
+
1572
+ .widget.selected .layout-card,
1573
+ .layout-item-shell[aria-pressed="true"] .layout-card {
1574
+ border-color: #8392f6;
1575
+ box-shadow:
1576
+ 0 0 0 2px rgb(83 109 241 / 18%),
1577
+ 0 10px 22px rgb(71 86 132 / 12%);
1578
+ }
1579
+
1580
+ .layout-editor-grid .grid-stack-item:hover .layout-card,
1581
+ .layout-item-shell--interactive:hover .layout-card {
1582
+ border-color: #aab6f7;
1583
+ box-shadow:
1584
+ 0 0 0 2px rgb(83 109 241 / 12%),
1585
+ 0 14px 28px rgb(71 86 132 / 14%);
1586
+ }
1587
+
1588
+ .inspectors {
1589
+ padding: 18px 14px;
1590
+ display: flex;
1591
+ flex-direction: column;
1592
+ gap: 12px;
1593
+ background: var(--panel);
1594
+ color: var(--ink);
1595
+ border-left: 1px solid var(--line);
1596
+ overflow: auto;
1597
+ }
1598
+
1599
+ .inspector-heading {
1600
+ align-items: center;
1601
+ padding: 2px 3px 0;
1602
+ flex: 0 0 auto;
1603
+ }
1604
+
1605
+ .inspector-heading > div:first-child {
1606
+ min-width: 0;
1607
+ flex: 1;
1608
+ }
1609
+
1610
+ .inspector-heading h2 {
1611
+ color: var(--ink);
1612
+ }
1613
+
1614
+ .inspector-heading .eyebrow {
1615
+ color: var(--muted);
1616
+ }
1617
+
1618
+ .inspector-icon {
1619
+ background: var(--accent-soft);
1620
+ color: var(--accent);
1621
+ font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
1622
+ }
1623
+
1624
+ .copy-code-button {
1625
+ width: 30px;
1626
+ height: 30px;
1627
+ display: grid;
1628
+ place-items: center;
1629
+ border: 1px solid var(--line);
1630
+ border-radius: 8px;
1631
+ background: var(--accent-soft);
1632
+ color: var(--accent);
1633
+ cursor: pointer;
1634
+ transition: 140ms ease;
1635
+ }
1636
+
1637
+ .copy-code-button:hover {
1638
+ border-color: color-mix(in srgb, var(--accent) 45%, var(--line));
1639
+ background: color-mix(in srgb, var(--accent-soft) 72%, #fff);
1640
+ color: var(--accent);
1641
+ }
1642
+
1643
+ .download-code-button {
1644
+ width: 30px;
1645
+ height: 30px;
1646
+ display: grid;
1647
+ place-items: center;
1648
+ border: 1px solid var(--line);
1649
+ border-radius: 8px;
1650
+ background: var(--accent-soft);
1651
+ color: var(--accent);
1652
+ cursor: pointer;
1653
+ transition: 140ms ease;
1654
+ }
1655
+
1656
+ .download-code-button:hover {
1657
+ border-color: color-mix(in srgb, var(--accent) 45%, var(--line));
1658
+ background: color-mix(in srgb, var(--accent-soft) 72%, #fff);
1659
+ color: var(--accent);
1660
+ }
1661
+
1662
+ .code-block {
1663
+ min-height: 0;
1664
+ height: 0;
1665
+ flex: 1 1 0;
1666
+ margin: 0;
1667
+ padding: 12px;
1668
+ overflow: auto;
1669
+ border: 1px solid var(--line);
1670
+ border-radius: 9px;
1671
+ background: #f7f9fc;
1672
+ color: #263653;
1673
+ font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
1674
+ font-size: 11px;
1675
+ line-height: 1.65;
1676
+ -moz-tab-size: 2;
1677
+ -o-tab-size: 2;
1678
+ tab-size: 2;
1679
+ white-space: pre;
1680
+ scrollbar-width: thin;
1681
+ }
1682
+
1683
+ .code-block code {
1684
+ display: block;
1685
+ min-width: -moz-max-content;
1686
+ min-width: max-content;
1687
+ color: inherit;
1688
+ }
1689
+
1690
+ .code-token-comment {
1691
+ color: #8b96a8;
1692
+ font-style: italic;
1693
+ }
1694
+
1695
+ .code-token-tag,
1696
+ .code-token-keyword {
1697
+ color: #7257d8;
1698
+ }
1699
+
1700
+ .code-token-attribute,
1701
+ .code-token-property {
1702
+ color: #197d9a;
1703
+ }
1704
+
1705
+ .code-token-string {
1706
+ color: #b05b2b;
1707
+ }
1708
+
1709
+ .code-token-number,
1710
+ .code-token-constant {
1711
+ color: #b43d78;
1712
+ }
1713
+
1714
+ .code-status {
1715
+ display: flex;
1716
+ align-items: center;
1717
+ gap: 7px;
1718
+ padding: 0 3px 2px;
1719
+ flex: 0 0 auto;
1720
+ color: var(--muted);
1721
+ font-size: 10px;
1722
+ line-height: 1.4;
1723
+ }
1724
+
1725
+ .material-card-actions {
1726
+ display: inline-flex;
1727
+ align-items: center;
1728
+ gap: 3px;
1729
+ justify-self: end;
1730
+ }
1731
+
1732
+ .material-code-button {
1733
+ width: 25px;
1734
+ height: 25px;
1735
+ display: grid;
1736
+ place-items: center;
1737
+ padding: 0;
1738
+ border: 1px solid transparent;
1739
+ border-radius: 7px;
1740
+ background: transparent;
1741
+ color: var(--muted);
1742
+ cursor: pointer;
1743
+ transition: 140ms ease;
1744
+ }
1745
+
1746
+ .material-code-button:hover,
1747
+ .material-code-button:focus-visible {
1748
+ border-color: color-mix(in srgb, var(--accent) 28%, var(--line));
1749
+ background: var(--accent-soft);
1750
+ color: var(--accent);
1751
+ outline: none;
1752
+ }
1753
+
1754
+ .code-status__dot {
1755
+ width: 6px;
1756
+ height: 6px;
1757
+ flex: 0 0 6px;
1758
+ border-radius: 50%;
1759
+ background: #60c99b;
1760
+ box-shadow: 0 0 0 3px rgb(96 201 155 / 14%);
1761
+ }
1762
+
1763
+ .preview-dialog {
1764
+ --ink: #172033;
1765
+ --muted: #768198;
1766
+ --line: #dce3ed;
1767
+ --panel: #fff;
1768
+ --canvas: #f5f7fb;
1769
+ --stage: #fff;
1770
+ --card: #fff;
1771
+ --card-line: #d8def0;
1772
+ --accent: #536df1;
1773
+ --accent-soft: #eef0ff;
1774
+ position: fixed;
1775
+ inset: 0;
1776
+ z-index: 100;
1777
+ display: grid;
1778
+ place-items: center;
1779
+ padding: 28px;
1780
+ color: var(--ink);
1781
+ }
1782
+
1783
+ .preview-dialog-enter-active,
1784
+ .preview-dialog-leave-active {
1785
+ transition: opacity 180ms ease;
1786
+ }
1787
+
1788
+ .preview-dialog-enter-active .preview-dialog__panel,
1789
+ .preview-dialog-leave-active .preview-dialog__panel {
1790
+ transition:
1791
+ transform 220ms cubic-bezier(0.22, 1, 0.36, 1),
1792
+ opacity 180ms ease;
1793
+ }
1794
+
1795
+ .preview-dialog-enter-from,
1796
+ .preview-dialog-leave-to {
1797
+ opacity: 0;
1798
+ }
1799
+
1800
+ .preview-dialog-enter-from .preview-dialog__panel,
1801
+ .preview-dialog-leave-to .preview-dialog__panel {
1802
+ opacity: 0;
1803
+ transform: translateY(14px) scale(0.975);
1804
+ }
1805
+
1806
+ .preview-dialog__backdrop {
1807
+ position: absolute;
1808
+ inset: 0;
1809
+ border: 0;
1810
+ background: rgb(20 31 51 / 42%);
1811
+ cursor: default;
1812
+ backdrop-filter: blur(6px);
1813
+ }
1814
+
1815
+ .preview-dialog__panel {
1816
+ position: relative;
1817
+ z-index: 1;
1818
+ width: min(1080px, 100%);
1819
+ max-height: min(820px, calc(100vh - 56px));
1820
+ display: flex;
1821
+ flex-direction: column;
1822
+ overflow: hidden;
1823
+ border: 1px solid var(--line);
1824
+ border-radius: 18px;
1825
+ background: var(--panel);
1826
+ box-shadow: 0 28px 80px rgb(31 46 78 / 26%);
1827
+ }
1828
+
1829
+ .preview-dialog__header,
1830
+ .preview-dialog__footer {
1831
+ flex: 0 0 auto;
1832
+ display: flex;
1833
+ align-items: center;
1834
+ justify-content: space-between;
1835
+ gap: 16px;
1836
+ padding: 15px 18px;
1837
+ border-bottom: 1px solid var(--line);
1838
+ }
1839
+
1840
+ .preview-dialog__header h2 {
1841
+ margin: 4px 0 0;
1842
+ font-size: 17px;
1843
+ }
1844
+
1845
+ .preview-dialog__header-meta {
1846
+ display: flex;
1847
+ align-items: center;
1848
+ gap: 8px;
1849
+ }
1850
+
1851
+ .preview-dialog__header .icon-button {
1852
+ width: 32px;
1853
+ height: 32px;
1854
+ display: grid;
1855
+ place-items: center;
1856
+ border: 1px solid var(--line);
1857
+ border-radius: 9px;
1858
+ background: var(--panel);
1859
+ color: var(--muted);
1860
+ cursor: pointer;
1861
+ transition: 140ms ease;
1862
+ }
1863
+
1864
+ .preview-dialog__header .icon-button:hover {
1865
+ border-color: var(--accent);
1866
+ background: var(--accent-soft);
1867
+ color: var(--accent);
1868
+ transform: rotate(6deg);
1869
+ }
1870
+
1871
+ .preview-dialog__body {
1872
+ min-height: 0;
1873
+ flex: 1 1 auto;
1874
+ overflow: auto;
1875
+ padding: 18px;
1876
+ background: var(--canvas);
1877
+ }
1878
+
1879
+ .preview-dialog__canvas {
1880
+ min-height: 520px;
1881
+ padding: 18px;
1882
+ border: 1px solid var(--line);
1883
+ border-radius: 14px;
1884
+ background: var(--stage);
1885
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 70%);
1886
+ }
1887
+
1888
+ .preview-dialog__canvas .ldesign-layout-grid {
1889
+ min-height: 480px;
1890
+ padding: 0;
1891
+ background: transparent;
1892
+ }
1893
+
1894
+ .preview-dialog__card {
1895
+ height: 100%;
1896
+ }
1897
+
1898
+ .preview-dialog__footer {
1899
+ border-top: 1px solid var(--line);
1900
+ border-bottom: 0;
1901
+ color: var(--muted);
1902
+ font-size: 11px;
1903
+ }
1904
+
1905
+ .preview-dialog__close-button {
1906
+ min-height: 32px;
1907
+ padding: 0 12px;
1908
+ border: 1px solid var(--line);
1909
+ border-radius: 8px;
1910
+ background: var(--accent-soft);
1911
+ color: var(--accent);
1912
+ cursor: pointer;
1913
+ font-size: 11px;
1914
+ font-weight: 700;
1915
+ }
1916
+
1917
+ .preview-dialog__close-button:hover {
1918
+ border-color: var(--accent);
1919
+ }
1920
+
1921
+ .material-code-dialog__panel {
1922
+ width: min(820px, 100%);
1923
+ }
1924
+
1925
+ .material-code-dialog__subtitle {
1926
+ margin: 5px 0 0;
1927
+ color: var(--muted);
1928
+ font-size: 11px;
1929
+ }
1930
+
1931
+ .material-code-dialog__body {
1932
+ min-height: 0;
1933
+ padding: 16px;
1934
+ }
1935
+
1936
+ .material-code-dialog__code {
1937
+ min-height: 360px;
1938
+ max-height: min(560px, calc(100vh - 250px));
1939
+ margin: 0;
1940
+ border: 1px solid var(--line);
1941
+ border-radius: 12px;
1942
+ background: color-mix(in srgb, var(--stage) 82%, var(--canvas));
1943
+ }
1944
+
1945
+ .material-code-dialog__actions {
1946
+ display: inline-flex;
1947
+ align-items: center;
1948
+ gap: 8px;
1949
+ }
1950
+
1951
+ .material-code-dialog__actions .copy-code-button {
1952
+ width: 32px;
1953
+ height: 32px;
1954
+ display: grid;
1955
+ place-items: center;
1956
+ padding: 0;
1957
+ border: 1px solid var(--line);
1958
+ border-radius: 8px;
1959
+ background: var(--panel);
1960
+ color: var(--muted);
1961
+ cursor: pointer;
1962
+ }
1963
+
1964
+ .material-code-dialog__actions .copy-code-button:hover {
1965
+ border-color: var(--accent);
1966
+ background: var(--accent-soft);
1967
+ color: var(--accent);
1968
+ }
1969
+
1970
+ .preview-dialog[data-theme="dark"] {
1971
+ --ink: #edf2ff;
1972
+ --muted: #95a3be;
1973
+ --line: #34405a;
1974
+ --panel: #192238;
1975
+ --canvas: #121a2d;
1976
+ --stage: #202b43;
1977
+ --card: #1d2940;
1978
+ --card-line: #405071;
1979
+ --accent: #8ea2ff;
1980
+ --accent-soft: #293762;
1981
+ }
1982
+
1983
+ .preview-dialog[data-theme="dark"] .preview-dialog__backdrop {
1984
+ background: rgb(4 8 18 / 64%);
1985
+ }
1986
+
1987
+ .preview-dialog[data-theme="dark"] .preview-dialog__canvas {
1988
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 4%);
1989
+ }
1990
+
1991
+ .preview-dialog[data-theme="dark"] .layout-card {
1992
+ background:
1993
+ linear-gradient(145deg, rgb(39 53 80 / 98%), rgb(29 41 64 / 96%)),
1994
+ var(--card);
1995
+ box-shadow:
1996
+ 0 10px 24px rgb(2 8 22 / 30%),
1997
+ inset 0 1px 0 rgb(255 255 255 / 5%);
1998
+ }
1999
+
2000
+ .preview-dialog[data-theme="dark"] .layout-card__title {
2001
+ color: #edf2ff;
2002
+ }
2003
+
2004
+ .preview-dialog[data-theme="dark"] .layout-card__value {
2005
+ color: #dbe4ff;
2006
+ }
2007
+
2008
+ .preview-dialog[data-theme="dark"] .layout-card__meta,
2009
+ .preview-dialog[data-theme="dark"] .layout-card__footer {
2010
+ color: #a8b6d0;
2011
+ }
2012
+
2013
+ @media (max-width: 1080px) {
2014
+ .workspace {
2015
+ grid-template-columns: minmax(190px, 230px) minmax(0, 1fr) minmax(
2016
+ 260px,
2017
+ 320px
2018
+ );
2019
+ }
2020
+
2021
+ .topbar {
2022
+ gap: 10px;
2023
+ padding-inline: 12px;
2024
+ }
2025
+
2026
+ .brand {
2027
+ min-width: 132px;
2028
+ }
2029
+
2030
+ .route-tabs button {
2031
+ padding-inline: 7px;
2032
+ }
2033
+
2034
+ .route-tabs button > span:last-child {
2035
+ display: none;
2036
+ }
2037
+
2038
+ .breakpoint-tab {
2039
+ padding-inline: 7px;
2040
+ }
2041
+
2042
+ .breakpoint-tab span {
2043
+ display: none;
2044
+ }
2045
+
2046
+ .canvas {
2047
+ padding: 14px;
2048
+ }
2049
+ }
2050
+
2051
+ @media (max-width: 720px) {
2052
+ .layout-demo {
2053
+ grid-template-rows: 70px minmax(0, 1fr);
2054
+ }
2055
+
2056
+ .brand-copy {
2057
+ display: none;
2058
+ }
2059
+
2060
+ .workspace {
2061
+ grid-template-columns: minmax(118px, 0.8fr) minmax(0, 1.8fr) minmax(
2062
+ 170px,
2063
+ 1fr
2064
+ );
2065
+ }
2066
+
2067
+ .materials,
2068
+ .inspectors {
2069
+ padding-inline: 9px;
2070
+ }
2071
+
2072
+ .canvas {
2073
+ padding: 9px;
2074
+ }
2075
+
2076
+ .stage-header {
2077
+ padding-inline: 11px;
2078
+ }
2079
+
2080
+ .stage-header h2 {
2081
+ font-size: 13px;
2082
+ }
2083
+
2084
+ .stage-badge {
2085
+ padding-inline: 6px;
2086
+ }
2087
+
2088
+ .stage-badge i {
2089
+ display: none;
2090
+ }
2091
+
2092
+ .material-source {
2093
+ align-items: flex-start;
2094
+ }
2095
+
2096
+ .material-source > span:nth-child(2) small,
2097
+ .breakpoint-button small,
2098
+ .panel-tip {
2099
+ display: none;
2100
+ }
2101
+
2102
+ .topbar {
2103
+ gap: 8px;
2104
+ padding-inline: 10px;
2105
+ }
2106
+
2107
+ .topbar-center {
2108
+ order: 3;
2109
+ flex: 1 1 100%;
2110
+ }
2111
+
2112
+ .topbar {
2113
+ flex-wrap: wrap;
2114
+ }
2115
+
2116
+ .actions {
2117
+ margin-left: auto;
2118
+ }
2119
+
2120
+ .breakpoint-tabs {
2121
+ display: none;
2122
+ }
2123
+
2124
+ .layout-card {
2125
+ padding: 10px;
2126
+ }
2127
+
2128
+ .layout-card__footer {
2129
+ padding-top: 7px;
2130
+ }
2131
+ }
2132
+
2133
+ .layout-demo[data-theme="dark"] {
2134
+ --ink: #edf2ff;
2135
+ --muted: #93a1bb;
2136
+ --line: #2d3a50;
2137
+ --line-strong: #43516a;
2138
+ --panel: #151e2e;
2139
+ --canvas: #0e1625;
2140
+ --topbar: rgb(17 25 39 / 94%);
2141
+ --stage: #172235;
2142
+ --stage-header: rgb(24 36 56 / 96%);
2143
+ --card: #1d2a40;
2144
+ --card-line: #3b4b68;
2145
+ --checker-a: #1a2638;
2146
+ --checker-b: #223047;
2147
+ --accent: #90a2ff;
2148
+ --accent-soft: #29345d;
2149
+ --shadow: 0 18px 42px rgb(0 0 0 / 28%);
2150
+ background: var(--canvas);
2151
+ }
2152
+
2153
+ .layout-demo[data-theme="dark"] .route-tabs,
2154
+ .layout-demo[data-theme="dark"] .breakpoint-tabs {
2155
+ background: #1b273b;
2156
+ }
2157
+
2158
+ .layout-demo[data-theme="dark"] .topbar-center__shell {
2159
+ background: #151f31;
2160
+ border-color: #2d3a50;
2161
+ box-shadow: 0 8px 20px rgb(0 0 0 / 18%);
2162
+ }
2163
+
2164
+ .layout-demo[data-theme="dark"] .workspace-mode,
2165
+ .layout-demo[data-theme="dark"] .development-mode,
2166
+ .layout-demo[data-theme="dark"] .device-select,
2167
+ .layout-demo[data-theme="dark"] .canvas-device-control,
2168
+ .layout-demo[data-theme="dark"] .orientation-button {
2169
+ background: #1b273b;
2170
+ color: #a7b3c9;
2171
+ }
2172
+
2173
+ .layout-demo[data-theme="dark"] .workspace-mode {
2174
+ background: transparent;
2175
+ color: #b7c2ff;
2176
+ }
2177
+
2178
+ .layout-demo[data-theme="dark"] .development-mode:hover,
2179
+ .layout-demo[data-theme="dark"] .development-mode.is-open {
2180
+ border-color: #455aab;
2181
+ background: #25324b;
2182
+ color: var(--accent);
2183
+ }
2184
+
2185
+ .layout-demo[data-theme="dark"] .workspace-mode__hint {
2186
+ border-color: #34435d;
2187
+ color: #8190aa;
2188
+ }
2189
+
2190
+ .layout-demo[data-theme="dark"] .device-select:hover,
2191
+ .layout-demo[data-theme="dark"] .device-select.is-open,
2192
+ .layout-demo[data-theme="dark"] .canvas-device-control:hover,
2193
+ .layout-demo[data-theme="dark"] .canvas-device-control.is-open,
2194
+ .layout-demo[data-theme="dark"] .orientation-button:hover,
2195
+ .layout-demo[data-theme="dark"] .orientation-button[aria-pressed="true"] {
2196
+ border-color: #455aab;
2197
+ background: #25324b;
2198
+ color: var(--accent);
2199
+ }
2200
+
2201
+ .layout-demo[data-theme="dark"] .custom-select__menu {
2202
+ border-color: #36455f;
2203
+ background: #17243a;
2204
+ box-shadow: 0 16px 34px rgb(0 0 0 / 32%);
2205
+ }
2206
+
2207
+ .layout-demo[data-theme="dark"] .custom-select__option:hover,
2208
+ .layout-demo[data-theme="dark"] .custom-select__option[aria-selected="true"] {
2209
+ background: #26365b;
2210
+ color: #c5ceff;
2211
+ }
2212
+
2213
+ .layout-demo[data-theme="dark"] .preview-open-button {
2214
+ border-color: #455aab !important;
2215
+ background: #202d4d !important;
2216
+ color: #c5ceff !important;
2217
+ }
2218
+
2219
+ .layout-demo[data-theme="dark"] .route-tabs button,
2220
+ .layout-demo[data-theme="dark"] .breakpoint-tab {
2221
+ color: #a7b3c9;
2222
+ }
2223
+
2224
+ .layout-demo[data-theme="dark"] .route-tabs button:hover,
2225
+ .layout-demo[data-theme="dark"] .breakpoint-tab:hover,
2226
+ .layout-demo[data-theme="dark"] .route-tabs button[aria-current="page"],
2227
+ .layout-demo[data-theme="dark"] .breakpoint-tab[aria-pressed="true"] {
2228
+ background: #25324b;
2229
+ color: var(--accent);
2230
+ }
2231
+
2232
+ .layout-demo[data-theme="dark"] .actions button:hover:not(:disabled),
2233
+ .layout-demo[data-theme="dark"] .canvas-tool-button:hover {
2234
+ background: #273552;
2235
+ color: var(--accent);
2236
+ }
2237
+
2238
+ .layout-demo[data-theme="dark"] .material-source {
2239
+ background: #1b293e;
2240
+ border-color: var(--line);
2241
+ box-shadow: 0 6px 16px rgb(0 0 0 / 18%);
2242
+ }
2243
+
2244
+ .layout-demo[data-theme="dark"] .material-search {
2245
+ background: #17243a;
2246
+ }
2247
+
2248
+ .layout-demo[data-theme="dark"] .material-select {
2249
+ background: #1b293e;
2250
+ }
2251
+
2252
+ .layout-demo[data-theme="dark"] .material-filter-reset:hover {
2253
+ background: #26365b;
2254
+ }
2255
+
2256
+ .layout-demo[data-theme="dark"] .material-category-button:hover,
2257
+ .layout-demo[data-theme="dark"] .material-category-button.active {
2258
+ background: #26365b;
2259
+ }
2260
+
2261
+ .layout-demo[data-theme="dark"] .material-source:hover {
2262
+ background: #22324e;
2263
+ border-color: #5c6fbb;
2264
+ }
2265
+
2266
+ .layout-demo[data-theme="dark"] .panel-count,
2267
+ .layout-demo[data-theme="dark"] .breakpoint-button[aria-pressed="true"] {
2268
+ background: var(--accent-soft);
2269
+ }
2270
+
2271
+ .layout-demo[data-theme="dark"] .breakpoint-button {
2272
+ color: #a0aec5;
2273
+ }
2274
+
2275
+ .layout-demo[data-theme="dark"] .breakpoint-button:hover {
2276
+ background: #202e47;
2277
+ }
2278
+
2279
+ .layout-demo[data-theme="dark"] .panel-tip {
2280
+ background: #1a2639;
2281
+ color: #8999b5;
2282
+ }
2283
+
2284
+ .layout-demo[data-theme="dark"] .stage-badge {
2285
+ background: #1f2d45;
2286
+ }
2287
+
2288
+ .layout-demo[data-theme="dark"] .layout-card {
2289
+ background: var(--card);
2290
+ color: var(--ink);
2291
+ box-shadow:
2292
+ 0 12px 26px rgb(0 0 0 / 20%),
2293
+ inset 0 1px 0 rgb(255 255 255 / 4%);
2294
+ }
2295
+
2296
+ .layout-demo[data-theme="dark"] .layout-card__action {
2297
+ border-color: #40516e;
2298
+ background: #1b2940;
2299
+ color: #a8b6d0;
2300
+ }
2301
+
2302
+ .layout-demo[data-theme="dark"] .layout-card__title {
2303
+ color: #eef3ff;
2304
+ }
2305
+
2306
+ .layout-demo[data-theme="dark"] .layout-card__value {
2307
+ color: #dbe3ff;
2308
+ }
2309
+
2310
+ .layout-demo[data-theme="dark"] .layout-card__meta,
2311
+ .layout-demo[data-theme="dark"] .layout-card__footer {
2312
+ color: #9caac1;
2313
+ }
2314
+
2315
+ .layout-demo[data-theme="dark"] .layout-editor-grid::after {
2316
+ color: #7889a5;
2317
+ }
2318
+
2319
+ .layout-demo[data-theme="dark"] .inspectors {
2320
+ background: #101827;
2321
+ color: #e9eff9;
2322
+ border-left-color: rgb(10 19 34 / 12%);
2323
+ }
2324
+
2325
+ .layout-demo[data-theme="dark"] .copy-code-button,
2326
+ .layout-demo[data-theme="dark"] .download-code-button {
2327
+ border-color: rgb(153 170 210 / 16%);
2328
+ background: rgb(117 137 255 / 12%);
2329
+ color: #aab5ff;
2330
+ }
2331
+
2332
+ .layout-demo[data-theme="dark"] .copy-code-button:hover,
2333
+ .layout-demo[data-theme="dark"] .download-code-button:hover {
2334
+ border-color: rgb(153 170 210 / 34%);
2335
+ background: rgb(117 137 255 / 22%);
2336
+ color: #fff;
2337
+ }
2338
+
2339
+ .layout-demo[data-theme="dark"] .code-block {
2340
+ background: #192438;
2341
+ color: #cad5ea;
2342
+ border-color: rgb(153 170 210 / 12%);
2343
+ }
2344
+
2345
+ .layout-demo[data-theme="dark"] .code-token-comment {
2346
+ color: #71819e;
2347
+ }
2348
+
2349
+ .layout-demo[data-theme="dark"] .code-token-tag,
2350
+ .layout-demo[data-theme="dark"] .code-token-keyword {
2351
+ color: #c4b5fd;
2352
+ }
2353
+
2354
+ .layout-demo[data-theme="dark"] .code-token-attribute,
2355
+ .layout-demo[data-theme="dark"] .code-token-property {
2356
+ color: #80d8ee;
2357
+ }
2358
+
2359
+ .layout-demo[data-theme="dark"] .code-token-string {
2360
+ color: #f3b18a;
2361
+ }
2362
+
2363
+ .layout-demo[data-theme="dark"] .code-token-number,
2364
+ .layout-demo[data-theme="dark"] .code-token-constant {
2365
+ color: #f3a6cb;
2366
+ }
2367
+
2368
+ .layout-demo[data-theme="dark"] .code-status {
2369
+ color: #7f8da6;
2370
+ }
2371
+
2372
+ .layout-demo[data-theme="dark"] .mode-button {
2373
+ border-color: #5265b8 !important;
2374
+ background: #27345c !important;
2375
+ color: #c5ceff !important;
2376
+ }
2377
+
2378
+ /*# sourceMappingURL=src/style/workspace.css.map */