@tangle-network/sandbox-ui 0.6.1 → 0.8.4

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.
Files changed (67) hide show
  1. package/dist/auth.d.ts +10 -6
  2. package/dist/auth.js +3 -3
  3. package/dist/{chat-container-Cg-GwyiK.d.ts → chat-container-f4yEs6KN.d.ts} +9 -1
  4. package/dist/chat.d.ts +12 -2
  5. package/dist/chat.js +10 -10
  6. package/dist/{chunk-TSE423UF.js → chunk-2QZ6G7NM.js} +6 -6
  7. package/dist/{chunk-WBQ7VULC.js → chunk-34A66VBG.js} +7 -7
  8. package/dist/{chunk-JP725R4W.js → chunk-34I7UFSX.js} +2 -2
  9. package/dist/{chunk-YS66Q3RC.js → chunk-3CJ2SOEI.js} +2 -2
  10. package/dist/{chunk-CNWVHQFY.js → chunk-54SQQMMM.js} +6 -24
  11. package/dist/{chunk-DLCFZDGX.js → chunk-5UM2XMEJ.js} +39 -14
  12. package/dist/{chunk-YYGECNZZ.js → chunk-66EZOYZR.js} +3 -3
  13. package/dist/chunk-7U2Z23NE.js +49 -0
  14. package/dist/{chunk-RKXIRRKQ.js → chunk-BUOQTBTO.js} +70 -66
  15. package/dist/{chunk-DCPYTL4W.js → chunk-D4CZWJCD.js} +72 -148
  16. package/dist/{chunk-MXRQ4MJE.js → chunk-DXMIEK4K.js} +34 -23
  17. package/dist/{chunk-ZMWWE5RF.js → chunk-EXSOPXIY.js} +141 -123
  18. package/dist/{chunk-GW4GRAWJ.js → chunk-GSZA3TSY.js} +18 -12
  19. package/dist/{chunk-W4LM3QYZ.js → chunk-HB5Y37YU.js} +8 -8
  20. package/dist/{chunk-E2XT3G52.js → chunk-HFMAXUHV.js} +136 -137
  21. package/dist/{chunk-BRBTD7RH.js → chunk-MA7YKRUP.js} +28 -18
  22. package/dist/{chunk-MJUDMVRU.js → chunk-MT5FJ3ZT.js} +17 -17
  23. package/dist/chunk-OKLQVY3Y.js +139 -0
  24. package/dist/{chunk-KH5UDAJ2.js → chunk-QDH5GEGY.js} +58 -54
  25. package/dist/{chunk-33W2TLUL.js → chunk-QID2OOMG.js} +12 -3
  26. package/dist/{chunk-FJSVPBKY.js → chunk-S7OXQTST.js} +17 -3
  27. package/dist/chunk-T7HMZEVO.js +216 -0
  28. package/dist/{chunk-FNYJFCGU.js → chunk-U6QTHMY6.js} +145 -256
  29. package/dist/{chunk-565V6JTN.js → chunk-UXQMIR3D.js} +60 -99
  30. package/dist/{chunk-XTPAWK7L.js → chunk-VOUV7GGB.js} +25 -47
  31. package/dist/{chunk-OVNLOE3Y.js → chunk-WXK43R62.js} +41 -41
  32. package/dist/{chunk-6V4XVKFY.js → chunk-XXDFEF72.js} +340 -335
  33. package/dist/{chunk-TDYQBLL5.js → chunk-ZMNSRDMH.js} +6 -6
  34. package/dist/dashboard.d.ts +135 -3
  35. package/dist/dashboard.js +848 -8
  36. package/dist/{document-editor-pane-DWWUTTTZ.js → document-editor-pane-TLPVRBBU.js} +3 -3
  37. package/dist/editor.d.ts +9 -8
  38. package/dist/editor.js +3 -3
  39. package/dist/files.js +3 -3
  40. package/dist/globals.css +5304 -68
  41. package/dist/hooks.d.ts +1 -1
  42. package/dist/hooks.js +7 -7
  43. package/dist/index.d.ts +4 -4
  44. package/dist/index.js +28 -28
  45. package/dist/markdown.js +1 -1
  46. package/dist/openui.js +5 -5
  47. package/dist/pages.d.ts +47 -3
  48. package/dist/pages.js +911 -357
  49. package/dist/primitives.d.ts +5 -2
  50. package/dist/primitives.js +10 -10
  51. package/dist/run.js +4 -4
  52. package/dist/sdk-hooks.d.ts +2 -3
  53. package/dist/sdk-hooks.js +5 -5
  54. package/dist/styles.css +5304 -68
  55. package/dist/template-card-BAtvcAkU.d.ts +18 -0
  56. package/dist/terminal.d.ts +3 -1
  57. package/dist/terminal.js +66 -32
  58. package/dist/tokens.css +701 -40
  59. package/dist/{usage-chart-XCoB_7Xu.d.ts → usage-chart-SSiOgeQI.d.ts} +3 -1
  60. package/dist/{use-pty-session-COzVkhtc.d.ts → use-pty-session-0AOuwXgq.d.ts} +2 -0
  61. package/dist/{index-BT_-ecpc.d.ts → variant-list-C8wx2TqF.d.ts} +17 -8
  62. package/dist/workspace.d.ts +1 -1
  63. package/dist/workspace.js +13 -13
  64. package/package.json +3 -1
  65. package/tailwind.config.cjs +3 -2
  66. package/dist/chunk-3HW53XTH.js +0 -228
  67. package/dist/chunk-OKCIKTXQ.js +0 -63
package/dist/tokens.css CHANGED
@@ -4,36 +4,46 @@
4
4
  /* MD3 surface hierarchy */
5
5
  :root,
