@quilltap/theme-storybook 1.0.83 → 1.0.85
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 +10 -0
- package/dist/index.css +243 -0
- package/package.json +1 -1
- package/src/css/qt-components.css +289 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@quilltap/theme-storybook` will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.0.85] - 2026-10-26
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- The diagram lightbox in `qt-components.css`, mirroring the app's `_content.css`: a zoom-in cursor and focus ring on a clickable `.qt-diagram-canvas[role="button"]`, the full-window `.qt-diagram-lightbox` with its toolbar (`-bar`, `-group`, `-button` with hover / pressed / disabled / focus states, `-zoom` readout, `-check` for the Transparent toggle), the pan-and-zoom `-viewport`, the drawing's `-sheet` (with a checkerboard under `[data-transparent="true"]`) and the `-hint` line. Colours read new `--qt-diagram-lightbox-*` variables, defaulting to the `--qt-overlay-*` tokens.
|
|
9
|
+
|
|
10
|
+
## [1.0.84] - 2026-10-25
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- The `qt-diagram*` family in `qt-components.css`, mirroring the app's `_content.css`: the frame around a diagram drawn in the Salon (`.qt-diagram`), its toolbar (`.qt-diagram-toolbar`, `-toolbar-button`, with hover / pressed / focus states), the drawing (`.qt-diagram-canvas`), the loading placeholder (`.qt-diagram-placeholder`), the offscreen scratch space (`.qt-diagram-stage`) and the could-not-draw fallback (`.qt-diagram-error`, `-error-note`, `-error-details`). Colours, radius and fonts read new `--qt-diagram-*` variables, including `--qt-diagram-hand-font` for hand-drawn diagrams.
|
|
14
|
+
|
|
5
15
|
## [1.0.78] - 2026-10-22
|
|
6
16
|
|
|
7
17
|
### Added
|
package/dist/index.css
CHANGED
|
@@ -532,6 +532,31 @@ body {
|
|
|
532
532
|
"Liberation Mono",
|
|
533
533
|
"Courier New",
|
|
534
534
|
monospace;
|
|
535
|
+
--qt-diagram-radius: var(--radius-md);
|
|
536
|
+
--qt-diagram-bg: var(--color-card);
|
|
537
|
+
--qt-diagram-fg: var(--color-foreground);
|
|
538
|
+
--qt-diagram-border: var(--color-border);
|
|
539
|
+
--qt-diagram-muted-fg: var(--color-muted-foreground);
|
|
540
|
+
--qt-diagram-toolbar-fg: var(--color-muted-foreground);
|
|
541
|
+
--qt-diagram-toolbar-hover-bg: var(--color-muted);
|
|
542
|
+
--qt-diagram-error-fg: var(--color-muted-foreground);
|
|
543
|
+
--qt-diagram-placeholder-height: 8rem;
|
|
544
|
+
--qt-diagram-font: var(--font-sans);
|
|
545
|
+
--qt-diagram-hand-font:
|
|
546
|
+
"Segoe Print",
|
|
547
|
+
"Bradley Hand",
|
|
548
|
+
"Chalkboard SE",
|
|
549
|
+
"Marker Felt",
|
|
550
|
+
cursive;
|
|
551
|
+
--qt-diagram-lightbox-backdrop: var(--qt-overlay-bg);
|
|
552
|
+
--qt-diagram-lightbox-fg: var(--qt-overlay-fg);
|
|
553
|
+
--qt-diagram-lightbox-muted-fg: var(--qt-overlay-muted-fg);
|
|
554
|
+
--qt-diagram-lightbox-button-bg: var(--qt-overlay-btn-bg);
|
|
555
|
+
--qt-diagram-lightbox-button-hover-bg: var(--qt-overlay-btn-hover-bg);
|
|
556
|
+
--qt-diagram-lightbox-pressed-border: var(--qt-overlay-muted-fg);
|
|
557
|
+
--qt-diagram-lightbox-shadow: 0 10px 40px rgb(0 0 0 / 0.45);
|
|
558
|
+
--qt-diagram-lightbox-check-a: #ffffff;
|
|
559
|
+
--qt-diagram-lightbox-check-b: #d4d4d8;
|
|
535
560
|
--qt-link-color: var(--color-primary);
|
|
536
561
|
--qt-link-hover-color: color-mix(in srgb, var(--color-primary) 80%, black);
|
|
537
562
|
--qt-link-decoration: none;
|
|
@@ -3261,6 +3286,224 @@ body {
|
|
|
3261
3286
|
right: 0.5rem;
|
|
3262
3287
|
z-index: 10;
|
|
3263
3288
|
}
|
|
3289
|
+
.qt-diagram {
|
|
3290
|
+
position: relative;
|
|
3291
|
+
width: 100%;
|
|
3292
|
+
max-width: 100%;
|
|
3293
|
+
box-sizing: border-box;
|
|
3294
|
+
margin: 0.5rem 0;
|
|
3295
|
+
padding: 0.75rem;
|
|
3296
|
+
border-radius: var(--qt-diagram-radius);
|
|
3297
|
+
background: var(--qt-diagram-bg);
|
|
3298
|
+
border: 1px solid var(--qt-diagram-border);
|
|
3299
|
+
color: var(--qt-diagram-fg);
|
|
3300
|
+
}
|
|
3301
|
+
.qt-diagram-toolbar {
|
|
3302
|
+
display: flex;
|
|
3303
|
+
flex-wrap: wrap;
|
|
3304
|
+
justify-content: flex-end;
|
|
3305
|
+
gap: 0.25rem;
|
|
3306
|
+
margin-bottom: 0.5rem;
|
|
3307
|
+
}
|
|
3308
|
+
.qt-diagram-toolbar-button {
|
|
3309
|
+
display: inline-flex;
|
|
3310
|
+
align-items: center;
|
|
3311
|
+
gap: 0.25rem;
|
|
3312
|
+
padding: 0.125rem 0.5rem;
|
|
3313
|
+
border-radius: var(--radius-sm);
|
|
3314
|
+
border: 1px solid transparent;
|
|
3315
|
+
background: transparent;
|
|
3316
|
+
color: var(--qt-diagram-toolbar-fg);
|
|
3317
|
+
font-size: 0.75rem;
|
|
3318
|
+
line-height: 1.25rem;
|
|
3319
|
+
cursor: pointer;
|
|
3320
|
+
transition:
|
|
3321
|
+
background-color 150ms,
|
|
3322
|
+
color 150ms,
|
|
3323
|
+
border-color 150ms;
|
|
3324
|
+
}
|
|
3325
|
+
.qt-diagram-toolbar-button:hover,
|
|
3326
|
+
.qt-diagram-toolbar-button[aria-pressed=true] {
|
|
3327
|
+
background: var(--qt-diagram-toolbar-hover-bg);
|
|
3328
|
+
border-color: var(--qt-diagram-border);
|
|
3329
|
+
color: var(--qt-diagram-fg);
|
|
3330
|
+
}
|
|
3331
|
+
.qt-diagram-toolbar-button:focus-visible {
|
|
3332
|
+
outline: 2px solid var(--color-primary);
|
|
3333
|
+
outline-offset: 1px;
|
|
3334
|
+
}
|
|
3335
|
+
.qt-diagram-canvas {
|
|
3336
|
+
max-width: 100%;
|
|
3337
|
+
overflow-x: auto;
|
|
3338
|
+
overflow-y: hidden;
|
|
3339
|
+
}
|
|
3340
|
+
.qt-diagram-canvas > svg {
|
|
3341
|
+
display: block;
|
|
3342
|
+
margin: 0 auto;
|
|
3343
|
+
}
|
|
3344
|
+
.qt-diagram-placeholder {
|
|
3345
|
+
display: flex;
|
|
3346
|
+
align-items: center;
|
|
3347
|
+
justify-content: center;
|
|
3348
|
+
min-height: var(--qt-diagram-placeholder-height);
|
|
3349
|
+
color: var(--qt-diagram-muted-fg);
|
|
3350
|
+
font-size: 0.875rem;
|
|
3351
|
+
font-style: italic;
|
|
3352
|
+
}
|
|
3353
|
+
.qt-diagram-stage {
|
|
3354
|
+
position: relative;
|
|
3355
|
+
width: 0;
|
|
3356
|
+
height: 0;
|
|
3357
|
+
overflow: visible;
|
|
3358
|
+
}
|
|
3359
|
+
.qt-diagram-error {
|
|
3360
|
+
margin: 0.5rem 0;
|
|
3361
|
+
}
|
|
3362
|
+
.qt-diagram-error-note {
|
|
3363
|
+
margin: 0 0 0.25rem;
|
|
3364
|
+
color: var(--qt-diagram-error-fg);
|
|
3365
|
+
font-size: 0.875rem;
|
|
3366
|
+
font-style: italic;
|
|
3367
|
+
}
|
|
3368
|
+
.qt-diagram-error-details {
|
|
3369
|
+
margin-bottom: 0.25rem;
|
|
3370
|
+
color: var(--qt-diagram-muted-fg);
|
|
3371
|
+
font-size: 0.75rem;
|
|
3372
|
+
}
|
|
3373
|
+
.qt-diagram-error-details > summary {
|
|
3374
|
+
cursor: pointer;
|
|
3375
|
+
}
|
|
3376
|
+
.qt-diagram-error-details > pre {
|
|
3377
|
+
margin: 0.25rem 0 0;
|
|
3378
|
+
padding: 0.5rem;
|
|
3379
|
+
border-radius: var(--radius-sm);
|
|
3380
|
+
background: var(--qt-code-bg);
|
|
3381
|
+
color: var(--qt-code-fg);
|
|
3382
|
+
font-family: var(--qt-code-font);
|
|
3383
|
+
white-space: pre-wrap;
|
|
3384
|
+
word-break: break-word;
|
|
3385
|
+
}
|
|
3386
|
+
.qt-diagram-canvas[role=button] {
|
|
3387
|
+
cursor: zoom-in;
|
|
3388
|
+
border-radius: var(--radius-sm);
|
|
3389
|
+
}
|
|
3390
|
+
.qt-diagram-canvas[role=button]:focus-visible {
|
|
3391
|
+
outline: 2px solid var(--color-primary);
|
|
3392
|
+
outline-offset: 2px;
|
|
3393
|
+
}
|
|
3394
|
+
.qt-diagram-lightbox {
|
|
3395
|
+
position: fixed;
|
|
3396
|
+
inset: 0;
|
|
3397
|
+
z-index: 100;
|
|
3398
|
+
display: flex;
|
|
3399
|
+
flex-direction: column;
|
|
3400
|
+
background: var(--qt-diagram-lightbox-backdrop);
|
|
3401
|
+
backdrop-filter: blur(4px);
|
|
3402
|
+
color: var(--qt-diagram-lightbox-fg);
|
|
3403
|
+
outline: none;
|
|
3404
|
+
}
|
|
3405
|
+
.qt-diagram-lightbox-bar {
|
|
3406
|
+
display: flex;
|
|
3407
|
+
flex-wrap: wrap;
|
|
3408
|
+
justify-content: space-between;
|
|
3409
|
+
align-items: center;
|
|
3410
|
+
gap: 0.5rem;
|
|
3411
|
+
padding: 0.75rem 1rem;
|
|
3412
|
+
}
|
|
3413
|
+
.qt-diagram-lightbox-group {
|
|
3414
|
+
display: flex;
|
|
3415
|
+
flex-wrap: wrap;
|
|
3416
|
+
align-items: center;
|
|
3417
|
+
gap: 0.25rem;
|
|
3418
|
+
}
|
|
3419
|
+
.qt-diagram-lightbox-button {
|
|
3420
|
+
display: inline-flex;
|
|
3421
|
+
align-items: center;
|
|
3422
|
+
gap: 0.375rem;
|
|
3423
|
+
min-height: 2rem;
|
|
3424
|
+
padding: 0.25rem 0.625rem;
|
|
3425
|
+
border-radius: var(--radius-sm);
|
|
3426
|
+
border: 1px solid transparent;
|
|
3427
|
+
background: var(--qt-diagram-lightbox-button-bg);
|
|
3428
|
+
color: inherit;
|
|
3429
|
+
font-size: 0.8125rem;
|
|
3430
|
+
line-height: 1.25rem;
|
|
3431
|
+
cursor: pointer;
|
|
3432
|
+
transition: background-color 150ms, border-color 150ms;
|
|
3433
|
+
}
|
|
3434
|
+
.qt-diagram-lightbox-button:hover,
|
|
3435
|
+
.qt-diagram-lightbox-button[aria-pressed=true] {
|
|
3436
|
+
background: var(--qt-diagram-lightbox-button-hover-bg);
|
|
3437
|
+
}
|
|
3438
|
+
.qt-diagram-lightbox-button[aria-pressed=true] {
|
|
3439
|
+
border-color: var(--qt-diagram-lightbox-pressed-border);
|
|
3440
|
+
}
|
|
3441
|
+
.qt-diagram-lightbox-button:disabled {
|
|
3442
|
+
opacity: 0.6;
|
|
3443
|
+
cursor: progress;
|
|
3444
|
+
}
|
|
3445
|
+
.qt-diagram-lightbox-button:focus-visible,
|
|
3446
|
+
.qt-diagram-lightbox-check:focus-within {
|
|
3447
|
+
outline: 2px solid var(--color-primary);
|
|
3448
|
+
outline-offset: 1px;
|
|
3449
|
+
}
|
|
3450
|
+
.qt-diagram-lightbox-zoom {
|
|
3451
|
+
min-width: 3.5rem;
|
|
3452
|
+
text-align: center;
|
|
3453
|
+
font-size: 0.8125rem;
|
|
3454
|
+
font-variant-numeric: tabular-nums;
|
|
3455
|
+
color: var(--qt-diagram-lightbox-muted-fg);
|
|
3456
|
+
}
|
|
3457
|
+
.qt-diagram-lightbox-check {
|
|
3458
|
+
display: inline-flex;
|
|
3459
|
+
align-items: center;
|
|
3460
|
+
gap: 0.375rem;
|
|
3461
|
+
padding: 0.25rem 0.5rem;
|
|
3462
|
+
border-radius: var(--radius-sm);
|
|
3463
|
+
font-size: 0.8125rem;
|
|
3464
|
+
cursor: pointer;
|
|
3465
|
+
}
|
|
3466
|
+
.qt-diagram-lightbox-check > input {
|
|
3467
|
+
accent-color: var(--color-primary);
|
|
3468
|
+
}
|
|
3469
|
+
.qt-diagram-lightbox-viewport {
|
|
3470
|
+
position: relative;
|
|
3471
|
+
flex: 1 1 auto;
|
|
3472
|
+
min-height: 0;
|
|
3473
|
+
overflow: hidden;
|
|
3474
|
+
touch-action: none;
|
|
3475
|
+
-webkit-user-select: none;
|
|
3476
|
+
-moz-user-select: none;
|
|
3477
|
+
user-select: none;
|
|
3478
|
+
cursor: grab;
|
|
3479
|
+
}
|
|
3480
|
+
.qt-diagram-lightbox-viewport:active {
|
|
3481
|
+
cursor: grabbing;
|
|
3482
|
+
}
|
|
3483
|
+
.qt-diagram-lightbox-sheet {
|
|
3484
|
+
position: absolute;
|
|
3485
|
+
border-radius: var(--qt-diagram-radius);
|
|
3486
|
+
background: var(--qt-diagram-bg);
|
|
3487
|
+
color: var(--qt-diagram-fg);
|
|
3488
|
+
box-shadow: var(--qt-diagram-lightbox-shadow);
|
|
3489
|
+
}
|
|
3490
|
+
.qt-diagram-lightbox-sheet[data-transparent=true] {
|
|
3491
|
+
background-color: var(--qt-diagram-lightbox-check-a);
|
|
3492
|
+
background-image:
|
|
3493
|
+
conic-gradient(
|
|
3494
|
+
var(--qt-diagram-lightbox-check-b) 25%,
|
|
3495
|
+
transparent 0 50%,
|
|
3496
|
+
var(--qt-diagram-lightbox-check-b) 0 75%,
|
|
3497
|
+
transparent 0);
|
|
3498
|
+
background-size: 16px 16px;
|
|
3499
|
+
}
|
|
3500
|
+
.qt-diagram-lightbox-hint {
|
|
3501
|
+
margin: 0;
|
|
3502
|
+
padding: 0.5rem 1rem 0.75rem;
|
|
3503
|
+
text-align: center;
|
|
3504
|
+
font-size: 0.75rem;
|
|
3505
|
+
color: var(--qt-diagram-lightbox-muted-fg);
|
|
3506
|
+
}
|
|
3264
3507
|
.qt-wikilink {
|
|
3265
3508
|
color: var(--color-primary);
|
|
3266
3509
|
font-weight: 500;
|
package/package.json
CHANGED
|
@@ -460,6 +460,30 @@
|
|
|
460
460
|
--qt-code-border: var(--color-border);
|
|
461
461
|
--qt-code-font: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
462
462
|
|
|
463
|
+
/* Diagram variables */
|
|
464
|
+
--qt-diagram-radius: var(--radius-md);
|
|
465
|
+
--qt-diagram-bg: var(--color-card);
|
|
466
|
+
--qt-diagram-fg: var(--color-foreground);
|
|
467
|
+
--qt-diagram-border: var(--color-border);
|
|
468
|
+
--qt-diagram-muted-fg: var(--color-muted-foreground);
|
|
469
|
+
--qt-diagram-toolbar-fg: var(--color-muted-foreground);
|
|
470
|
+
--qt-diagram-toolbar-hover-bg: var(--color-muted);
|
|
471
|
+
--qt-diagram-error-fg: var(--color-muted-foreground);
|
|
472
|
+
--qt-diagram-placeholder-height: 8rem;
|
|
473
|
+
--qt-diagram-font: var(--font-sans);
|
|
474
|
+
--qt-diagram-hand-font: "Segoe Print", "Bradley Hand", "Chalkboard SE", "Marker Felt", cursive;
|
|
475
|
+
/* The lightbox: the overlay's backdrop and glass buttons, a lifted sheet,
|
|
476
|
+
and the checkerboard behind a transparent copy. */
|
|
477
|
+
--qt-diagram-lightbox-backdrop: var(--qt-overlay-bg);
|
|
478
|
+
--qt-diagram-lightbox-fg: var(--qt-overlay-fg);
|
|
479
|
+
--qt-diagram-lightbox-muted-fg: var(--qt-overlay-muted-fg);
|
|
480
|
+
--qt-diagram-lightbox-button-bg: var(--qt-overlay-btn-bg);
|
|
481
|
+
--qt-diagram-lightbox-button-hover-bg: var(--qt-overlay-btn-hover-bg);
|
|
482
|
+
--qt-diagram-lightbox-pressed-border: var(--qt-overlay-muted-fg);
|
|
483
|
+
--qt-diagram-lightbox-shadow: 0 10px 40px rgb(0 0 0 / 0.45);
|
|
484
|
+
--qt-diagram-lightbox-check-a: #ffffff;
|
|
485
|
+
--qt-diagram-lightbox-check-b: #d4d4d8;
|
|
486
|
+
|
|
463
487
|
/* Link variables */
|
|
464
488
|
--qt-link-color: var(--color-primary);
|
|
465
489
|
--qt-link-hover-color: color-mix(in srgb, var(--color-primary) 80%, black);
|
|
@@ -4086,6 +4110,271 @@
|
|
|
4086
4110
|
z-index: 10;
|
|
4087
4111
|
}
|
|
4088
4112
|
|
|
4113
|
+
/* ==========================================================================
|
|
4114
|
+
DIAGRAMS
|
|
4115
|
+
Closed ```mermaid / ```dot / ```graphviz / ```svg fences drawn in the
|
|
4116
|
+
Salon (components/chat/diagrams/DiagramBlock.tsx).
|
|
4117
|
+
========================================================================== */
|
|
4118
|
+
|
|
4119
|
+
/* The frame around one drawn diagram. */
|
|
4120
|
+
.qt-diagram {
|
|
4121
|
+
position: relative;
|
|
4122
|
+
width: 100%;
|
|
4123
|
+
max-width: 100%;
|
|
4124
|
+
box-sizing: border-box;
|
|
4125
|
+
margin: 0.5rem 0;
|
|
4126
|
+
padding: 0.75rem;
|
|
4127
|
+
border-radius: var(--qt-diagram-radius);
|
|
4128
|
+
background: var(--qt-diagram-bg);
|
|
4129
|
+
border: 1px solid var(--qt-diagram-border);
|
|
4130
|
+
color: var(--qt-diagram-fg);
|
|
4131
|
+
}
|
|
4132
|
+
|
|
4133
|
+
/* View source / Copy source / Copy SVG / Download SVG. */
|
|
4134
|
+
.qt-diagram-toolbar {
|
|
4135
|
+
display: flex;
|
|
4136
|
+
flex-wrap: wrap;
|
|
4137
|
+
justify-content: flex-end;
|
|
4138
|
+
gap: 0.25rem;
|
|
4139
|
+
margin-bottom: 0.5rem;
|
|
4140
|
+
}
|
|
4141
|
+
|
|
4142
|
+
.qt-diagram-toolbar-button {
|
|
4143
|
+
display: inline-flex;
|
|
4144
|
+
align-items: center;
|
|
4145
|
+
gap: 0.25rem;
|
|
4146
|
+
padding: 0.125rem 0.5rem;
|
|
4147
|
+
border-radius: var(--radius-sm);
|
|
4148
|
+
border: 1px solid transparent;
|
|
4149
|
+
background: transparent;
|
|
4150
|
+
color: var(--qt-diagram-toolbar-fg);
|
|
4151
|
+
font-size: 0.75rem;
|
|
4152
|
+
line-height: 1.25rem;
|
|
4153
|
+
cursor: pointer;
|
|
4154
|
+
transition: background-color 150ms, color 150ms, border-color 150ms;
|
|
4155
|
+
}
|
|
4156
|
+
|
|
4157
|
+
.qt-diagram-toolbar-button:hover,
|
|
4158
|
+
.qt-diagram-toolbar-button[aria-pressed="true"] {
|
|
4159
|
+
background: var(--qt-diagram-toolbar-hover-bg);
|
|
4160
|
+
border-color: var(--qt-diagram-border);
|
|
4161
|
+
color: var(--qt-diagram-fg);
|
|
4162
|
+
}
|
|
4163
|
+
|
|
4164
|
+
.qt-diagram-toolbar-button:focus-visible {
|
|
4165
|
+
outline: 2px solid var(--color-primary);
|
|
4166
|
+
outline-offset: 1px;
|
|
4167
|
+
}
|
|
4168
|
+
|
|
4169
|
+
/* The drawing itself. A wide diagram scrolls here; it never widens the bubble. */
|
|
4170
|
+
.qt-diagram-canvas {
|
|
4171
|
+
max-width: 100%;
|
|
4172
|
+
overflow-x: auto;
|
|
4173
|
+
overflow-y: hidden;
|
|
4174
|
+
}
|
|
4175
|
+
|
|
4176
|
+
.qt-diagram-canvas > svg {
|
|
4177
|
+
display: block;
|
|
4178
|
+
margin: 0 auto;
|
|
4179
|
+
}
|
|
4180
|
+
|
|
4181
|
+
/* Fixed height while a diagram is drawn, so the transcript doesn't jump. */
|
|
4182
|
+
.qt-diagram-placeholder {
|
|
4183
|
+
display: flex;
|
|
4184
|
+
align-items: center;
|
|
4185
|
+
justify-content: center;
|
|
4186
|
+
min-height: var(--qt-diagram-placeholder-height);
|
|
4187
|
+
color: var(--qt-diagram-muted-fg);
|
|
4188
|
+
font-size: 0.875rem;
|
|
4189
|
+
font-style: italic;
|
|
4190
|
+
}
|
|
4191
|
+
|
|
4192
|
+
/* Zero-size scratch space a renderer lays a drawing out in, offscreen. */
|
|
4193
|
+
.qt-diagram-stage {
|
|
4194
|
+
position: relative;
|
|
4195
|
+
width: 0;
|
|
4196
|
+
height: 0;
|
|
4197
|
+
overflow: visible;
|
|
4198
|
+
}
|
|
4199
|
+
|
|
4200
|
+
/* A fence that could not be drawn: a note, the engine's words, the code. */
|
|
4201
|
+
.qt-diagram-error {
|
|
4202
|
+
margin: 0.5rem 0;
|
|
4203
|
+
}
|
|
4204
|
+
|
|
4205
|
+
.qt-diagram-error-note {
|
|
4206
|
+
margin: 0 0 0.25rem;
|
|
4207
|
+
color: var(--qt-diagram-error-fg);
|
|
4208
|
+
font-size: 0.875rem;
|
|
4209
|
+
font-style: italic;
|
|
4210
|
+
}
|
|
4211
|
+
|
|
4212
|
+
.qt-diagram-error-details {
|
|
4213
|
+
margin-bottom: 0.25rem;
|
|
4214
|
+
color: var(--qt-diagram-muted-fg);
|
|
4215
|
+
font-size: 0.75rem;
|
|
4216
|
+
}
|
|
4217
|
+
|
|
4218
|
+
.qt-diagram-error-details > summary {
|
|
4219
|
+
cursor: pointer;
|
|
4220
|
+
}
|
|
4221
|
+
|
|
4222
|
+
.qt-diagram-error-details > pre {
|
|
4223
|
+
margin: 0.25rem 0 0;
|
|
4224
|
+
padding: 0.5rem;
|
|
4225
|
+
border-radius: var(--radius-sm);
|
|
4226
|
+
background: var(--qt-code-bg);
|
|
4227
|
+
color: var(--qt-code-fg);
|
|
4228
|
+
font-family: var(--qt-code-font);
|
|
4229
|
+
white-space: pre-wrap;
|
|
4230
|
+
word-break: break-word;
|
|
4231
|
+
}
|
|
4232
|
+
|
|
4233
|
+
/* The drawing is also the way in: click (or Enter) to enlarge. */
|
|
4234
|
+
.qt-diagram-canvas[role="button"] {
|
|
4235
|
+
cursor: zoom-in;
|
|
4236
|
+
border-radius: var(--radius-sm);
|
|
4237
|
+
}
|
|
4238
|
+
|
|
4239
|
+
.qt-diagram-canvas[role="button"]:focus-visible {
|
|
4240
|
+
outline: 2px solid var(--color-primary);
|
|
4241
|
+
outline-offset: 2px;
|
|
4242
|
+
}
|
|
4243
|
+
|
|
4244
|
+
/* The lightbox: one diagram, full-window, to zoom into and copy as PNG
|
|
4245
|
+
(components/chat/diagrams/DiagramLightbox.tsx). */
|
|
4246
|
+
.qt-diagram-lightbox {
|
|
4247
|
+
position: fixed;
|
|
4248
|
+
inset: 0;
|
|
4249
|
+
z-index: 100;
|
|
4250
|
+
display: flex;
|
|
4251
|
+
flex-direction: column;
|
|
4252
|
+
background: var(--qt-diagram-lightbox-backdrop);
|
|
4253
|
+
backdrop-filter: blur(4px);
|
|
4254
|
+
color: var(--qt-diagram-lightbox-fg);
|
|
4255
|
+
outline: none;
|
|
4256
|
+
}
|
|
4257
|
+
|
|
4258
|
+
/* Zoom controls on the left; Transparent, Copy PNG and Close on the right. */
|
|
4259
|
+
.qt-diagram-lightbox-bar {
|
|
4260
|
+
display: flex;
|
|
4261
|
+
flex-wrap: wrap;
|
|
4262
|
+
justify-content: space-between;
|
|
4263
|
+
align-items: center;
|
|
4264
|
+
gap: 0.5rem;
|
|
4265
|
+
padding: 0.75rem 1rem;
|
|
4266
|
+
}
|
|
4267
|
+
|
|
4268
|
+
.qt-diagram-lightbox-group {
|
|
4269
|
+
display: flex;
|
|
4270
|
+
flex-wrap: wrap;
|
|
4271
|
+
align-items: center;
|
|
4272
|
+
gap: 0.25rem;
|
|
4273
|
+
}
|
|
4274
|
+
|
|
4275
|
+
.qt-diagram-lightbox-button {
|
|
4276
|
+
display: inline-flex;
|
|
4277
|
+
align-items: center;
|
|
4278
|
+
gap: 0.375rem;
|
|
4279
|
+
min-height: 2rem;
|
|
4280
|
+
padding: 0.25rem 0.625rem;
|
|
4281
|
+
border-radius: var(--radius-sm);
|
|
4282
|
+
border: 1px solid transparent;
|
|
4283
|
+
background: var(--qt-diagram-lightbox-button-bg);
|
|
4284
|
+
color: inherit;
|
|
4285
|
+
font-size: 0.8125rem;
|
|
4286
|
+
line-height: 1.25rem;
|
|
4287
|
+
cursor: pointer;
|
|
4288
|
+
transition: background-color 150ms, border-color 150ms;
|
|
4289
|
+
}
|
|
4290
|
+
|
|
4291
|
+
.qt-diagram-lightbox-button:hover,
|
|
4292
|
+
.qt-diagram-lightbox-button[aria-pressed="true"] {
|
|
4293
|
+
background: var(--qt-diagram-lightbox-button-hover-bg);
|
|
4294
|
+
}
|
|
4295
|
+
|
|
4296
|
+
.qt-diagram-lightbox-button[aria-pressed="true"] {
|
|
4297
|
+
border-color: var(--qt-diagram-lightbox-pressed-border);
|
|
4298
|
+
}
|
|
4299
|
+
|
|
4300
|
+
.qt-diagram-lightbox-button:disabled {
|
|
4301
|
+
opacity: 0.6;
|
|
4302
|
+
cursor: progress;
|
|
4303
|
+
}
|
|
4304
|
+
|
|
4305
|
+
.qt-diagram-lightbox-button:focus-visible,
|
|
4306
|
+
.qt-diagram-lightbox-check:focus-within {
|
|
4307
|
+
outline: 2px solid var(--color-primary);
|
|
4308
|
+
outline-offset: 1px;
|
|
4309
|
+
}
|
|
4310
|
+
|
|
4311
|
+
.qt-diagram-lightbox-zoom {
|
|
4312
|
+
min-width: 3.5rem;
|
|
4313
|
+
text-align: center;
|
|
4314
|
+
font-size: 0.8125rem;
|
|
4315
|
+
font-variant-numeric: tabular-nums;
|
|
4316
|
+
color: var(--qt-diagram-lightbox-muted-fg);
|
|
4317
|
+
}
|
|
4318
|
+
|
|
4319
|
+
.qt-diagram-lightbox-check {
|
|
4320
|
+
display: inline-flex;
|
|
4321
|
+
align-items: center;
|
|
4322
|
+
gap: 0.375rem;
|
|
4323
|
+
padding: 0.25rem 0.5rem;
|
|
4324
|
+
border-radius: var(--radius-sm);
|
|
4325
|
+
font-size: 0.8125rem;
|
|
4326
|
+
cursor: pointer;
|
|
4327
|
+
}
|
|
4328
|
+
|
|
4329
|
+
.qt-diagram-lightbox-check > input {
|
|
4330
|
+
accent-color: var(--color-primary);
|
|
4331
|
+
}
|
|
4332
|
+
|
|
4333
|
+
/* The pan-and-zoom surface. Touch gestures are all ours here. */
|
|
4334
|
+
.qt-diagram-lightbox-viewport {
|
|
4335
|
+
position: relative;
|
|
4336
|
+
flex: 1 1 auto;
|
|
4337
|
+
min-height: 0;
|
|
4338
|
+
overflow: hidden;
|
|
4339
|
+
touch-action: none;
|
|
4340
|
+
user-select: none;
|
|
4341
|
+
cursor: grab;
|
|
4342
|
+
}
|
|
4343
|
+
|
|
4344
|
+
.qt-diagram-lightbox-viewport:active {
|
|
4345
|
+
cursor: grabbing;
|
|
4346
|
+
}
|
|
4347
|
+
|
|
4348
|
+
/* The drawing on its own card. Sized (not transformed) by the zoom, so the
|
|
4349
|
+
vector is redrawn sharp at every scale. */
|
|
4350
|
+
.qt-diagram-lightbox-sheet {
|
|
4351
|
+
position: absolute;
|
|
4352
|
+
border-radius: var(--qt-diagram-radius);
|
|
4353
|
+
background: var(--qt-diagram-bg);
|
|
4354
|
+
color: var(--qt-diagram-fg);
|
|
4355
|
+
box-shadow: var(--qt-diagram-lightbox-shadow);
|
|
4356
|
+
}
|
|
4357
|
+
|
|
4358
|
+
/* Transparent ticked: show what the PNG will carry — nothing behind it. */
|
|
4359
|
+
.qt-diagram-lightbox-sheet[data-transparent="true"] {
|
|
4360
|
+
background-color: var(--qt-diagram-lightbox-check-a);
|
|
4361
|
+
background-image: conic-gradient(
|
|
4362
|
+
var(--qt-diagram-lightbox-check-b) 25%,
|
|
4363
|
+
transparent 0 50%,
|
|
4364
|
+
var(--qt-diagram-lightbox-check-b) 0 75%,
|
|
4365
|
+
transparent 0
|
|
4366
|
+
);
|
|
4367
|
+
background-size: 16px 16px;
|
|
4368
|
+
}
|
|
4369
|
+
|
|
4370
|
+
.qt-diagram-lightbox-hint {
|
|
4371
|
+
margin: 0;
|
|
4372
|
+
padding: 0.5rem 1rem 0.75rem;
|
|
4373
|
+
text-align: center;
|
|
4374
|
+
font-size: 0.75rem;
|
|
4375
|
+
color: var(--qt-diagram-lightbox-muted-fg);
|
|
4376
|
+
}
|
|
4377
|
+
|
|
4089
4378
|
/* ==========================================================================
|
|
4090
4379
|
WIKILINK COMPONENTS
|
|
4091
4380
|
========================================================================== */
|