Skip to content

LiveCodes editor themes#987

Open
hatemhosny wants to merge 3 commits into
developfrom
livecodes-editor-themes
Open

LiveCodes editor themes#987
hatemhosny wants to merge 3 commits into
developfrom
livecodes-editor-themes

Conversation

@hatemhosny
Copy link
Copy Markdown
Collaborator

@hatemhosny hatemhosny commented Jun 1, 2026

What type of PR is this? (check all applicable)

  • ✨ Feature

Description

This PR adds editor themes for monaco, codemirror and codejar (prism) that are similar to each other and consistent with the new brand colors, with dark and light variants

Related Tickets & Documents

Mobile & Desktop Screenshots/Recordings

image image image

Summary by CodeRabbit

Release Notes

  • New Features
    • Introduced two new built-in editor themes: "LiveCodes Dark" and "LiveCodes Light," now serving as the default dark and light theme options
    • Enhanced visual consistency across all supported editors (CodeMirror, Monaco, and CodeJar)

@netlify
Copy link
Copy Markdown

netlify Bot commented Jun 1, 2026

Deploy Preview for livecodes ready!

Name Link
🔨 Latest commit 96af730
🔍 Latest deploy log https://app.netlify.com/projects/livecodes/deploys/6a1cfb615e539a0008634a8f
😎 Deploy Preview https://deploy-preview-987--livecodes.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented Jun 1, 2026

Quality Gate Failed Quality Gate failed

Failed conditions
91.4% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 1, 2026

Size Change: +9.19 kB (+0.85%)

Total Size: 1.1 MB

