{cells.map((i) => {
const active = i === filled;
const has = i < filled;
return (
{has ? vals[i] : (active ? : '')}
);
})}
);
}
// ── Banner — inline status. attn = gold (no red in palette); info = lilac ──
function Banner({ children, tone = 'attn', title }) {
const attn = tone === 'attn';
return (
{attn ? '◆' : '◇'}
{title &&
{title}
}
{children}
);
}
// ── AuthCard — the centered raised surface for Direction A ─────────────────
function AuthCard({ children, width = 420 }) {
return (
{children}
);
}
// ── BrandRail — the persistent identity panel for Direction B ──────────────
function BrandRail({ compact = false, soul = 'Your storefront is yours.' }) {
return (
);
}
// ── Footer — minimal project identity + the standing dedication ────────────
function Footer({ onDark = true }) {
return (
);
}
// ── Section wrapper used in the canvas to title state stacks ───────────────
function StateBlock({ label, note, children, h }) {
return (
{label}
{note && {note}}
{children}
);
}
// ── Honest-empty admin body — the heart of PUC-8 ───────────────────────────
function EmptyAdmin({ storefront = 'Studio Fern', compact = false }) {
return (
Your storefront
{storefront}
There's nothing to manage yet. Catalog, orders, and settings will appear
here as ecomm grows.