d5bb74db7a
Every account gets welcomeCredits (25, rate-card configurable) via an idempotent lazy grant on dashboard load, so existing members receive theirs retroactively. earned_credits table with JSON fallback; Overview stat shows the purchased/welcome split. Chatbot facts and canned answers synced; homepage free-membership list mentions the welcome batch. Rate card promoted from placeholder to decided and persisted in the volume. Spending integration for the earned pool is the next engine build. Assets v=20260905b. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
217 lines
12 KiB
HTML
217 lines
12 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title>Member area | InstantAdPay</title>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sora:wght@600;700;800&display=swap">
|
|
<link rel="stylesheet" href="/assets/site.css?v=20260905b">
|
|
</head>
|
|
<body class="bo-body">
|
|
|
|
<!-- ── signed-out: centered auth ─────────────────────────── -->
|
|
<div id="authArea">
|
|
<div class="wrap" style="max-width:560px">
|
|
<section class="hero" style="padding:64px 0 10px;text-align:left">
|
|
<p class="eyebrow">Member area</p>
|
|
<h1 style="font-size:34px">Sign <em>in</em></h1>
|
|
<p class="lead" id="introLead" style="font-size:16px">Join free with your email. Your wallet only
|
|
comes out when you buy a package or switch on payouts, and it stays yours the whole time.</p>
|
|
</section>
|
|
<div class="card" id="magicCard" hidden>
|
|
<h3>Sign in or join free</h3>
|
|
<p class="muted small">Type your email and we send a 6-digit code. No password to invent,
|
|
no password to forget. New emails get a free account automatically.</p>
|
|
<p><input id="mcEmail" type="email" placeholder="Email" autocomplete="email" style="width:100%"></p>
|
|
<p id="mcCodeRow" hidden><input id="mcCode" inputmode="numeric" placeholder="6-digit code" style="width:100%"></p>
|
|
<button class="btn" id="mcSendBtn">Email me a code</button>
|
|
<button class="btn" id="mcVerifyBtn" hidden>Sign in</button>
|
|
<button class="btn sec small" id="mcResend" hidden>Send a fresh code</button>
|
|
</div>
|
|
<div id="passCards">
|
|
<div class="card">
|
|
<h3>Create your free account</h3>
|
|
<p><input id="suEmail" type="email" placeholder="Email" autocomplete="email" style="width:100%"></p>
|
|
<p><input id="suPass" type="password" placeholder="Password (8+ characters)" autocomplete="new-password" style="width:100%"></p>
|
|
<button class="btn" id="signupBtn">Join free</button>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Log in</h3>
|
|
<p><input id="liEmail" type="email" placeholder="Email" autocomplete="email" style="width:100%"></p>
|
|
<p><input id="liPass" type="password" placeholder="Password" autocomplete="current-password" style="width:100%"></p>
|
|
<button class="btn sec" id="loginBtn">Log in</button>
|
|
</div>
|
|
</div>
|
|
<p class="small muted">Crypto-native? You can also <a href="#" id="walletSigninLink">sign in with just your wallet</a>.
|
|
One free signature, no email needed.</p>
|
|
<p class="small muted"><a href="/">← Back to the site</a></p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ── signed-in: back-office shell ──────────────────────── -->
|
|
<div id="memberArea" class="bo" hidden>
|
|
<aside class="bo-side" id="boSide">
|
|
<a class="logo" href="/">Instant<b>AdPay</b></a>
|
|
<nav class="bo-menu" aria-label="Member menu">
|
|
<button data-pane="overview" class="on" type="button"><svg viewBox="0 0 24 24"><rect x="3" y="3" width="8" height="8" rx="2"/><rect x="13" y="3" width="8" height="8" rx="2"/><rect x="3" y="13" width="8" height="8" rx="2"/><rect x="13" y="13" width="8" height="8" rx="2"/></svg>Overview</button>
|
|
<button data-pane="line" type="button"><svg viewBox="0 0 24 24"><circle cx="12" cy="7" r="3.2"/><circle cx="5" cy="17" r="2.6"/><circle cx="19" cy="17" r="2.6"/><path d="M12 10v3M12 13l-5 2M12 13l5 2"/></svg>My line</button>
|
|
<button data-pane="campaigns" type="button"><svg viewBox="0 0 24 24"><path d="M3 11l14-5v12L3 13v-2z"/><path d="M17 8a4 4 0 0 1 0 8M7 13v5a2 2 0 0 0 4 0v-3"/></svg>Campaigns</button>
|
|
<button data-pane="earnings" type="button"><svg viewBox="0 0 24 24"><path d="M4 17l5-5 4 3 7-8"/><path d="M14 7h6v6"/></svg>Earnings</button>
|
|
<button data-pane="wallet" type="button"><svg viewBox="0 0 24 24"><rect x="3" y="6" width="18" height="13" rx="2"/><path d="M3 10h18"/><circle cx="16.5" cy="14.5" r="1.4"/></svg>Wallet</button>
|
|
</nav>
|
|
<div class="bo-links">
|
|
<span class="bo-cap">Site</span>
|
|
<a href="/">Ad packages</a>
|
|
<a href="/ledger">Live ledger</a>
|
|
<a href="/contract">The contract</a>
|
|
</div>
|
|
<div class="bo-foot">
|
|
<span id="navWallet" class="small muted">…</span>
|
|
<a href="#" id="logoutLink" class="small">Log out</a>
|
|
</div>
|
|
</aside>
|
|
|
|
<div class="bo-main">
|
|
<header class="bo-top">
|
|
<button id="boBurger" aria-label="Menu" type="button">☰</button>
|
|
<h2 id="boTitle" style="margin:0">Overview</h2>
|
|
<span class="bo-rehearsal small" id="boRehearsal" hidden></span>
|
|
</header>
|
|
<main class="bo-content">
|
|
|
|
<div class="pane" id="pane-overview">
|
|
<div class="stats" style="margin-top:0">
|
|
<div class="stat"><div class="n" id="dbCredits">0</div><div class="l">Ad credits</div><div class="small muted" id="dbCreditsSub"></div></div>
|
|
<div class="stat"><div class="n mono" id="dbEarned">0</div><div class="l">POL earned</div></div>
|
|
<div class="stat"><div class="n" id="dbBuyers">0</div><div class="l">Qualifying buyers</div></div>
|
|
<div class="stat"><div class="n" id="dbTeam">0</div><div class="l">Joined your line</div></div>
|
|
</div>
|
|
<div class="card" id="nextCard">
|
|
<h3>Your next move</h3>
|
|
<p class="muted" id="nextMove">…</p>
|
|
<div id="qualBarWrap">
|
|
<div class="qualbar"><div id="qualFill"></div>
|
|
<span class="qb-mark" style="left:40%">2 · level 2</span>
|
|
<span class="qb-mark end">5 · level 3</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="grid c2">
|
|
<div class="card"><h3>Earning levels</h3>
|
|
<p id="qualLine" class="muted small">…</p></div>
|
|
<div class="card">
|
|
<h3>Buy ad packages</h3>
|
|
<p class="muted small">The full ladder with live pricing is on the <a href="/#ladder-h">home page</a>.
|
|
Purchases from your linked wallet automatically credit this account.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="pane" id="pane-line" hidden>
|
|
<div class="card">
|
|
<h3>Your invite link, live from day one</h3>
|
|
<p class="muted small">Share it anywhere, starting now. Everyone who joins through it becomes part of
|
|
your line, and you earn 50 percent of every ad package they ever buy, plus levels 2 and 3 as you
|
|
qualify. Just switch on payouts before your people start buying so every payment locks to you.</p>
|
|
<p class="mono" id="inviteLine">…</p>
|
|
<p>
|
|
<button class="btn small sec" id="copyInvite" hidden>Copy link</button>
|
|
<button class="btn small sec" id="copyPitch" hidden>Copy a ready-to-send message</button>
|
|
</p>
|
|
<p class="muted small" id="pitchPreview" hidden></p>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Your line</h3>
|
|
<p class="muted small">Everyone who joined through your link, newest first. When they buy their
|
|
first package of $20 or more, they count toward your qualification.</p>
|
|
<div id="rosterWrap"><p class="muted small" id="rosterEmpty">Nobody yet. Your link is ready above; share it and this list starts filling.</p></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="pane" id="pane-campaigns" hidden>
|
|
<div class="card" id="campGate" hidden>
|
|
<h3>Campaigns unlock with your first package</h3>
|
|
<p class="muted small">Campaigns spend the on-chain credits a package mints. Grab any package on the
|
|
<a href="/#ladder-h">home page</a> and this tab turns into your campaign manager.</p>
|
|
</div>
|
|
<div class="card" id="campaignCard" hidden>
|
|
<h3>Your ad campaigns</h3>
|
|
<p class="muted small" id="rateLine">…</p>
|
|
<div id="campList"></div>
|
|
<h3 style="margin-top:18px">New campaign</h3>
|
|
<div class="grid c3">
|
|
<p><select id="cType" style="width:100%">
|
|
<option value="banner">Banner (per impression)</option>
|
|
<option value="text">Text ad (per impression)</option>
|
|
<option value="login">Login ad (per day)</option>
|
|
</select></p>
|
|
<p><input id="cName" placeholder="Campaign name" style="width:100%"></p>
|
|
<p><input id="cBudget" type="number" placeholder="Budget (credits)" min="10" style="width:100%"></p>
|
|
</div>
|
|
<p><input id="cTarget" placeholder="Target URL (https://…)" style="width:100%"></p>
|
|
<p id="cImageRow"><input id="cImage" placeholder="Image URL (banner/login ads)" style="width:100%"></p>
|
|
<p id="cTitleRow" hidden><input id="cTitle" placeholder="Headline (max 60)" style="width:100%"></p>
|
|
<p id="cBodyRow" hidden><input id="cBody" placeholder="Ad text (max 140)" style="width:100%"></p>
|
|
<button class="btn" id="createCampBtn">Launch campaign</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="pane" id="pane-earnings" hidden>
|
|
<div id="activityArea" hidden>
|
|
<div class="grid c2">
|
|
<div class="card">
|
|
<h3>Earnings</h3>
|
|
<p class="muted small">Every payout the contract has sent to your wallet. Each line links to the transaction.</p>
|
|
<div class="feed" id="earnFeed"><div class="row muted">Nothing yet.</div></div>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Your referrals</h3>
|
|
<p class="muted small">Activations and qualifying buys in your line.</p>
|
|
<div class="feed" id="refFeed"><div class="row muted">Nothing yet.</div></div>
|
|
</div>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Your purchases</h3>
|
|
<div class="feed" id="buyFeed"><div class="row muted">Nothing yet.</div></div>
|
|
</div>
|
|
</div>
|
|
<div class="card" id="earnGate" hidden>
|
|
<h3>Your on-chain history starts with payouts</h3>
|
|
<p class="muted small">Once payouts are switched on, every payment, referral event, and purchase in
|
|
your line shows here with a verify link to the blockchain. Nothing to claim, nothing to request:
|
|
the money is already in your wallet when the line appears.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="pane" id="pane-wallet" hidden>
|
|
<div class="grid c2">
|
|
<div class="card"><h3>Your account</h3>
|
|
<p id="posLine" class="muted small">…</p></div>
|
|
<div class="card"><h3>Ad credits</h3>
|
|
<p class="mono" style="font-size:26px;margin:0" id="creditLine">0</p>
|
|
<p class="muted small">1 credit = 1 cent of ad delivery across the network. Recorded on-chain. Only your campaigns can spend them.</p></div>
|
|
</div>
|
|
<div class="card" id="linkCard" hidden>
|
|
<h3>Link your wallet</h3>
|
|
<p class="muted small">Your earnings pay straight to your own wallet, so we need to know which one is yours.
|
|
One free signature links it. It cannot move funds or approve anything. Buying any package links it automatically too.</p>
|
|
<button class="btn" id="linkBtn">Connect & link wallet</button>
|
|
</div>
|
|
<div class="card" id="activateCard" hidden>
|
|
<h3>Switch on payouts, free</h3>
|
|
<p class="muted small">One free transaction registers your linked wallet on-chain so commissions can reach it,
|
|
and it unlocks the full flow. Buying any package does this automatically.</p>
|
|
<button class="btn sec" id="activateBtn">Activate payouts</button>
|
|
</div>
|
|
</div>
|
|
|
|
</main>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="/assets/common.js?v=20260905b"></script>
|
|
<script src="/assets/wallet.js?v=20260905b"></script>
|
|
<script src="/assets/my.js?v=20260905b"></script>
|
|
<script src="/assets/chat.js?v=20260905b"></script>
|
|
</body>
|
|
</html>
|