6
6
  [data-sandbox-ui] {
7
- --md3-surface: #131228;
8
- --md3-surface-dim: #09080F;
9
- --md3-surface-bright: #2E2C56;
10
- --md3-surface-container-lowest: #06060E;
11
- --md3-surface-container-low: #131228;
12
- --md3-surface-container: #191738;
13
- --md3-surface-container-high: #211F45;
14
- --md3-surface-container-highest: #2A2854;
15
- --md3-surface-variant: #2A2854;
16
- --md3-on-surface: #E8E6F6;
17
- --md3-on-surface-variant: #C4C0D8;
18
- --md3-primary: #8263FF;
19
- --md3-primary-container: #4a3aff;
20
- --md3-on-primary: #FFFFFF;
21
- --md3-on-primary-container: #FFFFFF;
22
- --md3-primary-fixed: #C4AAFF;
23
- --md3-primary-fixed-dim: #8263FF;
24
- --md3-secondary: #6B7094;
25
- --md3-secondary-container: #1E1D35;
26
- --md3-on-secondary: #FFFFFF;
27
- --md3-on-secondary-container: #C4C0D8;
7
+ --md3-surface: #0a0a0c;
8
+ --md3-surface-dim: #070709;
9
+ --md3-surface-bright: #1b1b22;
10
+ --md3-surface-container-lowest: #000000;
11
+ --md3-surface-container-low: #0c0c0f;
12
+ --md3-surface-container: #101014;
13
+ --md3-surface-container-high: #15151a;
14
+ --md3-surface-container-highest: #1e1e24;
15
+ --md3-surface-variant: #1e1e24;
16
+ --md3-on-surface: #fdfdfd;
17
+ --md3-on-surface-variant: #b0b0b8;
18
+
19
+ --md3-primary: #9b8cff;
20
+ --md3-primary-dim: #705bf5;
21
+ --md3-primary-container: #5d48e5;
22
+ --md3-on-primary: #ffffff;
23
+ --md3-on-primary-container: #efeaff;
24
+ --md3-primary-fixed: #ada3ff;
25
+ --md3-primary-fixed-dim: #9082ff;
26
+
27
+ --md3-secondary: #c4b9f5;
28
+ --md3-secondary-dim: #b6ace7;
29
+ --md3-secondary-container: #2b234d;
30
+ --md3-on-secondary: #e8e4ff;
31
+ --md3-on-secondary-container: #e8e4ff;
32
+
28
33
  --md3-tertiary: #10b981;
29
- --md3-outline: #6B7094;
30
- --md3-outline-variant: #2A2B39;
31
- --md3-error: #FF4D6D;
32
- --md3-error-container: #7A0020;
33
- --md3-on-error: #FFFFFF;
34
- --md3-inverse-surface: #E8E6F6;
35
- --md3-inverse-primary: #4a3aff;
36
- --md3-surface-tint: #8263FF;
34
+ --md3-outline: #474858;
35
+ --md3-outline-variant: #282937;
36
+
37
+ --md3-error: #ff5277;
38
+ --md3-error-dim: #eb2855;
39
+ --md3-error-container: #82042b;
40
+ --md3-on-error: #ffffff;
41
+ --md3-on-error-container: #ffbdf2;
42
+
43
+ --md3-inverse-surface: #fdfdfd;
44
+ --md3-inverse-primary: #4530c5;
45
+ --md3-inverse-on-surface: #000000;
46
+ --md3-surface-tint: #9b8cff;
37
47
 
38
48
  /* Semantic HSL bridge */
39
49
  --hsl-background: 248 52% 5%;
@@ -183,11 +193,11 @@
183
193
  --brand-emerald: #10b981;
184
194
 
185
195
  /* Borders */
186
- --border-subtle: rgba(107, 112, 148, 0.25);
187
- --border-default: rgba(107, 112, 148, 0.40);
188
- --border-hover: rgba(107, 112, 148, 0.60);
189
- --border-accent: rgba(130, 99, 255, 0.40);
190
- --border-accent-hover: rgba(130, 99, 255, 0.65);
196
+ --border-subtle: rgba(107, 112, 148, 0.08);
197
+ --border-default: rgba(107, 112, 148, 0.15);
198
+ --border-hover: rgba(107, 112, 148, 0.25);
199
+ --border-accent: rgba(130, 99, 255, 0.15);
200
+ --border-accent-hover: rgba(130, 99, 255, 0.35);
191
201
 
192
202
  /* Buttons */
193
203
  --btn-primary-bg: #4a3aff;
@@ -227,7 +237,21 @@
227
237
  --panel-padding: 1rem;
228
238
  --content-max-width: 80rem;
229
239
 
230
- /* Component sizing — override per-app for tighter/looser layouts */
240
+ /* Typography scale — override per-app for custom type hierarchy.
241
+ Components reference these instead of hardcoded pixel values. */
242
+ --font-size-xs: 0.6875rem; /* 11px — labels, timestamps */
243
+ --font-size-sm: 0.75rem; /* 12px — captions, meta */
244
+ --font-size-base: 0.9375rem; /* 15px — message body */
245
+ --font-size-lg: 1rem; /* 16px — emphasized text */
246
+ --font-size-xl: 1.25rem; /* 20px — section headers */
247
+ --line-height-tight: 1.3;
248
+ --line-height-base: 1.75; /* matches leading-7 */
249
+ --line-height-relaxed: 1.8;
250
+
251
+ /* Component spacing — override per-app for tighter/looser layouts */
252
+ --avatar-size: 2rem; /* 32px — chat avatars */
253
+ --timeline-dot-size: 0.625rem; /* 10px — timeline connector dots */
254
+ --indicator-dot-size: 0.25rem; /* 4px — thinking indicator dots */
231
255
  --code-padding-x: 0.75rem;
232
256
  --code-padding-y: 0.625rem;
233
257
  --code-font-size: 0.8125rem;
@@ -240,6 +264,17 @@
240
264
  --tool-card-py: 0.5rem;
241
265
  --tool-icon-size: 1.75rem;
242
266
 
267
+ /* Syntax highlighting — override per-theme in vault/dawn sections */
268
+ --syntax-comment: #6B7094;
269
+ --syntax-keyword: #A78FFF;
270
+ --syntax-string: #10b981;
271
+ --syntax-function: #6D9FFF;
272
+ --syntax-number: #FFB347;
273
+ --syntax-meta: #8263FF;
274
+ --syntax-error: #FF4D6D;
275
+ --syntax-variable: #C4C0D8;
276
+ --syntax-foreground: #E8E6F6;
277
+
243
278
  /* Transitions */
244
279
  --transition-fast: 0.1s ease;
245
280
  --transition-default: 0.16s ease;
@@ -382,11 +417,11 @@
382
417
  --brand-vibrant: #4a3aff;
383
418
  --brand-emerald: #10b981;
384
419
 
385
- --border-subtle: rgba(107, 112, 148, 0.15);
386
- --border-default: rgba(107, 112, 148, 0.25);
387
- --border-hover: rgba(107, 112, 148, 0.40);
388
- --border-accent: rgba(74, 58, 255, 0.25);
389
- --border-accent-hover: rgba(74, 58, 255, 0.50);
420
+ --border-subtle: rgba(107, 112, 148, 0.08); /* fixed white-lined issue */
421
+ --border-default: rgba(107, 112, 148, 0.15);
422
+ --border-hover: rgba(107, 112, 148, 0.25);
423
+ --border-accent: rgba(74, 58, 255, 0.15);
424
+ --border-accent-hover: rgba(74, 58, 255, 0.35);
390
425
 
391
426
  --btn-primary-bg: #1e116e;
392
427
  --btn-primary-hover: #211f54;
@@ -416,6 +451,623 @@
416
451
  --font-sans: "Geist", "DM Sans", ui-sans-serif, system-ui, sans-serif;
417
452
  --font-display: "Outfit", "Geist", sans-serif;
418
453
  --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
454
+
455
+ /* Light syntax highlighting */
456
+ --syntax-comment: #8B92B8;
457
+ --syntax-keyword: #5B3FCC;
458
+ --syntax-string: #059669;
459
+ --syntax-function: #2563EB;
460
+ --syntax-number: #D97706;
461
+ --syntax-meta: #7C3AED;
462
+ --syntax-error: #DC2626;
463
+ --syntax-variable: #334155;
464
+ --syntax-foreground: #1E293B;
465
+ }
466
+
467
+ /* ── Ocean — cool blue-teal dark theme ── */
468
+ [data-sandbox-theme="ocean"] {
469
+ --hsl-background: 215 50% 5%;
470
+ --hsl-foreground: 210 20% 94%;
471
+ --hsl-card: 214 42% 11%;
472
+ --hsl-card-foreground: 210 20% 94%;
473
+ --hsl-popover: 214 40% 14%;
474
+ --hsl-popover-foreground: 210 20% 94%;
475
+ --hsl-primary: 199 85% 50%;
476
+ --hsl-primary-foreground: 0 0% 100%;
477
+ --hsl-secondary: 210 25% 18%;
478
+ --hsl-secondary-foreground: 210 16% 90%;
479
+ --hsl-muted: 212 22% 15%;
480
+ --hsl-muted-foreground: 210 17% 52%;
481
+ --hsl-accent: 210 28% 20%;
482
+ --hsl-accent-foreground: 210 16% 92%;
483
+ --hsl-destructive: 0 85% 58%;
484
+ --hsl-destructive-foreground: 0 0% 100%;
485
+ --hsl-border: 214 16% 20%;
486
+ --hsl-input: 214 30% 14%;
487
+ --hsl-ring: 199 85% 50%;
488
+ --hsl-success: 160 84% 39%;
489
+ --hsl-warning: 40 94% 56%;
490
+ --hsl-info: 199 85% 50%;
491
+
492
+ --depth-1: #060c14;
493
+ --depth-2: #0c1524;
494
+ --depth-3: #132035;
495
+ --depth-4: #1a2b46;
496
+
497
+ --status-running: #10b981;
498
+ --status-creating: #0ea5e9;
499
+ --status-stopped: #FFB800;
500
+ --status-warm: #FF8A4C;
501
+ --status-cold: #38bdf8;
502
+ --status-error: #ef4444;
503
+ --status-deleted: #6B7094;
504
+
505
+ --glass-bg: var(--depth-2);
506
+ --glass-bg-strong: var(--depth-3);
507
+ --glass-border: var(--border-subtle);
508
+ --glass-border-hover: var(--border-default);
509
+
510
+ --surface-success-bg: #022c22;
511
+ --surface-success-border: #14532d;
512
+ --surface-success-text: #34d399;
513
+ --surface-warning-bg: #451a03;
514
+ --surface-warning-border: #78350f;
515
+ --surface-warning-text: #fbbf24;
516
+ --surface-danger-bg: #450a0a;
517
+ --surface-danger-border: #7f1d1d;
518
+ --surface-danger-text: #f87171;
519
+ --surface-info-bg: #082f49;
520
+ --surface-info-border: #0c4a6e;
521
+ --surface-info-text: #38bdf8;
522
+ --surface-teal-bg: #042f2e;
523
+ --surface-teal-border: #134e4a;
524
+ --surface-teal-text: #2dd4bf;
525
+ --surface-violet-bg: #1e1b4b;
526
+ --surface-violet-border: #312e81;
527
+ --surface-violet-text: #a5b4fc;
528
+ --surface-orange-bg: #431407;
529
+ --surface-orange-border: #7c2d12;
530
+ --surface-orange-text: #fb923c;
531
+ --surface-neutral-bg: var(--depth-3);
532
+ --surface-neutral-border: var(--border-subtle);
533
+ --surface-neutral-text: var(--text-muted);
534
+
535
+ --sidebar-background: 215 50% 5%;
536
+ --sidebar-foreground: 210 20% 94%;
537
+ --sidebar-primary: 199 85% 50%;
538
+ --sidebar-primary-foreground: 0 0% 100%;
539
+ --sidebar-accent: 210 28% 20%;
540
+ --sidebar-accent-foreground: 210 16% 92%;
541
+ --sidebar-border: 214 16% 16%;
542
+ --sidebar-ring: 199 85% 50%;
543
+
544
+ --mesh-teal: rgba(14, 165, 233, 0.06);
545
+ --mesh-violet: rgba(56, 189, 248, 0.04);
546
+ --mesh-blue: rgba(14, 165, 233, 0.05);
547
+
548
+ --bg-root: radial-gradient(ellipse 70% 50% at 20% 0%, rgba(14, 165, 233, 0.08), transparent),
549
+ radial-gradient(ellipse 50% 40% at 80% 10%, rgba(56, 189, 248, 0.05), transparent),
550
+ linear-gradient(180deg, var(--depth-1), #0a1628 100%);
551
+ --bg-dark: var(--depth-1);
552
+ --bg-card: hsl(var(--hsl-card));
553
+ --bg-elevated: hsl(214 38% 17%);
554
+ --bg-section: hsl(214 38% 8%);
555
+ --bg-input: hsl(var(--hsl-input));
556
+ --bg-hover: rgba(14, 165, 233, 0.08);
557
+ --bg-selection: rgba(14, 165, 233, 0.18);
558
+
559
+ --text-primary: hsl(var(--hsl-foreground));
560
+ --text-secondary: hsl(210 18% 82%);
561
+ --text-muted: #5e7490;
562
+ --text-dim: #3d5068;
563
+
564
+ --brand-primary: #0ea5e9;
565
+ --brand-strong: #0284c7;
566
+ --brand-cool: #38bdf8;
567
+ --brand-glow: #7dd3fc;
568
+ --brand-purple: #38bdf8;
569
+ --brand-vibrant: #0ea5e9;
570
+ --brand-emerald: #10b981;
571
+
572
+ --border-subtle: rgba(94, 116, 144, 0.08);
573
+ --border-default: rgba(94, 116, 144, 0.15);
574
+ --border-hover: rgba(94, 116, 144, 0.25);
575
+ --border-accent: rgba(14, 165, 233, 0.15);
576
+ --border-accent-hover: rgba(14, 165, 233, 0.35);
577
+
578
+ --btn-primary-bg: #0ea5e9;
579
+ --btn-primary-hover: #38bdf8;
580
+ --btn-cta-bg: #0ea5e9;
581
+ --btn-cta-text: #FFFFFF;
582
+
583
+ --code-keyword: #38bdf8;
584
+ --code-string: #34d399;
585
+ --code-function: #7dd3fc;
586
+ --code-number: #fbbf24;
587
+ --code-success: #10b981;
588
+ --code-comment: #5e7490;
589
+ --code-error: #ef4444;
590
+
591
+ --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.03);
592
+ --shadow-dropdown: 0 8px 32px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255, 255, 255, 0.05);
593
+ --shadow-glow: 0 0 32px rgba(14, 165, 233, 0.18);
594
+ --shadow-accent: 0 1px 3px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(14, 165, 233, 0.2);
595
+
596
+ --tangle-gradient: linear-gradient(135deg, #0ea5e9, #38bdf8);
597
+ --tangle-gradient-text: linear-gradient(135deg, #38bdf8, #7dd3fc);
598
+ --accent-gradient-strong: linear-gradient(135deg, #0ea5e9, #38bdf8);
599
+ --accent-surface-soft: rgba(14, 165, 233, 0.12);
600
+ --accent-surface-strong: rgba(14, 165, 233, 0.20);
601
+ --accent-text: #38bdf8;
602
+
603
+ --md3-primary: #38bdf8;
604
+ --md3-primary-dim: #0ea5e9;
605
+ --md3-primary-container: #0284c7;
606
+ --md3-on-primary: #ffffff;
607
+ --md3-on-primary-container: #e0f2fe;
608
+ --md3-surface: #0a1020;
609
+ --md3-surface-dim: #060c14;
610
+ --md3-surface-bright: #1a2540;
611
+ --md3-on-surface: #e2e8f0;
612
+ --md3-on-surface-variant: #94a3b8;
613
+ --md3-error: #ef4444;
614
+ --md3-outline: #334155;
615
+ --md3-outline-variant: #1e293b;
616
+ }
617
+
618
+ /* ── Ember — warm amber dark theme ── */
619
+ [data-sandbox-theme="ember"] {
620
+ --hsl-background: 20 40% 5%;
621
+ --hsl-foreground: 30 20% 93%;
622
+ --hsl-card: 20 35% 11%;
623
+ --hsl-card-foreground: 30 20% 93%;
624
+ --hsl-popover: 20 32% 14%;
625
+ --hsl-popover-foreground: 30 20% 93%;
626
+ --hsl-primary: 25 90% 55%;
627
+ --hsl-primary-foreground: 0 0% 100%;
628
+ --hsl-secondary: 20 22% 18%;
629
+ --hsl-secondary-foreground: 30 16% 90%;
630
+ --hsl-muted: 18 20% 15%;
631
+ --hsl-muted-foreground: 20 14% 50%;
632
+ --hsl-accent: 20 25% 20%;
633
+ --hsl-accent-foreground: 30 16% 92%;
634
+ --hsl-destructive: 0 85% 55%;
635
+ --hsl-destructive-foreground: 0 0% 100%;
636
+ --hsl-border: 20 14% 20%;
637
+ --hsl-input: 20 25% 14%;
638
+ --hsl-ring: 25 90% 55%;
639
+ --hsl-success: 160 84% 39%;
640
+ --hsl-warning: 45 96% 56%;
641
+ --hsl-info: 200 88% 56%;
642
+
643
+ --depth-1: #140c06;
644
+ --depth-2: #1e150c;
645
+ --depth-3: #2a1e14;
646
+ --depth-4: #36281c;
647
+
648
+ --status-running: #10b981;
649
+ --status-creating: #f59e0b;
650
+ --status-stopped: #d97706;
651
+ --status-warm: #fb923c;
652
+ --status-cold: #38bdf8;
653
+ --status-error: #ef4444;
654
+ --status-deleted: #78716c;
655
+
656
+ --glass-bg: var(--depth-2);
657
+ --glass-bg-strong: var(--depth-3);
658
+ --glass-border: var(--border-subtle);
659
+ --glass-border-hover: var(--border-default);
660
+
661
+ --surface-success-bg: #052e16;
662
+ --surface-success-border: #166534;
663
+ --surface-success-text: #4ade80;
664
+ --surface-warning-bg: #451a03;
665
+ --surface-warning-border: #92400e;
666
+ --surface-warning-text: #fbbf24;
667
+ --surface-danger-bg: #450a0a;
668
+ --surface-danger-border: #991b1b;
669
+ --surface-danger-text: #fca5a5;
670
+ --surface-info-bg: #082f49;
671
+ --surface-info-border: #0c4a6e;
672
+ --surface-info-text: #38bdf8;
673
+ --surface-teal-bg: #042f2e;
674
+ --surface-teal-border: #134e4a;
675
+ --surface-teal-text: #2dd4bf;
676
+ --surface-violet-bg: #2e1065;
677
+ --surface-violet-border: #4c1d95;
678
+ --surface-violet-text: #c4b5fd;
679
+ --surface-orange-bg: #431407;
680
+ --surface-orange-border: #9a3412;
681
+ --surface-orange-text: #fdba74;
682
+ --surface-neutral-bg: var(--depth-3);
683
+ --surface-neutral-border: var(--border-subtle);
684
+ --surface-neutral-text: var(--text-muted);
685
+
686
+ --sidebar-background: 20 40% 5%;
687
+ --sidebar-foreground: 30 20% 93%;
688
+ --sidebar-primary: 25 90% 55%;
689
+ --sidebar-primary-foreground: 0 0% 100%;
690
+ --sidebar-accent: 20 25% 20%;
691
+ --sidebar-accent-foreground: 30 16% 92%;
692
+ --sidebar-border: 20 14% 16%;
693
+ --sidebar-ring: 25 90% 55%;
694
+
695
+ --mesh-teal: rgba(245, 158, 11, 0.05);
696
+ --mesh-violet: rgba(251, 146, 60, 0.04);
697
+ --mesh-blue: rgba(217, 119, 6, 0.04);
698
+
699
+ --bg-root: radial-gradient(ellipse 70% 50% at 20% 0%, rgba(245, 158, 11, 0.07), transparent),
700
+ radial-gradient(ellipse 50% 40% at 80% 10%, rgba(251, 146, 60, 0.05), transparent),
701
+ linear-gradient(180deg, var(--depth-1), #1a1008 100%);
702
+ --bg-dark: var(--depth-1);
703
+ --bg-card: hsl(var(--hsl-card));
704
+ --bg-elevated: hsl(20 30% 16%);
705
+ --bg-section: hsl(20 30% 8%);
706
+ --bg-input: hsl(var(--hsl-input));
707
+ --bg-hover: rgba(245, 158, 11, 0.08);
708
+ --bg-selection: rgba(245, 158, 11, 0.18);
709
+
710
+ --text-primary: hsl(var(--hsl-foreground));
711
+ --text-secondary: hsl(30 16% 80%);
712
+ --text-muted: #8c7a68;
713
+ --text-dim: #5c4e3e;
714
+
715
+ --brand-primary: #f59e0b;
716
+ --brand-strong: #d97706;
717
+ --brand-cool: #fbbf24;
718
+ --brand-glow: #fcd34d;
719
+ --brand-purple: #fbbf24;
720
+ --brand-vibrant: #f59e0b;
721
+ --brand-emerald: #10b981;
722
+
723
+ --border-subtle: rgba(140, 122, 104, 0.08);
724
+ --border-default: rgba(140, 122, 104, 0.15);
725
+ --border-hover: rgba(140, 122, 104, 0.25);
726
+ --border-accent: rgba(245, 158, 11, 0.15);
727
+ --border-accent-hover: rgba(245, 158, 11, 0.35);
728
+
729
+ --btn-primary-bg: #f59e0b;
730
+ --btn-primary-hover: #fbbf24;
731
+ --btn-cta-bg: #f59e0b;
732
+ --btn-cta-text: #000000;
733
+
734
+ --code-keyword: #fbbf24;
735
+ --code-string: #34d399;
736
+ --code-function: #fcd34d;
737
+ --code-number: #fb923c;
738
+ --code-success: #10b981;
739
+ --code-comment: #8c7a68;
740
+ --code-error: #ef4444;
741
+
742
+ --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.03);
743
+ --shadow-dropdown: 0 8px 32px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255, 255, 255, 0.05);
744
+ --shadow-glow: 0 0 32px rgba(245, 158, 11, 0.15);
745
+ --shadow-accent: 0 1px 3px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(245, 158, 11, 0.2);
746
+
747
+ --tangle-gradient: linear-gradient(135deg, #f59e0b, #fbbf24);
748
+ --tangle-gradient-text: linear-gradient(135deg, #fbbf24, #fcd34d);
749
+ --accent-gradient-strong: linear-gradient(135deg, #f59e0b, #fbbf24);
750
+ --accent-surface-soft: rgba(245, 158, 11, 0.12);
751
+ --accent-surface-strong: rgba(245, 158, 11, 0.20);
752
+ --accent-text: #fbbf24;
753
+
754
+ --md3-primary: #fbbf24;
755
+ --md3-primary-dim: #f59e0b;
756
+ --md3-primary-container: #d97706;
757
+ --md3-on-primary: #000000;
758
+ --md3-on-primary-container: #fef3c7;
759
+ --md3-surface: #120e08;
760
+ --md3-surface-dim: #0a0806;
761
+ --md3-surface-bright: #2a2218;
762
+ --md3-on-surface: #f5f0e8;
763
+ --md3-on-surface-variant: #a8998a;
764
+ --md3-error: #ef4444;
765
+ --md3-outline: #4a3f34;
766
+ --md3-outline-variant: #2a2218;
767
+ }
768
+
769
+ /* ── Forest — emerald green dark theme ── */
770
+ [data-sandbox-theme="forest"] {
771
+ --hsl-background: 155 35% 5%;
772
+ --hsl-foreground: 150 15% 93%;
773
+ --hsl-card: 155 30% 10%;
774
+ --hsl-card-foreground: 150 15% 93%;
775
+ --hsl-popover: 155 28% 13%;
776
+ --hsl-popover-foreground: 150 15% 93%;
777
+ --hsl-primary: 155 80% 40%;
778
+ --hsl-primary-foreground: 0 0% 100%;
779
+ --hsl-secondary: 155 20% 17%;
780
+ --hsl-secondary-foreground: 150 14% 90%;
781
+ --hsl-muted: 152 18% 14%;
782
+ --hsl-muted-foreground: 150 14% 48%;
783
+ --hsl-accent: 155 22% 19%;
784
+ --hsl-accent-foreground: 150 14% 92%;
785
+ --hsl-destructive: 0 85% 55%;
786
+ --hsl-destructive-foreground: 0 0% 100%;
787
+ --hsl-border: 155 12% 19%;
788
+ --hsl-input: 155 22% 13%;
789
+ --hsl-ring: 155 80% 40%;
790
+ --hsl-success: 155 80% 40%;
791
+ --hsl-warning: 40 94% 56%;
792
+ --hsl-info: 200 88% 56%;
793
+
794
+ --depth-1: #060e0a;
795
+ --depth-2: #0c1a14;
796
+ --depth-3: #14261e;
797
+ --depth-4: #1c3228;
798
+
799
+ --status-running: #10b981;
800
+ --status-creating: #34d399;
801
+ --status-stopped: #eab308;
802
+ --status-warm: #fb923c;
803
+ --status-cold: #38bdf8;
804
+ --status-error: #ef4444;
805
+ --status-deleted: #6b7280;
806
+
807
+ --glass-bg: var(--depth-2);
808
+ --glass-bg-strong: var(--depth-3);
809
+ --glass-border: var(--border-subtle);
810
+ --glass-border-hover: var(--border-default);
811
+
812
+ --surface-success-bg: #052e16;
813
+ --surface-success-border: #166534;
814
+ --surface-success-text: #4ade80;
815
+ --surface-warning-bg: #422006;
816
+ --surface-warning-border: #854d0e;
817
+ --surface-warning-text: #facc15;
818
+ --surface-danger-bg: #450a0a;
819
+ --surface-danger-border: #991b1b;
820
+ --surface-danger-text: #fca5a5;
821
+ --surface-info-bg: #082f49;
822
+ --surface-info-border: #0c4a6e;
823
+ --surface-info-text: #38bdf8;
824
+ --surface-teal-bg: #042f2e;
825
+ --surface-teal-border: #134e4a;
826
+ --surface-teal-text: #2dd4bf;
827
+ --surface-violet-bg: #1e1b4b;
828
+ --surface-violet-border: #3730a3;
829
+ --surface-violet-text: #a5b4fc;
830
+ --surface-orange-bg: #431407;
831
+ --surface-orange-border: #7c2d12;
832
+ --surface-orange-text: #fb923c;
833
+ --surface-neutral-bg: var(--depth-3);
834
+ --surface-neutral-border: var(--border-subtle);
835
+ --surface-neutral-text: var(--text-muted);
836
+
837
+ --sidebar-background: 155 35% 5%;
838
+ --sidebar-foreground: 150 15% 93%;
839
+ --sidebar-primary: 155 80% 40%;
840
+ --sidebar-primary-foreground: 0 0% 100%;
841
+ --sidebar-accent: 155 22% 19%;
842
+ --sidebar-accent-foreground: 150 14% 92%;
843
+ --sidebar-border: 155 12% 15%;
844
+ --sidebar-ring: 155 80% 40%;
845
+
846
+ --mesh-teal: rgba(16, 185, 129, 0.06);
847
+ --mesh-violet: rgba(52, 211, 153, 0.04);
848
+ --mesh-blue: rgba(16, 185, 129, 0.04);
849
+
850
+ --bg-root: radial-gradient(ellipse 70% 50% at 20% 0%, rgba(16, 185, 129, 0.08), transparent),
851
+ radial-gradient(ellipse 50% 40% at 80% 10%, rgba(52, 211, 153, 0.05), transparent),
852
+ linear-gradient(180deg, var(--depth-1), #0a1a12 100%);
853
+ --bg-dark: var(--depth-1);
854
+ --bg-card: hsl(var(--hsl-card));
855
+ --bg-elevated: hsl(155 26% 16%);
856
+ --bg-section: hsl(155 26% 8%);
857
+ --bg-input: hsl(var(--hsl-input));
858
+ --bg-hover: rgba(16, 185, 129, 0.08);
859
+ --bg-selection: rgba(16, 185, 129, 0.18);
860
+
861
+ --text-primary: hsl(var(--hsl-foreground));
862
+ --text-secondary: hsl(150 14% 80%);
863
+ --text-muted: #6b8a7a;
864
+ --text-dim: #4a6858;
865
+
866
+ --brand-primary: #10b981;
867
+ --brand-strong: #059669;
868
+ --brand-cool: #34d399;
869
+ --brand-glow: #6ee7b7;
870
+ --brand-purple: #34d399;
871
+ --brand-vibrant: #10b981;
872
+ --brand-emerald: #10b981;
873
+
874
+ --border-subtle: rgba(107, 138, 122, 0.08);
875
+ --border-default: rgba(107, 138, 122, 0.15);
876
+ --border-hover: rgba(107, 138, 122, 0.25);
877
+ --border-accent: rgba(16, 185, 129, 0.15);
878
+ --border-accent-hover: rgba(16, 185, 129, 0.35);
879
+
880
+ --btn-primary-bg: #10b981;
881
+ --btn-primary-hover: #34d399;
882
+ --btn-cta-bg: #10b981;
883
+ --btn-cta-text: #000000;
884
+
885
+ --code-keyword: #34d399;
886
+ --code-string: #a5b4fc;
887
+ --code-function: #6ee7b7;
888
+ --code-number: #fbbf24;
889
+ --code-success: #10b981;
890
+ --code-comment: #6b8a7a;
891
+ --code-error: #ef4444;
892
+
893
+ --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.03);
894
+ --shadow-dropdown: 0 8px 32px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255, 255, 255, 0.05);
895
+ --shadow-glow: 0 0 32px rgba(16, 185, 129, 0.18);
896
+ --shadow-accent: 0 1px 3px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(16, 185, 129, 0.2);
897
+
898
+ --tangle-gradient: linear-gradient(135deg, #10b981, #34d399);
899
+ --tangle-gradient-text: linear-gradient(135deg, #34d399, #6ee7b7);
900
+ --accent-gradient-strong: linear-gradient(135deg, #10b981, #34d399);
901
+ --accent-surface-soft: rgba(16, 185, 129, 0.12);
902
+ --accent-surface-strong: rgba(16, 185, 129, 0.20);
903
+ --accent-text: #34d399;
904
+
905
+ --md3-primary: #34d399;
906
+ --md3-primary-dim: #10b981;
907
+ --md3-primary-container: #059669;
908
+ --md3-on-primary: #000000;
909
+ --md3-on-primary-container: #d1fae5;
910
+ --md3-surface: #0a0f0c;
911
+ --md3-surface-dim: #060e0a;
912
+ --md3-surface-bright: #1a2a22;
913
+ --md3-on-surface: #ecfdf5;
914
+ --md3-on-surface-variant: #86a896;
915
+ --md3-error: #ef4444;
916
+ --md3-outline: #2d4a3a;
917
+ --md3-outline-variant: #1a2a22;
918
+ }
919
+
920
+ /* ── Dawn — warm light theme ── */
921
+ [data-sandbox-theme="dawn"] {
922
+ --hsl-background: 30 25% 96%;
923
+ --hsl-foreground: 20 25% 12%;
924
+ --hsl-card: 30 20% 100%;
925
+ --hsl-card-foreground: 20 25% 12%;
926
+ --hsl-popover: 30 20% 100%;
927
+ --hsl-popover-foreground: 20 25% 12%;
928
+ --hsl-primary: 15 75% 50%;
929
+ --hsl-primary-foreground: 0 0% 100%;
930
+ --hsl-secondary: 25 60% 30%;
931
+ --hsl-secondary-foreground: 0 0% 100%;
932
+ --hsl-muted: 30 18% 93%;
933
+ --hsl-muted-foreground: 20 10% 42%;
934
+ --hsl-accent: 30 22% 92%;
935
+ --hsl-accent-foreground: 20 25% 12%;
936
+ --hsl-destructive: 0 72% 45%;
937
+ --hsl-destructive-foreground: 0 0% 100%;
938
+ --hsl-border: 25 18% 86%;
939
+ --hsl-input: 25 18% 88%;
940
+ --hsl-ring: 15 75% 50%;
941
+ --hsl-success: 152 82% 34%;
942
+ --hsl-warning: 41 96% 50%;
943
+ --hsl-info: 212 80% 50%;
944
+
945
+ --depth-1: #faf7f4;
946
+ --depth-2: #f5f0eb;
947
+ --depth-3: #ebe4dc;
948
+ --depth-4: #ddd4ca;
949
+
950
+ --status-running: #059669;
951
+ --status-creating: #d97706;
952
+ --status-stopped: #b45309;
953
+ --status-warm: #c2410c;
954
+ --status-cold: #0284c7;
955
+ --status-error: #dc2626;
956
+ --status-deleted: #78716c;
957
+
958
+ --glass-bg: var(--depth-2);
959
+ --glass-bg-strong: var(--depth-1);
960
+ --glass-border: var(--border-subtle);
961
+ --glass-border-hover: var(--border-default);
962
+
963
+ --surface-success-bg: #f0fdf4;
964
+ --surface-success-border: #bbf7d0;
965
+ --surface-success-text: #15803d;
966
+ --surface-warning-bg: #fffbeb;
967
+ --surface-warning-border: #fde68a;
968
+ --surface-warning-text: #a16207;
969
+ --surface-danger-bg: #fef2f2;
970
+ --surface-danger-border: #fecaca;
971
+ --surface-danger-text: #b91c1c;
972
+ --surface-info-bg: #eff6ff;
973
+ --surface-info-border: #bfdbfe;
974
+ --surface-info-text: #1d4ed8;
975
+ --surface-teal-bg: #f0fdfa;
976
+ --surface-teal-border: #99f6e4;
977
+ --surface-teal-text: #0f766e;
978
+ --surface-violet-bg: #f5f3ff;
979
+ --surface-violet-border: #ddd6fe;
980
+ --surface-violet-text: #6d28d9;
981
+ --surface-orange-bg: #fff7ed;
982
+ --surface-orange-border: #fed7aa;
983
+ --surface-orange-text: #c2410c;
984
+ --surface-neutral-bg: var(--depth-3);
985
+ --surface-neutral-border: var(--border-subtle);
986
+ --surface-neutral-text: var(--text-muted);
987
+
988
+ --sidebar-background: 30 25% 96%;
989
+ --sidebar-foreground: 20 25% 12%;
990
+ --sidebar-primary: 15 75% 50%;
991
+ --sidebar-primary-foreground: 0 0% 100%;
992
+ --sidebar-accent: 30 22% 90%;
993
+ --sidebar-accent-foreground: 20 25% 12%;
994
+ --sidebar-border: 25 18% 86%;
995
+ --sidebar-ring: 15 75% 50%;
996
+
997
+ --mesh-teal: rgba(5, 150, 105, 0.04);
998
+ --mesh-violet: rgba(217, 119, 6, 0.03);
999
+ --mesh-blue: rgba(2, 132, 199, 0.03);
1000
+
1001
+ --bg-root: #faf7f4;
1002
+ --bg-dark: #f5f0eb;
1003
+ --bg-card: #ffffff;
1004
+ --bg-elevated: #ebe4dc;
1005
+ --bg-section: #f5f0eb;
1006
+ --bg-input: #f2ece5;
1007
+ --bg-hover: rgba(217, 119, 6, 0.05);
1008
+ --bg-selection: rgba(217, 119, 6, 0.08);
1009
+
1010
+ --text-primary: #2a1f14;
1011
+ --text-secondary: #4a3f34;
1012
+ --text-muted: #8c7a68;
1013
+ --text-dim: #b0a090;
1014
+
1015
+ --brand-primary: #d97706;
1016
+ --brand-strong: #b45309;
1017
+ --brand-cool: #f59e0b;
1018
+ --brand-glow: #fbbf24;
1019
+ --brand-purple: #d97706;
1020
+ --brand-vibrant: #ea580c;
1021
+ --brand-emerald: #059669;
1022
+
1023
+ --border-subtle: rgba(140, 122, 104, 0.08);
1024
+ --border-default: rgba(140, 122, 104, 0.15);
1025
+ --border-hover: rgba(140, 122, 104, 0.25);
1026
+ --border-accent: rgba(217, 119, 6, 0.15);
1027
+ --border-accent-hover: rgba(217, 119, 6, 0.35);
1028
+
1029
+ --btn-primary-bg: #d97706;
1030
+ --btn-primary-hover: #b45309;
1031
+ --btn-cta-bg: #ea580c;
1032
+ --btn-cta-text: #ffffff;
1033
+
1034
+ --code-keyword: #9a3412;
1035
+ --code-string: #059669;
1036
+ --code-function: #b45309;
1037
+ --code-number: #c2410c;
1038
+ --code-success: #059669;
1039
+ --code-comment: #8c7a68;
1040
+ --code-error: #dc2626;
1041
+
1042
+ --shadow-card: 0 1px 4px rgba(42, 31, 20, 0.06), 0 0 0 1px rgba(42, 31, 20, 0.04);
1043
+ --shadow-dropdown: 0 8px 32px rgba(42, 31, 20, 0.10), 0 0 0 1px rgba(42, 31, 20, 0.06);
1044
+ --shadow-glow: 0 0 32px rgba(217, 119, 6, 0.10);
1045
+ --shadow-accent: 0 2px 8px rgba(217, 119, 6, 0.12), 0 0 0 1px rgba(217, 119, 6, 0.08);
1046
+
1047
+ --tangle-gradient: linear-gradient(135deg, #d97706, #f59e0b);
1048
+ --tangle-gradient-text: linear-gradient(135deg, #b45309, #d97706);
1049
+ --accent-gradient-strong: linear-gradient(135deg, #d97706, #f59e0b);
1050
+ --accent-surface-soft: rgba(217, 119, 6, 0.06);
1051
+ --accent-surface-strong: rgba(217, 119, 6, 0.12);
1052
+ --accent-text: #b45309;
1053
+
1054
+ --md3-primary: #f59e0b;
1055
+ --md3-primary-dim: #d97706;
1056
+ --md3-primary-container: #fef3c7;
1057
+ --md3-on-primary: #ffffff;
1058
+ --md3-on-primary-container: #78350f;
1059
+ --md3-surface: #faf7f4;
1060
+ --md3-surface-dim: #f5f0eb;
1061
+ --md3-surface-bright: #ffffff;
1062
+ --md3-on-surface: #2a1f14;
1063
+ --md3-on-surface-variant: #78716c;
1064
+ --md3-error: #dc2626;
1065
+ --md3-outline: #d6d3d1;
1066
+ --md3-outline-variant: #e7e5e4;
1067
+
1068
+ --font-sans: "Geist", "DM Sans", ui-sans-serif, system-ui, sans-serif;
1069
+ --font-display: "Outfit", "Geist", sans-serif;
1070
+ --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
419
1071
  }
420
1072
 
421
1073
  [data-density="compact"] {
@@ -426,6 +1078,14 @@
426
1078
  --control-height: 2rem;
427
1079
  --panel-padding: 0.625rem;
428
1080
 
1081
+ --font-size-xs: 0.625rem;
1082
+ --font-size-sm: 0.6875rem;
1083
+ --font-size-base: 0.8125rem;
1084
+ --font-size-lg: 0.875rem;
1085
+ --line-height-base: 1.6;
1086
+ --avatar-size: 1.5rem;
1087
+ --timeline-dot-size: 0.5rem;
1088
+
429
1089
  --code-padding-x: 0.625rem;
430
1090
  --code-padding-y: 0.5rem;
431
1091
  --code-font-size: 0.75rem;
@@ -438,3 +1098,4 @@
438
1098
  --tool-card-py: 0.375rem;
439
1099
  --tool-icon-size: 1.5rem;
440
1100
  }
1101
+