diff --git a/src/pages/campaign-detail.tsx b/src/pages/campaign-detail.tsx index 824f3ff..18e736f 100644 --- a/src/pages/campaign-detail.tsx +++ b/src/pages/campaign-detail.tsx @@ -73,108 +73,77 @@ export const CampaignDetailPage = () => { - {/* Main body: leads table on the left, campaign details + funnel + source on the right */} -
-
-
-
-
-

- Leads ({campaignLeads.length}) -

-
- {campaignLeads.length === 0 ? ( -
- No leads from this campaign yet. + {/* Campaign details + funnel + source — horizontal cards above table */} +
+
+
+

Campaign Details

+
+ {[ + ['Type', campaign.campaignType?.replace(/_/g, ' ') ?? '--'], + ['Platform', campaign.platform ?? '--'], + ['Start', formatDateShort(campaign.startDate)], + ['End', formatDateShort(campaign.endDate)], + ['Budget', campaign.budget ? formatCurrency(campaign.budget.amountMicros, campaign.budget.currencyCode) : '--'], + ['Impressions', campaign.impressionCount?.toLocaleString('en-IN') ?? '--'], + ['Clicks', campaign.clickCount?.toLocaleString('en-IN') ?? '--'], + ].map(([label, value]) => ( +
+
{label}
+
{value}
- ) : ( - setActivityLead(lead)} - visibleColumns={new Set(['phone', 'name', 'source', 'status', 'lastContactedAt', 'createdAt'])} - /> - )} + ))} +
+
+ +
+
- {campaignAds.length > 0 && ( -
-

- Ads ({campaignAds.length}) -

-
- {campaignAds.map((ad) => ( - - ))} -
+ + +
+
+ + {/* Leads table — full width */} +
+
+
+
+

+ Leads ({campaignLeads.length}) +

+
+ {campaignLeads.length === 0 ? ( +
+ No leads from this campaign yet.
+ ) : ( + setActivityLead(lead)} + visibleColumns={new Set(['phone', 'name', 'source', 'status', 'lastContactedAt', 'createdAt'])} + /> )}
-
-
-

Campaign Details

-
-
-
Type
-
- {campaign.campaignType?.replace(/_/g, ' ') ?? '--'} -
-
-
-
Platform
-
- {campaign.platform ?? '--'} -
-
-
-
Start Date
-
- {formatDateShort(campaign.startDate)} -
-
-
-
End Date
-
- {formatDateShort(campaign.endDate)} -
-
-
-
Budget
-
- {campaign.budget - ? formatCurrency(campaign.budget.amountMicros, campaign.budget.currencyCode) - : '--'} -
-
-
-
Impressions
-
- {campaign.impressionCount?.toLocaleString('en-IN') ?? '--'} -
-
-
-
Clicks
-
- {campaign.clickCount?.toLocaleString('en-IN') ?? '--'} -
-
-
- -
- - + {campaignAds.length > 0 && ( +
+

+ Ads ({campaignAds.length}) +

+
+ {campaignAds.map((ad) => ( + + ))}
- - - - -
+ )}