|
43 | 43 | <header> |
44 | 44 | <h1 style="display:inline-flex;align-items:start;gap:0.3em"><img src="../static/logo.svg" alt="" style="height:1em">Nimble.css — Extended Demo</h1> |
45 | 45 | <p>Showcasing layout modes, utility classes, button variants, form patterns, surface hierarchy, dark mode toggling, and <a href="#no-nimble"><code>.no-nimble</code> component isolation</a>. See also: <a href="index.html">HTML5 Test Page</a>.</p> |
46 | | - <nav style="display:flex;flex-direction:column;align-items:start"> |
47 | | - <button id="theme-toggle" type="button">Toggle Dark Mode</button> |
48 | | - <button id="shadow-toggle" type="button">Toggle Shadow</button> |
49 | | - </nav> |
50 | 46 | </header> |
| 47 | + <nav id="sticky-toggles" style="position:sticky;top:0;z-index:999;display:flex;gap:1.5em;padding:0.5em 1em;background:var(--nc-surface-1, white);border-bottom:1px solid var(--nc-border, #ccc)"> |
| 48 | + <label style="display:inline-flex;align-items:center;gap:0.4em;margin:0"><input id="theme-toggle" type="checkbox" role="switch"> Dark Mode</label> |
| 49 | + <label style="display:inline-flex;align-items:center;gap:0.4em;margin:0"><input id="shadow-toggle" type="checkbox" role="switch" checked> Shadow</label> |
| 50 | + </nav> |
51 | 51 |
|
52 | 52 | <main> |
53 | 53 |
|
@@ -402,35 +402,24 @@ <h4>Blockquote</h4> |
402 | 402 | <script src="../no-nimble.js"></script> |
403 | 403 | <script> |
404 | 404 | // Theme toggle |
405 | | - const toggle = document.getElementById('theme-toggle'); |
| 405 | + const themeToggle = document.getElementById('theme-toggle'); |
406 | 406 | const html = document.documentElement; |
407 | 407 |
|
408 | | - // Initialize: set data-theme to match current appearance so first click flips it |
409 | 408 | const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; |
410 | 409 | html.setAttribute('data-theme', prefersDark ? 'dark' : 'light'); |
411 | | - toggle.textContent = prefersDark ? 'Toggle Light Mode' : 'Toggle Dark Mode'; |
| 410 | + themeToggle.checked = prefersDark; |
412 | 411 |
|
413 | | - toggle.addEventListener('click', () => { |
414 | | - const current = html.getAttribute('data-theme'); |
415 | | - if (current === 'dark') { |
416 | | - html.setAttribute('data-theme', 'light'); |
417 | | - toggle.textContent = 'Toggle Dark Mode'; |
418 | | - } else { |
419 | | - html.setAttribute('data-theme', 'dark'); |
420 | | - toggle.textContent = 'Toggle Light Mode'; |
421 | | - } |
| 412 | + themeToggle.addEventListener('change', () => { |
| 413 | + html.setAttribute('data-theme', themeToggle.checked ? 'dark' : 'light'); |
422 | 414 | }); |
423 | 415 |
|
424 | 416 | // Shadow toggle |
425 | 417 | const shadowToggle = document.getElementById('shadow-toggle'); |
426 | | - shadowToggle.addEventListener('click', () => { |
427 | | - const current = getComputedStyle(document.documentElement).getPropertyValue('--nc-content-shadow').trim(); |
428 | | - if (current === 'none') { |
| 418 | + shadowToggle.addEventListener('change', () => { |
| 419 | + if (shadowToggle.checked) { |
429 | 420 | document.documentElement.style.removeProperty('--nc-content-shadow'); |
430 | | - shadowToggle.textContent = 'Toggle Shadow'; |
431 | 421 | } else { |
432 | 422 | document.documentElement.style.setProperty('--nc-content-shadow', 'none'); |
433 | | - shadowToggle.textContent = 'Toggle Shadow (off)'; |
434 | 423 | } |
435 | 424 | }); |
436 | 425 |
|
|
0 commit comments