/* Page: Portfolio (multi-client overview) */ function PortfolioView({ onOpenClient }) { const { data, loading, error } = useApi('/api/clients', []); if (loading) return
| Client | Tier | Sources | Sessions · 30d | vs prev | Conversions | Visibility | Top-10 KW | Health | ||
|---|---|---|---|---|---|---|---|---|---|---|
{c.initials} |
{c.name}
{c.url}
|
{c.tier} |
{['ga4','gsc','ahrefs','semrush'].map(s => (
{s.toUpperCase()}
))}
|
{c.sessions.toLocaleString()} |
= 0 ? 'up' : 'down'}`}>
|
{c.conv} = 0 ? 'up' : 'down'}`}> {c.convDelta >= 0 ? '+' : ''}{c.convDelta.toFixed(1)}% |
{c.visibility.toFixed(1)}%
|
{c.top10} = 0 ? 'var(--accent)' : 'var(--red)'}}> {c.top10Delta >= 0 ? '+' : ''}{c.top10Delta} | {c.health === 'ok' ? 'On track' : c.health === 'warn' ? 'Watch' : 'At risk'} |
Two Launchpad clients on track to graduate to Engine by August. Capacity opens for one new Full Stack engagement in Q4.