|
59 | 59 | <span class="pane-label">sketch.cpp</span> |
60 | 60 | <span id="status"></span> |
61 | 61 | <button class="btn-run" id="btn-run" onclick="runSketch()" tabindex="-1">▶ Run</button> |
62 | | - <button id="btn-dark" onclick="toggleDark()" tabindex="-1" style="background:#111;color:#fff;border:none;padding:5px 12px;border-radius:4px;font-size:12px;cursor:pointer;">🌙 Dark</button> |
63 | 62 | </div> |
64 | 63 | <div id="code"></div> |
65 | 64 | <div id="error-panel"></div> |
|
68 | 67 | <div class="pane-bar"> |
69 | 68 | <span class="pane-label">Output</span> |
70 | 69 | <button class="btn-stop" onclick="stopSketch()" tabindex="-1">■ Stop</button> |
| 70 | + <button id="btn-dark" onclick="toggleDark()" tabindex="-1" style="background:#111;color:#fff;border:none;padding:5px 12px;border-radius:4px;font-size:12px;cursor:pointer;">🌙 Dark</button> |
71 | 71 | </div> |
72 | 72 | <div id="preview-area"> |
73 | 73 | <div id="preview-placeholder">Press Run or Ctrl+Enter</div> |
|
260 | 260 | <script src="../assets/nav.js"></script> |
261 | 261 | <script> |
262 | 262 | let darkMode = false; |
| 263 | +function applyDark(on) { |
| 264 | + const btn = document.getElementById('btn-dark'); |
| 265 | + const bg1 = '#1a1a2e', bg2 = '#16213e', border = '#0f3460', text = '#e0e0e0'; |
| 266 | + document.querySelectorAll( |
| 267 | + 'body, #site-nav, .sidebar, .pane-bar, .editor-pane, .preview-pane, #error-panel, a, span, p, h1, h2, h3, li' |
| 268 | + ).forEach(el => { |
| 269 | + if (on) { |
| 270 | + el.style.color = text; |
| 271 | + if (el.tagName === 'BODY' || el.id === 'site-nav' || el.classList.contains('sidebar')) |
| 272 | + el.style.background = bg2; |
| 273 | + if (el.classList.contains('pane-bar')) |
| 274 | + el.style.background = bg2, el.style.borderColor = border; |
| 275 | + if (el.classList.contains('editor-pane') || el.classList.contains('preview-pane')) |
| 276 | + el.style.borderColor = border; |
| 277 | + } else { |
| 278 | + el.style.color = ''; |
| 279 | + el.style.background = ''; |
| 280 | + el.style.borderColor = ''; |
| 281 | + } |
| 282 | + }); |
| 283 | + document.body.style.background = on ? bg1 : ''; |
| 284 | + editor.setOption('theme', on ? 'cppmode-dark' : 'cppmode'); |
| 285 | + btn.textContent = on ? '☀️ Light' : '🌙 Dark'; |
| 286 | + btn.style.background = on ? bg2 : '#111'; |
| 287 | +} |
263 | 288 | function toggleDark() { |
264 | 289 | darkMode = !darkMode; |
265 | | - const btn = document.getElementById('btn-dark'); |
266 | | - if (darkMode) { |
267 | | - editor.setOption('theme', 'cppmode-dark'); |
268 | | - document.body.style.cssText = 'background:#1a1a2e;color:#e0e0e0'; |
269 | | - document.querySelectorAll('.pane-bar').forEach(el => { el.style.background='#16213e'; el.style.borderColor='#0f3460'; }); |
270 | | - document.querySelector('.editor-pane').style.borderColor = '#0f3460'; |
271 | | - document.querySelector('.preview-pane').style.borderColor = '#0f3460'; |
272 | | - btn.textContent = '☀️ Light'; |
273 | | - btn.style.background = '#0f3460'; |
274 | | - } else { |
275 | | - editor.setOption('theme', 'cppmode'); |
276 | | - document.body.style.cssText = ''; |
277 | | - document.querySelectorAll('.pane-bar').forEach(el => { el.style.background=''; el.style.borderColor=''; }); |
278 | | - document.querySelector('.editor-pane').style.borderColor = ''; |
279 | | - document.querySelector('.preview-pane').style.borderColor = ''; |
280 | | - btn.textContent = '🌙 Dark'; |
281 | | - btn.style.background = '#111'; |
282 | | - } |
| 290 | + applyDark(darkMode); |
283 | 291 | } |
284 | 292 | </script> |
285 | 293 | </body> |
|
0 commit comments