// screens/approval.jsx — Approval inbox (cards: incoming → AI draft → actions) // All copy goes through window.tr() with EN fallbacks for canvas use. const _trA = (k, fb) => (window.tr ? window.tr(k, fb) : fb); const _useLangA = () => (window.useLang ? window.useLang() : 'en'); function ApprovalCard({ theme, name, handle, time, incoming, draft, tag, confidence, last }) { const t = useT(theme); return (
{/* Header: who + topic tag */}
{name}
@{handle} · {time}
{tag.label}
{/* Incoming */}
{incoming}
{/* Draft section header */}
{_trA('appr.drafted', 'Recadly drafted')}
{/* confidence dots */} {[0,1,2].map(i => (
))} {confidence === 3 ? _trA('appr.match.high', 'High match') : confidence === 2 ? _trA('appr.match.medium', 'Medium match') : _trA('appr.match.low', 'Low match')}
{/* Draft */}
{draft}
{/* Actions */}
); } function ApprovalInbox({ theme = 'light' }) { _useLangA(); const t = useT(theme); const cards = [ { name: 'Marina Costa', handle: 'marinacostaa', time: _trA('appr.c1.time', '2 min ago'), tag: { label: _trA('appr.tag.shipping', 'Shipping'), bg: '#FFE7E2', fg: '#C25540' }, incoming: _trA('appr.c1.incoming'), draft: _trA('appr.c1.draft'), confidence: 3, }, { name: 'Theo Mendez', handle: 'theo.builds', time: _trA('appr.c2.time', '11 min ago'), tag: { label: _trA('appr.tag.restock', 'Restock'), bg: '#E4EAD8', fg: '#5C7A2E' }, incoming: _trA('appr.c2.incoming'), draft: _trA('appr.c2.draft'), confidence: 2, }, ]; return (
{_trA('appr.waiting', '6 waiting on you')}
{_trA('appr.title', 'Approvals')}
{_trA('appr.desc', 'Review what Recadly wants to send. Approve, tweak, or skip — your voice stays yours.')}
{cards.map((c, i) => ( ))}
{_trA('appr.moreBelow', '4 more drafts below')}
); } window.ApprovalInbox = ApprovalInbox;