@quilltap/theme-storybook 1.0.82 → 1.0.84

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.84] - 2026-10-25
6
+
7
+ ### Added
8
+ - 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.
9
+
5
10
  ## [1.0.78] - 2026-10-22
6
11
 
7
12
  ### Added
package/dist/index.css CHANGED
@@ -298,6 +298,8 @@ body {
298
298
  --qt-status-danger-bg: color-mix(in srgb, var(--color-destructive) 85%, transparent);
299
299
  --qt-status-danger-fg: var(--color-destructive-foreground);
300
300
  --qt-status-danger-border: var(--color-destructive);
301
+ --qt-punctuation-warning-bg: color-mix(in srgb, var(--color-warning) 35%, transparent);
302
+ --qt-punctuation-warning-underline: var(--color-warning);
301
303
  --qt-badge-primary-bg: var(--color-primary);
302
304
  --qt-badge-primary-fg: var(--color-primary-foreground);
303
305
  --qt-badge-secondary-bg: var(--color-secondary);
@@ -530,6 +532,22 @@ body {
530
532
  "Liberation Mono",
531
533
  "Courier New",
532
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;
533
551
  --qt-link-color: var(--color-primary);
534
552
  --qt-link-hover-color: color-mix(in srgb, var(--color-primary) 80%, black);
535
553
  --qt-link-decoration: none;
@@ -1911,6 +1929,12 @@ body {
1911
1929
  animation: none;
1912
1930
  }
1913
1931
  }
1932
+ ::highlight(qt-punctuation-warning) {
1933
+ background-color: var(--qt-punctuation-warning-bg);
1934
+ -webkit-text-decoration: underline wavy var(--qt-punctuation-warning-underline);
1935
+ text-decoration: underline wavy var(--qt-punctuation-warning-underline);
1936
+ text-decoration-thickness: 2px;
1937
+ }
1914
1938
  .qt-lexical-contenteditable {
1915
1939
  overflow-y: auto;
1916
1940
  position: relative;
@@ -3253,6 +3277,103 @@ body {
3253
3277
  right: 0.5rem;
3254
3278
  z-index: 10;
3255
3279
  }
3280
+ .qt-diagram {
3281
+ position: relative;
3282
+ width: 100%;
3283
+ max-width: 100%;
3284
+ box-sizing: border-box;
3285
+ margin: 0.5rem 0;
3286
+ padding: 0.75rem;
3287
+ border-radius: var(--qt-diagram-radius);
3288
+ background: var(--qt-diagram-bg);
3289
+ border: 1px solid var(--qt-diagram-border);
3290
+ color: var(--qt-diagram-fg);
3291
+ }
3292
+ .qt-diagram-toolbar {
3293
+ display: flex;
3294
+ flex-wrap: wrap;
3295
+ justify-content: flex-end;
3296
+ gap: 0.25rem;
3297
+ margin-bottom: 0.5rem;
3298
+ }
3299
+ .qt-diagram-toolbar-button {
3300
+ display: inline-flex;
3301
+ align-items: center;
3302
+ gap: 0.25rem;
3303
+ padding: 0.125rem 0.5rem;
3304
+ border-radius: var(--radius-sm);
3305
+ border: 1px solid transparent;
3306
+ background: transparent;
3307
+ color: var(--qt-diagram-toolbar-fg);
3308
+ font-size: 0.75rem;
3309
+ line-height: 1.25rem;
3310
+ cursor: pointer;
3311
+ transition:
3312
+ background-color 150ms,
3313
+ color 150ms,
3314
+ border-color 150ms;
3315
+ }
3316
+ .qt-diagram-toolbar-button:hover,
3317
+ .qt-diagram-toolbar-button[aria-pressed=true] {
3318
+ background: var(--qt-diagram-toolbar-hover-bg);
3319
+ border-color: var(--qt-diagram-border);
3320
+ color: var(--qt-diagram-fg);
3321
+ }
3322
+ .qt-diagram-toolbar-button:focus-visible {
3323
+ outline: 2px solid var(--color-primary);
3324
+ outline-offset: 1px;
3325
+ }
3326
+ .qt-diagram-canvas {
3327
+ max-width: 100%;
3328
+ overflow-x: auto;
3329
+ overflow-y: hidden;
3330
+ }
3331
+ .qt-diagram-canvas > svg {
3332
+ display: block;
3333
+ margin: 0 auto;
3334
+ }
3335
+ .qt-diagram-placeholder {
3336
+ display: flex;
3337
+ align-items: center;
3338
+ justify-content: center;
3339
+ min-height: var(--qt-diagram-placeholder-height);
3340
+ color: var(--qt-diagram-muted-fg);
3341
+ font-size: 0.875rem;
3342
+ font-style: italic;
3343
+ }
3344
+ .qt-diagram-stage {
3345
+ position: relative;
3346
+ width: 0;
3347
+ height: 0;
3348
+ overflow: visible;
3349
+ }
3350
+ .qt-diagram-error {
3351
+ margin: 0.5rem 0;
3352
+ }
3353
+ .qt-diagram-error-note {
3354
+ margin: 0 0 0.25rem;
3355
+ color: var(--qt-diagram-error-fg);
3356
+ font-size: 0.875rem;
3357
+ font-style: italic;
3358
+ }
3359
+ .qt-diagram-error-details {
3360
+ margin-bottom: 0.25rem;
3361
+ color: var(--qt-diagram-muted-fg);
3362
+ font-size: 0.75rem;
3363
+ }
3364
+ .qt-diagram-error-details > summary {
3365
+ cursor: pointer;
3366
+ }
3367
+ .qt-diagram-error-details > pre {
3368
+ margin: 0.25rem 0 0;
3369
+ padding: 0.5rem;
3370
+ border-radius: var(--radius-sm);
3371
+ background: var(--qt-code-bg);
3372
+ color: var(--qt-code-fg);
3373
+ font-family: var(--qt-code-font);
3374
+ white-space: pre-wrap;
3375
+ word-break: break-word;
3376
+ }
3256
3377
  .qt-wikilink {
3257
3378
  color: var(--color-primary);
3258
3379
  font-weight: 500;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quilltap/theme-storybook",
3
- "version": "1.0.82",
3
+ "version": "1.0.84",
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",
@@ -166,6 +166,10 @@
166
166
  --qt-status-danger-fg: var(--color-destructive-foreground);
167
167
  --qt-status-danger-border: var(--color-destructive);
168
168
 
169
+ /* Composer punctuation warnings (PunctuationLintPlugin, ::highlight) */
170
+ --qt-punctuation-warning-bg: color-mix(in srgb, var(--color-warning) 35%, transparent);
171
+ --qt-punctuation-warning-underline: var(--color-warning);
172
+
169
173
  /* Badge palette tokens - referenced by the provider badges */
170
174
  --qt-badge-primary-bg: var(--color-primary);
171
175
  --qt-badge-primary-fg: var(--color-primary-foreground);
@@ -456,6 +460,19 @@
456
460
  --qt-code-border: var(--color-border);
457
461
  --qt-code-font: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
458
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
+
459
476
  /* Link variables */
460
477
  --qt-link-color: var(--color-primary);
461
478
  --qt-link-hover-color: color-mix(in srgb, var(--color-primary) 80%, black);
@@ -2302,6 +2319,15 @@
2302
2319
  .qt-chat-interrupt-button-raised { animation: none; }
2303
2320
  }
2304
2321
 
2322
+ /* Composer punctuation warnings — painted by PunctuationLintPlugin through the
2323
+ CSS Custom Highlight API, so no element carries a class. Only background and
2324
+ text-decoration are styleable on a ::highlight. */
2325
+ ::highlight(qt-punctuation-warning) {
2326
+ background-color: var(--qt-punctuation-warning-bg);
2327
+ text-decoration: underline wavy var(--qt-punctuation-warning-underline);
2328
+ text-decoration-thickness: 2px;
2329
+ }
2330
+
2305
2331
  /* Lexical editor rich text node styles */
2306
2332
  .qt-lexical-contenteditable {
2307
2333
  overflow-y: auto;
@@ -4073,6 +4099,126 @@
4073
4099
  z-index: 10;
4074
4100
  }
4075
4101
 
4102
+ /* ==========================================================================
4103
+ DIAGRAMS
4104
+ Closed ```mermaid / ```dot / ```graphviz / ```svg fences drawn in the
4105
+ Salon (components/chat/diagrams/DiagramBlock.tsx).
4106
+ ========================================================================== */
4107
+
4108
+ /* The frame around one drawn diagram. */
4109
+ .qt-diagram {
4110
+ position: relative;
4111
+ width: 100%;
4112
+ max-width: 100%;
4113
+ box-sizing: border-box;
4114
+ margin: 0.5rem 0;
4115
+ padding: 0.75rem;
4116
+ border-radius: var(--qt-diagram-radius);
4117
+ background: var(--qt-diagram-bg);
4118
+ border: 1px solid var(--qt-diagram-border);
4119
+ color: var(--qt-diagram-fg);
4120
+ }
4121
+
4122
+ /* View source / Copy source / Copy SVG / Download SVG. */
4123
+ .qt-diagram-toolbar {
4124
+ display: flex;
4125
+ flex-wrap: wrap;
4126
+ justify-content: flex-end;
4127
+ gap: 0.25rem;
4128
+ margin-bottom: 0.5rem;
4129
+ }
4130
+
4131
+ .qt-diagram-toolbar-button {
4132
+ display: inline-flex;
4133
+ align-items: center;
4134
+ gap: 0.25rem;
4135
+ padding: 0.125rem 0.5rem;
4136
+ border-radius: var(--radius-sm);
4137
+ border: 1px solid transparent;
4138
+ background: transparent;
4139
+ color: var(--qt-diagram-toolbar-fg);
4140
+ font-size: 0.75rem;
4141
+ line-height: 1.25rem;
4142
+ cursor: pointer;
4143
+ transition: background-color 150ms, color 150ms, border-color 150ms;
4144
+ }
4145
+
4146
+ .qt-diagram-toolbar-button:hover,
4147
+ .qt-diagram-toolbar-button[aria-pressed="true"] {
4148
+ background: var(--qt-diagram-toolbar-hover-bg);
4149
+ border-color: var(--qt-diagram-border);
4150
+ color: var(--qt-diagram-fg);
4151
+ }
4152
+
4153
+ .qt-diagram-toolbar-button:focus-visible {
4154
+ outline: 2px solid var(--color-primary);
4155
+ outline-offset: 1px;
4156
+ }
4157
+
4158
+ /* The drawing itself. A wide diagram scrolls here; it never widens the bubble. */
4159
+ .qt-diagram-canvas {
4160
+ max-width: 100%;
4161
+ overflow-x: auto;
4162
+ overflow-y: hidden;
4163
+ }
4164
+
4165
+ .qt-diagram-canvas > svg {
4166
+ display: block;
4167
+ margin: 0 auto;
4168
+ }
4169
+
4170
+ /* Fixed height while a diagram is drawn, so the transcript doesn't jump. */
4171
+ .qt-diagram-placeholder {
4172
+ display: flex;
4173
+ align-items: center;
4174
+ justify-content: center;
4175
+ min-height: var(--qt-diagram-placeholder-height);
4176
+ color: var(--qt-diagram-muted-fg);
4177
+ font-size: 0.875rem;
4178
+ font-style: italic;
4179
+ }
4180
+
4181
+ /* Zero-size scratch space a renderer lays a drawing out in, offscreen. */
4182
+ .qt-diagram-stage {
4183
+ position: relative;
4184
+ width: 0;
4185
+ height: 0;
4186
+ overflow: visible;
4187
+ }
4188
+
4189
+ /* A fence that could not be drawn: a note, the engine's words, the code. */
4190
+ .qt-diagram-error {
4191
+ margin: 0.5rem 0;
4192
+ }
4193
+
4194
+ .qt-diagram-error-note {
4195
+ margin: 0 0 0.25rem;
4196
+ color: var(--qt-diagram-error-fg);
4197
+ font-size: 0.875rem;
4198
+ font-style: italic;
4199
+ }
4200
+
4201
+ .qt-diagram-error-details {
4202
+ margin-bottom: 0.25rem;
4203
+ color: var(--qt-diagram-muted-fg);
4204
+ font-size: 0.75rem;
4205
+ }
4206
+
4207
+ .qt-diagram-error-details > summary {
4208
+ cursor: pointer;
4209
+ }
4210
+
4211
+ .qt-diagram-error-details > pre {
4212
+ margin: 0.25rem 0 0;
4213
+ padding: 0.5rem;
4214
+ border-radius: var(--radius-sm);
4215
+ background: var(--qt-code-bg);
4216
+ color: var(--qt-code-fg);
4217
+ font-family: var(--qt-code-font);
4218
+ white-space: pre-wrap;
4219
+ word-break: break-word;
4220
+ }
4221
+
4076
4222
  /* ==========================================================================
4077
4223
  WIKILINK COMPONENTS
4078
4224
  ========================================================================== */