@quilltap/theme-storybook 1.0.84 → 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 CHANGED
@@ -2,6 +2,11 @@
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
+
5
10
  ## [1.0.84] - 2026-10-25
6
11
 
7
12
  ### Added
package/dist/index.css CHANGED
@@ -548,6 +548,15 @@ body {
548
548
  "Chalkboard SE",
549
549
  "Marker Felt",
550
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;
551
560
  --qt-link-color: var(--color-primary);
552
561
  --qt-link-hover-color: color-mix(in srgb, var(--color-primary) 80%, black);
553
562
  --qt-link-decoration: none;
@@ -3374,6 +3383,127 @@ body {
3374
3383
  white-space: pre-wrap;
3375
3384
  word-break: break-word;
3376
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
+ }
3377
3507
  .qt-wikilink {
3378
3508
  color: var(--color-primary);
3379
3509
  font-weight: 500;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quilltap/theme-storybook",
3
- "version": "1.0.84",
3
+ "version": "1.0.85",
4
4
  "description": "Storybook preset and stories for developing Quilltap theme plugins",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -472,6 +472,17 @@
472
472
  --qt-diagram-placeholder-height: 8rem;
473
473
  --qt-diagram-font: var(--font-sans);
474
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;
475
486
 
476
487
  /* Link variables */
477
488
  --qt-link-color: var(--color-primary);
@@ -4219,6 +4230,151 @@
4219
4230
  word-break: break-word;
4220
4231
  }
4221
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
+
4222
4378
  /* ==========================================================================
4223
4379
  WIKILINK COMPONENTS
4224
4380
  ========================================================================== */