// Campaign detail — shown in right pane function CampaignDetail({ campaignId, onClose, onBack, onOpenAdset }) { const c = window.FABCOM_DATA.campaigns.find(x => x.id === campaignId); if (!c) return null; const acc = window.FABCOM_DATA.accounts.find(a => a.id === c.account_id); const adsets = window.FABCOM_DATA.adsets.filter(a => a.campaign_id === c.id); return (
{c.id}

{c.name}

Adsets ({adsets.length})
{adsets.map(as => ( onOpenAdset(as.id)}> ))}
Name Status Budget Targeting Optimization Ads
{as.name}
{as.id}
{as.daily_budget ? <>{window.fmtCCY(as.daily_budget, acc.ccy)}/d : LT {window.fmtCCY(as.lifetime_budget, acc.ccy)}}
{as.age_min}–{as.age_max} {as.gender} {as.geo.join(", ")} {(as.audience||"—").split("—")[0].trim()}
{as.optimization_goal} {as.ad_ids.length}
); } Object.assign(window, { CampaignDetail });