"use client" import { useState } from "react" import { formatCurrency } from "@/lib/utils" import { TrendingUp, TrendingDown, Building2 } from "lucide-react" interface MonthData { key: string; label: string; revenue: number; expense: number; net: number } interface PropertyPnL { id: string; name: string; revenue: number; expense: number; net: number; margin: number } export function ReportsClient({ monthlyData, propertyPnL }: { monthlyData: MonthData[]; propertyPnL: PropertyPnL[] }) { const [view, setView] = useState<"revenue" | "expense" | "net">("revenue") const maxVal = Math.max(...monthlyData.map(m => view === "revenue" ? m.revenue : view === "expense" ? m.expense : Math.abs(m.net) ), 1) const barColor = view === "revenue" ? "bg-indigo-500" : view === "expense" ? "bg-rose-500" : "bg-emerald-500" const viewLabel = view === "revenue" ? "Revenue" : view === "expense" ? "Expenses" : "Net Income" return (
{/* Monthly chart */}

Monthly {viewLabel}

{(["revenue", "expense", "net"] as const).map((v) => ( ))}
{monthlyData.map((m) => { const val = view === "revenue" ? m.revenue : view === "expense" ? m.expense : m.net const height = maxVal > 0 ? Math.max((Math.abs(val) / maxVal) * 100, val !== 0 ? 4 : 0) : 0 const isNegative = val < 0 return (
{formatCurrency(val)}
{m.label}
) })}
{/* Chart legend */}
{[ { label: "Total Revenue", value: monthlyData.reduce((s, m) => s + m.revenue, 0), color: "text-emerald-400" }, { label: "Total Expenses", value: monthlyData.reduce((s, m) => s + m.expense, 0), color: "text-rose-400" }, { label: "Net Income", value: monthlyData.reduce((s, m) => s + m.net, 0), color: "text-indigo-400" }, ].map((s) => (

{formatCurrency(s.value)}

{s.label}

))}
{/* Per-property P&L */}

Property P&L

Income vs expenses per property (last 6 months)

{propertyPnL.length === 0 ? (
No property data available
) : (
{propertyPnL.map((p) => (

{p.name}

{p.margin}% profit margin

= 0 ? "text-emerald-400" : "text-red-400"}`}> {formatCurrency(p.net)}

= 0 ? "text-emerald-400/60" : "text-red-400/60"}`}> {p.net >= 0 ? : } Net income

Revenue

{formatCurrency(p.revenue)}

0 ? "100%" : "0%" }} />

Expenses

{formatCurrency(p.expense)}

0 ? `${Math.min((p.expense / p.revenue) * 100, 100)}%` : "0%" }} />
))}
)}
) }