From 9444d3892cb395a6a9ada29561d7690e5523b240 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Sat, 28 Feb 2026 10:05:36 -0300 Subject: [PATCH] fix: make suite UI elements fully themable and resolve black frame on desktop-inner --- ui/suite/chat/projector.html | 88 +-- ui/suite/partials/desktop-inner.html | 124 ++-- ui/suite/partials/vibe.html | 901 +++++++++++++++++++++++---- ui/suite/tasks/autotask-scoped.css | 2 +- ui/suite/tasks/autotask.css | 2 +- ui/suite/tasks/task-window.css | 120 ++-- ui/suite/tasks/taskmd-scoped.css | 88 +-- ui/suite/tasks/taskmd.css | 88 +-- ui/suite/tasks/tasks-scoped.css | 224 +++---- ui/suite/tasks/tasks.css | 224 +++---- ui/suite/vibe/agents-sidebar.css | 142 ++--- 11 files changed, 1316 insertions(+), 687 deletions(-) diff --git a/ui/suite/chat/projector.html b/ui/suite/chat/projector.html index 3e406af..a0098cf 100644 --- a/ui/suite/chat/projector.html +++ b/ui/suite/chat/projector.html @@ -140,7 +140,7 @@ left: 0; right: 0; bottom: 0; - background: rgba(0, 0, 0, 0.9); + background: rgba(0, 0, 0, 0.8); z-index: 10000; display: flex; align-items: center; @@ -168,7 +168,7 @@ max-width: 1400px; height: 90%; max-height: 900px; - background: #1a1a1a; + background: var(--bg, #1a1a1a); border-radius: 12px; display: flex; flex-direction: column; @@ -190,8 +190,8 @@ justify-content: space-between; align-items: center; padding: 12px 20px; - background: #252525; - border-bottom: 1px solid #333; + background: var(--surface, #252525); + border-bottom: 1px solid var(--border, #333); } .projector-title-section { @@ -205,7 +205,7 @@ } .projector-title { - color: #fff; + color: var(--text, #fff); font-size: 16px; font-weight: 500; max-width: 400px; @@ -222,7 +222,7 @@ .projector-btn { background: transparent; border: none; - color: #aaa; + color: var(--text-muted, #aaa); font-size: 18px; padding: 8px; cursor: pointer; @@ -231,13 +231,13 @@ } .projector-btn:hover { - background: #333; - color: #fff; + background: var(--surface-hover, #333); + color: var(--text, #fff); } .projector-btn.close-btn:hover { - background: #e74c3c; - color: #fff; + background: var(--error, #e74c3c); + color: var(--text, #fff); } /* Content Area */ @@ -248,7 +248,7 @@ justify-content: center; overflow: hidden; position: relative; - background: #000; + background: var(--bg, #000); } /* Loading */ @@ -257,7 +257,7 @@ flex-direction: column; align-items: center; gap: 16px; - color: #888; + color: var(--text-muted, #888); } .projector-loading.hidden { @@ -267,8 +267,8 @@ .loading-spinner { width: 40px; height: 40px; - border: 3px solid #333; - border-top-color: #667eea; + border: 3px solid var(--surface-hover, #333); + border-top-color: var(--accent, #667eea); border-radius: 50%; animation: spin 1s linear infinite; } @@ -321,7 +321,7 @@ width: 100%; height: 100%; overflow: auto; - background: #1e1e1e; + background: var(--bg, #1e1e1e); padding: 20px; } @@ -330,7 +330,7 @@ font-family: 'Fira Code', 'Monaco', 'Consolas', monospace; font-size: 14px; line-height: 1.5; - color: #d4d4d4; + color: var(--text, #d4d4d4); } .projector-code.line-numbers pre { @@ -343,7 +343,7 @@ display: inline-block; width: 40px; padding-right: 20px; - color: #666; + color: var(--text-muted, #666); text-align: right; } @@ -357,7 +357,7 @@ } .slide-container { - background: #fff; + background: var(--bg, #fff); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); aspect-ratio: 16/9; max-width: 90%; @@ -379,7 +379,7 @@ width: 100%; height: 100%; border: none; - background: #fff; + background: var(--bg, #fff); } /* Markdown Viewer */ @@ -388,20 +388,20 @@ height: 100%; overflow: auto; padding: 40px; - background: #fff; - color: #333; + background: var(--bg, #fff); + color: var(--text, #333); } .projector-markdown h1, .projector-markdown h2, .projector-markdown h3 { - color: #1a1a1a; + color: var(--text, #1a1a1a); margin-top: 24px; margin-bottom: 12px; } .projector-markdown code { - background: #f0f0f0; + background: var(--surface, #f0f0f0); padding: 2px 6px; border-radius: 4px; font-family: monospace; @@ -416,8 +416,8 @@ /* Controls */ .projector-controls { padding: 12px 20px; - background: #252525; - border-top: 1px solid #333; + background: var(--surface, #252525); + border-top: 1px solid var(--border, #333); } .media-controls, @@ -438,9 +438,9 @@ } .control-btn { - background: #333; + background: var(--surface-hover, #333); border: none; - color: #fff; + color: var(--text, #fff); padding: 8px 12px; border-radius: 6px; cursor: pointer; @@ -449,11 +449,11 @@ } .control-btn:hover { - background: #444; + background: var(--surface-active, #444); } .control-btn.active { - background: #667eea; + background: var(--accent, #667eea); } .play-btn { @@ -475,7 +475,7 @@ height: 6px; -webkit-appearance: none; appearance: none; - background: #444; + background: var(--surface-active, #444); border-radius: 3px; cursor: pointer; } @@ -484,7 +484,7 @@ -webkit-appearance: none; width: 14px; height: 14px; - background: #667eea; + background: var(--accent, #667eea); border-radius: 50%; cursor: pointer; } @@ -492,14 +492,14 @@ .progress-bar::-moz-range-thumb { width: 14px; height: 14px; - background: #667eea; + background: var(--accent, #667eea); border-radius: 50%; cursor: pointer; border: none; } .time-display { - color: #888; + color: var(--text-muted, #888); font-size: 12px; min-width: 100px; text-align: right; @@ -511,7 +511,7 @@ height: 4px; -webkit-appearance: none; appearance: none; - background: #444; + background: var(--surface-active, #444); border-radius: 2px; cursor: pointer; } @@ -520,7 +520,7 @@ -webkit-appearance: none; width: 12px; height: 12px; - background: #fff; + background: var(--bg, #fff); border-radius: 50%; cursor: pointer; } @@ -528,8 +528,8 @@ /* Speed/Theme Select */ .speed-select, .theme-select { - background: #333; - color: #fff; + background: var(--surface-hover, #333); + color: var(--text, #fff); border: none; padding: 6px 10px; border-radius: 6px; @@ -541,15 +541,15 @@ .image-info, .code-info, .zoom-level { - color: #888; + color: var(--text-muted, #888); font-size: 14px; } .slide-nav input { width: 50px; - background: #333; + background: var(--surface-hover, #333); border: none; - color: #fff; + color: var(--text, #fff); padding: 6px; border-radius: 4px; text-align: center; @@ -561,7 +561,7 @@ flex-direction: column; align-items: center; gap: 16px; - color: #e74c3c; + color: var(--error, #e74c3c); } .projector-error-icon { @@ -570,7 +570,7 @@ .projector-error-message { font-size: 16px; - color: #888; + color: var(--text-muted, #888); } /* Responsive */ @@ -958,12 +958,12 @@ const wrapper = document.createElement('div'); wrapper.style.textAlign = 'center'; wrapper.style.padding = '40px'; - wrapper.style.color = '#888'; + wrapper.style.color = 'var(--text-muted, #888)'; wrapper.innerHTML = `
๐Ÿ“
Cannot preview this file type
- + โฌ‡๏ธ Download File `; diff --git a/ui/suite/partials/desktop-inner.html b/ui/suite/partials/desktop-inner.html index ff90b05..b58b967 100644 --- a/ui/suite/partials/desktop-inner.html +++ b/ui/suite/partials/desktop-inner.html @@ -7,31 +7,33 @@ } body { + margin: 0 !important; + padding: 0 !important; font-family: 'Fira Code', 'Fira Sans', Arial, sans-serif !important; - background: white !important; + background: var(--bg, white) !important; overflow: hidden !important; - height: 100vh !important; - width: 100vw !important; + height: 100% !important; + width: 100% !important; display: flex !important; } /* Core Layout replicating BUILD V3 screenshot styling */ .build-container { width: 100%; - height: 100vh; + height: 100%; display: flex; position: absolute; inset: 0; z-index: 1000; - background: white; + background: var(--bg, white); } /* Left Sidebar */ .sidebar { width: 51px; - height: 100vh; - background: #f8f8f8; - border-right: 1px solid #f0f1f2; + height: 100%; + background: var(--surface, #f8f8f8); + border-right: 1px solid var(--border, #f0f1f2); display: flex; flex-direction: column; z-index: 100; @@ -40,7 +42,7 @@ .sidebar-item { width: 51px; height: 50px; - border-bottom: 1px solid #f0f1f2; + border-bottom: 1px solid var(--border, #f0f1f2); display: flex; align-items: center; justify-content: center; @@ -50,12 +52,12 @@ } .sidebar-item:hover { - background: #ffffff; + background: var(--surface-hover, #ffffff); } .sidebar-item.active { - background: #ffffff; - border-left: 3px solid #84d669; + background: var(--surface-hover, #ffffff); + border-left: 3px solid var(--accent, #84d669); } .sidebar-icon { @@ -81,8 +83,8 @@ .tabs-container { display: flex; flex-direction: column; - background: #f8f8f8; - border-bottom: 1px solid #f0f1f2; + background: var(--surface, #f8f8f8); + border-bottom: 1px solid var(--border, #f0f1f2); z-index: 100; } @@ -95,7 +97,7 @@ height: 34px; min-width: 169px; flex: 1; - border-right: 1px solid #f0f1f2; + border-right: 1px solid var(--border, #f0f1f2); display: flex; align-items: center; padding: 0 18px; @@ -104,16 +106,16 @@ } .main-tab:hover { - background: #ffffff; + background: var(--surface-hover, #ffffff); } .main-tab.active { - background: #84d669; - border-color: #84d669; + background: var(--accent, #84d669); + border-color: var(--accent, #84d669); } .main-tab.active .main-tab-content { - color: white; + color: var(--bg, white); } .main-tab-content { @@ -123,7 +125,7 @@ font-family: 'Fira Code', monospace; font-size: 14px; font-weight: 500; - color: #3b3b3b; + color: var(--text, #3b3b3b); } /* Workspace (Where windows float) */ @@ -132,7 +134,7 @@ display: flex; flex-direction: column; overflow: hidden; - background: white; + background: var(--bg, white); position: relative; z-index: 10; } @@ -158,8 +160,8 @@ /* Interactive Desktop Icons triggering HTMX */ .desktop-icon { - background: white; - border: 1px solid #f0f1f2; + background: var(--bg, white); + border: 1px solid var(--border, #f0f1f2); border-radius: 8px; height: 67px; padding: 10px; @@ -176,7 +178,7 @@ .desktop-icon:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); transform: translateY(-2px); - border-color: #84d669; + border-color: var(--accent, #84d669); } .panel-card-icon { @@ -191,7 +193,7 @@ font-family: 'Fira Code', monospace; font-size: 13px; font-weight: 500; - color: #3b3b3b; + color: var(--text, #3b3b3b); margin-top: auto; } @@ -199,7 +201,7 @@ .bg-grid { position: absolute; inset: 0; - background-image: linear-gradient(to right, #f0fdf4 1px, transparent 1px), linear-gradient(to bottom, #f0fdf4 1px, transparent 1px); + background-image: linear-gradient(to right, var(--border, #f0fdf4) 1px, transparent 1px), linear-gradient(to bottom, var(--border, #f0fdf4) 1px, transparent 1px); background-size: 40px 40px; z-index: 0; pointer-events: none; @@ -219,22 +221,22 @@ .bg-svg path { fill: none; - stroke: #e6f2eb; + stroke: var(--border, #e6f2eb); stroke-width: 45; stroke-linecap: round; stroke-linejoin: round; } .bg-svg path.inner { - stroke: #f7faf9; + stroke: var(--surface, #f7faf9); stroke-width: 41; } /* Bottom Taskbar */ .toolbar { height: 50px; - background: white; - border-top: 1px solid #f0f1f2; + background: var(--bg, white); + border-top: 1px solid var(--border, #f0f1f2); display: flex; align-items: center; padding: 0 8px; @@ -253,7 +255,7 @@ .toolbar-time { font-family: 'Fira Code', monospace; font-size: 14px; - color: #3b3b3b; + color: var(--text, #3b3b3b); text-align: right; line-height: 1.4; padding: 0 10px; @@ -273,12 +275,12 @@ } .taskbar-item:hover { - background: #f8f8f8; + background: var(--surface, #f8f8f8); } .taskbar-item.active { - border-bottom-color: #84d669; - background: linear-gradient(to bottom, rgba(132, 214, 105, 0) 50%, rgba(132, 214, 105, 0.1) 100%); + border-bottom-color: var(--accent, #84d669); + background: linear-gradient(to bottom, transparent 50%, var(--accent-light, rgba(132, 214, 105, 0.1)) 100%); } /* Utility */ @@ -291,13 +293,13 @@