PageSourceSearch

https://aea.org.ua/assets/CalculatorDetailPage-B1DxQjDf.js

js aea.org.ua collected 2026-10-08 05:29:29 UTC 29,041 bytes, 1 lines download raw bytes

1import{y as K,P as f,D as e,x as he,g as te,l as me,A as fe,B as xe,J as h,m as re,L as _,p as $,w as be,b as se,W as ge}from"./index-BALwj4ZM.js";import"./types-BclYKI6m.js";import{e as pe}from"./api-CS_lJla0.js";import"./audience-C78DSFm9.js";import{c as v,i as y,d as z,f as u,b as le,e as j,j as F,S as ve,g as ye,a as we}from"./metadata-D8QT0P8n.js";import{R as w}from"./Reveal-DvS8zPKd.js";import{C as je}from"./calculator-JYaDosLJ.js";import{C as Ke}from"./ConsultationLink-CupgT3-F.js";import{B as ke}from"./Breadcrumbs-B3ZpTi8Q.js";import{B as H}from"./Badge-Cy8WQoAd.js";import{A as ne}from"./arrow-left-M_mTk9aw.js";import{s as Ce,f as Pe}from"./format-C2TxtDVV.js";import"./contracts-DoiXe0dI.js";import"./context-CRzc6VkC.js";const Ue=[["path",{d:"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z",key:"1ptgy4"}],["path",{d:"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97",key:"1sl1rz"}]],Ne=K("droplets",Ue);const Se=[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]],Ye=K("flame",Se);const Me=[["path",{d:"M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",key:"nnexq3"}],["path",{d:"M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12",key:"mt58a7"}]],$e=K("leaf",Me);const Te=[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]],Re=K("lightbulb",Te);const _e=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],Fe=K("rotate-ccw",_e),T={electricityKgKwh:.35,gasKgM3:1.9,heatKgGcal:180,dieselKgLiter:2.68};function Ee(t){return{electricityKgKwh:v(t,"electricity_kg_kwh",T.electricityKgKwh),gasKgM3:v(t,"gas_kg_m3",T.gasKgM3),heatKgGcal:v(t,"heat_kg_gcal",T.heatKgGcal),dieselKgLiter:v(t,"diesel_kg_liter",T.dieselKgLiter)}}function Le(t,s){const l=Ee(s),r=t.electricityKwh*l.electricityKgKwh/1e3,a=t.gasM3*l.gasKgM3/1e3,o=t.heatGcal*l.heatKgGcal/1e3,c=t.dieselLiters*l.dieselKgLiter/1e3,n=r+a+o+c,i=n*(t.reductionPercent/100);return{electricityTon:r,gasTon:a,heatTon:o,dieselTon:c,totalTon:n,reductionTon:i,afterTon:Math.max(0,n-i)}}function Ae(t,s){const l=y(t.currentSource,s),r=t.areaM2*t.specificHeatKwhM2,a=r/l.efficiency,o=a*t.currentHeatPriceUahKwh,c=t.cop>0?r/t.cop:0,n=c*t.electricityPriceUahKwh,i=o-n,d=i>0?t.investmentUah/i:null,m=a*l.co2KgKwh/1e3,b=c*y("electricity",s).co2KgKwh/1e3;return{heatDemandKwhYear:r,currentFinalEnergyKwhYear:a,currentCostUahYear:o,pumpElectricityKwhYear:c,pumpCostUahYear:n,annualSavingsUah:i,paybackYears:d,currentCo2TonYear:m,pumpCo2TonYear:b,co2SavedTonYear:m-b}}function De(t,s){const l=t.hoursPerDay*t.daysPerYear,r=t.fixtures*t.oldPowerW*l/1e3,a=t.fixtures*t.newPowerW*l/1e3,o=Math.max(0,r-a),c=o*t.electricityPriceUahKwh,n=t.fixtures*t.investmentUahPerFixture,i=c>0?n/c:null,d=o*y("electricity",s).co2KgKwh/1e3;return{beforeKwhYear:r,afterKwhYear:a,savedKwhYear:o,annualSavingsUah:c,investmentUah:n,paybackYears:i,co2SavedTonYear:d,savingsRate:r>0?o/r:0}}const Ge=10,He=1.1,Ie=.75,ze=1.2,We={kyiv:[36.79,56,95.5,118.93,136.2,139.4,140,135.9,112.4,80.6,36,28.4],kharkiv:[41.5,58.7,93.7,115.95,136.5,140.5,144.3,143.3,115.7,81.1,40.3,26.6],odesa:[51.2,65.1,107.5,127.5,145.1,144.53,154.6,152.7,127.4,97.2,49.8,41.5],lviv:[40.1,57.3,93.7,114.1,124,125.5,131.8,130.4,107,84.2,44,33]},Be={kyiv:415.3,kharkiv:428.1,odesa:451.83,lviv:387.7},Oe=["kyiv","kharkiv","odesa","lviv"],I=[1,2,3,4,5,6,7,8,9,10,11,12];function q(t,s=z){return s(`calculator.solar.region.${t}`)}function oe(t,s=z){return s(`calculator.solar.month.${t}`)}function Ve(t){const s=I.map((g,x)=>Math.max(0,t.monthlyConsumptionKwh[x]??0)),l=s.reduce((g,x)=>g+x,0),r=s[5]+s[6]+s[7],a=Be[t.region],o=a>0?Math.ceil(r/a/10)*10*ze:0,c=l/365*He*Math.max(0,t.reserveDays)*Ie,n=I.map((g,x)=>{const M=s[x],O=o*We[t.region][x],V=Math.min(M,O),de=M>0?V/M*100:0;return{month:g,consumptionKwh:R(M),generationKwh:R(O),usefulGenerationKwh:R(V),substitutionPercent:R(de)}}),i=n.reduce((g,x)=>g+x.generationKwh,0),d=n.reduce((g,x)=>g+x.usefulGenerationKwh,0),m=n.reduce((g,x)=>g+x.substitutionPercent,0)/n.length,b=o*Math.max(0,t.pvCostUsdKw)*Math.max(0,t.usdRateUah),S=c*Math.max(0,t.batteryCostUsdKwh)*Math.max(0,t.usdRateUah),Y=b+S,ue=t.usdEurRate>0?(o*t.pvCostUsdKw+c*t.batteryCostUsdKwh)*t.usdEurRate:0,G=d*Math.max(0,t.electricityTariffUahKwh);return{pvPowerKw:o,batteryCapacityKwh:c,roofAreaM2:o*Ge,pvCostUah:b,batteryCostUah:S,totalCostUah:Y,totalCostEur:ue,annualSavingsUah:G,paybackYears:G>0?Y/G:null,yearlyConsumptionKwh:l,yearlyGenerationKwh:i,yearlyUsefulGenerationKwh:d,averageSubstitutionPercent:m,monthly:n}}function R(t){return Math.round(t*10)/10}const W={basic:{savingsRate:.18,defaultCostUahM2:900},envelope:{savingsRate:.35,defaultCostUahM2:1800},deep:{savingsRate:.48,defaultCostUahM2:2800}},qe={basic:{savingsRate:"basic_savings_rate",cost:"basic_cost_uah_m2"}
1,envelope:{savingsRate:"envelope_savings_rate",cost:"envelope_cost_uah_m2"},deep:{savingsRate:"deep_savings_rate",cost:"deep_cost_uah_m2"}};function J(t,s=z){return s(`calculator.thermalPackage.${t}`)}function ce(t,s){const l=W[t],r=qe[t];return{...l,savingsRate:v(s,r.savingsRate,l.savingsRate),defaultCostUahM2:v(s,r.cost,l.defaultCostUahM2)}}function Je(t,s){const l=t.areaM2*t.specificHeatKwhM2,r=ce(t.packageKey,s).savingsRate,a=l*r,o=Math.max(0,l-a),c=a*t.energyPriceUahKwh,n=t.areaM2*t.investmentUahM2,i=c>0?n/c:null,d=a*y(t.source,s).co2KgKwh/1e3;return{currentKwhYear:l,savedKwhYear:a,afterKwhYear:o,annualSavingsUah:c,investmentUah:n,paybackYears:i,co2SavedTonYear:d,savingsRate:r}}function A({annualSavingsUah:t,language:s,paybackYears:l,t:r}){return[{label:r("calculator.context.annualSavings"),value:`${u(t,0,s)} ${r("unit.uah")}`},{label:r("calculator.context.payback"),value:le(l,r,s)}]}function k({audience:t,calculator:s,items:l,subtitle:r,t:a}){return{source:"calculator",title:a("calculator.context.resultTitle",{title:s.title}),subtitle:r,topic:"audit",audience:t,url:`/calculators/${s.id}`,items:[{label:a("calculator.formula"),value:s.formulaCode},...l]}}function C({form:t,results:s}){const{t:l}=f();return e.jsxs("div",{className:"grid gap-8 lg:grid-cols-[minmax(0,1fr)_24rem]",children:[e.jsx(w,{children:e.jsxs("div",{className:"rounded-[var(--radius-xl)] border border-[var(--color-border)] bg-[var(--color-surface)] p-5 lg:p-6",children:[e.jsxs("div",{className:"text-eyebrow flex items-center gap-2",children:[e.jsx(je,{size:13})," ",l("calculator.inputParameters")]}),e.jsx("div",{className:"mt-5 grid gap-4 sm:grid-cols-2",children:t})]})}),e.jsx(w,{delay:100,children:e.jsxs("aside",{className:"lg:sticky lg:top-24",children:[e.jsxs("div",{className:"rounded-[var(--radius-xl)] border border-[var(--color-border)] bg-[var(--color-surface)] p-5 lg:p-6",children:[e.jsx("div",{className:"text-eyebrow",children:l("calculator.resultLabel")}),e.jsx("div",{className:"mt-5 grid gap-3",children:s})]}),e.jsx("p",{className:"mt-4 rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-surface-muted)] p-4 text-xs leading-5 text-[var(--color-ink-muted)]",children:l("calculator.disclaimer")})]})})]})}function E({label:t,max:s,min:l,onChange:r,step:a=1,suffix:o,value:c}){return e.jsx(te,{label:t,labelVariant:"eyebrow",children:e.jsx(fe,{type:"number",min:l,max:s,step:a,value:Number.isFinite(c)?c:0,suffix:o,inputClassName:"text-sm font-semibold",onChange:n=>r(Number(n.target.value))})})}function P({fields:t,input:s,setInput:l}){return t.map(({field:r,...a})=>e.jsx(E,{...a,value:Number(s[r]),onChange:o=>l(c=>({...c,[r]:o}))},r))}function ie({demandLabel:t,input:s,setInput:l}){const{t:r}=f();return e.jsx(P,{input:s,setInput:l,fields:[{field:"areaM2",label:r("calculator.field.heatedArea"),suffix:r("unit.area"),min:1},{field:"specificHeatKwhM2",label:t,suffix:r("unit.heatPerAreaYear"),min:1}]})}function L({label:t,onChange:s,options:l,value:r}){return e.jsx(te,{label:t,labelVariant:"eyebrow",children:e.jsx(me,{value:r,onChange:a=>s(a.target.value),children:l.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value))})})}function U({onClick:t}){const{t:s}=f();return e.jsxs(xe,{variant:"outline",type:"button",onClick:t,className:"rounded-[var(--radius-md)]",children:[e.jsx(Fe,{size:14})," ",s("calculator.reset")]})}function p({label:t,tone:s="neutral",value:l}){const r={neutral:"text-[var(--color-ink)]",positive:"text-[var(--color-positive)]",brand:"text-[var(--color-brand-strong)]",warn:"text-[var(--color-warn)]"}[s];return e.jsxs("div",{className:"rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-bg)] p-4",children:[e.jsx("div",{className:"text-[0.68rem] font-semibold uppercase tracking-[0.08em] text-[var(--color-ink-soft)]",children:t}),e.jsx("div",{className:he("mt-1 font-display text-[1.45rem] font-bold tabular-nums",r),children:l})]})}function D({annualSavingsUah:t,paybackYears:s,savingsTone:l="positive"}){const{language:r,t:a}=f();return e.jsxs(e.Fragment,{children:[e.jsx(p,{label:a("calculator.metric.annualSavings"),value:`${u(t,0,r)} ${a("unit.uah")}`,tone:l}),e.jsx(p,{label:a("calculator.metric.payback"),value:le(s,a,r),tone:"brand"})]})}function B({co2SavedTonYear:t,energyLabel:s,energyKwhYear:l}){const{language:r,t:a}=f();return e.jsxs(e.Fragment,{children:[e.jsx(p,{label:s,value:`${u(l,0,r)} ${a("unit.kwhPerYear")}`}),e.jsx(p,{label:a("calculator.metric.co2Reduction"),value:`${u(t,1,r)} ${a("unit.tonPerYear")}`})]})}function N({rows:t,title:s}){return e.jsxs("div",{className:"rounded-[var(--radius-md)] border border-[var(--color-border)] bg-[var(--color-bg)] p-4",children:[e.jsx("div",{className:"text-[0.68rem] font-semibold uppercase tracking-[0.08em] text-[var(--color-ink-soft)]",children:s}),e.jsx("dl",{className:"mt-3 grid gap-2 text-sm",children:t.map(([l,r])=>e.jsxs("div",{className:"flex items-baseline justify-between gap-4",children:[e.jsx("dt",{className:"text-[var(--color-ink-muted)]",children:l}),e.jsx("dd",{className:"text-right font-semibold",children:r})]},l))})]})}const Z={electricityKwh:5e4,gasM3:12e3,heatGcal:0,dieselLiters:0,reductionPercent:25};function Ze({calculator:t,parameters:s,onContextChange:l}){const{language:r,t:a}=f(),[o,c]=h.useState(Z),n=h.useMemo(()=>Le(o,s),[o,s]);h.useEffect(()=>{l(k({calculator:t,subtitle:a("calculator.context.co2Subtitle"),audience:a("program.audience.business"),t:a,items:[{label:a("calculator.context.currentEmissions"),value:`${u(n.totalTon,1,r)} ${a("unit.tonCo2PerYear")}`},{label:a("calculator.context.plannedReduction"),value:`${u(o.reductionPercent,0,r)}%`},{label:a("calculator.context.afterMeasures"),value:`${u(n.afterTon,1,r)} ${a("unit.tonCo2PerYear")}`}]}))},[t,o.reductionPercent,r,l,n,a]);const i=[{field:"electricityKwh",label:a("calculator.field.electricity"),suffix:a("unit.kwhPerYear"),min:0},{field:"gasM3",label:a("calculator.field.naturalGas"),suffix:a("unit.m3PerYear"),min:0},{field:"heatGcal",label:a("calculator.field.districtHeat"),suffix:a("unit.gcalPerYear"),min:0},{field:"dieselLiters",label:a("calculator.field.diesel"),suffix:a("unit.litersPerYear"),min:0},{field:"reductionPercent",label:a("calculator.field.plannedReduction"),suffix:"%",min:0,max:100}];return e.jsx(C,{form:e.jsxs(e.Fragment,{children:[e.jsx(P,{fields:i,input:o,setInput:c}),e.jsx(U,{onClick:()=>c(Z)})]}),results:e.jsxs(e.Fragment,{children:[e.jsx(p,{label:a("calculator.metric.currentEmissions"),value:`${u(n.totalTon,1,r)} ${a("unit.tonCo2PerYear")}`,tone:"brand"}),e.jsx(p,{label:a("calculator.metric.reduction"),value:`${u(n.reductionTon,1,r)} ${a("unit.tonCo2PerYear")}`,tone:"positive"}),e.jsx(p,{label:a("calculator.metric.afterMeasures"),value:`${u(n.afterTon,1,r)} ${a("unit.tonCo2PerYear")}`}),e.jsx(N,{title:a("calculator.block.emissionStructure"),rows:[[a("calculator.row.electricity"),`${u(n.electricityTon,1,r)} ${a("unit.tonCo2")}`],[a("calculator.row.gas"),`${u(n.gasTon,1,r)} ${a("unit.tonCo2")}`],[a("calculator.row.heat"),`${u(n.heatTon,1,r)} ${a("unit.tonCo2")}`],[a("calculator.row.diesel"),`${u(n.dieselTon,1,r)} ${a("unit.tonCo2")}`]]})]})})}const Q={areaM2:350,specificHeatKwhM2:145,currentSource:"gas",currentHeatPriceUahKwh:j.gas.priceUahKwh,electricityPriceUahKwh:j.electricity.priceUahKwh,cop:3.2,investmentUah:85e4};function Qe({calculator:t,parameters:s,onContextChange:l}){const{language:r,t:a}=f(),[o,c]=h.useState(Q),n=h.useMemo(()=>Ae(o,s),[o,s]);return h.useEffect(()=>{l(k({calculator:t,subtitle:a("calculator.context.heatPumpSubtitle"),audience:a("program.audience.osbb"),t:a,items:[{label:a("calculator.context.area"),value:`${u(o.areaM2,0,r)} ${a("unit.area")}`},{label:a("calculator.context.currentSource"),value:F(o.currentSource,a)},{label:a("calculator.label.cop"),value:u(o.cop,1,r)},...A({annualSavingsUah:n.annualSavingsUah,paybackYears:n.paybackYears,language:r,t:a})]}))},[t,o,r,l,n,a]),e.jsx(C,{form:e.jsxs(e.Fragment,{children:[e.jsx(ie,{demandLabel:a("calculator.field.heatDemand"),input:o,setInput:c}),e.jsx(L,{label:a("calculator.field.currentSource"),value:o.currentSource,options:Object.keys(j).map(i=>({value:i,label:F(i,a)})),onChange:i=>{const d=i;c(m=>({...m,currentSource:d,currentHeatPriceUahKwh:y(d,s).priceUahKwh}))}}),e.jsx(P,{input:o,setInput:c,fields:[{field:"currentHeatPriceUahKwh",label:a("calculator.field.currentHeatPrice"),suffix:a("unit.uahPerKwh"),min:0,step:.1},{field:"electricityPriceUahKwh",label:a("calculator.field.electricityPrice"),suffix:a("unit.uahPerKwh"),min:0,step:.1},{field:"cop",label:a("calculator.field.seasonalCop"),suffix:a("calculator.label.scop"),min:1,step:.1},{field:"investmentUah",label:a("calculator.field.projectCost"),suffix:a("unit.uah"),min:0,step:1e4}]}),e.jsx(U,{onClick:()=>c(Q)})]}),results:e.jsxs(e.Fragment,{children:[e.jsx(D,{annualSavingsUah:n.annualSavingsUah,paybackYears:n.paybackYears,savingsTone:n.annualSavingsUah>0?"positive":"warn"}),e.jsx(B,{energyLabel:a("calculator.metric.hpConsumption"),energyKwhYear:n.pumpElectricityKwhYear,co2SavedTonYear:n.co2SavedTonYear}),e.jsx(N,{title:a("calculator.block.costComparison"),rows:[[a("calculator.row.currentSystem"),`${u(n.currentCostUahYear,0,r)} ${a("unit.uahPerYear")}`],[a("calculator.row.heatPump"),`${u(n.pumpCostUahYear,0,r)} ${a("unit.uahPerYear")}`]]})]})})}const Xe={"thermal-savings":Ye,"heat-pump":Ne,lighting:Re,co2:$e,"solar-power":ve};function ea({calculator:t}){const{t:s}=f(),l=`/calculators/${t.id}`,r=$(l);
1return e.jsx(re,{title:t.title,description:t.description,canonicalPath:l,jsonLd:[be([{name:s("common.home"),url:$("/")},{name:s("footer.calculators"),url:$("/energy-window?tab=calculators")},{name:t.shortTitle,url:r}]),{"@context":"https://schema.org","@type":"SoftwareApplication","@id":`${r}#calculator`,name:t.title,description:t.description,url:r,applicationCategory:"BusinessApplication",operatingSystem:"Web",publisher:{"@id":`${$("/")}#organization`}}]})}function aa({slug:t}){const{t:s}=f();return e.jsxs("div",{className:"container-shell py-20 text-center",children:[e.jsx(re,{title:s("calculator.notFoundTitle"),description:s("calculator.notFoundDescription"),canonicalPath:t?`/calculators/${t}`:"/energy-window",robots:"noindex, nofollow"}),e.jsx("h1",{className:"text-h2",children:s("calculator.notFoundTitle")}),e.jsx("p",{className:"mt-3 text-[var(--color-ink-muted)]",children:s("calculator.notFoundDescription")}),e.jsxs(_,{to:"/energy-window?tab=calculators",className:"mt-7 inline-flex items-center gap-2 rounded-[var(--radius-full)] bg-[var(--color-ink)] px-5 py-3 text-sm font-semibold text-[var(--color-bg)]",children:[e.jsx(ne,{size:14})," ",s("calculator.backToList")]})]})}function ta({calculator:t}){const{t:s}=f(),l=Xe[t.id];return e.jsx("section",{className:"border-b border-[var(--color-border)] bg-[var(--color-surface)]",children:e.jsxs("div",{className:"container-shell py-10 lg:py-14",children:[e.jsx(ke,{items:[{label:s("common.home"),to:"/"},{label:s("footer.calculators"),to:"/energy-window?tab=calculators"},{label:t.shortTitle}]}),e.jsxs(w,{className:"mt-6 max-w-3xl",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"flex h-10 w-10 items-center justify-center rounded-[var(--radius-md)] bg-[var(--color-brand-soft)] text-[var(--color-brand-strong)]",children:e.jsx(l,{size:20})}),e.jsx(H,{tone:"positive",size:"md",children:s("calculator.available")}),e.jsx(H,{tone:"outline",size:"md",children:t.formulaCode})]}),e.jsx("h1",{className:"mt-5 text-display-sm text-balance",children:t.title}),e.jsx("p",{className:"mt-5 max-w-2xl text-lede",children:t.description})]})]})})}function ra({context:t}){const{t:s}=f();return e.jsx(w,{children:e.jsxs("div",{className:"mt-10 flex flex-wrap items-center justify-between gap-4 border-t border-[var(--color-border)] pt-6",children:[e.jsxs(_,{to:"/energy-window?tab=calculators",className:"inline-flex items-center gap-2 text-sm font-semibold text-[var(--color-ink)] transition-colors hover:text-[var(--color-brand)]",children:[e.jsx(ne,{size:14})," ",s("calculator.all")]}),e.jsxs(Ke,{context:t,className:"inline-flex items-center gap-2 rounded-[var(--radius-full)] bg-[var(--color-ink)] px-5 py-3 text-sm font-semibold text-[var(--color-bg)] transition-colors hover:bg-[var(--color-anchor)]",children:[s("calculator.checkWithExpert")," ",e.jsx(se,{size:14})]})]})})}const X={fixtures:120,oldPowerW:58,newPowerW:22,hoursPerDay:10,daysPerYear:260,electricityPriceUahKwh:6.5,investmentUahPerFixture:850};function sa({calculator:t,parameters:s,onContextChange:l}){const{language:r,t:a}=f(),[o,c]=h.useState(X),n=h.useMemo(()=>De(o,s),[o,s]);h.useEffect(()=>{l(k({calculator:t,subtitle:a("calculator.context.lightingSubtitle"),audience:a("program.audience.business"),t:a,items:[{label:a("calculator.context.fixtures"),value:`${u(o.fixtures,0,r)} ${a("unit.pieces")}`},...A({annualSavingsUah:n.annualSavingsUah,paybackYears:n.paybackYears,language:r,t:a})]}))},[t,o,r,l,n,a]);const i=[{field:"fixtures",label:a("calculator.field.fixtures"),suffix:a("unit.pieces"),min:1,step:1},{field:"oldPowerW",label:a("calculator.field.currentPower"),suffix:a("unit.wattPerPiece"),min:0,step:1},{field:"newPowerW",label:a("calculator.field.newLedPower"),suffix:a("unit.wattPerPiece"),min:0,step:1},{field:"hoursPerDay",label:a("calculator.field.hoursPerDay"),suffix:a("unit.hoursPerDay"),min:0,step:.5},{field:"daysPerYear",label:a("calculator.field.daysPerYear"),suffix:a("unit.daysPerYear"),min:0,max:365,step:1},{field:"electricityPriceUahKwh",label:a("calculator.field.electricityTariff"),suffix:a("unit.uahPerKwh"),min:0,step:.1},{field:"investmentUahPerFixture",label:a("calculator.field.fixtureInvestment"),suffix:a("unit.uahPerPiece"),min:0,step:50}];return e.jsx(C,{form:e.jsxs(e.Fragment,{children:[e.jsx(P,{fields:i,input:o,setInput:c}),e.jsx(U,{onClick:()=>c(X)})]}),results:e.jsxs(e.Fragment,{children:[e.jsx(D,{annualSavingsUah:n.annualSavingsUah,paybackYears:n.paybackYears}),e.jsx(B,{energyLabel:a("calculator.metric.electricitySavings"),energyKwhYear:n.savedKwhYear,co2SavedTonYear:n.co2SavedTonYear}),e.jsx(N,{title:a("calculator.block.energyConsumption"),rows:[[a("calculator.row.beforeReplacement"),`${u(n.beforeKwhYear,0,r)} ${a("unit.kwhPerYear")}`],[a("calculator.row.afterReplacement"),`${u(n.afterKwhYear,0,r)} ${a("unit.kwhPerYear")}`]]})]})})}function la({programs:t}){const{t:s}=f();return e.jsx(w,{children:e.jsxs("section",{className:"mt-10 rounded-[var(--radius-xl)] border border-[var(--color-border)] bg-[var(--color-surface)] p-5 lg:p-6",children:[e.jsxs("div",{className:"flex flex-wrap items-end justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-eyebrow",children:s("calculator.recommendedEyebrow")}),e.jsx("h2",{className:"mt-2 font-display text-xl font-bold",children:s("calculator.recommendedTitle")})]}),e.jsxs(_,{to:"/energy-window?tab=funding",className:"inline-flex items-center gap-1.5 rounded-full border border-[var(--color-border-strong)] px-4 py-2 text-sm font-semibold",children:[s("calculator.allPrograms")," ",e.jsx(se,{size:14})]})]}),e.jsx("div",{className:"mt-5 grid gap-3 lg:grid-cols-3",children:t.map(l=>e.jsxs(_,{to:`/energy-window/funding/${l.slug}`,className:"group rounded-[var(--radius-lg)] border border-[var(--color-border)] bg-[var(--color-bg)] p-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(H,{tone:Ce(l.status),size:"sm",children:l.status_label}),e.jsx("span",{className:"font-mono text-[0.68rem] font-bold text-[var(--color-ink-soft)]",children:l.code})]}),e.jsx("h3",{className:"mt-3 font-display font-bold group-hover:text-[var(--color-brand)]",children:l.title}),e.jsx("p",{className:"mt-2 line-clamp-2 text-sm text-[var(--color-ink-muted)]",children:l.summary}),e.jsxs("div",{className:"mt-4 flex justify-between gap-2 border-t border-[var(--color-border)] pt-3 text-xs font-semibold text-[var(--color-ink-soft)]",children:[e.jsx("span",{children:l.coverage_text}),e.jsx("span",{children:Pe(l)})]})]},l.id))})]})})}function na({months:t}){const{language:s,t:l}=f();return e.jsx(w,{children:e.jsxs("section",{className:"mt-8 rounded-[var(--radius-xl)] border border-[var(--color-border)] bg-[var(--color-surface)] p-5 lg:p-6",children:[e.jsx("h2",{className:"font-display text-xl font-bold",children:l("calculator.solar.monthlyTable")}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[44rem] text-left text-sm",children:[e.jsx("thead",{className:"text-[0.68rem] uppercase tracking-[0.08em] text-[var(--color-ink-soft)]",children:e.jsxs("tr",{className:"border-b border-[var(--color-border)]",children:[e.jsx("th",{className:"py-3 pr-4",children:l("calculator.solar.table.month")}),e.jsx("th",{className:"py-3 pr-4",children:l("calculator.solar.table.consumption")}),e.jsx("th",{className:"py-3 pr-4",children:l("calculator.solar.table.generation")}),e.jsx("th",{className:"py-3 pr-4",children:l("calculator.solar.table.useful")}),e.jsx("th",{className:"py-3 pr-4",children:l("calculator.solar.table.substitution")})]})}),e.jsx("tbody",{children:t.map(r=>e.jsxs("tr",{className:"border-b border-[var(--color-border)] last:border-0",children:[e.jsx("td",{className:"py-3 pr-4 font-semibold",children:oe(r.month,l)}),e.jsxs("td",{className:"py-3 pr-4 text-[var(--color-ink-muted)]",children:[u(r.consumptionKwh,1,s)," ",l("unit.kwh")]}),e.jsxs("td",{className:"py-3 pr-4 text-[var(--color-ink-muted)]",children:[u(r.generationKwh,1,s)," ",l("unit.kwh")]}),e.jsxs("td",{className:"py-3 pr-4 text-[var(--color-ink-muted)]",children:[u(r.usefulGenerationKwh,1,s)," ",l("unit.kwh")]}),e.jsxs("td",{className:"py-3 pr-4 font-semibold text-[var(--color-positive)]",children:[u(r.substitutionPercent,1,s),"%"]})]},r.month))})]})})]})})}
1const ee={region:"kyiv",monthlyConsumptionKwh:[3600,3400,3800,4200,4700,5200,5600,5400,4600,4100,3700,3500],usdRateUah:42,usdEurRate:.87,electricityTariffUahKwh:10,pvCostUsdKw:800,batteryCostUsdKwh:350,reserveDays:1};function oa({calculator:t,onContextChange:s}){const{language:l,t:r}=f(),[a,o]=h.useState(ee),c=h.useMemo(()=>Ve(a),[a]);h.useEffect(()=>{s(k({calculator:t,subtitle:r("calculator.context.solarSubtitle"),audience:r("program.audience.business"),t:r,items:[{label:r("calculator.context.region"),value:q(a.region,r)},{label:r("calculator.context.pvPower"),value:`${u(c.pvPowerKw,1,l)} ${r("unit.kw")}`},...A({annualSavingsUah:c.annualSavingsUah,paybackYears:c.paybackYears,language:l,t:r})]}))},[t,a.region,l,s,c,r]);const n=[{field:"electricityTariffUahKwh",label:r("calculator.field.electricityTariff"),suffix:r("unit.uahPerKwh"),min:0,step:.1},{field:"usdRateUah",label:r("calculator.field.usdRate"),suffix:r("unit.uahPerUsd"),min:0,step:.01},{field:"usdEurRate",label:r("calculator.field.usdEurRate"),suffix:r("unit.usdPerEur"),min:0,step:1e-4},{field:"pvCostUsdKw",label:r("calculator.field.pvCost"),suffix:r("unit.usdPerKw"),min:0,step:10},{field:"batteryCostUsdKwh",label:r("calculator.field.batteryCost"),suffix:r("unit.usdPerKwh"),min:0,step:10},{field:"reserveDays",label:r("calculator.field.reserveDays"),suffix:r("unit.days"),min:0,step:.1}];function i(d,m){o(b=>({...b,monthlyConsumptionKwh:b.monthlyConsumptionKwh.map((S,Y)=>Y===d?m:S)}))}return e.jsxs(e.Fragment,{children:[e.jsx(C,{form:e.jsxs(e.Fragment,{children:[e.jsx(L,{label:r("calculator.field.region"),value:a.region,options:Oe.map(d=>({value:d,label:q(d,r)})),onChange:d=>o(m=>({...m,region:d}))}),e.jsx(P,{fields:n,input:a,setInput:o}),I.map((d,m)=>e.jsx(E,{label:oe(d,r),suffix:r("unit.kwh"),min:0,step:10,value:a.monthlyConsumptionKwh[m]??0,onChange:b=>i(m,b)},d)),e.jsx(U,{onClick:()=>o(ee)})]}),results:e.jsxs(e.Fragment,{children:[e.jsx(p,{label:r("calculator.metric.pvPower"),value:`${u(c.pvPowerKw,1,l)} ${r("unit.kw")}`,tone:"brand"}),e.jsx(p,{label:r("calculator.metric.batteryCapacity"),value:`${u(c.batteryCapacityKwh,1,l)} ${r("unit.kwh")}`}),e.jsx(D,{annualSavingsUah:c.annualSavingsUah,paybackYears:c.paybackYears}),e.jsx(N,{title:r("calculator.block.solarProject"),rows:[[r("calculator.row.roofArea"),`${u(c.roofAreaM2,0,l)} ${r("unit.area")}`],[r("calculator.row.yearlyGeneration"),`${u(c.yearlyGenerationKwh,0,l)} ${r("unit.kwhPerYear")}`]]})]})}),e.jsx(na,{months:c.monthly})]})}const ae={areaM2:2500,specificHeatKwhM2:165,source:"district_heat",energyPriceUahKwh:j.district_heat.priceUahKwh,packageKey:"envelope",investmentUahM2:W.envelope.defaultCostUahM2};function ca({calculator:t,parameters:s,onContextChange:l}){const{language:r,t:a}=f(),[o,c]=h.useState(ae),n=h.useMemo(()=>Je(o,s),[o,s]);return h.useEffect(()=>{l(k({calculator:t,subtitle:a("calculator.context.thermalSubtitle"),audience:a("program.audience.osbb"),t:a,items:[{label:a("calculator.context.area"),value:`${u(o.areaM2,0,r)} ${a("unit.area")}`},{label:a("calculator.context.heatSource"),value:F(o.source,a)},{label:a("calculator.context.package"),value:J(o.packageKey,a)},...A({annualSavingsUah:n.annualSavingsUah,paybackYears:n.paybackYears,language:r,t:a})]}))},[t,o,r,l,n,a]),e.jsx(C,{form:e.jsxs(e.Fragment,{children:[e.jsx(ie,{demandLabel:a("calculator.field.specificHeatConsumption"),input:o,setInput:c}),e.jsx(L,{label:a("calculator.field.heatSource"),value:o.source,options:Object.keys(j).map(i=>({value:i,label:F(i,a)})),onChange:i=>{const d=i;c(m=>({...m,source:d,energyPriceUahKwh:y(d,s).priceUahKwh}))}}),e.jsx(E,{label:a("calculator.field.energyCost"),suffix:a("unit.uahPerKwh"),min:0,step:.1,value:o.energyPriceUahKwh,onChange:i=>c(d=>({...d,energyPriceUahKwh:i}))}),e.jsx(L,{label:a("calculator.field.package"),value:o.packageKey,options:Object.keys(W).map(i=>({value:i,label:J(i,a)})),onChange:i=>{const d=i;c(m=>({...m,packageKey:d,investmentUahM2:ce(d,s).defaultCostUahM2}))}}),e.jsx(E,{label:a("calculator.field.investmentM2"),suffix:a("unit.uahPerM2"),min:0,step:50,value:o.investmentUahM2,onChange:i=>c(d=>({...d,investmentUahM2:i}))}),e.jsx(U,{onClick:()=>c(ae)})]}),results:e.jsxs(e.Fragment,{children:[e.jsx(D,{annualSavingsUah:n.annualSavingsUah,paybackYears:n.paybackYears}),e.jsx(B,{energyLabel:a("calculator.metric.energySavings"),energyKwhYear:n.savedKwhYear,co2SavedTonYear:n.co2SavedTonYear}),e.jsx(N,{title:a("calculator.block.heatBalance"),rows:[[a("calculator.row.beforeMeasures"),`${u(n.currentKwhYear,0,r)} ${a("unit.kwhPerYear")}`],[a("calculator.row.afterMeasures"),`${u(n.afterKwhYear,0,r)} ${a("unit.kwhPerYear")}`]]})]})})}function ia(t){switch(t.calculator.id){case"thermal-savings":return e.jsx(ca,{...t});case"heat-pump":return e.jsx(Qe,{...t});case"lighting":return e.jsx(sa,{...t});case"co2":return e.jsx(Ze,{...t});case"solar-power":return e.jsx(oa,{...t})}}function ua(t,s){return{source:"calculator",title:s("calculator.context.title",{title:t.title}),subtitle:t.description,topic:"audit",audience:s("program.audience.osbb"),url:`/calculators/${t.id}`,items:[{label:s("calculator.formula"),value:t.formulaCode},{label:s("calculator.inputsLabel"),value:t.inputs},{label:s("calculator.resultLabel"),value:t.output}]}}
1function da(t){const[s,l]=h.useState(null);return h.useEffect(()=>{let r=!0;return l(null),t?(pe.calculatorConfig(t).then(a=>r&&l(a)).catch(()=>r&&l(null)),()=>{r=!1}):()=>{r=!1}},[t]),s}function ha(){const{t}=f(),{slug:s}=ge(),l=h.useMemo(()=>ye(s,t),[s,t]),r=da(l?.id),[a,o]=h.useState(null),c=h.useMemo(()=>l?we(l,r):null,[l,r]);return c?e.jsxs(e.Fragment,{children:[e.jsx(ea,{calculator:c}),e.jsxs("div",{className:"bg-[var(--color-bg)]",children:[e.jsx(ta,{calculator:c}),e.jsxs("section",{className:"container-shell py-10 lg:py-14",children:[e.jsx(ia,{calculator:c,parameters:r?.parameters,onContextChange:o}),!!r?.recommended_programs?.length&&e.jsx(la,{programs:r.recommended_programs}),e.jsx(ra,{context:a??ua(c,t)})]})]})]}):e.jsx(aa,{slug:s})}function Ua(){return e.jsx(ha,{})}export{Ua as CalculatorDetailPage};

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.