@ai-matrx/canvas 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/styles.css CHANGED
@@ -3,8 +3,13 @@
3
3
  /*
4
4
  * @ai-matrx/canvas — structural CSS (C26).
5
5
  *
6
- * Every colour comes from a --mxc-* token. Hosts set the token VALUES (see
7
- * tokens.css for the shipped defaults); this sheet never hardcodes a colour.
6
+ * Every colour and size comes from a --mxc-* token. Hosts set the token VALUES
7
+ * (tokens.css ships defaults that follow a design-system theme when one is
8
+ * present); this sheet never hardcodes a colour.
9
+ *
10
+ * The look: panes are cards (radius, hairline border) on the column's frame
11
+ * background, separated by a gap that is also the split handle — the Claude
12
+ * desktop / Codex canvas.
8
13
  */
9
14
 
10
15
  .mxc-column {
@@ -15,15 +20,17 @@
15
20
  height: 100%;
16
21
  min-height: 0;
17
22
  flex: none;
18
- background: var(--mxc-bg);
23
+ background: var(--mxc-frame-bg);
19
24
  color: var(--mxc-fg);
20
- border-left: 1px solid var(--mxc-border);
25
+ border-left: var(--mxc-column-border-width, 0px) solid var(--mxc-border);
21
26
  /* The column owns the top edge of the window: no header sits above it. */
22
27
  padding-top: var(--mxc-safe-top, 0px);
23
28
  isolation: isolate;
29
+ font-family: inherit;
24
30
  }
25
31
 
26
- .mxc-column[data-fullscreen] {
32
+ .mxc-column[data-fullscreen],
33
+ .mxc-column[data-placement="fill"] {
27
34
  width: 100%;
28
35
  border-left: 0;
29
36
  }
@@ -51,10 +58,21 @@
51
58
  user-select: none !important;
52
59
  }
53
60
 
61
+ :root[data-mxc-resizing="row"],
62
+ :root[data-mxc-resizing="row"] * {
63
+ cursor: row-resize !important;
64
+ }
65
+
54
66
  .mxc-layout {
55
67
  flex: 1 1 auto;
56
68
  min-height: 0;
57
69
  display: flex;
70
+ padding: var(--mxc-gap);
71
+ }
72
+
73
+ .mxc-column[data-placement="docked"]:not([data-fullscreen]) > .mxc-layout {
74
+ /* The gap on the left edge is the width handle's room. */
75
+ padding-left: max(var(--mxc-gap), 0px);
58
76
  }
59
77
 
60
78
  .mxc-split {
@@ -74,45 +92,53 @@
74
92
  display: flex;
75
93
  }
76
94
 
95
+ /* The gap between cards IS the handle: transparent, tinted on hover and drag. */
77
96
  .mxc-split-handle {
78
97
  flex: none;
79
- background: var(--mxc-border);
80
- touch-action: none;
81
98
  position: relative;
99
+ touch-action: none;
100
+ border-radius: 999px;
101
+ background: transparent;
102
+ transition: background-color 120ms ease-out;
82
103
  }
83
104
 
84
105
  .mxc-split[data-orientation="horizontal"] > .mxc-split-handle {
85
- width: 1px;
106
+ width: max(var(--mxc-gap), 1px);
86
107
  cursor: col-resize;
87
108
  }
88
109
 
89
110
  .mxc-split[data-orientation="vertical"] > .mxc-split-handle {
90
- height: 1px;
111
+ height: max(var(--mxc-gap), 1px);
91
112
  cursor: row-resize;
92
113
  }
93
114
 
94
- /* A wide invisible grab area around the 1px line. */
115
+ /* A grab area at least 7px wide around a thin gap. */
95
116
  .mxc-split-handle::after {
96
117
  content: "";
97
118
  position: absolute;
98
119
  inset: -3px;
99
120
  }
100
121
 
