"use client"; import { useRouter, usePathname, useSearchParams } from "next/navigation"; import { useTranslations } from "@/components/i18n/i18n-provider"; import { getDocumentIntlLocale } from "@/lib/i18n/browser"; import { Card, CardContent } from "poyraz-ui/atoms"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "poyraz-ui/molecules"; import { Bar, BarChart, CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis, PieChart, Pie, Cell, Legend } from "recharts"; export type AnalyticsData = { metrics: { projectIncomeData: { name: string; value: number }[]; completedTasks: number; activeTasks: number; }; range: string; }; type AnalyticsClientProps = { data: AnalyticsData; }; const COLORS = ["var(--poyraz-primary)", "var(--poyraz-destructive)", "#eab308", "#3b82f6", "#8b5cf6"]; export function AnalyticsClient({ data }: AnalyticsClientProps) { const t = useTranslations(); const router = useRouter(); const pathname = usePathname(); const searchParams = useSearchParams(); const handleRangeChange = (newRange: string) => { const params = new URLSearchParams(searchParams.toString()); params.set("range", newRange); router.push(`${pathname}?${params.toString()}`); }; const { projectIncomeData, completedTasks, activeTasks } = data.metrics; const taskStatusData = [ { name: t("analytics.tasks.completed"), value: completedTasks }, { name: t("analytics.tasks.ongoing"), value: activeTasks } ]; const formatCurrency = (val: number) => { return new Intl.NumberFormat(getDocumentIntlLocale(), { style: "currency", currency: "USD", maximumFractionDigits: 0, }).format(val); }; return (

{t("analytics.title")}

{t("analytics.sections.incomeDistribution")}

{projectIncomeData.length > 0 ? ( {projectIncomeData.map((entry, index) => ( ))} formatCurrency(Number(value ?? 0))} contentStyle={{ backgroundColor: 'var(--poyraz-background)', borderColor: 'var(--poyraz-border)', borderRadius: '0.375rem', }} /> ) : (
{t("analytics.empty")}
)}

{t("analytics.sections.taskStatus")}

{ if (active && payload && payload.length) { return (

{label}

{payload.map((entry, index) => (
{t("analytics.tasks.count")}
{entry.value}
))}
); } return null; }} />
); }