From 83a66d0a6d30932205e356899f9ec7fe96dc779b Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Thu, 30 Jul 2026 16:36:20 +0300 Subject: [PATCH] feat(theme): add OpenChamber hybrid theme and make it the default - Add OpenChamber brand theme (dark+light): Vitesse syntax over OpenCode-deep neutrals with Flexoki accents, harmonized in OKLCH - Add scripts/harmonize-theme.mjs: align accent saturation/lightness and boost syntax chroma via OKLCH - Set default theme to OpenChamber (was Flexoki) - Rename fields-of-the-shire off the openchamber-* id; keep it as a normal preset - Remove OpenCode and OC-2 ports and all disabled theme JSON definitions - Make panel/header/sidebar borders opaque and theme-driven; global default border now uses --border instead of hardcoded rgba --- .../ui/src/components/layout/ContextPanel.tsx | 14 +- .../ui/src/components/layout/MainLayout.tsx | 6 +- packages/ui/src/components/layout/Sidebar.tsx | 2 +- .../ui/src/lib/theme/themes/amoled-dark.json | 427 ------------------ .../ui/src/lib/theme/themes/amoled-light.json | 427 ------------------ .../ui/src/lib/theme/themes/aura-dark.json | 2 +- .../ui/src/lib/theme/themes/ayu-dark.json | 2 +- .../ui/src/lib/theme/themes/ayu-light.json | 2 +- .../src/lib/theme/themes/carbonfox-dark.json | 2 +- .../src/lib/theme/themes/carbonfox-light.json | 4 +- .../src/lib/theme/themes/catppuccin-dark.json | 2 +- .../lib/theme/themes/catppuccin-light.json | 6 +- .../ui/src/lib/theme/themes/cursor-dark.json | 427 ------------------ .../ui/src/lib/theme/themes/cursor-light.json | 427 ------------------ .../ui/src/lib/theme/themes/dracula-dark.json | 4 +- .../themes/fields-of-the-shire-dark.json | 6 +- .../themes/fields-of-the-shire-light.json | 4 +- .../ui/src/lib/theme/themes/flexoki-dark.json | 2 +- .../src/lib/theme/themes/flexoki-light.json | 2 +- .../ui/src/lib/theme/themes/github-dark.json | 427 ------------------ .../ui/src/lib/theme/themes/github-light.json | 427 ------------------ .../ui/src/lib/theme/themes/gruvbox-dark.json | 4 +- .../src/lib/theme/themes/gruvbox-light.json | 10 +- packages/ui/src/lib/theme/themes/index.ts | 8 +- .../src/lib/theme/themes/jetbrains-dark.json | 6 +- .../src/lib/theme/themes/jetbrains-light.json | 6 +- .../src/lib/theme/themes/kanagawa-dark.json | 8 +- .../src/lib/theme/themes/kanagawa-light.json | 18 +- .../lib/theme/themes/lucent-orng-dark.json | 427 ------------------ .../lib/theme/themes/lucent-orng-light.json | 427 ------------------ .../ui/src/lib/theme/themes/mono-dark.json | 2 +- .../ui/src/lib/theme/themes/mono-light.json | 2 +- .../src/lib/theme/themes/mono-plus-dark.json | 2 +- .../src/lib/theme/themes/mono-plus-light.json | 2 +- .../ui/src/lib/theme/themes/monokai-dark.json | 2 +- .../src/lib/theme/themes/nightowl-dark.json | 4 +- .../src/lib/theme/themes/nightowl-light.json | 2 +- .../ui/src/lib/theme/themes/nord-dark.json | 4 +- .../ui/src/lib/theme/themes/nord-light.json | 4 +- .../ui/src/lib/theme/themes/oc-2-dark.json | 427 ------------------ .../ui/src/lib/theme/themes/oc-2-light.json | 427 ------------------ .../src/lib/theme/themes/onedarkpro-dark.json | 4 +- .../lib/theme/themes/onedarkpro-light.json | 4 +- .../lib/theme/themes/openchamber-dark.json | 177 ++++++++ .../lib/theme/themes/openchamber-light.json | 177 ++++++++ .../ui/src/lib/theme/themes/orng-dark.json | 427 ------------------ .../ui/src/lib/theme/themes/orng-light.json | 427 ------------------ packages/ui/src/lib/theme/themes/presets.ts | 48 +- .../src/lib/theme/themes/rosepine-dark.json | 427 ------------------ .../src/lib/theme/themes/rosepine-light.json | 427 ------------------ .../lib/theme/themes/shadesofpurple-dark.json | 427 ------------------ .../theme/themes/shadesofpurple-light.json | 427 ------------------ .../src/lib/theme/themes/solarized-dark.json | 4 +- .../src/lib/theme/themes/tokyonight-dark.json | 8 +- .../lib/theme/themes/tokyonight-light.json | 2 +- .../ui/src/lib/theme/themes/vercel-dark.json | 427 ------------------ .../ui/src/lib/theme/themes/vercel-light.json | 427 ------------------ .../ui/src/lib/theme/themes/vesper-dark.json | 4 +- .../ui/src/lib/theme/themes/vesper-light.json | 4 +- .../lib/theme/themes/vitesse-dark-dark.json | 6 +- .../lib/theme/themes/vitesse-light-light.json | 6 +- .../ui/src/lib/theme/themes/zenburn-dark.json | 427 ------------------ .../src/lib/theme/themes/zenburn-light.json | 427 ------------------ packages/ui/src/styles/design-system.css | 10 +- scripts/harmonize-theme.mjs | 275 +++++++++++ 65 files changed, 727 insertions(+), 8686 deletions(-) delete mode 100644 packages/ui/src/lib/theme/themes/amoled-dark.json delete mode 100644 packages/ui/src/lib/theme/themes/amoled-light.json delete mode 100644 packages/ui/src/lib/theme/themes/cursor-dark.json delete mode 100644 packages/ui/src/lib/theme/themes/cursor-light.json delete mode 100644 packages/ui/src/lib/theme/themes/github-dark.json delete mode 100644 packages/ui/src/lib/theme/themes/github-light.json delete mode 100644 packages/ui/src/lib/theme/themes/lucent-orng-dark.json delete mode 100644 packages/ui/src/lib/theme/themes/lucent-orng-light.json delete mode 100644 packages/ui/src/lib/theme/themes/oc-2-dark.json delete mode 100644 packages/ui/src/lib/theme/themes/oc-2-light.json create mode 100644 packages/ui/src/lib/theme/themes/openchamber-dark.json create mode 100644 packages/ui/src/lib/theme/themes/openchamber-light.json delete mode 100644 packages/ui/src/lib/theme/themes/orng-dark.json delete mode 100644 packages/ui/src/lib/theme/themes/orng-light.json delete mode 100644 packages/ui/src/lib/theme/themes/rosepine-dark.json delete mode 100644 packages/ui/src/lib/theme/themes/rosepine-light.json delete mode 100644 packages/ui/src/lib/theme/themes/shadesofpurple-dark.json delete mode 100644 packages/ui/src/lib/theme/themes/shadesofpurple-light.json delete mode 100644 packages/ui/src/lib/theme/themes/vercel-dark.json delete mode 100644 packages/ui/src/lib/theme/themes/vercel-light.json delete mode 100644 packages/ui/src/lib/theme/themes/zenburn-dark.json delete mode 100644 packages/ui/src/lib/theme/themes/zenburn-light.json create mode 100644 scripts/harmonize-theme.mjs diff --git a/packages/ui/src/components/layout/ContextPanel.tsx b/packages/ui/src/components/layout/ContextPanel.tsx index 7af914ff..3cc8e813 100644 --- a/packages/ui/src/components/layout/ContextPanel.tsx +++ b/packages/ui/src/components/layout/ContextPanel.tsx @@ -367,7 +367,7 @@ const EditorTreeColumn: React.FC<{ visible: boolean }> = ({ visible }) => {
= ({ rawUrl, onNavigate }) => { return (
-
+
{headerSrc || rawUrl || t('contextPanel.preview.empty')}
@@ -1877,7 +1877,7 @@ const IframeBrowserPane: React.FC = ({ initialUrl, dire return (
-
+
@@ -2167,7 +2167,7 @@ const DesktopBrowserPane: React.FC = ({ initialUrl, dir return (
-
+
@@ -2730,7 +2730,7 @@ export const ContextPanel: React.FC = () => { const isFileTabActive = activeTab?.mode === 'file'; const header = ( -
+
{isMultiInstanceMode ? ( { content box only while collapsed, shifting the header controls by 1px between the collapsed and expanded states. */} {isOpen && !isExpanded && ( -