101
- .mxc-split-handle:hover {
102
- background: var(--mxc-accent);
122
+ .mxc-split-handle:hover,
123
+ .mxc-split-handle:active {
124
+ background: var(--mxc-handle-hover);
103
125
  }
104
126
 
105
- .mxc-pane {
127
+ /* ── panel (THE chrome) ─────────────────────────────────────────────────── */
128
+
129
+ .mxc-panel {
106
130
  flex: 1 1 auto;
107
131
  min-width: 0;
108
132
  min-height: 0;
133
+ width: 100%;
134
+ height: 100%;
109
135
  display: flex;
110
136
  flex-direction: column;
137
+ overflow: hidden;
138
+ border: 1px solid var(--mxc-border);
139
+ border-radius: var(--mxc-radius);
111
140
  background: var(--mxc-bg);
112
- }
113
-
114
- .mxc-pane[data-drop] {
115
- box-shadow: inset 0 0 0 2px var(--mxc-accent);
141
+ color: var(--mxc-fg);
116
142
  }
117
143
 
118
144
  .mxc-pane-header {
@@ -120,14 +146,133 @@
120
146
  display: flex;
121
147
  align-items: center;
122
148
  gap: 0.25rem;
123
- height: var(--mxc-header-h, 2.75rem);
124
- padding: 0 0.25rem 0 0.375rem;
125
- border-bottom: 1px solid var(--mxc-border);
149
+ height: var(--mxc-header-h, 2.25rem);
150
+ padding: 0 0.375rem 0 0.375rem;
126
151
  background: var(--mxc-header-bg);
152
+ min-width: 0;
127
153
  }
128
154
 
129
- .mxc-tabs {
155
+ .mxc-panel-title {
156
+ flex: 0 1 auto;
157
+ min-width: 0;
158
+ display: inline-flex;
159
+ align-items: center;
160
+ gap: 0.375rem;
161
+ padding: 0 0.375rem;
162
+ overflow: hidden;
163
+ font-size: 0.75rem;
164
+ font-weight: 500;
165
+ line-height: 1rem;
166
+ color: var(--mxc-title-fg);
167
+ white-space: nowrap;
168
+ text-overflow: ellipsis;
169
+ user-select: none;
170
+ }
171
+
172
+ .mxc-panel-title[data-draggable] {
173
+ cursor: grab;
174
+ }
175
+
176
+ .mxc-title-icon {
177
+ flex: none;
178
+ width: 0.875rem;
179
+ height: 0.875rem;
180
+ color: var(--mxc-muted);
181
+ }
182
+
183
+ /* After the title or tabs: grows to fill the header (a browser bar, "+ new"). */
184
+ .mxc-pane-leading {
185
+ flex: 1 1 0;
186
+ min-width: 0;
187
+ display: flex;
188
+ align-items: center;
189
+ gap: 0.125rem;
190
+ }
191
+
192
+ .mxc-pane-leading:empty {
193
+ min-width: 0.25rem;
194
+ }
195
+
196
+ .mxc-pane-actions {
197
+ flex: none;
198
+ display: flex;
199
+ align-items: center;
200
+ gap: 0.125rem;
201
+ }
202
+
203
+ .mxc-pane-body {
204
+ position: relative;
130
205
  flex: 1 1 auto;
206
+ min-height: 0;
207
+ display: flex;
208
+ flex-direction: column;
209
+ }
210
+
211
+ /* ── header buttons ─────────────────────────────────────────────────────── */
212
+
213
+ .mxc-icon-button {
214
+ position: relative;
215
+ flex: none;
216
+ display: inline-flex;
217
+ align-items: center;
218
+ justify-content: center;
219
+ width: 1.5rem;
220
+ height: 1.5rem;
221
+ padding: 0;
222
+ border: 0;
223
+ border-radius: 0.375rem;
224
+ background: transparent;
225
+ color: var(--mxc-muted);
226
+ cursor: pointer;
227
+ outline: none;
228
+ transition: background-color 120ms ease-out, color 120ms ease-out;
229
+ }
230
+
231
+ .mxc-icon-button[data-size="md"] {
232
+ width: 1.75rem;
233
+ height: 1.75rem;
234
+ }
235
+
236
+ .mxc-icon-button svg {
237
+ width: 0.875rem;
238
+ height: 0.875rem;
239
+ }
240
+
241
+ .mxc-icon-button[data-size="md"] svg {
242
+ width: 1rem;
243
+ height: 1rem;
244
+ }
245
+
246
+ .mxc-icon-button:hover,
247
+ .mxc-icon-button[data-state="open"],
248
+ .mxc-icon-button[aria-pressed="true"] {
249
+ background: var(--mxc-hover);
250
+ color: var(--mxc-fg);
251
+ }
252
+
253
+ .mxc-icon-button:focus-visible {
254
+ box-shadow: 0 0 0 2px var(--mxc-ring);
255
+ }
256
+
257
+ .mxc-icon-button[data-available="false"] {
258
+ cursor: default;
259
+ color: var(--mxc-disabled);
260
+ background: transparent;
261
+ }
262
+
263
+ /* Touch screens: a 40px hit area around the 24px button. */
264
+ @media (pointer: coarse) {
265
+ .mxc-icon-button::after {
266
+ content: "";
267
+ position: absolute;
268
+ inset: -0.5rem;
269
+ }
270
+ }
271
+
272
+ /* ── tabs ───────────────────────────────────────────────────────────────── */
273
+
274
+ .mxc-tabs {
275
+ flex: 0 1 auto;
131
276
  min-width: 0;
132
277
  display: flex;
133
278
  align-items: center;
@@ -141,93 +286,168 @@
141
286
  }
142
287
 
143
288
  .mxc-tab {
144
- flex: none;
145
- display: inline-flex;
289
+ position: relative;
290
+ flex: 0 1 10rem;
291
+ min-width: 4.5rem;
292
+ max-width: 10rem;
293
+ display: flex;
146
294
  align-items: center;
147
295
  gap: 0.375rem;
148
- max-width: 13rem;
149
- height: 1.875rem;
296
+ height: 1.75rem;
150
297
  padding: 0 0.25rem 0 0.5rem;
151
- border-radius: 0.5rem;
152
- font-size: 0.8125rem;
153
- line-height: 1;
298
+ border-radius: 0.375rem;
299
+ font-size: 0.75rem;
300
+ line-height: 1rem;
154
301
  color: var(--mxc-muted);
155
- cursor: pointer;
302
+ cursor: default;
156
303
  user-select: none;
304
+ outline: none;
157
305
  }
158
306
 
159
307
  .mxc-tab:hover {
160
308
  background: var(--mxc-hover);
161
- color: var(--mxc-fg);
162
309
  }
163
310
 
164
311
  .mxc-tab[data-active] {
165
312
  background: var(--mxc-tab-active-bg);
166
313
  color: var(--mxc-fg);
314
+ box-shadow: var(--mxc-tab-active-shadow);
167
315
  }
168
316
 
169
317
  .mxc-pane:not([data-focused]) .mxc-tab[data-active] {
170
- background: var(--mxc-hover);
318
+ color: var(--mxc-title-fg);
171
319
  }
172
320
 
173
321
  .mxc-tab:focus-visible {
174
- outline: 2px solid var(--mxc-accent);
175
- outline-offset: -2px;
322
+ box-shadow: 0 0 0 2px var(--mxc-ring);
176
323
  }
177
324
 
178
325
  .mxc-tab-icon {
179
326
  flex: none;
327
+ display: inline-flex;
328
+ width: 0.875rem;
329
+ height: 0.875rem;
330
+ opacity: 0.75;
331
+ }
332
+
333
+ .mxc-tab-icon svg,
334
+ .mxc-favicon {
180
335
  width: 0.875rem;
181
336
  height: 0.875rem;
182
337
  }
183
338
 
339
+ .mxc-favicon {
340
+ border-radius: 0.125rem;
341
+ }
342
+
184
343
  .mxc-tab-title {
344
+ flex: 1 1 auto;
185
345
  min-width: 0;
186
346
  overflow: hidden;
187
347
  text-overflow: ellipsis;
188
348
  white-space: nowrap;
189
349
  }
190
350
 
351
+ .mxc-tab-note {
352
+ flex: none;
353
+ font-size: 0.6875rem;
354
+ color: var(--mxc-disabled);
355
+ }
356
+
191
357
  .mxc-tab-close {
192
358
  flex: none;
193
359
  display: inline-flex;
194
360
  align-items: center;
195
361
  justify-content: center;
196
- width: 1.25rem;
197
- height: 1.25rem;
362
+ width: 1rem;
363
+ height: 1rem;
364
+ padding: 0;
198
365
  border: 0;
199
- border-radius: 0.375rem;
366
+ border-radius: 0.25rem;
200
367
  background: transparent;
201
- color: inherit;
368
+ color: var(--mxc-muted);
202
369
  opacity: 0;
203
370
  cursor: pointer;
371
+ outline: none;
372
+ }
373
+
374
+ .mxc-tab-close svg {
375
+ width: 0.75rem;
376
+ height: 0.75rem;
204
377
  }
205
378
 
206
379
  .mxc-tab:hover .mxc-tab-close,
207
380
  .mxc-tab[data-active] .mxc-tab-close,
208
381
  .mxc-tab-close:focus-visible {
209
- opacity: 0.7;
382
+ opacity: 1;
210
383
  }
211
384
 
212
385
  .mxc-tab-close:hover {
213
- opacity: 1;
214
386
  background: var(--mxc-hover);
387
+ color: var(--mxc-fg);
215
388
  }
216
389
 
217
- .mxc-pane-actions {
218
- flex: none;
390
+ .mxc-tab-close:focus-visible {
391
+ box-shadow: 0 0 0 2px var(--mxc-ring);
392
+ }
393
+
394
+ /* ── browser bar ────────────────────────────────────────────────────────── */
395
+
396
+ .mxc-browser-bar {
397
+ flex: 1 1 auto;
398
+ min-width: 0;
219
399
  display: flex;
220
400
  align-items: center;
401
+ gap: 0.125rem;
402
+ height: 2.5rem;
403
+ padding: 0 0.375rem;
221
404
  }
222
405
 
223
- .mxc-pane-body {
224
- position: relative;
406
+ .mxc-pane-leading > .mxc-browser-bar {
407
+ height: auto;
408
+ padding: 0;
409
+ }
410
+
411
+ .mxc-address-form {
225
412
  flex: 1 1 auto;
226
- min-height: 0;
413
+ min-width: 4rem;
414
+ margin: 0 0 0 0.25rem;
415
+ }
416
+
417
+ .mxc-address {
418
+ width: 100%;
419
+ height: 1.75rem;
420
+ padding: 0 0.75rem;
421
+ border: 1px solid var(--mxc-border);
422
+ border-radius: 999px;
423
+ background: var(--mxc-input-bg);
424
+ color: var(--mxc-fg);
425
+ font: inherit;
426
+ font-size: 0.75rem;
427
+ text-align: center;
428
+ outline: none;
429
+ }
430
+
431
+ .mxc-address::placeholder {
432
+ color: var(--mxc-muted);
433
+ }
434
+
435
+ .mxc-address:focus {
436
+ background: var(--mxc-tab-active-bg);
437
+ text-align: left;
438
+ box-shadow: 0 0 0 2px var(--mxc-ring);
439
+ }
440
+
441
+ .mxc-browser-bar-trailing {
442
+ flex: none;
227
443
  display: flex;
228
- flex-direction: column;
444
+ align-items: center;
445
+ gap: 0.125rem;
446
+ margin-left: 0.25rem;
229
447
  }
230
448
 
449
+ /* ── bodies ─────────────────────────────────────────────────────────────── */
450
+
231
451
  .mxc-item {
232
452
  flex: 1 1 auto;
233
453
  min-height: 0;
@@ -240,6 +460,15 @@
240
460
  display: none;
241
461
  }
242
462
 
463
+ /* Where a host's native view sits (a desktop browser tab). */
464
+ .mxc-native-body {
465
+ flex: 1 1 auto;
466
+ min-height: 0;
467
+ margin: 0 var(--mxc-native-inset, 0.375rem) var(--mxc-native-inset, 0.375rem);
468
+ border-radius: calc(var(--mxc-radius) - 2px);
469
+ background: var(--mxc-tab-active-bg);
470
+ }
471
+
243
472
  .mxc-loading {
244
473
  flex: 1 1 auto;
245
474
  background: linear-gradient(90deg, transparent, var(--mxc-hover), transparent);
@@ -252,15 +481,27 @@
252
481
  to { background-position: -200% 0; }
253
482
  }
254
483
 
255
- .mxc-problem,
256
- .mxc-empty {
484
+ /* The one-line honest state ("No changes to show", "Files · next release"). */
485
+ .mxc-empty-line {
486
+ flex: 1 1 auto;
487
+ display: flex;
488
+ align-items: center;
489
+ justify-content: center;
490
+ min-height: 3rem;
491
+ padding: 0 1rem;
492
+ font-size: 0.75rem;
493
+ color: var(--mxc-muted);
494
+ text-align: center;
495
+ }
496
+
497
+ .mxc-problem {
257
498
  margin: auto;
258
499
  display: flex;
259
500
  flex-direction: column;
260
501
  align-items: center;
261
502
  gap: 0.5rem;
262
503
  padding: 1.5rem;
263
- font-size: 0.875rem;
504
+ font-size: 0.8125rem;
264
505
  color: var(--mxc-muted);
265
506
  text-align: center;
266
507
  }
@@ -322,6 +563,8 @@
322
563
  color: var(--mxc-muted);
323
564
  }
324
565
 
566
+ /* ── menu ───────────────────────────────────────────────────────────────── */
567
+
325
568
  .mxc-menu {
326
569
  z-index: var(--mxc-menu-z, 10000);
327
570
  min-width: 11rem;
@@ -330,7 +573,7 @@
330
573
  border-radius: 0.625rem;
331
574
  background: var(--mxc-bg);
332
575
  color: var(--mxc-fg);
333
- box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.35);
576
+ box-shadow: var(--mxc-float-shadow);
334
577
  font-size: 0.8125rem;
335
578
  }
336
579
 
@@ -366,6 +609,44 @@
366
609
  background: var(--mxc-border);
367
610
  }
368
611
 
612
+ /* ── overlay (the DOM default for tooltips and drop indicators) ─────────── */
613
+
614
+ .mxc-overlay {
615
+ position: fixed;
616
+ inset: 0;
617
+ z-index: var(--mxc-overlay-z, 10001);
618
+ pointer-events: none;
619
+ }
620
+
621
+ .mxc-tooltip {
622
+ position: fixed;
623
+ max-width: 18rem;
624
+ padding: 0.25rem 0.5rem;
625
+ border-radius: 0.375rem;
626
+ background: var(--mxc-tooltip-bg);
627
+ color: var(--mxc-tooltip-fg);
628
+ font-size: 0.75rem;
629
+ line-height: 1rem;
630
+ white-space: nowrap;
631
+ overflow: hidden;
632
+ text-overflow: ellipsis;
633
+ box-shadow: var(--mxc-float-shadow);
634
+ }
635
+
636
+ .mxc-tooltip[data-side="top"] {
637
+ transform: translateY(-100%);
638
+ }
639
+
640
+ .mxc-drop-indicator {
641
+ position: fixed;
642
+ border-radius: var(--mxc-radius);
643
+ box-shadow: inset 0 0 0 2px var(--mxc-accent);
644
+ background: var(--mxc-accent-soft);
645
+ opacity: 0.6;
646
+ }
647
+
648
+ /* ── toggle ─────────────────────────────────────────────────────────────── */
649
+
369
650
  .mxc-toggle {
370
651
  position: relative;
371
652
  display: inline-flex;
@@ -414,7 +695,7 @@
414
695
  display: none !important;
415
696
  }
416
697
 
417
- /* Phones: the canvas is a full-screen layer over the app. */
698
+ /* Phones: the canvas is a full-screen layer over the app, edge to edge. */
418
699
  @media (max-width: 767px) {
419
700
  .mxc-phone-only {
420
701
  display: inline-flex !important;
@@ -425,7 +706,7 @@
425
706
  display: none !important;
426
707
  }
427
708
 
428
- .mxc-column {
709
+ .mxc-column[data-placement="docked"] {
429
710
  position: fixed;
430
711
  inset: 0;
431
712
  z-index: var(--mxc-mobile-z, 60);
@@ -433,6 +714,16 @@
433
714
  border-left: 0;
434
715
  padding-top: env(safe-area-inset-top, 0px);
435
716
  padding-bottom: env(safe-area-inset-bottom, 0px);
717
+ --mxc-gap: 0px;
718
+ --mxc-radius: 0px;
719
+ }
720
+
721
+ .mxc-column[data-placement="docked"] .mxc-panel {
722
+ border-width: 0;
723
+ }
724
+
725
+ .mxc-column[data-placement="docked"] .mxc-split-handle {
726
+ background: var(--mxc-border);
436
727
  }
437
728
 
438
729
  .mxc-width-handle {
@@ -448,4 +739,8 @@
448
739
  height: 1px;
449
740
  cursor: row-resize;
450
741
  }
742
+
743
+ .mxc-pane-header {
744
+ height: var(--mxc-header-h-phone, 2.75rem);
745
+ }
451
746
  }
package/dist/tokens.css CHANGED
@@ -1,49 +1,71 @@
1
1
  /*
2
- * @ai-matrx/canvas — DEFAULT token values (C26). Import this only in a host
3
- * that has no theme of its own; a themed host maps the --mxc-* tokens to its
4
- * own design tokens instead.
2
+ * @ai-matrx/canvas — DEFAULT token values (C26).
3
+ *
4
+ * In a host with the AI Matrx design-system theme (HSL triplets such as
5
+ * --card, --border, --foreground) every value follows that theme, light and
6
+ * dark. Without one, each var() falls back to the literal shown. A host with
7
+ * its own palette maps the --mxc-* tokens itself instead of importing this.
5
8
  */
6
9
 
7
10
  :root {
8
- --mxc-bg: #ffffff;
9
- --mxc-header-bg: #fafafa;
10
- --mxc-fg: #18181b;
11
- --mxc-muted: #71717a;
12
- --mxc-border: #e4e4e7;
13
- --mxc-hover: rgba(0, 0, 0, 0.05);
14
- --mxc-tab-active-bg: rgba(0, 0, 0, 0.08);
15
- --mxc-accent: #2563eb;
16
- --mxc-accent-soft: rgba(37, 99, 235, 0.25);
17
- --mxc-accent-fg: #ffffff;
18
- --mxc-danger: #dc2626;
11
+ --mxc-frame-bg: hsl(var(--background, 240 5% 96%));
12
+ --mxc-bg: hsl(var(--card, 0 0% 100%));
13
+ --mxc-header-bg: transparent;
14
+ --mxc-fg: hsl(var(--foreground, 240 6% 10%));
15
+ --mxc-title-fg: hsl(var(--foreground, 240 6% 10%) / 0.8);
16
+ --mxc-muted: hsl(var(--foreground, 240 6% 10%) / 0.55);
17
+ --mxc-disabled: hsl(var(--foreground, 240 6% 10%) / 0.28);
18
+ --mxc-border: hsl(var(--border, 240 6% 88%));
19
+ --mxc-hover: hsl(var(--foreground, 240 6% 10%) / 0.07);
20
+ --mxc-handle-hover: hsl(var(--foreground, 240 6% 10%) / 0.15);
21
+ --mxc-tab-active-bg: hsl(var(--background, 0 0% 100%));
22
+ --mxc-tab-active-shadow: 0 0 0 0.5px hsl(var(--border, 240 6% 85%)), 0 1px 2px hsl(var(--foreground, 240 6% 10%) / 0.06);
23
+ --mxc-input-bg: hsl(var(--muted, 240 5% 96%) / 0.5);
24
+ --mxc-ring: hsl(var(--ring, 217 91% 60%) / 0.6);
25
+ --mxc-accent: hsl(var(--primary, 221 83% 53%));
26
+ --mxc-accent-soft: hsl(var(--primary, 221 83% 53%) / 0.18);
27
+ --mxc-accent-fg: hsl(var(--primary-foreground, 0 0% 100%));
28
+ --mxc-danger: hsl(var(--destructive, 0 72% 51%));
29
+ --mxc-tooltip-bg: hsl(var(--foreground, 240 6% 10%));
30
+ --mxc-tooltip-fg: hsl(var(--background, 0 0% 100%));
31
+ --mxc-float-shadow: 0 10px 30px -10px rgb(0 0 0 / 0.35);
32
+ --mxc-radius: 10px;
33
+ --mxc-gap: 6px;
34
+ --mxc-header-h: 2.25rem;
19
35
  }
20
36
 
21
37
  @media (prefers-color-scheme: dark) {
22
38
  :root:not(.light) {
23
- --mxc-bg: #1c1c1f;
24
- --mxc-header-bg: #18181b;
25
- --mxc-fg: #f4f4f5;
26
- --mxc-muted: #a1a1aa;
27
- --mxc-border: #3f3f46;
28
- --mxc-hover: rgba(255, 255, 255, 0.06);
29
- --mxc-tab-active-bg: rgba(255, 255, 255, 0.1);
30
- --mxc-accent: #60a5fa;
31
- --mxc-accent-soft: rgba(96, 165, 250, 0.3);
32
- --mxc-accent-fg: #0b1220;
33
- --mxc-danger: #f87171;
39
+ --mxc-frame-bg: hsl(var(--background, 240 6% 7%));
40
+ --mxc-bg: hsl(var(--card, 240 5% 11%));
41
+ --mxc-fg: hsl(var(--foreground, 240 5% 96%));
42
+ --mxc-title-fg: hsl(var(--foreground, 240 5% 96%) / 0.8);
43
+ --mxc-muted: hsl(var(--foreground, 240 5% 96%) / 0.55);
44
+ --mxc-disabled: hsl(var(--foreground, 240 5% 96%) / 0.28);
45
+ --mxc-border: hsl(var(--border, 240 4% 22%));
46
+ --mxc-hover: hsl(var(--foreground, 240 5% 96%) / 0.07);
47
+ --mxc-handle-hover: hsl(var(--foreground, 240 5% 96%) / 0.15);
48
+ --mxc-tab-active-bg: hsl(var(--background, 240 6% 7%));
49
+ --mxc-tab-active-shadow: 0 0 0 0.5px hsl(var(--border, 240 4% 22%)), 0 1px 2px rgb(0 0 0 / 0.3);
50
+ --mxc-input-bg: hsl(var(--muted, 240 4% 16%) / 0.5);
51
+ --mxc-tooltip-bg: hsl(var(--foreground, 240 5% 96%));
52
+ --mxc-tooltip-fg: hsl(var(--background, 240 6% 7%));
34
53
  }
35
54
  }
36
55
 
37
56
  .dark {
38
- --mxc-bg: #1c1c1f;
39
- --mxc-header-bg: #18181b;
40
- --mxc-fg: #f4f4f5;
41
- --mxc-muted: #a1a1aa;
42
- --mxc-border: #3f3f46;
43
- --mxc-hover: rgba(255, 255, 255, 0.06);
44
- --mxc-tab-active-bg: rgba(255, 255, 255, 0.1);
45
- --mxc-accent: #60a5fa;
46
- --mxc-accent-soft: rgba(96, 165, 250, 0.3);
47
- --mxc-accent-fg: #0b1220;
48
- --mxc-danger: #f87171;
57
+ --mxc-frame-bg: hsl(var(--background, 240 6% 7%));
58
+ --mxc-bg: hsl(var(--card, 240 5% 11%));
59
+ --mxc-fg: hsl(var(--foreground, 240 5% 96%));
60
+ --mxc-title-fg: hsl(var(--foreground, 240 5% 96%) / 0.8);
61
+ --mxc-muted: hsl(var(--foreground, 240 5% 96%) / 0.55);
62
+ --mxc-disabled: hsl(var(--foreground, 240 5% 96%) / 0.28);
63
+ --mxc-border: hsl(var(--border, 240 4% 22%));
64
+ --mxc-hover: hsl(var(--foreground, 240 5% 96%) / 0.07);
65
+ --mxc-handle-hover: hsl(var(--foreground, 240 5% 96%) / 0.15);
66
+ --mxc-tab-active-bg: hsl(var(--background, 240 6% 7%));
67
+ --mxc-tab-active-shadow: 0 0 0 0.5px hsl(var(--border, 240 4% 22%)), 0 1px 2px rgb(0 0 0 / 0.3);
68
+ --mxc-input-bg: hsl(var(--muted, 240 4% 16%) / 0.5);
69
+ --mxc-tooltip-bg: hsl(var(--foreground, 240 5% 96%));
70
+ --mxc-tooltip-fg: hsl(var(--background, 240 6% 7%));
49
71
  }