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