Member area rebuilt as a back-office shell
Fixed left sidebar (iconed menu with active accent, site links, user chip, logout), sticky top bar with per-section title and rehearsal notice, content region per pane. Mobile gets a hamburger off-canvas drawer that closes on selection. Marketing nav no longer wraps the member area; signed-out visitors get a centered auth page. All flows and pane IDs preserved; verified on desktop and 390px. Assets v=20260904r. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+17
-4
@@ -1,8 +1,15 @@
|
||||
// My account: email-first join/login, wallet link at purchase time,
|
||||
// free payout activation, invite link, on-chain activity.
|
||||
(async function () {
|
||||
await IAP.renderNav('my');
|
||||
// back-office shell: no marketing nav here; rehearsal notice lives in the top bar
|
||||
const $ = IAP.$;
|
||||
try {
|
||||
const c = await IAP.getConfig();
|
||||
if (c.rehearsal && $('boRehearsal')) {
|
||||
$('boRehearsal').hidden = false;
|
||||
$('boRehearsal').innerHTML = '<b>Testnet rehearsal</b> · ' + c.chainName;
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
async function api(path, body) {
|
||||
const r = await (await fetch(path, { method: 'POST',
|
||||
@@ -58,21 +65,27 @@
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
// ── members-area menu: hash-routed panes ──────────────
|
||||
// ── back-office menu: hash-routed panes ───────────────
|
||||
const PANES = ['overview', 'line', 'campaigns', 'earnings', 'wallet'];
|
||||
const TITLES = { overview: 'Overview', line: 'My line', campaigns: 'Campaigns',
|
||||
earnings: 'Earnings', wallet: 'Wallet & account' };
|
||||
function setPane(name) {
|
||||
if (!PANES.includes(name)) name = 'overview';
|
||||
for (const p of PANES) {
|
||||
const el = $('pane-' + p);
|
||||
if (el) el.hidden = p !== name;
|
||||
}
|
||||
document.querySelectorAll('.subnav [data-pane]').forEach(b =>
|
||||
document.querySelectorAll('.bo-menu [data-pane]').forEach(b =>
|
||||
b.classList.toggle('on', b.dataset.pane === name));
|
||||
if ($('boTitle')) $('boTitle').textContent = TITLES[name];
|
||||
document.getElementById('memberArea').classList.remove('side-open'); // close mobile drawer
|
||||
if (location.hash !== '#' + name) history.replaceState(null, '', '#' + name);
|
||||
}
|
||||
document.querySelectorAll('.subnav [data-pane]').forEach(b =>
|
||||
document.querySelectorAll('.bo-menu [data-pane]').forEach(b =>
|
||||
b.addEventListener('click', () => setPane(b.dataset.pane)));
|
||||
window.addEventListener('hashchange', () => setPane(location.hash.slice(1)));
|
||||
if ($('boBurger')) $('boBurger').addEventListener('click', () =>
|
||||
document.getElementById('memberArea').classList.toggle('side-open'));
|
||||
|
||||
async function render() {
|
||||
const me = await IAP.refreshNavWallet();
|
||||
|
||||
Reference in New Issue
Block a user