'use client'; /** * Costs Dashboard — Cost trends, types, and cost-to-income ratio analysis. * * Displays: * - 2 KPI cards: total costs, cost-to-income ratio * - Pie chart: costs by type (administration, ownership-purchase, other) * - Line chart: cost trends over time (monthly) * - Bar chart: costs by currency * - Line chart: cost-to-income ratio over time (dual series: costs + income + ratio) * - DateRangeFilter at the top * * Requirements: 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7 */ import { useCostsData } from '@/lib/api/queries'; import { useTranslation } from '@/lib/hooks/useTranslation'; import { formatPercentage } from '@/lib/utils/format'; import { useCurrencyFormatter, useCurrencyAxisFormatter } from '@/lib/hooks/useCurrencyFormatter'; import { chartColors } from '@/lib/constants/theme'; import DateRangeFilter from '@/components/dashboard/DateRangeFilter'; import KpiGrid from '@/components/dashboard/KpiGrid'; import KpiCard from '@/components/dashboard/KpiCard'; import ChartGrid from '@/components/dashboard/ChartGrid'; import ChartCard from '@/components/charts/ChartCard'; import LineChartWidget from '@/components/charts/LineChartWidget'; import PieChartWidget from '@/components/charts/PieChartWidget'; import BarChartWidget from '@/components/charts/BarChartWidget'; export default function CostsPage() { const { data, isLoading } = useCostsData(); const t = useTranslation(); const fmtCurrency = useCurrencyFormatter(); const fmtAxis = useCurrencyAxisFormatter(); if (isLoading || !data) { return (

{t.dashboard.loading}

); } const { kpis, byType, trends, byCurrency, ratioOverTime } = data; return (
{/* Date Range Filter */} {/* KPI Cards */} {/* Charts */} {/* Pie chart: costs by type */} {/* Line chart: cost trends over time */} {/* Bar chart: costs by currency */} {/* Line chart: cost-to-income ratio over time (dual series) */}
); }