import { Box, Chip, Paper, Typography } from '@mui/material' import { HardHat } from 'lucide-react' import { effectiveAnnualBurdenPerSqm } from '../../lib/fitOutUtils' import { DS_TEXT, DS_SURFACE, DS_BORDER } from '../../lib/ds' import { FITOUT_AMORTIZATION_YEARS, FITOUT_ANNUITY_RATE, FIT_OUT_LABELS } from '../../lib/constants' const RATE_PCT = Math.round(FITOUT_ANNUITY_RATE * 100) interface Props { fitOut: string areaSqm: number mabPerSqm: number rentPricePerSqm: number fitOutByLandlord?: boolean } function chf(value: number): string { return `CHF ${Math.round(value).toLocaleString('de-CH')}.–` } interface RowProps { label: string; value: string; sub?: string; isTotal?: boolean; isWarning?: boolean } function Row({ label, value, sub, isTotal, isWarning }: RowProps) { return ( {label} {sub && {sub}} {value} ) } export function FitOutCostPanel({ fitOut, areaSqm, mabPerSqm, rentPricePerSqm, fitOutByLandlord }: Props) { const { fitOutPerSqm } = effectiveAnnualBurdenPerSqm({ fitOut, rentPricePerSqm, mabPerSqm, fitOutByLandlord }) const rentPerYear = rentPricePerSqm * areaSqm const fitOutPerYear = fitOutPerSqm * areaSqm const totalPerYear = rentPerYear + fitOutPerYear const fitOutLabel = FIT_OUT_LABELS[fitOut] ?? fitOut // Kein Aufschlag → entweder Vermieter übernimmt oder Fläche bereits bezugsfertig const hasSurcharge = fitOutPerYear > 0 const isWarning = totalPerYear > rentPerYear * 1.3 const disclaimer = hasSurcharge ? `Ausbaukosten nach CRB/BKP-Normen, annuitätisch über ${FITOUT_AMORTIZATION_YEARS} Jahre zu ${RATE_PCT}% p.a. Tatsächliche Kosten je nach Ausbauumfang.` : null return ( Reale Jahresbelastung {hasSurcharge && ( )} {fitOutByLandlord ? ( ) : !hasSurcharge ? ( ) : ( 0 ? ` abzgl. CHF ${mabPerSqm} MAB` : '') + ` — CHF ${fitOutPerSqm}/m²/Jahr × ${areaSqm.toLocaleString('de-CH')} m²` } /> )} {disclaimer && ( {disclaimer} )} ) }