Restyle staff and console UIs; add UI-Docs walkthrough and review PDF.
Some checks are pending
offline / test (push) Waiting to run

Match CS/sales/accounting/access-staff to the portal indigo system with
dollar amounts, skip links, and empty states. Fleet replica actions move
into overflow menus, roles become chips, Docs become cards, and the
header copy reflects the 0.0.0.0 bind. Simulator uses the same shell
(orange only for faults). Portal API keys are masked; admin customers
edit in a drawer. Catalog uses system-ui. New UI-Docs repo holds
screenshots, usage notes, and UI-REVIEW.pdf.
This commit is contained in:
George Lambert 2026-09-11 18:01:33 -04:00
parent ddf772454b
commit cb07f5b321
72 changed files with 3284 additions and 242 deletions

View file

@ -4,6 +4,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Zappier Portal</title>
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='8' fill='%234f46e5'/%3E%3C/svg%3E"/>
<style>
:root {
--bg: #f4f5fb;
@ -103,8 +104,14 @@
color: var(--muted);
cursor: pointer;
}
nav button { min-height: 40px; }
nav button:hover { background: var(--bg); color: var(--ink); }
nav button.active { background: var(--accent-soft); color: var(--accent); font-weight: 700; }
nav button:focus-visible, #logout:focus-visible, button.btn:focus-visible, a:focus-visible {
outline: 2px solid var(--accent); outline-offset: 2px;
}
.skip { position:absolute; left:-999px; }
.skip:focus { left:1rem; top:1rem; z-index:30; background:#fff; color:var(--accent); padding:.5rem .9rem; border-radius:8px; }
aside .spacer { flex: 1; }
#logout {
border: 1px solid var(--line); background: none; border-radius: 8px;
@ -184,12 +191,15 @@
.kv { display: grid; grid-template-columns: 170px 1fr; row-gap: 0.5rem; align-items: center; }
.kv dt { color: var(--muted); font-size: 0.82rem; }
.kv dd { margin: 0; font-weight: 600; }
.apikey-row { display: flex; gap: 0.5rem; align-items: center; }
.apikey-row { display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; }
.apikey-row code {
background: var(--bg); border: 1px solid var(--line); border-radius: 7px;
padding: 0.45rem 0.7rem; font-size: 0.85rem; flex: 1;
font-family: "SF Mono", Menlo, monospace;
padding: 0.45rem 0.7rem; font-size: 0.85rem; flex: 1; min-width: 12rem;
font-family: "SF Mono", Menlo, monospace; letter-spacing: 0.04em;
}
.empty { text-align:center; padding:1.6rem 1rem; color:var(--muted); }
.empty svg { display:block; margin:0 auto .6rem; }
.empty h3 { margin:0 0 .25rem; color:var(--ink); font-size:1rem; }
.qr-box { display: flex; gap: 1.25rem; align-items: flex-start; margin: 0.8rem 0; }
.qr-box img { border: 1px solid var(--line); border-radius: 10px; }
.qr-box .secret {
@ -220,6 +230,7 @@
</style>
</head>
<body>
<a class="skip" href="#main">Skip to content</a>
<section id="auth">
<form class="card" id="auth-form">
<h1>Zappier Portal</h1>
@ -256,7 +267,7 @@
<div class="spacer"></div>
<button id="logout">Sign out</button>
</aside>
<main>
<main id="main">
<section id="dashboard"></section>
<section id="invoices" hidden></section>
<section id="statement" hidden></section>