"use client" import { formatDistanceToNow } from "date-fns" import { TrendingUp, ShieldCheck, PiggyBank, Zap, CheckCircle, BarChart3 } from "lucide-react" import { formatCurrency } from "@/lib/utils" const typeLabels: Record = { rent_increase: "Rent Increase", vacancy_alert: "Vacancy", maintenance_urgent: "Maintenance", lease_renewal: "Lease Renewal", expense_alert: "Expense", cash_flow: "Cash Flow", risk_alert: "Risk", opportunity: "Opportunity", } export function ImpactClient({ stats, activityLog, }: { stats: { totals: { generated: number; approved: number; dismissed: number; pending: number; approval_rate: number } impact: { revenue: number; savings: number; risk_prevented: number; total: number } recent_approved: any[] } activityLog: any[] }) { const { totals, impact, recent_approved } = stats return (
{/* Header */}

AI Impact Tracking

Estimated value from approved AI recommendations

{/* Impact cards */}
Revenue Added

{formatCurrency(impact.revenue)}

per month est.

Cost Savings

{formatCurrency(impact.savings)}

per month est.

Risk Prevented

{formatCurrency(impact.risk_prevented)}

per month est.

Total Impact

{formatCurrency(impact.total)}

per month est.

{/* Stats row */}
{[ { label: "Generated", value: totals.generated, color: "text-white" }, { label: "Approved", value: totals.approved, color: "text-emerald-400" }, { label: "Dismissed", value: totals.dismissed, color: "text-white/40" }, { label: "Approval Rate", value: `${totals.approval_rate}%`, color: "text-violet-400" }, ].map((s) => (

{s.value}

{s.label}

))}
{/* Recent approved */}

Recently Approved

{recent_approved.length === 0 ? (

No approved recommendations yet

) : (
{recent_approved.map((r) => (

{r.title}

{typeLabels[r.type] ?? r.type} {r.action_data?.estimated_value > 0 && ( +{formatCurrency(r.action_data.estimated_value)}/mo )}
{r.applied_at && ( {formatDistanceToNow(new Date(r.applied_at), { addSuffix: true })} )}
))}
)}
{/* AI activity log */}

AI Action Log

{activityLog.length === 0 ? (

No AI actions yet

) : (
{activityLog.map((a) => (

{a.title}

{formatDistanceToNow(new Date(a.created_at), { addSuffix: true })}
))}
)}
) }