mrmd-editor 0.6.0 → 0.7.1
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/package.json +1 -1
- package/src/cell-controls/widgets.js +30 -0
- package/src/cells.js +9 -9
- package/src/ctrl-k-modal.js +190 -14
- package/src/document-languages.js +105 -0
- package/src/execution.js +73 -25
- package/src/frontmatter-updater.js +224 -0
- package/src/index.js +173 -86
- package/src/markdown/renderer.js +52 -3
- package/src/markdown/styles.js +126 -0
- package/src/monitor-coordination.js +1 -3
- package/src/mrp-client.js +36 -169
- package/src/mrp-types.js +1 -37
- package/src/output-widget.js +54 -0
- package/src/runtime-codelens/index.js +3 -3
- package/src/shell/ai-menu.js +70 -0
- package/src/shell/components/menu.js +39 -1
- package/src/shell/components/status-bar.js +213 -11
- package/src/shell/dialogs/file-picker.js +378 -6
- package/src/shell/layouts/studio.js +31 -9
- package/src/shell/orchestrator-client.js +105 -18
- package/src/shell/state.js +63 -42
- package/src/shell/styles.js +328 -0
- package/src/term-pty-client.js +62 -7
- package/src/widgets/theme-utils.js +12 -12
- package/src/widgets/theme.js +520 -0
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* 1. Explicit config (config.appearance.widgetTheme)
|
|
10
10
|
* 2. CodeMirror theme class (.cm-theme-dark)
|
|
11
11
|
* 3. System preference (prefers-color-scheme)
|
|
12
|
-
* 4. Default: '
|
|
12
|
+
* 4. Default: 'wizard-study-dark' (dark)
|
|
13
13
|
*
|
|
14
14
|
* ## Watching for Changes
|
|
15
15
|
*
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* @module widgets/theme-utils
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
|
-
import { getTheme
|
|
23
|
+
import { getTheme } from './theme.js';
|
|
24
24
|
|
|
25
25
|
// #region DETECTION
|
|
26
26
|
|
|
@@ -31,12 +31,12 @@ import { getTheme, midnightTheme, daylightTheme } from './theme.js';
|
|
|
31
31
|
* 1. Explicit theme name passed as parameter
|
|
32
32
|
* 2. CodeMirror theme class on the editor element
|
|
33
33
|
* 3. System color scheme preference
|
|
34
|
-
* 4. Default: '
|
|
34
|
+
* 4. Default: 'wizard-study-dark'
|
|
35
35
|
*
|
|
36
36
|
* @param {Object} [options]
|
|
37
37
|
* @param {string} [options.themeName] - Explicit theme name (highest priority)
|
|
38
38
|
* @param {HTMLElement} [options.editorElement] - Editor DOM element to check for .cm-theme-dark
|
|
39
|
-
* @returns {string} Theme name ('
|
|
39
|
+
* @returns {string} Theme name ('wizard-study-dark', 'wizard-study-light', etc.)
|
|
40
40
|
*
|
|
41
41
|
* @example
|
|
42
42
|
* // Detect based on CodeMirror and system preference
|
|
@@ -57,25 +57,25 @@ export function detectTheme({ themeName, editorElement } = {}) {
|
|
|
57
57
|
// CodeMirror adds this class when using oneDark or similar dark themes
|
|
58
58
|
const hasDarkTheme = editorElement.closest('.cm-theme-dark') !== null;
|
|
59
59
|
if (hasDarkTheme) {
|
|
60
|
-
return '
|
|
60
|
+
return 'wizard-study-dark';
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
// If there's any cm-theme class but not dark, assume light
|
|
64
64
|
const hasAnyTheme = editorElement.matches('[class*="cm-theme"]') ||
|
|
65
65
|
editorElement.closest('[class*="cm-theme"]') !== null;
|
|
66
66
|
if (hasAnyTheme) {
|
|
67
|
-
return '
|
|
67
|
+
return 'wizard-study-light';
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
// 3. System preference
|
|
72
72
|
if (typeof window !== 'undefined' && window.matchMedia) {
|
|
73
73
|
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
74
|
-
return prefersDark ? '
|
|
74
|
+
return prefersDark ? 'wizard-study-dark' : 'wizard-study-light';
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
// 4. Default
|
|
78
|
-
return '
|
|
78
|
+
return 'wizard-study-dark';
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
/**
|
|
@@ -208,7 +208,7 @@ const THEME_FONTS_ID = 'mrmd-widget-theme-fonts';
|
|
|
208
208
|
*
|
|
209
209
|
* @example
|
|
210
210
|
* // Apply by name
|
|
211
|
-
* applyTheme('
|
|
211
|
+
* applyTheme('wizard-study-dark');
|
|
212
212
|
*
|
|
213
213
|
* // Apply custom theme object
|
|
214
214
|
* applyTheme({
|
|
@@ -225,7 +225,7 @@ export function applyTheme(themeOrName, { target, useStyleTag = true } = {}) {
|
|
|
225
225
|
|
|
226
226
|
if (!theme) {
|
|
227
227
|
console.warn(`Theme "${themeOrName}" not found, using midnight`);
|
|
228
|
-
return applyTheme('
|
|
228
|
+
return applyTheme('wizard-study-dark', { target, useStyleTag });
|
|
229
229
|
}
|
|
230
230
|
|
|
231
231
|
// Get token values (exclude name, description, fontFace, isDark)
|
|
@@ -330,7 +330,7 @@ export function removeThemeStyles() {
|
|
|
330
330
|
* @returns {string} CSS string with :root variables and optional font-face
|
|
331
331
|
*
|
|
332
332
|
* @example
|
|
333
|
-
* const css = generateThemeCSS('
|
|
333
|
+
* const css = generateThemeCSS('wizard-study-dark');
|
|
334
334
|
* // :root {
|
|
335
335
|
* // --widget-surface: rgba(0, 0, 0, 0.35);
|
|
336
336
|
* // ...
|
|
@@ -346,7 +346,7 @@ export function generateThemeCSS(themeOrName, { includeFontFace = true } = {}) {
|
|
|
346
346
|
: themeOrName;
|
|
347
347
|
|
|
348
348
|
if (!theme) {
|
|
349
|
-
return generateThemeCSS('
|
|
349
|
+
return generateThemeCSS('wizard-study-dark', { includeFontFace });
|
|
350
350
|
}
|
|
351
351
|
|
|
352
352
|
const vars = Object.entries(theme)
|
package/src/widgets/theme.js
CHANGED
|
@@ -2419,6 +2419,522 @@ export const openresponsesTheme = {
|
|
|
2419
2419
|
'--header-fg-hover': '#0f172a', // slate-900
|
|
2420
2420
|
};
|
|
2421
2421
|
|
|
2422
|
+
// ===========================================================================
|
|
2423
|
+
// WIZARD'S STUDY THEMES
|
|
2424
|
+
// ===========================================================================
|
|
2425
|
+
|
|
2426
|
+
/**
|
|
2427
|
+
* Wizard's Study Dark Theme
|
|
2428
|
+
*
|
|
2429
|
+
* Deep midnight background like aged oak walls, warm parchment text
|
|
2430
|
+
* like candlelit scrolls. Muted jewel tones: amethyst, sage, gold, ember.
|
|
2431
|
+
*
|
|
2432
|
+
* Inspired by late-night reading in a wizard's tower — the warm glow
|
|
2433
|
+
* of candles on old wood, ink on parchment, crystals catching starlight.
|
|
2434
|
+
*
|
|
2435
|
+
* ## Color Palette
|
|
2436
|
+
*
|
|
2437
|
+
* **Backgrounds** — midnight oak, shadow, twilight velvet
|
|
2438
|
+
* - #1a1b2e (midnight oak — main background)
|
|
2439
|
+
* - #2a2b3d (shadow — elevated surfaces)
|
|
2440
|
+
* - #3d3552 (twilight velvet — selections, highlights)
|
|
2441
|
+
*
|
|
2442
|
+
* **Text** — warm parchment tones
|
|
2443
|
+
* - #d4c4a8 (warm parchment — primary text)
|
|
2444
|
+
* - #a49478 (worn scroll — muted text)
|
|
2445
|
+
* - #c8a654 (candlelight gold — accent)
|
|
2446
|
+
*
|
|
2447
|
+
* **Syntax** — aged jewel tones
|
|
2448
|
+
* - #a87cc4 (amethyst crystal — keywords)
|
|
2449
|
+
* - #8aab7c (sage leaf — strings)
|
|
2450
|
+
* - #c8a654 (candlelight gold — numbers, cursor)
|
|
2451
|
+
* - #c47862 (fading ember — errors, tags)
|
|
2452
|
+
* - #7c8ec4 (twilight sky — functions)
|
|
2453
|
+
* - #7caab0 (moonlit water — types)
|
|
2454
|
+
*/
|
|
2455
|
+
export const wizardStudyDarkTheme = {
|
|
2456
|
+
name: 'wizard-study-dark',
|
|
2457
|
+
description: "Deep midnight study with candlelit parchment tones. The Wizard's Study (dark).",
|
|
2458
|
+
isDark: true,
|
|
2459
|
+
fontFace: defaultFontFace,
|
|
2460
|
+
|
|
2461
|
+
// ===========================================================================
|
|
2462
|
+
// SPACING
|
|
2463
|
+
// ===========================================================================
|
|
2464
|
+
'--widget-line-height': 'inherit',
|
|
2465
|
+
'--widget-padding-x': '12px',
|
|
2466
|
+
'--widget-padding-y': '8px',
|
|
2467
|
+
'--widget-margin-y': '4px',
|
|
2468
|
+
'--widget-border-radius': '6px',
|
|
2469
|
+
'--widget-border-width': '1px',
|
|
2470
|
+
'--widget-border-accent-width': '3px',
|
|
2471
|
+
|
|
2472
|
+
// Text layout
|
|
2473
|
+
'--widget-white-space': 'pre-wrap',
|
|
2474
|
+
'--widget-word-break': 'break-word',
|
|
2475
|
+
|
|
2476
|
+
// ===========================================================================
|
|
2477
|
+
// TYPOGRAPHY
|
|
2478
|
+
// ===========================================================================
|
|
2479
|
+
'--widget-font-mono': "'Monaspace Neon Var', 'SF Mono', Monaco, Consolas, monospace",
|
|
2480
|
+
'--widget-font-sans': "Literata, Charter, Georgia, serif",
|
|
2481
|
+
'--editor-font-family': "Literata, Charter, Georgia, serif",
|
|
2482
|
+
'--widget-font-size': '0.9em',
|
|
2483
|
+
'--widget-font-size-small': '0.8em',
|
|
2484
|
+
'--widget-font-size-label': '11px',
|
|
2485
|
+
|
|
2486
|
+
// ===========================================================================
|
|
2487
|
+
// SURFACES (midnight oak tones)
|
|
2488
|
+
// ===========================================================================
|
|
2489
|
+
'--widget-surface': '#222336', // slightly lighter than editor bg
|
|
2490
|
+
'--widget-surface-hover': '#2a2b3d', // shadow
|
|
2491
|
+
'--widget-surface-elevated': '#2a2b3d', // shadow — tooltips, dropdowns
|
|
2492
|
+
'--widget-surface-inset': '#141524', // deeper shadow
|
|
2493
|
+
|
|
2494
|
+
// ===========================================================================
|
|
2495
|
+
// BORDERS
|
|
2496
|
+
// ===========================================================================
|
|
2497
|
+
'--widget-border': '#3d3552', // twilight velvet
|
|
2498
|
+
'--widget-border-accent': 'rgba(200, 166, 84, 0.6)', // candlelight gold
|
|
2499
|
+
'--widget-border-focus': '#c8a654', // molten gold
|
|
2500
|
+
|
|
2501
|
+
// ===========================================================================
|
|
2502
|
+
// TEXT COLORS (parchment tones)
|
|
2503
|
+
// ===========================================================================
|
|
2504
|
+
'--widget-text': '#d4c4a8', // warm parchment
|
|
2505
|
+
'--widget-text-muted': '#8a7a5e', // worn scroll
|
|
2506
|
+
'--widget-text-accent': '#c8a654', // candlelight gold
|
|
2507
|
+
|
|
2508
|
+
// ===========================================================================
|
|
2509
|
+
// SEMANTIC COLORS (jewel tones)
|
|
2510
|
+
// ===========================================================================
|
|
2511
|
+
'--widget-success': '#8aab7c', // sage leaf
|
|
2512
|
+
'--widget-warning': '#c8a654', // candlelight gold
|
|
2513
|
+
'--widget-error': '#c47862', // fading ember
|
|
2514
|
+
'--widget-info': '#7c8ec4', // twilight sky
|
|
2515
|
+
|
|
2516
|
+
// ===========================================================================
|
|
2517
|
+
// ANSI TERMINAL COLORS (from Alacritty theme)
|
|
2518
|
+
// ===========================================================================
|
|
2519
|
+
'--ansi-black': '#2a2b3d', // shadow
|
|
2520
|
+
'--ansi-red': '#c47862', // fading ember
|
|
2521
|
+
'--ansi-green': '#8aab7c', // sage leaf
|
|
2522
|
+
'--ansi-yellow': '#c8a654', // candlelight gold
|
|
2523
|
+
'--ansi-blue': '#7c8ec4', // twilight sky
|
|
2524
|
+
'--ansi-magenta': '#a87cc4', // amethyst crystal
|
|
2525
|
+
'--ansi-cyan': '#7caab0', // moonlit water
|
|
2526
|
+
'--ansi-white': '#d4c4a8', // parchment
|
|
2527
|
+
'--ansi-bright-black': '#4a4b5d', // lighter shadow
|
|
2528
|
+
'--ansi-bright-red': '#d49882', // warm hearth
|
|
2529
|
+
'--ansi-bright-green': '#a4c896', // spring moss
|
|
2530
|
+
'--ansi-bright-yellow': '#e8c874', // sunbeam
|
|
2531
|
+
'--ansi-bright-blue': '#9caed4', // morning sky
|
|
2532
|
+
'--ansi-bright-magenta': '#c49cd4', // lavender mist
|
|
2533
|
+
'--ansi-bright-cyan': '#9ccad0', // clear brook
|
|
2534
|
+
'--ansi-bright-white': '#ebe0cc', // aged linen
|
|
2535
|
+
|
|
2536
|
+
// ===========================================================================
|
|
2537
|
+
// TERMINAL COLORS
|
|
2538
|
+
// ===========================================================================
|
|
2539
|
+
'--term-background': '#1a1b2e', // midnight oak
|
|
2540
|
+
'--term-foreground': '#d4c4a8', // warm parchment
|
|
2541
|
+
'--term-cursor': '#c8a654', // molten gold
|
|
2542
|
+
'--term-cursor-accent': '#1a1b2e', // midnight oak
|
|
2543
|
+
'--term-selection': '#3d3552', // twilight velvet
|
|
2544
|
+
'--term-border': '#3d3552', // twilight velvet
|
|
2545
|
+
'--term-header-bg': '#2a2b3d', // shadow
|
|
2546
|
+
'--term-header-fg': '#8a7a5e', // worn scroll
|
|
2547
|
+
|
|
2548
|
+
// ===========================================================================
|
|
2549
|
+
// COLLABORATOR COLORS
|
|
2550
|
+
// ===========================================================================
|
|
2551
|
+
'--collab-human': '#7c8ec4', // twilight sky
|
|
2552
|
+
'--collab-ai': '#a87cc4', // amethyst crystal
|
|
2553
|
+
'--collab-runtime': '#8aab7c', // sage leaf
|
|
2554
|
+
|
|
2555
|
+
// ===========================================================================
|
|
2556
|
+
// EDITOR
|
|
2557
|
+
// ===========================================================================
|
|
2558
|
+
'--editor-background': '#1a1b2e', // midnight oak
|
|
2559
|
+
'--editor-foreground': '#d4c4a8', // warm parchment
|
|
2560
|
+
'--editor-line-number': '#4a4b5d', // lighter shadow
|
|
2561
|
+
'--editor-line-number-active': '#d4c4a8', // warm parchment
|
|
2562
|
+
'--editor-selection': '#3d3552', // twilight velvet
|
|
2563
|
+
'--editor-selection-match': '#33304a', // deeper velvet
|
|
2564
|
+
'--editor-cursor': '#c8a654', // molten gold
|
|
2565
|
+
'--editor-active-line': 'rgba(61, 53, 82, 0.4)', // twilight velvet hint
|
|
2566
|
+
'--editor-gutter': '#1a1b2e', // midnight oak
|
|
2567
|
+
'--editor-matching-bracket': 'rgba(200, 166, 84, 0.3)', // gold shimmer
|
|
2568
|
+
|
|
2569
|
+
// ===========================================================================
|
|
2570
|
+
// SYNTAX HIGHLIGHTING (jewel tones — muted, aged, wise)
|
|
2571
|
+
// ===========================================================================
|
|
2572
|
+
'--syntax-keyword': '#a87cc4', // amethyst crystal
|
|
2573
|
+
'--syntax-control': '#a87cc4', // amethyst crystal
|
|
2574
|
+
'--syntax-string': '#8aab7c', // sage leaf
|
|
2575
|
+
'--syntax-number': '#c8a654', // candlelight gold
|
|
2576
|
+
'--syntax-comment': '#5a5b6d', // dim stone
|
|
2577
|
+
'--syntax-function': '#7c8ec4', // twilight sky
|
|
2578
|
+
'--syntax-variable': '#d4c4a8', // warm parchment
|
|
2579
|
+
'--syntax-variable-special': '#a87cc4', // amethyst crystal
|
|
2580
|
+
'--syntax-property': '#9caed4', // morning sky
|
|
2581
|
+
'--syntax-operator': '#d4c4a8', // parchment
|
|
2582
|
+
'--syntax-punctuation': '#8a7a5e', // worn scroll
|
|
2583
|
+
'--syntax-type': '#7caab0', // moonlit water
|
|
2584
|
+
'--syntax-class': '#7caab0', // moonlit water
|
|
2585
|
+
'--syntax-constant': '#c8a654', // candlelight gold
|
|
2586
|
+
'--syntax-parameter': '#d4c4a8', // warm parchment
|
|
2587
|
+
'--syntax-regexp': '#c47862', // fading ember
|
|
2588
|
+
'--syntax-escape': '#e8c874', // sunbeam
|
|
2589
|
+
'--syntax-tag': '#c47862', // fading ember
|
|
2590
|
+
'--syntax-attribute': '#9caed4', // morning sky
|
|
2591
|
+
'--syntax-attribute-value': '#8aab7c', // sage leaf
|
|
2592
|
+
'--syntax-heading': '#c8a654', // candlelight gold
|
|
2593
|
+
'--syntax-link': '#7c8ec4', // twilight sky
|
|
2594
|
+
'--syntax-link-text': '#9caed4', // morning sky
|
|
2595
|
+
'--syntax-emphasis': '#c49cd4', // lavender mist
|
|
2596
|
+
'--syntax-strong': '#ebe0cc', // aged linen
|
|
2597
|
+
'--syntax-strikethrough': '#4a4b5d', // lighter shadow
|
|
2598
|
+
'--syntax-quote': '#5a5b6d', // dim stone
|
|
2599
|
+
'--syntax-code': '#c8a654', // candlelight gold
|
|
2600
|
+
'--syntax-code-background': 'rgba(42, 43, 61, 0.6)', // shadow
|
|
2601
|
+
'--syntax-meta': '#5a5b6d', // dim stone
|
|
2602
|
+
'--syntax-inserted': '#8aab7c', // sage leaf
|
|
2603
|
+
'--syntax-deleted': '#c47862', // fading ember
|
|
2604
|
+
'--syntax-changed': '#c8a654', // candlelight gold
|
|
2605
|
+
|
|
2606
|
+
// ===========================================================================
|
|
2607
|
+
// MARKDOWN RENDERING
|
|
2608
|
+
// ===========================================================================
|
|
2609
|
+
'--md-heading-1-size': '1.75em',
|
|
2610
|
+
'--md-heading-2-size': '1.4em',
|
|
2611
|
+
'--md-heading-3-size': '1.2em',
|
|
2612
|
+
'--md-heading-4-size': '1.1em',
|
|
2613
|
+
'--md-heading-5-size': '1.05em',
|
|
2614
|
+
'--md-heading-6-size': '1em',
|
|
2615
|
+
'--md-heading-weight': '600',
|
|
2616
|
+
'--md-heading-line-height': '1.3',
|
|
2617
|
+
'--md-heading-margin-top': '0.5em',
|
|
2618
|
+
'--md-heading-color': '#e8c874', // sunbeam for headings
|
|
2619
|
+
'--md-marker-color': '#5a5b6d', // dim stone
|
|
2620
|
+
'--md-marker-font': "'Monaspace Neon Var', 'SF Mono', Monaco, Consolas, monospace",
|
|
2621
|
+
'--md-link-color': '#7c8ec4', // twilight sky
|
|
2622
|
+
'--md-link-decoration': 'underline',
|
|
2623
|
+
'--md-code-background': 'rgba(42, 43, 61, 0.6)', // shadow
|
|
2624
|
+
'--md-code-color': '#c8a654', // candlelight gold
|
|
2625
|
+
'--md-code-padding': '0.15em 0.35em',
|
|
2626
|
+
'--md-code-radius': '3px',
|
|
2627
|
+
'--md-blockquote-border': 'rgba(200, 166, 84, 0.4)', // candlelight gold
|
|
2628
|
+
'--md-blockquote-border-width': '3px',
|
|
2629
|
+
'--md-blockquote-color': '#8a7a5e', // worn scroll
|
|
2630
|
+
'--md-blockquote-padding': '1em',
|
|
2631
|
+
'--md-list-marker-color': '#8a7a5e', // worn scroll
|
|
2632
|
+
'--md-hr-color': '#3d3552', // twilight velvet
|
|
2633
|
+
'--md-hr-height': '1px',
|
|
2634
|
+
'--md-hr-margin': '1.5em 0',
|
|
2635
|
+
'--md-table-border': '#3d3552', // twilight velvet
|
|
2636
|
+
'--md-table-header-bg': '#2a2b3d', // shadow
|
|
2637
|
+
'--md-table-header-weight': '600',
|
|
2638
|
+
'--md-table-cell-padding': '0.5em 0.75em',
|
|
2639
|
+
'--md-table-stripe-bg': 'transparent',
|
|
2640
|
+
'--md-image-max-width': '100%',
|
|
2641
|
+
'--md-image-border-radius': '6px',
|
|
2642
|
+
'--md-checkbox-size': '1em',
|
|
2643
|
+
'--md-checkbox-color': '#c8a654', // candlelight gold
|
|
2644
|
+
'--md-alert-note-color': '#7c8ec4', // twilight sky
|
|
2645
|
+
'--md-alert-tip-color': '#8aab7c', // sage leaf
|
|
2646
|
+
'--md-alert-important-color': '#a87cc4', // amethyst crystal
|
|
2647
|
+
'--md-alert-warning-color': '#c8a654', // candlelight gold
|
|
2648
|
+
'--md-alert-caution-color': '#c47862', // fading ember
|
|
2649
|
+
|
|
2650
|
+
// ===========================================================================
|
|
2651
|
+
// SHELL (status bar, menus, dialogs)
|
|
2652
|
+
// ===========================================================================
|
|
2653
|
+
'--mrmd-ui-font': "Literata, Charter, Georgia, serif",
|
|
2654
|
+
'--mrmd-ui-font-size': '13px',
|
|
2655
|
+
'--mrmd-ui-font-size-sm': '11px',
|
|
2656
|
+
'--mrmd-panel-bg': '#1a1b2e', // midnight oak
|
|
2657
|
+
'--mrmd-popup-bg': '#2a2b3d', // shadow
|
|
2658
|
+
'--mrmd-bg': '#1a1b2e', // midnight oak
|
|
2659
|
+
'--mrmd-fg': '#d4c4a8', // warm parchment
|
|
2660
|
+
'--mrmd-fg-muted': '#8a7a5e', // worn scroll
|
|
2661
|
+
'--mrmd-border': '#3d3552', // twilight velvet
|
|
2662
|
+
'--mrmd-hover-bg': 'rgba(200, 166, 84, 0.08)', // gold hint
|
|
2663
|
+
'--mrmd-active-bg': 'rgba(200, 166, 84, 0.12)', // gold hint
|
|
2664
|
+
'--mrmd-selection-bg': 'rgba(200, 166, 84, 0.2)', // gold selection
|
|
2665
|
+
'--mrmd-accent': '#c8a654', // candlelight gold
|
|
2666
|
+
'--mrmd-accent-hover': '#e8c874', // sunbeam
|
|
2667
|
+
'--mrmd-success': '#8aab7c', // sage leaf
|
|
2668
|
+
'--mrmd-warning': '#c8a654', // candlelight gold
|
|
2669
|
+
'--mrmd-error': '#c47862', // fading ember
|
|
2670
|
+
'--mrmd-shadow-md': '0 4px 12px rgba(0, 0, 0, 0.4)',
|
|
2671
|
+
'--mrmd-shadow-lg': '0 8px 32px rgba(0, 0, 0, 0.5)',
|
|
2672
|
+
'--mrmd-shadow-xl': '0 16px 48px rgba(0, 0, 0, 0.6)',
|
|
2673
|
+
'--mrmd-menu-border': '#3d3552', // twilight velvet
|
|
2674
|
+
'--mrmd-dialog-border': '#3d3552', // twilight velvet
|
|
2675
|
+
'--mrmd-input-border': '#3d3552', // twilight velvet
|
|
2676
|
+
'--mrmd-button-bg': '#2a2b3d', // shadow
|
|
2677
|
+
'--mrmd-button-border': '#3d3552', // twilight velvet
|
|
2678
|
+
'--mrmd-button-hover': '#3d3552', // twilight velvet
|
|
2679
|
+
'--mrmd-button-active': '#4a4b5d', // lighter shadow
|
|
2680
|
+
};
|
|
2681
|
+
|
|
2682
|
+
/**
|
|
2683
|
+
* Wizard's Study Light Theme
|
|
2684
|
+
*
|
|
2685
|
+
* Sunlit parchment background like an open grimoire, deep ink foreground
|
|
2686
|
+
* like fresh calligraphy. Warm jewel tones: amber, forest, dusty rose, deep sea.
|
|
2687
|
+
*
|
|
2688
|
+
* The same wizard's study in daylight — morning sun streaming through
|
|
2689
|
+
* leaded glass, illuminating pages of aged manuscripts.
|
|
2690
|
+
*
|
|
2691
|
+
* ## Color Palette
|
|
2692
|
+
*
|
|
2693
|
+
* **Backgrounds** — sunlit parchment, warm vellum
|
|
2694
|
+
* - #f2e8d5 (sunlit parchment — main background)
|
|
2695
|
+
* - #e8dcc6 (bleached linen — elevated surfaces)
|
|
2696
|
+
* - #d4c4a8 (warm vellum — selections)
|
|
2697
|
+
*
|
|
2698
|
+
* **Text** — aged ink, deep calligraphy
|
|
2699
|
+
* - #2a2540 (aged ink — primary text)
|
|
2700
|
+
* - #5a5470 (faded ink — muted text)
|
|
2701
|
+
* - #a07830 (deep amber quill — accent)
|
|
2702
|
+
*
|
|
2703
|
+
* **Syntax** — rich inks on parchment
|
|
2704
|
+
* - #7a4a8a (dried lavender — keywords)
|
|
2705
|
+
* - #4a7a42 (forest herb — strings)
|
|
2706
|
+
* - #8a6a20 (aged amber — numbers)
|
|
2707
|
+
* - #a04040 (sealing wax — errors, tags)
|
|
2708
|
+
* - #3a5a9a (lapis lazuli — functions)
|
|
2709
|
+
* - #3a7a7a (deep well water — types)
|
|
2710
|
+
*/
|
|
2711
|
+
export const wizardStudyLightTheme = {
|
|
2712
|
+
name: 'wizard-study-light',
|
|
2713
|
+
description: "Sunlit parchment with rich ink tones. The Wizard's Study (light).",
|
|
2714
|
+
isDark: false,
|
|
2715
|
+
fontFace: defaultFontFace,
|
|
2716
|
+
|
|
2717
|
+
// ===========================================================================
|
|
2718
|
+
// SPACING
|
|
2719
|
+
// ===========================================================================
|
|
2720
|
+
'--widget-line-height': 'inherit',
|
|
2721
|
+
'--widget-padding-x': '12px',
|
|
2722
|
+
'--widget-padding-y': '8px',
|
|
2723
|
+
'--widget-margin-y': '4px',
|
|
2724
|
+
'--widget-border-radius': '6px',
|
|
2725
|
+
'--widget-border-width': '1px',
|
|
2726
|
+
'--widget-border-accent-width': '3px',
|
|
2727
|
+
|
|
2728
|
+
// Text layout
|
|
2729
|
+
'--widget-white-space': 'pre-wrap',
|
|
2730
|
+
'--widget-word-break': 'break-word',
|
|
2731
|
+
|
|
2732
|
+
// ===========================================================================
|
|
2733
|
+
// TYPOGRAPHY
|
|
2734
|
+
// ===========================================================================
|
|
2735
|
+
'--widget-font-mono': "'Monaspace Neon Var', 'SF Mono', Monaco, Consolas, monospace",
|
|
2736
|
+
'--widget-font-sans': "Literata, Charter, Georgia, serif",
|
|
2737
|
+
'--editor-font-family': "Literata, Charter, Georgia, serif",
|
|
2738
|
+
'--widget-font-size': '0.9em',
|
|
2739
|
+
'--widget-font-size-small': '0.8em',
|
|
2740
|
+
'--widget-font-size-label': '11px',
|
|
2741
|
+
|
|
2742
|
+
// ===========================================================================
|
|
2743
|
+
// SURFACES (sunlit parchment tones)
|
|
2744
|
+
// ===========================================================================
|
|
2745
|
+
'--widget-surface': '#eaddc8', // aged parchment
|
|
2746
|
+
'--widget-surface-hover': '#e2d4bc', // touched parchment
|
|
2747
|
+
'--widget-surface-elevated': '#f2e8d5', // sunlit parchment
|
|
2748
|
+
'--widget-surface-inset': '#e0d2ba', // deeper parchment
|
|
2749
|
+
|
|
2750
|
+
// ===========================================================================
|
|
2751
|
+
// BORDERS
|
|
2752
|
+
// ===========================================================================
|
|
2753
|
+
'--widget-border': '#d4c4a8', // warm vellum
|
|
2754
|
+
'--widget-border-accent': 'rgba(160, 120, 48, 0.5)', // deep amber quill
|
|
2755
|
+
'--widget-border-focus': '#a07830', // deep amber quill
|
|
2756
|
+
|
|
2757
|
+
// ===========================================================================
|
|
2758
|
+
// TEXT COLORS (aged ink)
|
|
2759
|
+
// ===========================================================================
|
|
2760
|
+
'--widget-text': '#2a2540', // aged ink
|
|
2761
|
+
'--widget-text-muted': '#6a6480', // ghosted ink
|
|
2762
|
+
'--widget-text-accent': '#a07830', // deep amber quill
|
|
2763
|
+
|
|
2764
|
+
// ===========================================================================
|
|
2765
|
+
// SEMANTIC COLORS
|
|
2766
|
+
// ===========================================================================
|
|
2767
|
+
'--widget-success': '#4a7a42', // forest herb
|
|
2768
|
+
'--widget-warning': '#8a6a20', // aged amber
|
|
2769
|
+
'--widget-error': '#a04040', // sealing wax
|
|
2770
|
+
'--widget-info': '#3a5a9a', // lapis lazuli
|
|
2771
|
+
|
|
2772
|
+
// ===========================================================================
|
|
2773
|
+
// ANSI TERMINAL COLORS (from Alacritty light theme)
|
|
2774
|
+
// ===========================================================================
|
|
2775
|
+
'--ansi-black': '#2a2540', // deep ink
|
|
2776
|
+
'--ansi-red': '#a04040', // sealing wax
|
|
2777
|
+
'--ansi-green': '#4a7a42', // forest herb
|
|
2778
|
+
'--ansi-yellow': '#8a6a20', // aged amber
|
|
2779
|
+
'--ansi-blue': '#3a5a9a', // lapis lazuli
|
|
2780
|
+
'--ansi-magenta': '#7a4a8a', // dried lavender
|
|
2781
|
+
'--ansi-cyan': '#3a7a7a', // deep well water
|
|
2782
|
+
'--ansi-white': '#e8dcc6', // bleached linen
|
|
2783
|
+
'--ansi-bright-black': '#5a5470', // faded ink
|
|
2784
|
+
'--ansi-bright-red': '#c45a4a', // phoenix feather
|
|
2785
|
+
'--ansi-bright-green': '#5a9a52', // spring canopy
|
|
2786
|
+
'--ansi-bright-yellow': '#b08a30', // gilded edge
|
|
2787
|
+
'--ansi-bright-blue': '#4a72b8', // sapphire shard
|
|
2788
|
+
'--ansi-bright-magenta': '#9a62a8', // amethyst glow
|
|
2789
|
+
'--ansi-bright-cyan': '#4a9494', // enchanted pool
|
|
2790
|
+
'--ansi-bright-white': '#f2e8d5', // sunlit parchment
|
|
2791
|
+
|
|
2792
|
+
// ===========================================================================
|
|
2793
|
+
// TERMINAL COLORS
|
|
2794
|
+
// ===========================================================================
|
|
2795
|
+
'--term-background': '#f2e8d5', // sunlit parchment
|
|
2796
|
+
'--term-foreground': '#2a2540', // aged ink
|
|
2797
|
+
'--term-cursor': '#a07830', // deep amber quill
|
|
2798
|
+
'--term-cursor-accent': '#f2e8d5', // sunlit parchment
|
|
2799
|
+
'--term-selection': '#d4c4a8', // warm vellum
|
|
2800
|
+
'--term-border': '#d4c4a8', // warm vellum
|
|
2801
|
+
'--term-header-bg': '#e8dcc6', // bleached linen
|
|
2802
|
+
'--term-header-fg': '#6a6480', // ghosted ink
|
|
2803
|
+
|
|
2804
|
+
// ===========================================================================
|
|
2805
|
+
// COLLABORATOR COLORS
|
|
2806
|
+
// ===========================================================================
|
|
2807
|
+
'--collab-human': '#3a5a9a', // lapis lazuli
|
|
2808
|
+
'--collab-ai': '#7a4a8a', // dried lavender
|
|
2809
|
+
'--collab-runtime': '#4a7a42', // forest herb
|
|
2810
|
+
|
|
2811
|
+
// ===========================================================================
|
|
2812
|
+
// EDITOR
|
|
2813
|
+
// ===========================================================================
|
|
2814
|
+
'--editor-background': '#f2e8d5', // sunlit parchment
|
|
2815
|
+
'--editor-foreground': '#2a2540', // aged ink
|
|
2816
|
+
'--editor-line-number': '#a49478', // worn scroll
|
|
2817
|
+
'--editor-line-number-active': '#5a5470', // faded ink
|
|
2818
|
+
'--editor-selection': '#d4c4a8', // warm vellum
|
|
2819
|
+
'--editor-selection-match': '#e0d2ba', // deeper parchment
|
|
2820
|
+
'--editor-cursor': '#a07830', // deep amber quill
|
|
2821
|
+
'--editor-active-line': 'rgba(212, 196, 168, 0.4)', // warm vellum hint
|
|
2822
|
+
'--editor-gutter': '#f2e8d5', // sunlit parchment
|
|
2823
|
+
'--editor-matching-bracket': 'rgba(160, 120, 48, 0.25)', // amber shimmer
|
|
2824
|
+
|
|
2825
|
+
// ===========================================================================
|
|
2826
|
+
// SYNTAX HIGHLIGHTING (rich inks on parchment)
|
|
2827
|
+
// ===========================================================================
|
|
2828
|
+
'--syntax-keyword': '#7a4a8a', // dried lavender
|
|
2829
|
+
'--syntax-control': '#7a4a8a', // dried lavender
|
|
2830
|
+
'--syntax-string': '#4a7a42', // forest herb
|
|
2831
|
+
'--syntax-number': '#8a6a20', // aged amber
|
|
2832
|
+
'--syntax-comment': '#a49478', // worn scroll
|
|
2833
|
+
'--syntax-function': '#3a5a9a', // lapis lazuli
|
|
2834
|
+
'--syntax-variable': '#2a2540', // aged ink
|
|
2835
|
+
'--syntax-variable-special': '#7a4a8a', // dried lavender
|
|
2836
|
+
'--syntax-property': '#4a72b8', // sapphire shard
|
|
2837
|
+
'--syntax-operator': '#2a2540', // aged ink
|
|
2838
|
+
'--syntax-punctuation': '#6a6480', // ghosted ink
|
|
2839
|
+
'--syntax-type': '#3a7a7a', // deep well water
|
|
2840
|
+
'--syntax-class': '#3a7a7a', // deep well water
|
|
2841
|
+
'--syntax-constant': '#8a6a20', // aged amber
|
|
2842
|
+
'--syntax-parameter': '#2a2540', // aged ink
|
|
2843
|
+
'--syntax-regexp': '#a04040', // sealing wax
|
|
2844
|
+
'--syntax-escape': '#b08a30', // gilded edge
|
|
2845
|
+
'--syntax-tag': '#a04040', // sealing wax
|
|
2846
|
+
'--syntax-attribute': '#4a72b8', // sapphire shard
|
|
2847
|
+
'--syntax-attribute-value': '#4a7a42', // forest herb
|
|
2848
|
+
'--syntax-heading': '#2a2540', // aged ink — bold on parchment
|
|
2849
|
+
'--syntax-link': '#3a5a9a', // lapis lazuli
|
|
2850
|
+
'--syntax-link-text': '#4a72b8', // sapphire shard
|
|
2851
|
+
'--syntax-emphasis': '#7a4a8a', // dried lavender
|
|
2852
|
+
'--syntax-strong': '#2a2540', // aged ink
|
|
2853
|
+
'--syntax-strikethrough': '#a49478', // worn scroll
|
|
2854
|
+
'--syntax-quote': '#6a6480', // ghosted ink
|
|
2855
|
+
'--syntax-code': '#8a6a20', // aged amber
|
|
2856
|
+
'--syntax-code-background': 'rgba(212, 196, 168, 0.5)', // warm vellum
|
|
2857
|
+
'--syntax-meta': '#a49478', // worn scroll
|
|
2858
|
+
'--syntax-inserted': '#4a7a42', // forest herb
|
|
2859
|
+
'--syntax-deleted': '#a04040', // sealing wax
|
|
2860
|
+
'--syntax-changed': '#8a6a20', // aged amber
|
|
2861
|
+
|
|
2862
|
+
// ===========================================================================
|
|
2863
|
+
// MARKDOWN RENDERING
|
|
2864
|
+
// ===========================================================================
|
|
2865
|
+
'--md-heading-1-size': '1.75em',
|
|
2866
|
+
'--md-heading-2-size': '1.4em',
|
|
2867
|
+
'--md-heading-3-size': '1.2em',
|
|
2868
|
+
'--md-heading-4-size': '1.1em',
|
|
2869
|
+
'--md-heading-5-size': '1.05em',
|
|
2870
|
+
'--md-heading-6-size': '1em',
|
|
2871
|
+
'--md-heading-weight': '600',
|
|
2872
|
+
'--md-heading-line-height': '1.3',
|
|
2873
|
+
'--md-heading-margin-top': '0.5em',
|
|
2874
|
+
'--md-heading-color': '#2a2540', // aged ink
|
|
2875
|
+
'--md-marker-color': '#a49478', // worn scroll
|
|
2876
|
+
'--md-marker-font': "'Monaspace Neon Var', 'SF Mono', Monaco, Consolas, monospace",
|
|
2877
|
+
'--md-link-color': '#3a5a9a', // lapis lazuli
|
|
2878
|
+
'--md-link-decoration': 'underline',
|
|
2879
|
+
'--md-code-background': 'rgba(212, 196, 168, 0.5)', // warm vellum
|
|
2880
|
+
'--md-code-color': '#8a6a20', // aged amber
|
|
2881
|
+
'--md-code-padding': '0.15em 0.35em',
|
|
2882
|
+
'--md-code-radius': '3px',
|
|
2883
|
+
'--md-blockquote-border': 'rgba(160, 120, 48, 0.4)', // amber quill
|
|
2884
|
+
'--md-blockquote-border-width': '3px',
|
|
2885
|
+
'--md-blockquote-color': '#6a6480', // ghosted ink
|
|
2886
|
+
'--md-blockquote-padding': '1em',
|
|
2887
|
+
'--md-list-marker-color': '#a49478', // worn scroll
|
|
2888
|
+
'--md-hr-color': '#d4c4a8', // warm vellum
|
|
2889
|
+
'--md-hr-height': '1px',
|
|
2890
|
+
'--md-hr-margin': '1.5em 0',
|
|
2891
|
+
'--md-table-border': '#d4c4a8', // warm vellum
|
|
2892
|
+
'--md-table-header-bg': '#e8dcc6', // bleached linen
|
|
2893
|
+
'--md-table-header-weight': '600',
|
|
2894
|
+
'--md-table-cell-padding': '0.5em 0.75em',
|
|
2895
|
+
'--md-table-stripe-bg': 'transparent',
|
|
2896
|
+
'--md-image-max-width': '100%',
|
|
2897
|
+
'--md-image-border-radius': '6px',
|
|
2898
|
+
'--md-checkbox-size': '1em',
|
|
2899
|
+
'--md-checkbox-color': '#a07830', // deep amber quill
|
|
2900
|
+
'--md-alert-note-color': '#3a5a9a', // lapis lazuli
|
|
2901
|
+
'--md-alert-tip-color': '#4a7a42', // forest herb
|
|
2902
|
+
'--md-alert-important-color': '#7a4a8a', // dried lavender
|
|
2903
|
+
'--md-alert-warning-color': '#8a6a20', // aged amber
|
|
2904
|
+
'--md-alert-caution-color': '#a04040', // sealing wax
|
|
2905
|
+
|
|
2906
|
+
// ===========================================================================
|
|
2907
|
+
// SHELL (status bar, menus, dialogs)
|
|
2908
|
+
// ===========================================================================
|
|
2909
|
+
'--mrmd-ui-font': "Literata, Charter, Georgia, serif",
|
|
2910
|
+
'--mrmd-ui-font-size': '13px',
|
|
2911
|
+
'--mrmd-ui-font-size-sm': '11px',
|
|
2912
|
+
'--mrmd-panel-bg': '#f2e8d5', // sunlit parchment
|
|
2913
|
+
'--mrmd-popup-bg': '#f2e8d5', // sunlit parchment
|
|
2914
|
+
'--mrmd-bg': '#f2e8d5', // sunlit parchment
|
|
2915
|
+
'--mrmd-fg': '#2a2540', // aged ink
|
|
2916
|
+
'--mrmd-fg-muted': '#6a6480', // ghosted ink
|
|
2917
|
+
'--mrmd-border': '#d4c4a8', // warm vellum
|
|
2918
|
+
'--mrmd-hover-bg': 'rgba(160, 120, 48, 0.08)', // amber hint
|
|
2919
|
+
'--mrmd-active-bg': 'rgba(160, 120, 48, 0.12)', // amber hint
|
|
2920
|
+
'--mrmd-selection-bg': 'rgba(160, 120, 48, 0.15)', // amber selection
|
|
2921
|
+
'--mrmd-accent': '#a07830', // deep amber quill
|
|
2922
|
+
'--mrmd-accent-hover': '#8a6a20', // aged amber
|
|
2923
|
+
'--mrmd-success': '#4a7a42', // forest herb
|
|
2924
|
+
'--mrmd-warning': '#8a6a20', // aged amber
|
|
2925
|
+
'--mrmd-error': '#a04040', // sealing wax
|
|
2926
|
+
'--mrmd-shadow-md': '0 4px 12px rgba(0, 0, 0, 0.1)',
|
|
2927
|
+
'--mrmd-shadow-lg': '0 8px 32px rgba(0, 0, 0, 0.12)',
|
|
2928
|
+
'--mrmd-shadow-xl': '0 16px 48px rgba(0, 0, 0, 0.15)',
|
|
2929
|
+
'--mrmd-menu-border': '#d4c4a8', // warm vellum
|
|
2930
|
+
'--mrmd-dialog-border': '#d4c4a8', // warm vellum
|
|
2931
|
+
'--mrmd-input-border': '#d4c4a8', // warm vellum
|
|
2932
|
+
'--mrmd-button-bg': '#e8dcc6', // bleached linen
|
|
2933
|
+
'--mrmd-button-border': '#d4c4a8', // warm vellum
|
|
2934
|
+
'--mrmd-button-hover': '#d4c4a8', // warm vellum
|
|
2935
|
+
'--mrmd-button-active': '#c8bca6', // worn scroll
|
|
2936
|
+
};
|
|
2937
|
+
|
|
2422
2938
|
// #endregion BUILT_IN_THEMES
|
|
2423
2939
|
|
|
2424
2940
|
// #region THEME_REGISTRY
|
|
@@ -2428,6 +2944,8 @@ export const openresponsesTheme = {
|
|
|
2428
2944
|
* @type {Map<string, object>}
|
|
2429
2945
|
*/
|
|
2430
2946
|
const themeRegistry = new Map([
|
|
2947
|
+
['wizard-study-dark', wizardStudyDarkTheme],
|
|
2948
|
+
['wizard-study-light', wizardStudyLightTheme],
|
|
2431
2949
|
['midnight', midnightTheme],
|
|
2432
2950
|
['daylight', daylightTheme],
|
|
2433
2951
|
['moonlight', moonlightTheme],
|
|
@@ -2536,6 +3054,8 @@ export default {
|
|
|
2536
3054
|
tokenDefinitions,
|
|
2537
3055
|
|
|
2538
3056
|
// Built-in themes
|
|
3057
|
+
wizardStudyDarkTheme,
|
|
3058
|
+
wizardStudyLightTheme,
|
|
2539
3059
|
midnightTheme,
|
|
2540
3060
|
daylightTheme,
|
|
2541
3061
|
moonlightTheme,
|