diff --git a/app.js b/app.js index 08935f8..ebda20c 100644 --- a/app.js +++ b/app.js @@ -455,6 +455,7 @@ function populateDemoShell() { bell expires 2026-07-10 + Resubscribe → EU + Add Agent`; @@ -591,12 +592,16 @@ function renderAgentTabs() { const expiredText = hasExpiry ? `expires ${escHtml(expires)}` : ""; + const portalLink = hasExpiry + ? `Resubscribe →` + : ""; return ` `; @@ -1194,12 +1199,11 @@ async function saveInvoiceEmail() { async function openBillingPortal() { const btn = document.getElementById("portal-btn"); - if (!btn) return; if (!currentEmail) { toast("No email found. Please sign in again.", "warning"); return; } - btnLoad(btn, ""); + if (btn) btnLoad(btn, ""); try { const res = await apiFetch( `${PORTAL_URL}?email=${encodeURIComponent(currentEmail)}`, @@ -1221,7 +1225,7 @@ async function openBillingPortal() { } catch (err) { toast(err.message, "error"); } finally { - btnReset(btn); + if (btn) btnReset(btn); } } diff --git a/styles.css b/styles.css index 15740be..a793c69 100644 --- a/styles.css +++ b/styles.css @@ -721,6 +721,23 @@ body::after { margin-left: 3px; } +.agent-tab-resub { + font-size: 10px; + font-weight: 600; + color: var(--accent); + text-decoration: none; + margin-left: 4px; + padding: 1px 6px; + border: 1px solid var(--accent); + border-radius: 4px; + line-height: normal; + transition: background 0.15s; +} + +.agent-tab-resub:hover { + background: var(--accent-dim); +} + .agent-tab-badge { font-size: 10px; font-weight: 600;