'use client' import GlassCard from '../ui/GlassCard' import { formatCell } from './FinanzplanSlide.helpers' interface KPIsTabProps { fpKPIs: Record> de: boolean } export default function KPIsTab({ fpKPIs, de }: KPIsTabProps) { const years = ['y2026', 'y2027', 'y2028', 'y2029', 'y2030'] const v = (yk: string, key: string) => fpKPIs[yk]?.[key] || 0 return (

{de ? 'Wichtige Kennzahlen (pro Jahr)' : 'Key Metrics (per year)'}

{[2026, 2027, 2028, 2029, 2030].map(y => ( ))} {!fpKPIs['y2026'] ? ( ) : [ { label: 'MRR (Dez)', values: years.map(y => v(y, 'mrr')), unit: '\u20AC', bold: true }, { label: 'ARR (Dez \u00d7 12)', values: years.map(y => v(y, 'arr')), unit: '\u20AC', bold: true }, { label: de ? 'Kunden (Dez)' : 'Customers (Dec)', values: years.map(y => v(y, 'customers')), unit: '', bold: false }, { label: de ? 'ACV (Umsatz/Kunden)' : 'ACV (Revenue/Customers)', values: years.map(y => v(y, 'arpu')), unit: '\u20AC', bold: false }, { label: 'Gross Margin', values: years.map(y => v(y, 'grossMargin')), unit: '%', bold: false }, { label: de ? 'Umsatzwachstum (YoY)' : 'Revenue Growth (YoY)', values: years.map(y => v(y, 'nrr')), unit: '%', bold: false }, { label: de ? 'Mitarbeiter' : 'Employees', values: years.map(y => v(y, 'headcount')), unit: '', bold: false }, { label: de ? 'Umsatz/Mitarbeiter' : 'Revenue/Employee', values: years.map(y => v(y, 'revPerEmp')), unit: '\u20AC', bold: false }, { label: de ? 'Personalkosten' : 'Personnel Costs', values: years.map(y => v(y, 'personal')), unit: '\u20AC', bold: false }, { label: 'EBIT', values: years.map(y => v(y, 'ebit')), unit: '\u20AC', bold: true }, { label: de ? 'EBIT-Marge' : 'EBIT Margin', values: years.map(y => v(y, 'ebitMargin')), unit: '%', bold: false }, { label: de ? 'Steuern' : 'Taxes', values: years.map(y => v(y, 'steuern')), unit: '\u20AC', bold: false }, { label: de ? 'Jahres\u00fcberschuss' : 'Net Income', values: years.map(y => v(y, 'netIncome')), unit: '\u20AC', bold: true }, { label: de ? 'Liquidit\u00e4t (Dez)' : 'Cash (Dec)', values: years.map(y => v(y, 'liquiditaet')), unit: '\u20AC', bold: true }, { label: 'Burn Rate', values: years.map(y => v(y, 'burnRate')), unit: '\u20AC/Mo', bold: false }, ].map((row, idx) => ( {row.values.map((val, i) => { const num = typeof val === 'number' ? val : 0 const display = typeof val === 'string' ? val : ( row.unit === '%' ? `${val}%` : row.unit === '\u20AC/Mo' ? formatCell(num) + '/Mo' : formatCell(num) ) return ( ) })} ))}
KPI{y}
{de ? 'Finanzplan wird geladen...' : 'Loading financial plan...'}
{row.label} {display}
) }