'use client' import { useMemo } from 'react' import { PieChart, Pie, Cell, Tooltip, ResponsiveContainer } from 'recharts' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { formatCurrency } from '@/lib/utils' interface KPIExpenseMixChartProps { composition: { class4: number class5: number class6: number class7: number } } const SEGMENT_COLORS = [ 'hsl(var(--chart-1))', 'hsl(var(--chart-3))', 'hsl(var(--chart-2))', 'hsl(var(--chart-4))', ] export function KPIExpenseMixChart({ composition }: KPIExpenseMixChartProps) { const { class4, class5, class6, class7 } = composition const chartData = useMemo( () => [ { name: 'Varor (klass 4)', value: class4 }, { name: 'Drift & lokaler (klass 5)', value: class5 }, { name: 'Övriga externa (klass 6)', value: class6 }, { name: 'Personal (klass 7)', value: class7 }, ].filter((s) => s.value > 0), [class4, class5, class6, class7] ) const total = class4 + class5 + class6 + class7 const totalCompact = new Intl.NumberFormat('sv-SE', { notation: 'compact', maximumFractionDigits: 1, }).format(total) + ' kr' return ( Kostnader per klass {chartData.length === 0 ? (
Inga bokförda kostnader ännu
) : (
{chartData.map((_, index) => ( ))} [formatCurrency(Number(value)), '']} contentStyle={{ fontSize: '12px', borderRadius: '8px', border: '1px solid hsl(var(--border))', backgroundColor: 'hsl(var(--card))', }} />
Totalt {totalCompact}
{chartData.map((seg, i) => (
{seg.name}
))}
)}
) }