diff --git a/.changeset/configured-editor-theme.md b/.changeset/configured-editor-theme.md new file mode 100644 index 00000000..d9b5abfe --- /dev/null +++ b/.changeset/configured-editor-theme.md @@ -0,0 +1,5 @@ +--- +"@luzzle/web": patch +--- + +Use the configured Shiki light/dark themes for source and asset editor palettes instead of fixed Gruvbox colors. Keep native CodeMirror highlighting and editing behavior, with a bounded Markdown/YAML color mapping and no Shiki tokenizer in the browser. diff --git a/apps/web/demo/config.yaml b/apps/web/demo/config.yaml index 4d79d895..0a0f8988 100644 --- a/apps/web/demo/config.yaml +++ b/apps/web/demo/config.yaml @@ -213,5 +213,5 @@ theme: color-outline-variant: '#d6d3d1' markdown: code: - light: 'github-light-default' - dark: 'github-dark-default' + light: 'min-light' + dark: 'min-dark' diff --git a/apps/web/scripts/build-theme.js b/apps/web/scripts/build-theme.js index a4be50d0..3e3cb977 100644 --- a/apps/web/scripts/build-theme.js +++ b/apps/web/scripts/build-theme.js @@ -1,4 +1,5 @@ import { generateThemeCss } from '@luzzle/web.theme' +import { generateEditorThemeCss } from '@luzzle/web.theme/editor' import { loadConfig } from '@luzzle/web.config' import path from 'path' import { existsSync } from 'fs' @@ -23,7 +24,9 @@ if (isEntrypoint) { try { const configPath = resolveConfigPath(process.argv[2]) const config = loadConfig(configPath) - process.stdout.write(generateThemeCss(config)) + const themeCss = generateThemeCss(config) + const editorCss = await generateEditorThemeCss(config.theme.markdown.code) + process.stdout.write(themeCss + editorCss) } catch (err) { console.error(err instanceof Error ? err.message : err) process.exit(1) diff --git a/apps/web/src/lib/components/editor/MarkdownEditor.svelte b/apps/web/src/lib/components/editor/MarkdownEditor.svelte index 50209728..15a50b54 100644 --- a/apps/web/src/lib/components/editor/MarkdownEditor.svelte +++ b/apps/web/src/lib/components/editor/MarkdownEditor.svelte @@ -2,8 +2,7 @@ import { onMount, onDestroy } from 'svelte' import { EditorView } from 'codemirror' import { EditorState, Compartment } from '@codemirror/state' - import { gruvboxDark, gruvboxDarkBg } from './themes/gruvbox-dark' - import { gruvboxLight, gruvboxLightBg } from './themes/gruvbox-light' + import { configuredTheme } from './themes/configured' import { createEditorExtensions } from './config' import { createLSPExtension, destroyLSPClient } from './lsp' import { luzzleFieldEditor } from './extensions/luzzleFieldEditor' @@ -41,11 +40,7 @@ function updateTheme() { const { isDark } = readTheme() - const themeExtension = isDark ? gruvboxDark : gruvboxLight - - if (editorContainer) { - editorContainer.style.backgroundColor = isDark ? gruvboxDarkBg : gruvboxLightBg - } + const themeExtension = configuredTheme(isDark ? 'dark' : 'light') view.dispatch({ effects: themeConfig.reconfigure(themeExtension) @@ -54,7 +49,7 @@ onMount(() => { const { isDark } = readTheme() - const initialTheme = isDark ? gruvboxDark : gruvboxLight + const initialTheme = configuredTheme(isDark ? 'dark' : 'light') const extensions = createEditorExtensions({ themeConfig, @@ -174,6 +169,7 @@