typebulb 0.11.7 → 0.11.8

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.
@@ -1,14 +1,22 @@
1
1
  :root {
2
2
  /* Light is the default; data-theme="dark" is set by the host (typebulb.com
3
- or the typebulb CLI, sourced from prefers-color-scheme). */
3
+ or the typebulb CLI, sourced from prefers-color-scheme).
4
+ GRAY RAMP — every gray rides ONE neutral tint (R=G=B), like the main app's
5
+ bg1–bg5 ramp. Lightness may step; the HUE never changes. The bug to avoid is a
6
+ gray in a *different* tint (a cool/blue panel beside a neutral one), not the
7
+ number of steps. App chrome (statusbar, picker, modals) sits on the fixed
8
+ --panel. Document panels — code, callouts, tables, user bubbles, open tools —
9
+ paint --veil instead: a translucent neutral that matches --panel when alone on
10
+ the page but COMPOUNDS when panels nest (a code block in a callout, a panel in a
11
+ user bubble), so every depth separates on its own — no level-counting, no cap. */
4
12
  --bg: rgb(255, 255, 255);
5
13
  --fg: rgb(28, 28, 30);
6
- --muted: rgb(96, 98, 106);
7
- --panel: rgb(248, 249, 251);
8
- --border: rgb(224, 224, 228);
14
+ --muted: rgb(96, 96, 100);
15
+ --panel: rgb(242, 242, 242);
16
+ --border: rgb(221, 221, 221);
9
17
  --accent: rgb(58, 125, 232);
10
- --user-bg: rgb(243, 243, 245);
11
- --tool-bg: rgb(245, 246, 248);
18
+ --veil: rgba(0, 0, 0, 0.05); /* one shade step; alpha-stacks as panels nest */
19
+ --tool-bg: var(--panel);
12
20
  --err: rgb(206, 60, 60);
13
21
  --diff-add: rgb(40, 140, 70);
14
22
  --fold-marker: rgb(24, 145, 72);
@@ -19,16 +27,17 @@
19
27
  }
20
28
 
21
29
  html[data-theme="dark"] {
22
- --bg: rgb(20, 20, 22);
23
- --fg: rgb(232, 232, 236);
24
- --muted: rgb(150, 152, 160);
25
- --panel: rgb(30, 30, 32);
26
- --border: rgb(54, 54, 60);
30
+ /* Neutral ramp, same tint as the main app: page 18 → surface 32 → border 52. */
31
+ --bg: rgb(18, 19, 20);
32
+ --fg: rgb(232, 232, 232);
33
+ --muted: rgb(150, 150, 150);
34
+ --panel: rgb(32, 32, 32);
35
+ --border: rgb(52, 52, 52);
27
36
  --accent: rgb(122, 162, 250);
28
- --user-bg: rgb(40, 40, 44);
29
- --tool-bg: rgb(30, 31, 36);
30
- --err: rgb(240, 120, 120);
31
- --diff-add: rgb(120, 210, 140);
37
+ --veil: rgba(255, 255, 255, 0.06);
38
+ --tool-bg: var(--panel);
39
+ --err: rgb(230, 60, 60);
40
+ --diff-add: rgb(100, 210, 130);
32
41
  --fold-marker: rgb(0, 255, 0);
33
42
  color-scheme: dark;
34
43
  }
@@ -442,7 +451,7 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
442
451
  margin: 0 auto;
443
452
  }
444
453
  .bubble.user {
445
- background: var(--user-bg);
454
+ background: var(--veil);
446
455
  border: 1px solid var(--border);
447
456
  border-radius: 12px;
448
457
  padding: .7rem .9rem;
@@ -521,20 +530,23 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
521
530
  opacity: .5;
522
531
  }
523
532
  .md pre {
524
- background: var(--tool-bg);
533
+ background: var(--veil);
525
534
  border: 1px solid var(--border);
526
535
  border-radius: 8px;
527
536
  padding: .7rem .85rem;
528
537
  overflow-x: auto;
529
538
  }
539
+ /* A pasted image (server renders an <img> from a base64 block, see blockToMarkdown) is capped to the
540
+ column and never blows the layout — height follows the width. */
541
+ .md img { max-width: 100%; height: auto; border-radius: 6px; }
530
542
  /* Blockquote: left bar + faint tint + muted text — a quiet "quoted" callout. The bar
531
543
  is mixed toward --border so it stays distinct from the bright turn stripe in the
532
544
  gutter, and the tint is light enough not to read as a code/output panel. */
533
545
  .md blockquote {
534
546
  margin: .5rem 0;
535
547
  padding: .35rem .85rem;
536
- border-left: 3px solid color-mix(in srgb, var(--accent) 50%, var(--border));
537
- background: color-mix(in srgb, var(--accent) 6%, transparent);
548
+ border-left: 3px solid var(--border);
549
+ background: var(--veil);
538
550
  border-radius: 0 6px 6px 0;
539
551
  color: var(--muted);
540
552
  }
