← back to Chinoiseriewallpaper
header A-rebuild: dw-header.js wins fleet — patched to hide original header + corner-nav + v1, fix centered site-name (title fallback), add theme toggle; v1 removed from index
293d2158c1d7bc7ee017357739ed5c78312ad920 · 2026-06-01 14:49:48 -0700 · Steve Abrams
Files touched
Diff
commit 293d2158c1d7bc7ee017357739ed5c78312ad920
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Jun 1 14:49:48 2026 -0700
header A-rebuild: dw-header.js wins fleet — patched to hide original header + corner-nav + v1, fix centered site-name (title fallback), add theme toggle; v1 removed from index
---
public/dw-header.js | 36 +++++++++++++++++++++++++++++++-----
1 file changed, 31 insertions(+), 5 deletions(-)
diff --git a/public/dw-header.js b/public/dw-header.js
index 0f10a0b..39f29a5 100644
--- a/public/dw-header.js
+++ b/public/dw-header.js
@@ -31,7 +31,10 @@
.replace(/\s+/g, ' ').trim()
.replace(/\b\w/g, function (c) { return c.toUpperCase(); });
}
- var SITE_NAME = CFG.siteName || titleCase(STEM);
+ // digit-only STEM = localhost IP (127.0.0.1); fall back to <title> first segment
+ var SITE_NAME = CFG.siteName || (/^\d+$/.test(STEM)
+ ? ((document.title || '').split(/\s*[|–—-]\s*/)[0].trim() || titleCase(STEM))
+ : titleCase(STEM));
var HOME = CFG.homeUrl || '/';
var ACCENT = CFG.accent || (getComputedStyle(document.documentElement).getPropertyValue('--accent').trim()) || '#9B7B4F';
var NAV = CFG.navLinks || [
@@ -82,6 +85,9 @@
'.dwh-drawer a:last-child,.dwh-drawer button:last-child{border-bottom:0}',
'.dwh-drawer a:hover,.dwh-drawer button:hover{background:rgba(245,241,232,.06)}',
'.dwh-head{padding:10px 22px 8px;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:' + ACCENT + '}',
+ '.dwh-right{flex:1 1 0;display:flex;align-items:center;justify-content:flex-end;gap:12px}',
+ '.dwh-toggle{width:34px;height:34px;border-radius:50%;border:1px solid rgba(245,241,232,.25);background:transparent;color:#f5f1e8;cursor:pointer;font-size:14px;display:inline-flex;align-items:center;justify-content:center;padding:0;transition:all .15s}',
+ '.dwh-toggle:hover{border-color:' + ACCENT + ';color:' + ACCENT + '}',
].join('\n');
document.head.appendChild(css);
@@ -94,13 +100,18 @@
(isAdmin ? '<button type="button" class="dwh-burger dwh-admin" id="dwhAdmin" aria-label="Admin tools" aria-controls="dwhAdminDrawer" aria-expanded="false"><span></span><span></span><span></span></button>' : '') +
'</div>' +
'<a href="' + esc(HOME) + '" class="dwh-name">' + esc(SITE_NAME) + '</a>' +
- '<div class="dwh-spacer"></div>' +
+ '<div class="dwh-right"><button type="button" class="dwh-toggle" id="dwhTheme" aria-label="Toggle light/dark theme" title="Toggle theme">☾</button></div>' +
'<nav class="dwh-drawer" id="dwhNavDrawer" aria-label="Primary">' + linksHTML(NAV) + '</nav>' +
(isAdmin ? '<nav class="dwh-drawer dwh-admin-drawer" id="dwhAdminDrawer" aria-label="Admin tools"><div class="dwh-head">Admin tools</div>' + linksHTML(ADMIN) + '<button type="button" data-act="logout">Sign out admin</button></nav>' : '');
- // remove any pre-existing inline header so we don't double up
- var old = document.querySelector('header.ns-header, header.dwh:not(:first-of-type)');
- if (old && old.className.indexOf('dwh') === -1) old.style.display = 'none';
+ // Replace every pre-existing site header / corner-nav / inline hamburger so we
+ // don't double-stack. dw-header is the sole header now (Steve 2026-06-01: dw-header
+ // rebuild wins the fleet). Covers: inline <header> (any class but .dwh), the
+ // legacy ns-header, corner-nav pill, and the DW-HAMBURGER-NAV v1 fixed button/panel.
+ try {
+ document.querySelectorAll('header:not(.dwh), .ns-header, .cnav-wrap, #dwBurgerBtn, #dwBurgerPanel')
+ .forEach(function (el) { el.style.display = 'none'; });
+ } catch (e) {}
document.body.insertBefore(header, document.body.firstChild);
@@ -126,4 +137,19 @@
if (typeof window[act] === 'function') { e.preventDefault(); window[act](); }
});
document.addEventListener('keydown', function (e) { if (e.key === 'Escape') { close('dwhNavDrawer', 'dwhNav'); close('dwhAdminDrawer', 'dwhAdmin'); } });
+
+ // ---- theme toggle (self-contained; replaces the original header's toggle) ----
+ function applyTheme(t) {
+ document.documentElement.dataset.theme = t;
+ var b = document.getElementById('dwhTheme');
+ if (b) b.textContent = (t === 'dark') ? '☀' : '☾'; // ☀ when dark, ☾ when light
+ }
+ try { var savedT = localStorage.getItem('dwTheme'); if (savedT === 'dark' || savedT === 'light') applyTheme(savedT); else applyTheme(document.documentElement.dataset.theme || 'light'); } catch (e) {}
+ var themeBtn = document.getElementById('dwhTheme');
+ if (themeBtn) themeBtn.addEventListener('click', function () {
+ var cur = (document.documentElement.dataset.theme === 'dark') ? 'dark' : 'light';
+ var nxt = (cur === 'dark') ? 'light' : 'dark';
+ applyTheme(nxt);
+ try { localStorage.setItem('dwTheme', nxt); } catch (e) {}
+ });
})();
← 6c0ac9e header: complete dw-header rebuild — remove old DW-HAMBURGER
·
back to Chinoiseriewallpaper
·
dw-header: hide ANY pre-existing <header> (not just ns-heade 831b2d7 →