import { cx } from '@/utils/cx'; import type { Campaign, Lead } from '@/types/entities'; interface ConversionFunnelProps { campaign: Campaign; leads: Lead[]; } type FunnelStep = { label: string; count: number; color: string; }; export const ConversionFunnel = ({ campaign, leads }: ConversionFunnelProps) => { const leadCount = campaign.leadCount ?? 0; const contactedCount = campaign.contactedCount ?? 0; const appointmentCount = leads.filter((l) => l.leadStatus === 'APPOINTMENT_SET').length; const convertedCount = campaign.convertedCount ?? 0; const steps: FunnelStep[] = [ { label: 'Leads', count: leadCount, color: 'bg-brand-solid' }, { label: 'Contacted', count: contactedCount, color: 'bg-brand-primary' }, { label: 'Appointment Set', count: appointmentCount, color: 'bg-brand-primary_alt' }, { label: 'Converted', count: convertedCount, color: 'bg-success-solid' }, ]; const maxCount = Math.max(...steps.map((s) => s.count), 1); return (

Conversion Funnel

{steps.map((step) => { const widthPercent = (step.count / maxCount) * 100; return (
{step.label}
{step.count}
); })}
); };