@quilltap/theme-storybook 1.0.85 → 1.0.87

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/index.css CHANGED
@@ -300,6 +300,12 @@ body {
300
300
  --qt-status-danger-border: var(--color-destructive);
301
301
  --qt-punctuation-warning-bg: color-mix(in srgb, var(--color-warning) 35%, transparent);
302
302
  --qt-punctuation-warning-underline: var(--color-warning);
303
+ --qt-punctuation-no-dialogue-bg: color-mix(in srgb, var(--color-warning) 14%, transparent);
304
+ --qt-punctuation-no-dialogue-underline: var(--color-warning);
305
+ --qt-composer-narration-fg: color-mix(in srgb, var(--color-foreground) 65%, var(--color-primary));
306
+ --qt-composer-narration-bg: color-mix(in srgb, var(--color-primary) 7%, transparent);
307
+ --qt-composer-ooc-fg: var(--qt-rp-ooc-color);
308
+ --qt-composer-ooc-bg: var(--qt-rp-ooc-bg);
303
309
  --qt-badge-primary-bg: var(--color-primary);
304
310
  --qt-badge-primary-fg: var(--color-primary-foreground);
305
311
  --qt-badge-secondary-bg: var(--color-secondary);
@@ -505,7 +511,7 @@ body {
505
511
  --qt-response-status-gathering-fg: hsl(270 55% 55%);
506
512
  --qt-response-status-building-fg: hsl(38 85% 48%);
507
513
  --qt-response-status-sending-fg: var(--qt-status-info-fg);
508
- --qt-response-status-streaming-fg: hsl(152 55% 38%);
514
+ --qt-response-status-streaming-fg: hsl(152 55% 29%);
509
515
  --qt-response-status-tool-fg: hsl(270 55% 55%);
510
516
  --qt-participant-card-radius: var(--radius-lg);
511
517
  --qt-participant-card-bg: var(--color-card);
@@ -985,6 +991,7 @@ body {
985
991
  }
986
992
  .qt-danger-badge {
987
993
  --qt-concierge-badge-color: var(--color-destructive, #dc2626);
994
+ --qt-concierge-badge-fg: var(--qt-alert-error-fg, var(--qt-concierge-badge-color));
988
995
  display: inline-flex;
989
996
  align-items: center;
990
997
  gap: 0.25rem;
@@ -994,14 +1001,15 @@ body {
994
1001
  line-height: 1rem;
995
1002
  font-weight: 500;
996
1003
  background: color-mix(in srgb, var(--qt-concierge-badge-color) 15%, transparent);
997
- color: var(--qt-concierge-badge-color);
1004
+ color: var(--qt-concierge-badge-fg);
998
1005
  border: 1px solid color-mix(in srgb, var(--qt-concierge-badge-color) 40%, transparent);
999
1006
  }
1000
1007
  .qt-danger-badge-muted {
1001
1008
  --qt-concierge-badge-color: var(--color-muted-foreground, #6b7280);
1009
+ --qt-concierge-badge-fg: var(--color-foreground);
1002
1010
  }
1003
1011
  .qt-concierge-mark {
1004
- --qt-concierge-mark-color: var(--color-destructive, #dc2626);
1012
+ --qt-concierge-mark-color: var(--qt-alert-error-fg, var(--color-destructive, #dc2626));
1005
1013
  display: inline-block;
1006
1014
  font-weight: 700;
1007
1015
  line-height: 1;
@@ -1630,6 +1638,7 @@ body {
1630
1638
  color: var(--qt-response-status-streaming-fg);
1631
1639
  }
1632
1640
  .qt-chat-regenerating-plate-text {
1641
+ color: var(--qt-chat-regenerating-plate-fg, var(--qt-chat-assistant-fg, var(--color-foreground)));
1633
1642
  font-size: 0.875rem;
1634
1643
  line-height: 1.25rem;
1635
1644
  font-weight: 500;
@@ -1944,6 +1953,20 @@ body {
1944
1953
  text-decoration: underline wavy var(--qt-punctuation-warning-underline);
1945
1954
  text-decoration-thickness: 2px;
1946
1955
  }
1956
+ ::highlight(qt-punctuation-no-dialogue) {
1957
+ background-color: var(--qt-punctuation-no-dialogue-bg);
1958
+ -webkit-text-decoration: underline dotted var(--qt-punctuation-no-dialogue-underline);
1959
+ text-decoration: underline dotted var(--qt-punctuation-no-dialogue-underline);
1960
+ text-decoration-thickness: 2px;
1961
+ }
1962
+ ::highlight(qt-composer-narration) {
1963
+ color: var(--qt-composer-narration-fg);
1964
+ background-color: var(--qt-composer-narration-bg);
1965
+ }
1966
+ ::highlight(qt-composer-ooc) {
1967
+ color: var(--qt-composer-ooc-fg);
1968
+ background-color: var(--qt-composer-ooc-bg);
1969
+ }
1947
1970
  .qt-lexical-contenteditable {
1948
1971
  overflow-y: auto;
1949
1972
  position: relative;
@@ -4224,7 +4247,7 @@ body {
4224
4247
  .qt-storyteller-warning {
4225
4248
  font-size: 0.75rem;
4226
4249
  font-weight: 600;
4227
- color: var(--qt-storyteller-warning-fg, var(--color-destructive));
4250
+ color: var(--qt-storyteller-warning-fg, var(--qt-alert-error-fg));
4228
4251
  }
4229
4252
  .qt-storyteller-actions {
4230
4253
  display: flex;
@@ -4287,7 +4310,7 @@ body {
4287
4310
  .qt-intervention-note {
4288
4311
  font-size: 0.75rem;
4289
4312
  font-style: italic;
4290
- color: var(--qt-intervention-note-fg, var(--color-warning));
4313
+ color: var(--qt-intervention-note-fg, var(--qt-alert-warning-fg));
4291
4314
  }
4292
4315
  .qt-intervention-badge {
4293
4316
  display: inline-flex;
@@ -4315,5 +4338,11 @@ body {
4315
4338
  }
4316
4339
  .qt-intervene-toggle--off {
4317
4340
  color: var(--qt-intervene-toggle-off-fg, var(--color-muted-foreground));
4318
- opacity: 0.5;
4341
+ background-image:
4342
+ linear-gradient(
4343
+ to top right,
4344
+ transparent calc(50% - 0.75px),
4345
+ currentColor calc(50% - 0.75px),
4346
+ currentColor calc(50% + 0.75px),
4347
+ transparent calc(50% + 0.75px));
4319
4348
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quilltap/theme-storybook",
3
- "version": "1.0.85",
3
+ "version": "1.0.87",
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",
@@ -169,6 +169,14 @@
169
169
  /* Composer punctuation warnings (PunctuationLintPlugin, ::highlight) */
170
170
  --qt-punctuation-warning-bg: color-mix(in srgb, var(--color-warning) 35%, transparent);
171
171
  --qt-punctuation-warning-underline: var(--color-warning);
172
+ /* Prose mode (Novel-like templates): no dialogue in the draft at all */
173
+ --qt-punctuation-no-dialogue-bg: color-mix(in srgb, var(--color-warning) 14%, transparent);
174
+ --qt-punctuation-no-dialogue-underline: var(--color-warning);
175
+ /* Prose mode composer preview: narration, and ((out of character)) asides */
176
+ --qt-composer-narration-fg: color-mix(in srgb, var(--color-foreground) 65%, var(--color-primary));
177
+ --qt-composer-narration-bg: color-mix(in srgb, var(--color-primary) 7%, transparent);
178
+ --qt-composer-ooc-fg: var(--qt-rp-ooc-color);
179
+ --qt-composer-ooc-bg: var(--qt-rp-ooc-bg);
172
180
 
173
181
  /* Badge palette tokens - referenced by the provider badges */
174
182
  --qt-badge-primary-bg: var(--color-primary);
@@ -433,7 +441,7 @@
433
441
  --qt-response-status-gathering-fg: hsl(270 55% 55%);
434
442
  --qt-response-status-building-fg: hsl(38 85% 48%);
435
443
  --qt-response-status-sending-fg: var(--qt-status-info-fg);
436
- --qt-response-status-streaming-fg: hsl(152 55% 38%);
444
+ --qt-response-status-streaming-fg: hsl(152 55% 29%);
437
445
  --qt-response-status-tool-fg: hsl(270 55% 55%);
438
446
 
439
447
  /* Participant card variables */
@@ -1072,6 +1080,9 @@
1072
1080
  */
1073
1081
  .qt-danger-badge {
1074
1082
  --qt-concierge-badge-color: var(--color-destructive, #dc2626);
1083
+ /* The ink is the alert token, not the fill red: --color-destructive on its
1084
+ own 15% tint read at ~3.5:1 on every bundled theme. */
1085
+ --qt-concierge-badge-fg: var(--qt-alert-error-fg, var(--qt-concierge-badge-color));
1075
1086
  display: inline-flex;
1076
1087
  align-items: center;
1077
1088
  gap: 0.25rem;
@@ -1081,13 +1092,15 @@
1081
1092
  line-height: 1rem;
1082
1093
  font-weight: 500;
1083
1094
  background: color-mix(in srgb, var(--qt-concierge-badge-color) 15%, transparent);
1084
- color: var(--qt-concierge-badge-color);
1095
+ color: var(--qt-concierge-badge-fg);
1085
1096
  border: 1px solid color-mix(in srgb, var(--qt-concierge-badge-color) 40%, transparent);
1086
1097
  }
1087
1098
 
1088
- /* Locked — no colour: the chat keeps to the ordinary desks. */
1099
+ /* Locked — no colour: the chat keeps to the ordinary desks. The grey lives
1100
+ in the tint and the rule; the word is in body ink so it stays legible. */
1089
1101
  .qt-danger-badge-muted {
1090
1102
  --qt-concierge-badge-color: var(--color-muted-foreground, #6b7280);
1103
+ --qt-concierge-badge-fg: var(--color-foreground);
1091
1104
  }
1092
1105
 
1093
1106
 
@@ -1098,7 +1111,7 @@
1098
1111
  * so there is no third modifier.
1099
1112
  */
1100
1113
  .qt-concierge-mark {
1101
- --qt-concierge-mark-color: var(--color-destructive, #dc2626);
1114
+ --qt-concierge-mark-color: var(--qt-alert-error-fg, var(--color-destructive, #dc2626));
1102
1115
  display: inline-block;
1103
1116
  font-weight: 700;
1104
1117
  line-height: 1;
@@ -1967,7 +1980,11 @@
1967
1980
  color: var(--qt-response-status-streaming-fg);
1968
1981
  }
1969
1982
 
1983
+ /* The words are in the bubble's own ink: the streaming green is a status
1984
+ accent, and on a mid-tone bubble it fell below 3:1. The green stays on the
1985
+ border and the quill. */
1970
1986
  .qt-chat-regenerating-plate-text {
1987
+ color: var(--qt-chat-regenerating-plate-fg, var(--qt-chat-assistant-fg, var(--color-foreground)));
1971
1988
  font-size: 0.875rem;
1972
1989
  line-height: 1.25rem;
1973
1990
  font-weight: 500;
@@ -2339,6 +2356,27 @@
2339
2356
  text-decoration-thickness: 2px;
2340
2357
  }
2341
2358
 
2359
+ /* Prose mode (a template like Novel: unmarked narration, quoted dialogue).
2360
+ The no-dialogue tint covers every narrated run while the draft has no
2361
+ dialogue at all; the preview marks narration and ((asides)) the way the
2362
+ rendered message will set them. ::highlight cannot set font-style, so
2363
+ narration is told apart by colour rather than italics. */
2364
+ ::highlight(qt-punctuation-no-dialogue) {
2365
+ background-color: var(--qt-punctuation-no-dialogue-bg);
2366
+ text-decoration: underline dotted var(--qt-punctuation-no-dialogue-underline);
2367
+ text-decoration-thickness: 2px;
2368
+ }
2369
+
2370
+ ::highlight(qt-composer-narration) {
2371
+ color: var(--qt-composer-narration-fg);
2372
+ background-color: var(--qt-composer-narration-bg);
2373
+ }
2374
+
2375
+ ::highlight(qt-composer-ooc) {
2376
+ color: var(--qt-composer-ooc-fg);
2377
+ background-color: var(--qt-composer-ooc-bg);
2378
+ }
2379
+
2342
2380
  /* Lexical editor rich text node styles */
2343
2381
  .qt-lexical-contenteditable {
2344
2382
  overflow-y: auto;
@@ -5215,7 +5253,9 @@
5215
5253
  .qt-storyteller-warning {
5216
5254
  font-size: 0.75rem;
5217
5255
  font-weight: 600;
5218
- color: var(--qt-storyteller-warning-fg, var(--color-destructive));
5256
+ /* The alert token, not --color-destructive: a fill red is too dark to read
5257
+ as small text on a dark card. */
5258
+ color: var(--qt-storyteller-warning-fg, var(--qt-alert-error-fg));
5219
5259
  }
5220
5260
 
5221
5261
  .qt-storyteller-actions {
@@ -5305,7 +5345,9 @@
5305
5345
  .qt-intervention-note {
5306
5346
  font-size: 0.75rem;
5307
5347
  font-style: italic;
5308
- color: var(--qt-intervention-note-fg, var(--color-warning));
5348
+ /* The alert token, not --color-warning: amber fill is not amber ink, and on
5349
+ a light card the raw warning colour falls to ~2:1. */
5350
+ color: var(--qt-intervention-note-fg, var(--qt-alert-warning-fg));
5309
5351
  }
5310
5352
 
5311
5353
  /* The "adjusted" hand beside a Pascal chip's label. */
@@ -5340,7 +5382,16 @@
5340
5382
  }
5341
5383
 
5342
5384
  /* A field the author has hidden from the dialog. */
5385
+ /* A field the author has hidden from the dialog: the hand, struck through.
5386
+ The slash says "off" without leaning on colour, and without the half
5387
+ opacity that left the icon at ~2:1 on every bundled theme. */
5343
5388
  .qt-intervene-toggle--off {
5344
5389
  color: var(--qt-intervene-toggle-off-fg, var(--color-muted-foreground));
5345
- opacity: 0.5;
5390
+ background-image: linear-gradient(
5391
+ to top right,
5392
+ transparent calc(50% - 0.75px),
5393
+ currentColor calc(50% - 0.75px),
5394
+ currentColor calc(50% + 0.75px),
5395
+ transparent calc(50% + 0.75px)
5396
+ );
5346
5397
  }