// Unified RecordGod owner nav — included on the back-office pages (admin / builder / dash / pos / search).
// One source of truth: edit the links here, every page updates. Kept OFF the customer shop/store.
// Also owns the LIGHT/DARK theme switch for every page (default light — the shop-admin readability default).
(function () {
const LINKS = [
{ href: '/admin', label: 'Admin' },
{ href: '/search', label: 'Search' },
{ href: '/pos', label: 'Sales' },
{ href: '/builder', label: 'Builder' },
{ href: '/shop', label: 'Shop' },
{ href: '/store/', label: '3D store' },
];
// ── theme: set the attribute ASAP (deferred script, so a brief light flash is possible) ──
const savedTheme = (() => { try { return localStorage.getItem('rg_theme'); } catch (_) { return null; } })();
document.documentElement.dataset.theme = savedTheme || 'light';
const here = (location.pathname.replace(/\/+$/, '') || '/');
const css = document.createElement('style');
css.textContent =
// light nav (default)
'#rg-nav{position:fixed;top:0;left:0;right:0;height:44px;display:flex;align-items:center;gap:4px;' +
'padding:0 16px;background:#ffffff;border-bottom:1px solid #e2e2ea;z-index:99999;font:14px system-ui}' +
'#rg-nav .b{font-weight:700;color:#1b1b22;text-decoration:none;margin-right:14px}' +
'#rg-nav .b i{color:#d10f7a;font-style:normal}' +
'#rg-nav a.l{color:#2a2a30;text-decoration:none;padding:6px 11px;border-radius:7px}' +
'#rg-nav a.l:hover{background:#f3f3f6}' +
'#rg-nav a.l.on{background:#fdeef6;color:#d10f7a}' +
'#rg-nav .sp{flex:1}' +
'#rg-theme{cursor:pointer;border:1px solid #e2e2ea;background:#fff;color:#2a2a30;border-radius:7px;' +
'padding:5px 9px;font-size:14px;line-height:1}' +
'#rg-theme:hover{background:#f3f3f6}' +
'body{padding-top:44px}' +
// ── DARK OVERRIDE — forces dark on the common surfaces across all (inline-styled, inconsistent) pages.
// !important is deliberate: it has to beat each page's own inline :root tokens + literals. ──
'html[data-theme="dark"]{color-scheme:dark}' +
'html[data-theme="dark"] body{background:#0f0f13 !important;color:#e8e8ec !important}' +
'html[data-theme="dark"] .panel,html[data-theme="dark"] .card,html[data-theme="dark"] .box,' +
'html[data-theme="dark"] .drop,html[data-theme="dark"] #gate{background:#17171c !important;' +
'border-color:#2a2a32 !important;color:#e8e8ec !important;box-shadow:none !important}' +
'html[data-theme="dark"] #gate{background:#0f0f13 !important}' +
'html[data-theme="dark"] input,html[data-theme="dark"] select,html[data-theme="dark"] textarea{' +
'background:#0e0e11 !important;color:#e8e8ec !important;border-color:#2a2a32 !important}' +
'html[data-theme="dark"] .ghost{background:#1d1d22 !important;color:#d8d8de !important;border-color:#2a2a32 !important}' +
'html[data-theme="dark"] .muted,html[data-theme="dark"] .lbl,html[data-theme="dark"] th{color:#9a9aa6 !important}' +
'html[data-theme="dark"] td,html[data-theme="dark"] th{border-color:#23232a !important}' +
'html[data-theme="dark"] .ri:hover{background:#22222a !important}' +
'html[data-theme="dark"] .panel h2,html[data-theme="dark"] h1.pg{color:#e6e6ec !important}' +
'html[data-theme="dark"] .tabs button.on{background:#17171c !important}' +
'html[data-theme="dark"] #rg-nav{background:#0a0a0c !important;border-color:#23232a !important}' +
'html[data-theme="dark"] #rg-nav .b{color:#eee !important}' +
'html[data-theme="dark"] #rg-nav a.l{color:#cfcfd6 !important}' +
'html[data-theme="dark"] #rg-nav a.l:hover{background:#17171c !important}' +
'html[data-theme="dark"] #rg-theme{background:#17171c !important;color:#cfcfd6 !important;border-color:#2a2a32 !important}';
document.head.appendChild(css);
const bar = document.createElement('nav');
bar.id = 'rg-nav';
bar.innerHTML = 'RecordGod' +
LINKS.map(p => {
const on = here === p.href.replace(/\/+$/, '');
return `${p.label}`;
}).join('') +
'' +
'';
document.body.insertBefore(bar, document.body.firstChild);
const btn = document.getElementById('rg-theme');
const paint = () => { btn.textContent = document.documentElement.dataset.theme === 'dark' ? '☀️' : '🌙'; };
paint();
btn.addEventListener('click', () => {
const next = document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark';
document.documentElement.dataset.theme = next;
try { localStorage.setItem('rg_theme', next); } catch (_) {}
paint();
});
})();