📦 View Changed
Filename Size Change
build/livecodes/code-to-image.js 10.9 kB +1.71 kB (+18.76%) ⚠️
build/livecodes/codejar.js 19.3 kB +1.71 kB (+9.72%) ⚠️
build/livecodes/codemirror.js 16.9 kB +833 B (+5.17%) 🔍
build/livecodes/editor-settings.js 21.9 kB +2.6 kB (+13.48%) ⚠️
build/livecodes/monaco.js 22.3 kB +2.33 kB (+11.67%) ⚠️
ℹ️ View Unchanged
Filename Size Change
build/404.html 1.45 kB 0 B
build/app.html 250 B 0 B
build/index.html 1.54 kB +1 B (+0.07%)
build/livecodes/app.css 23.5 kB 0 B
build/livecodes/app.js 113 kB -7 B (-0.01%)
build/livecodes/assets.js 8.66 kB +13 B (+0.15%)
build/livecodes/assets/noop.js 18 B 0 B
build/livecodes/assets/templates/diagrams-starter.html 2.19 kB 0 B
build/livecodes/backup.js 3.74 kB +1 B (+0.03%)
build/livecodes/blockly.js 15.1 kB 0 B
build/livecodes/broadcast.js 1.19 kB +1 B (+0.08%)
build/livecodes/bundle-types.js 4.41 kB 0 B
build/livecodes/compile.page.js 2.46 kB 0 B
build/livecodes/compile.worker.js 15.2 kB 0 B
build/livecodes/compiler-utils.js 3.17 kB 0 B
build/livecodes/custom-editor-utils.js 198 B 0 B
build/livecodes/deploy.js 6.93 kB +20 B (+0.29%)
build/livecodes/embed-ui.js 5.52 kB +4 B (+0.07%)
build/livecodes/embed.js 91.3 kB -46 B (-0.05%)
build/livecodes/export.js 3.91 kB 0 B
build/livecodes/firebase.js 22.7 kB 0 B
build/livecodes/format.worker.js 14.4 kB 0 B
build/livecodes/google-fonts.js 7.12 kB 0 B
build/livecodes/headless.js 79.8 kB +14 B (+0.02%)
build/livecodes/i18n-ar-language-info.json 5.34 kB 0 B
build/livecodes/i18n-ar-translation.json 9.34 kB 0 B
build/livecodes/i18n-bn-language-info.json 5.76 kB 0 B
build/livecodes/i18n-bn-translation.json 9.68 kB 0 B
build/livecodes/i18n-de-language-info.json 5.4 kB 0 B
build/livecodes/i18n-de-translation.json 9.47 kB 0 B
build/livecodes/i18n-en-language-info.json 4.63 kB 0 B
build/livecodes/i18n-en-translation.json 8.06 kB 0 B
build/livecodes/i18n-es-language-info.json 5.12 kB 0 B
build/livecodes/i18n-es-translation.json 9.19 kB 0 B
build/livecodes/i18n-fa-language-info.json 5.52 kB 0 B
build/livecodes/i18n-fa-translation.json 9.5 kB 0 B
build/livecodes/i18n-fr-language-info.json 5.31 kB 0 B
build/livecodes/i18n-fr-translation.json 9.45 kB 0 B
build/livecodes/i18n-hi-language-info.json 5.93 kB 0 B
build/livecodes/i18n-hi-translation.json 9.99 kB 0 B
build/livecodes/i18n-hu-language-info.json 5.29 kB 0 B
build/livecodes/i18n-hu-translation.json 9.38 kB 0 B
build/livecodes/i18n-id-language-info.json 4.87 kB 0 B
build/livecodes/i18n-id-translation.json 8.71 kB 0 B
build/livecodes/i18n-it-language-info.json 5.17 kB 0 B
build/livecodes/i18n-it-translation.json 9.26 kB 0 B
build/livecodes/i18n-ja-language-info.json 5.72 kB 0 B
build/livecodes/i18n-ja-translation.json 9.64 kB 0 B
build/livecodes/i18n-nl-language-info.json 5.07 kB 0 B
build/livecodes/i18n-nl-translation.json 8.91 kB 0 B
build/livecodes/i18n-pt-language-info.json 5.16 kB 0 B
build/livecodes/i18n-pt-translation.json 9.38 kB 0 B
build/livecodes/i18n-ru-language-info.json 5.7 kB 0 B
build/livecodes/i18n-ru-translation.json 10.3 kB 0 B
build/livecodes/i18n-tr-language-info.json 5.3 kB 0 B
build/livecodes/i18n-tr-translation.json 9.29 kB 0 B
build/livecodes/i18n-ur-language-info.json 5.97 kB 0 B
build/livecodes/i18n-ur-translation.json 9.81 kB 0 B
build/livecodes/i18n-zh-CN-language-info.json 5.01 kB 0 B
build/livecodes/i18n-zh-CN-translation.json 8.67 kB 0 B
build/livecodes/i18n.js 20.4 kB -76 B (-0.37%)
build/livecodes/import-src.js 17.9 kB 0 B
build/livecodes/import.js 16.3 kB -31 B (-0.19%)
build/livecodes/index.js 5.43 kB -2 B (-0.04%)
build/livecodes/lang-art-template-compiler.js 1.68 kB 0 B
build/livecodes/lang-assemblyscript-compiler.js 290 B 0 B
build/livecodes/lang-assemblyscript-script.js 386 B 0 B
build/livecodes/lang-astro-compiler.js 2.37 kB 0 B
build/livecodes/lang-clio-compiler.js 1.58 kB 0 B
build/livecodes/lang-commonlisp-script.js 123 B 0 B
build/livecodes/lang-cpp-script.js 1.96 kB 0 B
build/livecodes/lang-cpp-wasm-script.js 2.88 kB 0 B
build/livecodes/lang-csharp-wasm-script.js 2.21 kB 0 B
build/livecodes/lang-diagrams-compiler-esm.js 5.11 kB 0 B
build/livecodes/lang-dot-compiler.js 1.69 kB 0 B
build/livecodes/lang-ejs-compiler.js 1.66 kB 0 B
build/livecodes/lang-eta-compiler.js 1.68 kB 0 B
build/livecodes/lang-fennel-compiler.js 1.64 kB 0 B
build/livecodes/lang-gleam-compiler.js 3.12 kB 0 B
build/livecodes/lang-go-wasm-script.js 3.29 kB 0 B
build/livecodes/lang-haml-compiler.js 1.69 kB 0 B
build/livecodes/lang-handlebars-compiler.js 1.99 kB 0 B
build/livecodes/lang-imba-compiler.js 147 B 0 B
build/livecodes/lang-java-script.js 4.09 kB 0 B
build/livecodes/lang-jinja-compiler.js 1.67 kB 0 B
build/livecodes/lang-julia-script.js 3.32 kB 0 B
build/livecodes/lang-liquid-compiler.js 1.71 kB 0 B
build/livecodes/lang-lua-wasm-script.js 205 B 0 B
build/livecodes/lang-malina-compiler.js 2.98 kB 0 B
build/livecodes/lang-markdown-compiler.js 1.7 kB 0 B
build/livecodes/lang-markdown-script.js 1.47 kB 0 B
build/livecodes/lang-minizinc-script.js 2.09 kB 0 B
build/livecodes/lang-mustache-compiler.js 1.68 kB 0 B
build/livecodes/lang-nunjucks-compiler.js 2 kB 0 B
build/livecodes/lang-perl-script.js 268 B 0 B
build/livecodes/lang-php-wasm-script.js 347 B 0 B
build/livecodes/lang-postgresql-compiler-esm.js 1.76 kB 0 B
build/livecodes/lang-prolog-script.js 204 B 0 B
build/livecodes/lang-pug-compiler.js 371 B 0 B
build/livecodes/lang-python-wasm-script.js 1.89 kB 0 B
build/livecodes/lang-r-script-esm.js 2.47 kB 0 B
build/livecodes/lang-rescript-compiler-esm.js 2.19 kB 0 B
build/livecodes/lang-rescript-formatter.js 1.55 kB 0 B
build/livecodes/lang-riot-compiler.js 2.85 kB 0 B
build/livecodes/lang-ruby-wasm-script.js 1.75 kB 0 B
build/livecodes/lang-scss-compiler.js 1.85 kB 0 B
build/livecodes/lang-solid-compiler.js 263 B 0 B
build/livecodes/lang-sql-compiler.js 1.67 kB 0 B
build/livecodes/lang-sql-script.js 2.08 kB 0 B
build/livecodes/lang-svelte-compiler.js 4.72 kB 0 B
build/livecodes/lang-tcl-script.js 1.86 kB 0 B
build/livecodes/lang-teal-compiler.js 1.75 kB 0 B
build/livecodes/lang-twig-compiler.js 1.68 kB 0 B
build/livecodes/lang-vento-compiler.js 1.73 kB 0 B
build/livecodes/lang-vue-compiler.js 6.13 kB 0 B
build/livecodes/lang-vue2-compiler.js 3.5 kB 0 B
build/livecodes/lang-wat-compiler.js 348 B 0 B
build/livecodes/lang-wat-script.js 1.98 kB 0 B
build/livecodes/language-info.js 7.92 kB +4 B (+0.05%)
build/livecodes/open.js 6.25 kB +8 B (+0.13%)
build/livecodes/processor-lightningcss-compiler.js 1.91 kB 0 B
build/livecodes/processor-postcss-compiler.js 2.06 kB 0 B
build/livecodes/processor-tailwindcss-compiler.js 5.29 kB 0 B
build/livecodes/processor-unocss-compiler.js 355 B 0 B
build/livecodes/processor-windicss-compiler.js 450 B 0 B
build/livecodes/quill.css 697 B 0 B
build/livecodes/quill.js 5.86 kB 0 B
build/livecodes/resources.js 3.43 kB -1 B (-0.03%)
build/livecodes/result-utils.js 1.17 kB 0 B
build/livecodes/share.js 3.84 kB -1 B (-0.03%)
build/livecodes/snippets.js 6.07 kB -2 B (-0.03%)
build/livecodes/sync-ui.js 3.29 kB +5 B (+0.15%)
build/livecodes/sync.js 3.56 kB 0 B
build/livecodes/sync.worker.js 29.8 kB 0 B
build/livecodes/templates.js 27 kB 0 B
build/sdk/livecodes.js 4.39 kB 0 B
build/sdk/livecodes.umd.js 5.19 kB 0 B
build/sdk/package.json 456 B 0 B
build/sdk/preact.js 4.74 kB 0 B
build/sdk/react.js 4.77 kB 0 B
build/sdk/solid.js 4.91 kB 0 B
build/sdk/svelte.js 4.36 kB 0 B
build/sdk/vue.js 4.77 kB 0 B
build/sdk/web-components.js 5.8 kB 0 B

