1import{r as n,j as e}from"./query-vendor-Dp9tfhuh.js";import{I as r}from"./input-go5takyh.js";import{u as w,L as l}from"./index-CgOeqv80.js";import{S as o}from"./slider-BJvr272o.js";import{u as P}from"./useCurrency-BJBh1UrQ.js";import{T as E}from"./trending-up-CRE5UWZg.js";import"./react-vendor-DfslLuwi.js";import"./ui-vendor-DW4RoVmg.js";import"./chart-vendor-BoynbIzZ.js";import"./index-BdQq_4o_.js";const D=()=>{const{t:F}=w(),{formatCurrency:c}=P(),[m,g]=n.useState(1e5),[u,j]=n.useState(15e5),[t,v]=n.useState(2e5),[x,f]=n.useState(200),[p,C]=n.useState(20),[a,b]=n.useState(6),y=x*12*p,I=m+y,O=a>0?m/(a/100):0,h=a>0?I/(a/100):0,N=h-O,V=u+t,S=N-t,i=t>0?S/t*100:0,R=h-V,d=i>=100?{status:"Excellent",color:"text-green-600"}:i>=50?{status:"Good",color:"text-green-500"}:i>=25?{status:"Acceptable",color:"text-yellow-600"}:i>=0?{status:"Marginal",color:"text-orange-500"}:{status:"Negative",color:"text-destructive"};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid gap-6 md:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"purchasePrice",children:"Purchase Price"}),e.jsx(r,{id:"purchasePrice",type:"number",value:u,onChange:s=>j(Number(s.target.value)),className:"font-medium"}),e.jsx(o,{value:[u],onValueChange:([s])=>j(s),min:1e5,max:2e7,step:5e4,className:"mt-2"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"currentNOI",children:"Current Annual NOI"}),e.jsx(r,{id:"currentNOI",type:"number",value:m,onChange:s=>g(Number(s.target.value)),className:"font-medium"}),e.jsx(o,{value:[m],onValueChange:([s])=>g(s),min:0,max:1e6,step:5e3,className:"mt-2"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"renovationCost",children:"Total Renovation Cost"}),e.jsx(r,{id:"renovationCost",type:"number",value:t,onChange:s=>v(Number(s.target.value)),className:"font-medium"}),e.jsx(o,{value:[t],onValueChange:([s])=>v(s),min:1e4,max:2e6,step:1e4,className:"mt-2"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"numberOfUnits",children:"Number of Units"}),e.jsx(r,{id:"numberOfUnits",type:"number",value:p,onChange:s=>C(Number(s.target.value)),className:"font-medium"}),e.jsx(o,{value:[p],onValueChange:([s])=>C(s),min:1,max:200,step:1,className:"mt-2"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"monthlyRentIncrease",children:"Monthly Rent Increase per Unit"}),e.jsx(r,{id:"monthlyRentIncrease",type:"number",value:x,onChange:s=>f(Number(s.target.value)),className:"font-medium"}),e.jsx(o,{value:[x],onValueChange:([s])=>f(s),min:0,max:1e3,step:25,className:"mt-2"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(l,{htmlFor:"exitCapRate",children:"Exit Cap Rate (%)"}),e.jsx(r,{id:"exitCapRate",type:"number",step:"0.1",value:a,onChange:s=>b(Number(s.target.value)),className:"font-medium"}),e.jsx(o,{value:[a],onValueChange:([s])=>b(s),min:3,max:12,step:.1,className:"mt-2"})]})]}),e.jsxs("div",{className:"mt-8 space-y-4 rounded-lg bg-muted p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Renovation ROI"}),e.jsxs("div",{className:"text-right flex items-center gap-2",children:[e.jsx(E,{className:`h-6 w-6 ${d.color}`}),e.jsxs("span",{className:`text-3xl font-bold ${d.color}`,children:[i.toFixed(0),"%"]})]})]}),e.jsx("p",{className:`text-sm ${d.color}`,children:d.status}),e.jsxs("div",{className:"border-t pt-4 grid gap-4",children:[e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-muted-foreground text-sm",children:"New Annual NOI"}),e.jsxs("span",{className:"text-lg font-semibold text-green-600",children:[c(I),e.jsxs("span",{className:"text-sm text-muted-foreground ml-2",children:["(+",c(y),")"]})]})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-muted-foreground text-sm",children:"Value Created"}),e.jsx("span",{className:`text-lg font-semibold ${N>=0?"text-green-600":"text-destructive"}`,children:c(N)})]})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-muted-foreground text-sm",children:"New Property Value"}),e.jsx("span",{className:"text-lg font-semibold",children:c(h)})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-muted-foreground text-sm",children:"Total Equity Created"}),e.jsx("span",{className:`text-lg font-semibold ${R>=0?"text-green-600":"text-destructive"}`,children:c(R)})]})]})]})]}),e.jsxs("div",{className:"text-sm text-muted-foreground bg-muted/50 p-4 rounded-lg",children:[e.jsx("p",{className:"font-medium mb-2",children:"Value-Add Strategy Tips:"}),e.jsxs("ul",{className:"space-y-1",children:[e.jsx("li",{children:"⢠Target properties trading below replacement cost"}),e.jsx("li",{children:"⢠Look for 15-25% rent premiums post-renovation"}),e.jsx("li",{children:"⢠Budget 10-20% contingency for unexpected costs"}),e.jsx("li",{children:"⢠Consider lease-up time in your projections"}),e.jsx("li",{children:"⢠Aim for 100%+ ROI on renovation dollars"})]})]})]})};export{D as ValueAddCalculator};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.