@@ -545,17 +557,31 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
545
557
  font-size: .88em;
546
558
  }
547
559
  .md :not(pre) > code {
548
- background: var(--tool-bg);
560
+ background: var(--veil);
549
561
  padding: .1em .35em;
550
562
  border-radius: 5px;
551
563
  }
552
564
  .md table { border-collapse: collapse; }
553
565
  .md th, .md td { border: 1px solid var(--border); padding: .3rem .55rem; }
554
566
  /* A faint header band breaks the grid's monotony and gives the table a head/body structure — tonal
555
- (`--panel`, the same neutral the pills use), never a hue, so it reads as structure not opinion and
556
- follows the host light/dark theme. The header text stays `--fg`: weight + the fill carry it, a tint
557
- would be the opinionated bit. Left-align headers to sit with the body cells. */
558
- .md th { background: var(--panel); font-weight: 600; text-align: left; }
567
+ (`--veil`, the document-panel shade), never a hue, so it reads as structure not opinion and follows
568
+ the host light/dark theme. As a panel the veil steps one shade above the table's container, so the
569
+ header still reads when the table sits inside a bubble or callout. The header text stays `--fg`:
570
+ weight + the fill carry it, a tint would be the opinionated bit. Left-align to the body cells. */
571
+ .md th { background: var(--veil); font-weight: 600; text-align: left; }
572
+ /* Disclosure (<details>/<summary>) from the safe-HTML allowlist (markdown.ts): a quiet --veil container,
573
+ subtler than a code block — assistant prose sits directly on the page, so a fill stands out; keep it
574
+ restrained and let the border define it. Summary is the clickable caret row (native marker), accent
575
+ on hover like a link. */
576
+ .md details {
577
+ margin: .5rem 0;
578
+ padding: .35rem .7rem;
579
+ background: var(--veil);
580
+ border: 1px solid var(--border);
581
+ border-radius: 8px;
582
+ }
583
+ .md summary { cursor: pointer; font-weight: 600; }
584
+ .md summary:hover { color: var(--accent); }
559
585
 
560
586
  /* The full-lane breakout geometry, defined ONCE and shared by the two breakouts (the mermaid
561
587
  embed and a spread bulb). `100%` in --lane-ml resolves against each user's own containing block
@@ -845,16 +871,16 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
845
871
  padding: .6rem .8rem;
846
872
  font-family: ui-monospace, monospace;
847
873
  font-size: .85em;
848
- color: color-mix(in srgb, #e23 70%, var(--fg));
874
+ color: color-mix(in srgb, var(--err) 70%, var(--fg));
849
875
  white-space: pre-wrap;
850
876
  }
851
877
  .md .bulb-err-strip {
852
878
  padding: .45rem .7rem;
853
879
  border-top: 1px solid var(--border);
854
- background: color-mix(in srgb, #e23 8%, var(--bg));
880
+ background: color-mix(in srgb, var(--err) 8%, var(--bg));
855
881
  font-family: ui-monospace, monospace;
856
882
  font-size: .8em;
857
- color: color-mix(in srgb, #e23 75%, var(--fg));
883
+ color: color-mix(in srgb, var(--err) 75%, var(--fg));
858
884
  white-space: pre-wrap;
859
885
  }
860
886
 
@@ -877,7 +903,7 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
877
903
  }
878
904
  .tool.open {
879
905
  margin-top: .55rem;
880
- background: var(--tool-bg);
906
+ background: var(--veil);
881
907
  border: 1px solid var(--border);
882
908
  border-radius: 8px;
883
909
  }
@@ -963,13 +989,15 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
963
989
  overflow: auto;
964
990
  }
965
991
  .tool-out { color: var(--muted); }
992
+ /* The band carries the add/remove signal; text stays --fg so it's readable. Colouring the text the same
993
+ hue as its fill (red-on-red) is what washes a diff out — the band alone is the convention. */
966
994
  .diff-old {
967
- background: color-mix(in srgb, var(--err) 14%, transparent);
968
- color: var(--err);
995
+ background: color-mix(in srgb, var(--err) 24%, transparent);
996
+ color: var(--fg);
969
997
  }
970
998
  .diff-new {
971
- background: color-mix(in srgb, var(--diff-add) 16%, transparent);
972
- color: var(--diff-add);
999
+ background: color-mix(in srgb, var(--diff-add) 24%, transparent);
1000
+ color: var(--fg);
973
1001
  }
974
1002
 
975
1003
  /* Path link: plain accent, underline only on hover. skip-ink:none so the