@ai-matrx/canvas 0.1.0 → 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/CHANGELOG.md +35 -0
- package/README.md +114 -4
- package/dist/controller-Dv6J6XZm.d.cts +576 -0
- package/dist/controller-Dv6J6XZm.d.ts +576 -0
- package/dist/index.cjs +743 -104
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +100 -334
- package/dist/index.d.ts +100 -334
- package/dist/index.js +743 -104
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +1476 -406
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +233 -290
- package/dist/react.d.ts +233 -290
- package/dist/react.js +1486 -404
- package/dist/react.js.map +1 -1
- package/dist/styles.css +346 -51
- package/dist/tokens.css +58 -36
- package/package.json +1 -1
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
|
|
7
|
-
* tokens.css
|
|
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:
|
|
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
|
|
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
|
-
|
|
122
|
+
.mxc-split-handle:hover,
|
|
123
|
+
.mxc-split-handle:active {
|
|
124
|
+
background: var(--mxc-handle-hover);
|
|
103
125
|
}
|
|
104
126
|
|
|
105
|
-
|
|
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.
|
|
124
|
-
padding: 0 0.
|
|
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-
|
|
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
|
-
|
|
145
|
-
|
|
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
|
-
|
|
149
|
-
height: 1.875rem;
|
|
296
|
+
height: 1.75rem;
|
|
150
297
|
padding: 0 0.25rem 0 0.5rem;
|
|
151
|
-
border-radius: 0.
|
|
152
|
-
font-size: 0.
|
|
153
|
-
line-height:
|
|
298
|
+
border-radius: 0.375rem;
|
|
299
|
+
font-size: 0.75rem;
|
|
300
|
+
line-height: 1rem;
|
|
154
301
|
color: var(--mxc-muted);
|
|
155
|
-
cursor:
|
|
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
|
-
|
|
318
|
+
color: var(--mxc-title-fg);
|
|
171
319
|
}
|
|
172
320
|
|
|
173
321
|
.mxc-tab:focus-visible {
|
|
174
|
-
|
|
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:
|
|
197
|
-
height:
|
|
362
|
+
width: 1rem;
|
|
363
|
+
height: 1rem;
|
|
364
|
+
padding: 0;
|
|
198
365
|
border: 0;
|
|
199
|
-
border-radius: 0.
|
|
366
|
+
border-radius: 0.25rem;
|
|
200
367
|
background: transparent;
|
|
201
|
-
color:
|
|
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:
|
|
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-
|
|
218
|
-
|
|
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-
|
|
224
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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:
|
|
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).
|
|
3
|
-
*
|
|
4
|
-
*
|
|
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:
|
|
9
|
-
--mxc-
|
|
10
|
-
--mxc-
|
|
11
|
-
--mxc-
|
|
12
|
-
--mxc-
|
|
13
|
-
--mxc-
|
|
14
|
-
--mxc-
|
|
15
|
-
--mxc-
|
|
16
|
-
--mxc-
|
|
17
|
-
--mxc-
|
|
18
|
-
--mxc-
|
|
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:
|
|
24
|
-
--mxc-
|
|
25
|
-
--mxc-fg:
|
|
26
|
-
--mxc-
|
|
27
|
-
--mxc-
|
|
28
|
-
--mxc-
|
|
29
|
-
--mxc-
|
|
30
|
-
--mxc-
|
|
31
|
-
--mxc-
|
|
32
|
-
--mxc-
|
|
33
|
-
--mxc-
|
|
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:
|
|
39
|
-
--mxc-
|
|
40
|
-
--mxc-fg:
|
|
41
|
-
--mxc-
|
|
42
|
-
--mxc-
|
|
43
|
-
--mxc-
|
|
44
|
-
--mxc-
|
|
45
|
-
--mxc-
|
|
46
|
-
--mxc-
|
|
47
|
-
--mxc-
|
|
48
|
-
--mxc-
|
|
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
|
}
|