62 lines
4.8 KiB
HTML
62 lines
4.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Planned UX screen — T.R.B. Painting</title>
|
|
<link rel="stylesheet" href="assets/css/ux-hub.css">
|
|
</head>
|
|
<body>
|
|
<div class="proposal-banner">
|
|
<div><span class="tag">Proposal mockup</span> Screen planned — not designed yet</div>
|
|
<div><a href="ux-gallery.html">All screens</a></div>
|
|
</div>
|
|
<div class="stub-page">
|
|
<div class="stub-card">
|
|
<div class="eyebrow" id="eyebrow" style="font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#1a4f6e;font-weight:600;margin-bottom:8px">Portal</div>
|
|
<h1 id="title">Planned screen</h1>
|
|
<p id="desc">This feature screen is scoped in the proposal but not mocked yet. Marketing landing is ready; portal and add-on UIs come next.</p>
|
|
<a class="btn" href="ux-gallery.html">Back to gallery</a>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
const catalog = {
|
|
'public-404': { eyebrow: 'Public · system', title: '404 not found', desc: 'Branded error page with paths home or to contact.' },
|
|
'portal-login': { eyebrow: 'Portal · base', title: 'Login', desc: 'Private client authentication for the Django portal.' },
|
|
'portal-dashboard': { eyebrow: 'Portal · base', title: 'Dashboard', desc: 'Home widgets: new leads, campaign health, scheduled activity.' },
|
|
'portal-leads': { eyebrow: 'Portal · base', title: 'Lead inbox', desc: 'Statuses, source attribution, quick filter.' },
|
|
'portal-lead-detail': { eyebrow: 'Portal · base', title: 'Lead detail', desc: 'Notes, UTM attribution, linked contact consent.' },
|
|
'portal-analytics': { eyebrow: 'Portal · base', title: 'UTM analytics', desc: 'Leads by source/campaign over time — included with every portal.' },
|
|
'portal-contacts': { eyebrow: 'Portal · Email/SMS', title: 'Mailing list', desc: 'Contacts with per-channel consent (email / SMS / postcard).' },
|
|
'portal-contacts-import': { eyebrow: 'Portal · Email/SMS', title: 'Import contacts', desc: 'CSV/Excel upload, column mapping, consent defaults.' },
|
|
'portal-campaign': { eyebrow: 'Portal · Email/SMS', title: 'Campaign composer', desc: 'Email or SMS — select recipients, schedule, send.' },
|
|
'portal-campaign-report': { eyebrow: 'Portal · Email/SMS', title: 'Email engagement', desc: 'Opens, clicks, bounces, unsubscribes per campaign.' },
|
|
'public-unsubscribe': { eyebrow: 'Public · Email/SMS', title: 'Opt-out / unsubscribe', desc: 'One-click email unsubscribe and per-channel preference.' },
|
|
'portal-postcard-designer': { eyebrow: 'Portal · Direct mail', title: 'Postcard designer', desc: 'Size picker, media library, live front/back preview.' },
|
|
'portal-direct-mail': { eyebrow: 'Portal · Direct mail', title: 'Direct mail campaign', desc: 'Recipients, schedule, vendor send.' },
|
|
'public-blog': { eyebrow: 'Public · Blog', title: 'Blog index', desc: 'Public listing of posts.' },
|
|
'public-blog-post': { eyebrow: 'Public · Blog', title: 'Blog post', desc: 'Single article view.' },
|
|
'portal-blog': { eyebrow: 'Portal · Blog', title: 'Blog list', desc: 'Draft and published post management.' },
|
|
'portal-blog-edit': { eyebrow: 'Portal · Blog', title: 'Blog editor', desc: 'Create and edit posts.' },
|
|
'portal-invoices': { eyebrow: 'Portal · Payments', title: 'Invoices', desc: 'Invoice list with payment status.' },
|
|
'portal-invoice-create': { eyebrow: 'Portal · Payments', title: 'Create invoice', desc: 'Line items, customer email, send pay link.' },
|
|
'portal-invoice-detail': { eyebrow: 'Portal · Payments', title: 'Invoice detail', desc: 'Status, history, resend.' },
|
|
'public-pay': { eyebrow: 'Public · Payments', title: 'Pay invoice', desc: 'Stripe checkout and confirmation states.' },
|
|
'portal-social-accounts': { eyebrow: 'Portal · Social', title: 'Social accounts', desc: 'OAuth connect, reconnect, disconnect.' },
|
|
'portal-social': { eyebrow: 'Portal · Social', title: 'Social composer', desc: 'Compose with live network previews.' },
|
|
'portal-social-calendar': { eyebrow: 'Portal · Social', title: 'Social calendar', desc: 'Schedule and upcoming posts.' },
|
|
'portal-social-ai': { eyebrow: 'Portal · AI Social', title: 'AI social generator', desc: 'Ollama prompt → draft → hand off to composer.' }
|
|
};
|
|
const key = new URLSearchParams(location.search).get('p') || '';
|
|
const item = catalog[key];
|
|
if (item) {
|
|
document.getElementById('eyebrow').textContent = item.eyebrow;
|
|
document.getElementById('title').textContent = item.title;
|
|
document.getElementById('desc').textContent = item.desc;
|
|
document.title = item.title + " — planned UX";
|
|
}
|
|
</script>
|
|
<p class="aiml-site-credit">Made by <a href="https://aimloperations.com" rel="noopener noreferrer" target="_blank">AI ML Operations, LLC</a></p>
|
|
</body>
|
|
</html>
|