compressed-size-action

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jun 1, 2026

Review Change Stack

Walkthrough

The PR adds two new built-in themes—livecodes-dark and livecodes-light—across the three supported code editors. Type definitions are updated to permit the new theme names, then CodeJar, CodeMirror, and Monaco each receive corresponding CSS or styling definitions, theme registrations, and default fallback mappings.

Changes

New editor themes

Layer / File(s) Summary
Type contracts for new themes
src/sdk/models.ts
MonacoTheme, CodemirrorTheme, and CodejarTheme type unions are each expanded to include the 'livecodes-dark' and 'livecodes-light' string literals.
CodeJar theme setup
src/livecodes/editor/codejar/prism-themes.ts, src/livecodes/editor/codejar/codejar.ts
Prism CSS theme entries for livecodes-dark and livecodes-light are added with base64-encoded inline stylesheets. The CodeJar defaultThemes mapping is updated to resolve dark/light to the new theme names instead of vsc-dark-plus/vs.
CodeMirror theme definitions and wiring
src/livecodes/editor/codemirror/codemirror-themes.ts, src/livecodes/editor/codemirror/codemirror.ts
Imports are adjusted for type safety; liveCodesDark and liveCodesLight Extensions are defined with EditorView base styling and HighlightStyle syntax rules. Both are registered in customThemes and set as the new defaultThemes for dark/light modes.
Monaco theme definitions and integration
src/livecodes/editor/monaco/monaco-themes.ts, src/livecodes/editor/monaco/monaco.ts
Monaco themes liveCodesDark and liveCodesLight are defined as IStandaloneThemeData with comprehensive token rules and UI color palettes. They are registered in customThemes and the loadTheme function is updated to resolve livecodes-dark/livecodes-light theme names at runtime.

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title 'LiveCodes editor themes' accurately describes the main change—adding new dark and light editor themes for Monaco, CodeMirror, and CodeJar.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch livecodes-editor-themes

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/livecodes/editor/codemirror/codemirror-themes.ts`:
- Line 460: Replace the typo'd selector string '& tube > li[aria-selected]' in
the light-theme CSS block with the correct selector '& > ul > li[aria-selected]'
so the autocomplete widget selection styling matches the dark theme; locate the
selector within the Codemirror theme object in codemirror-themes.ts (the same
block that mirrors the dark-theme rules around the earlier section) and update
the selector to '& > ul > li[aria-selected]'.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 9b3f3961-86f3-4d51-aba5-dfb6197a7081

📥 Commits

Reviewing files that changed from the base of the PR and between be1e338 and 96af730.

📒 Files selected for processing (7)
  • src/livecodes/editor/codejar/codejar.ts
  • src/livecodes/editor/codejar/prism-themes.ts
  • src/livecodes/editor/codemirror/codemirror-themes.ts
  • src/livecodes/editor/codemirror/codemirror.ts
  • src/livecodes/editor/monaco/monaco-themes.ts
  • src/livecodes/editor/monaco/monaco.ts
  • src/sdk/models.ts

backgroundColor: '#ffffff',
},
'.cm-tooltip-autocomplete': {
'& tube > li[aria-selected]': {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Fix CSS selector typo.

The selector '& tube > li[aria-selected]' contains a typo. It should be '& > ul > li[aria-selected]' to match the autocomplete list structure (consistent with the dark theme at Line 354).

This typo will prevent the autocomplete widget from applying the correct selection background color in light theme.

🐛 Proposed fix
     '.cm-tooltip-autocomplete': {
-      '& tube > li[aria-selected]': {
+      '& > ul > li[aria-selected]': {
         backgroundColor: '`#0073a81f`',
         color: '`#0a2433`',
       },
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
'& tube > li[aria-selected]': {
'.cm-tooltip-autocomplete': {
'& > ul > li[aria-selected]': {
backgroundColor: '`#0073a81f`',
color: '`#0a2433`',
},
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/livecodes/editor/codemirror/codemirror-themes.ts` at line 460, Replace
the typo'd selector string '& tube > li[aria-selected]' in the light-theme CSS
block with the correct selector '& > ul > li[aria-selected]' so the autocomplete
widget selection styling matches the dark theme; locate the selector within the
Codemirror theme object in codemirror-themes.ts (the same block that mirrors the
dark-theme rules around the earlier section) and update the selector to '& > ul
> li[aria-selected]'.

@hatemhosny hatemhosny changed the title Livecodes editor themes LiveCodes editor themes Jun 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant