Skip to content

Commit a042bcb

Browse files
committed
feat(demo): convert extended demo toggles to sticky switch bar
Replace button-based theme and shadow toggles with checkbox switches in a sticky nav bar, matching the pattern used on the HTML5 test page.
1 parent e27788b commit a042bcb

1 file changed

Lines changed: 10 additions & 21 deletions

File tree

site/demo/extended.html

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@
4343
<header>
4444
<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>
4545
<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>
5046
</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>
5151

5252
<main>
5353

@@ -402,35 +402,24 @@ <h4>Blockquote</h4>
402402
<script src="../no-nimble.js"></script>
403403
<script>
404404
// Theme toggle
405-
const toggle = document.getElementById('theme-toggle');
405+
const themeToggle = document.getElementById('theme-toggle');
406406
const html = document.documentElement;
407407

408-
// Initialize: set data-theme to match current appearance so first click flips it
409408
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
410409
html.setAttribute('data-theme', prefersDark ? 'dark' : 'light');
411-
toggle.textContent = prefersDark ? 'Toggle Light Mode' : 'Toggle Dark Mode';
410+
themeToggle.checked = prefersDark;
412411

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');
422414
});
423415

424416
// Shadow toggle
425417
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) {
429420
document.documentElement.style.removeProperty('--nc-content-shadow');
430-
shadowToggle.textContent = 'Toggle Shadow';
431421
} else {
432422
document.documentElement.style.setProperty('--nc-content-shadow', 'none');
433-
shadowToggle.textContent = 'Toggle Shadow (off)';
434423
}
435424
});
436425

0 commit comments

Comments
 (0)