← back to Chinoiseriewallpaper
dw-header: hide ANY pre-existing <header> (not just ns-header); title-case bare-slug names
831b2d7e621a557a60aabde3e243154e60f835d2 · 2026-06-01 15:47:41 -0700 · Steve Abrams
Files touched
Diff
commit 831b2d7e621a557a60aabde3e243154e60f835d2
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Jun 1 15:47:41 2026 -0700
dw-header: hide ANY pre-existing <header> (not just ns-header); title-case bare-slug names
---
public/dw-header.js | 39 +++++++--------------------------------
1 file changed, 7 insertions(+), 32 deletions(-)
diff --git a/public/dw-header.js b/public/dw-header.js
index 39f29a5..d02a7b6 100644
--- a/public/dw-header.js
+++ b/public/dw-header.js
@@ -31,10 +31,7 @@
.replace(/\s+/g, ' ').trim()
.replace(/\b\w/g, function (c) { return c.toUpperCase(); });
}
- // 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 SITE_NAME = CFG.siteName || titleCase(STEM);
var HOME = CFG.homeUrl || '/';
var ACCENT = CFG.accent || (getComputedStyle(document.documentElement).getPropertyValue('--accent').trim()) || '#9B7B4F';
var NAV = CFG.navLinks || [
@@ -85,9 +82,6 @@
'.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);
@@ -100,21 +94,17 @@
(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-right"><button type="button" class="dwh-toggle" id="dwhTheme" aria-label="Toggle light/dark theme" title="Toggle theme">☾</button></div>' +
+ '<div class="dwh-spacer"></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>' : '');
- // 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);
+ // hide ANY pre-existing site header (ns-header, .header, etc.) so we never double up
+ document.querySelectorAll('header').forEach(function (h) {
+ if (h !== header && h.className.indexOf('dwh') === -1) h.style.display = 'none';
+ });
+
// ---- behaviour ----
function drawer(id) { return document.getElementById(id); }
function close(navId, btnId) { var d = drawer(navId), b = document.getElementById(btnId); if (d) d.classList.remove('open'); if (b) b.setAttribute('aria-expanded', 'false'); }
@@ -137,19 +127,4 @@
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) {}
- });
})();
← 293d215 header A-rebuild: dw-header.js wins fleet — patched to hide
·
back to Chinoiseriewallpaper
·
index.html: interpolate un-rendered DwHeaderConfig template 11f43cc →