PageSourceSearch

https://ebatt.ai/_next/static/chunks/3859.1499748e90acce80.js

js ebatt.ai collected 2026-10-05 13:33:28 UTC 70,397 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3859],{5590:(e,t,a)=>{a.d(t,{p:()=>n});var i=a(95155);function n(e){let{variant:t="default",value:a,onChange:n,placeholder:s,suffix:r,error:l,id:o,name:c,type:d="text",className:m=""}=e,x="error"===t||!!l,u="disabled"===t,h="".concat(o,"-error");return(0,i.jsxs)("div",{className:"flex flex-col",children:[(0,i.jsxs)("div",{className:"relative",children:[(0,i.jsx)("input",{id:o,name:c,type:d,value:a,onChange:e=>n(e.target.value),placeholder:s,disabled:u,"aria-invalid":x?"true":void 0,"aria-describedby":x?h:void 0,className:["w-full min-h-[44px] px-3 bg-surface border text-ink font-sans rounded-sm","transition-colors placeholder:text-ink-4","focus-visible:ring-2 focus-visible:ring-rim focus-visible:ring-offset-2 focus-visible:outline-none",x?"border-fault":"border-rim-hair",u?"opacity-50 cursor-not-allowed":"",r?"pr-10":"",m].filter(Boolean).join(" ")}),r&&(0,i.jsx)("span",{className:"absolute right-3 top-1/2 -translate-y-1/2 text-ink-2 pointer-events-none",children:r})]}),x&&l&&(0,i.jsx)("span",{id:h,className:"text-fault text-sm mt-1",children:l})]})}a(12115)},23859:(e,t,a)=>{a.r(t),a.d(t,{CosmicIEEE485SizingCalculator:()=>eS,default:()=>eA});var i=a(95155),n=a(12115),s=a(67909),r=a(52619),l=a.n(r),o=a(52056),c=a(80534),d=a(86651),m=a(26265),x=a(73850),u=a(68425),h=a(47734),p=a(73697),g=a(33420),f=a(37665),v=a(78928),j=a(63802);let b={grid:"var(--rim-hair)",text:"var(--ink-2)",fault:"var(--fault)",multiLine:["var(--rim)","var(--warm)","var(--ok)","var(--fault)","var(--ink-2)"]};var k=a(31799),y=a(83504),N=a(31166),w=a(24401),C=a(61498),F=a(32031),S=a(4750),A=a(43698),E=a(2595),T=a(5590),R=a(54604),D=a(37642);let M={"ieee485-k-factor":{kicker:"CAPACITY RATING FACTOR",title:"Capacity rating factor (Kt)",body:(0,i.jsx)("p",{children:"Kt converts a required discharge current into the cell capacity needed to sustain it for a given duration. The tool looks Kt up from a built-in table for the selected battery chemistry and interpolates logarithmically on the discharge duration, then divides each load-step contribution by it."})},"ieee485-aging-factor":{kicker:"SIZING FACTOR",title:"Aging factor",body:(0,i.jsx)("p",{children:"Accounts for the capacity a battery loses over its service life, so the bank still meets the duty cycle at end of life. It multiplies the required capacity linearly. Leave the Aging Factor field blank and the selected chemistry's default is applied — VRLA 1.25, VLA (flooded) 1.25, Lithium-Ion 1.1, NiCad 1.2. Enter a value between 1.0 and 2.0 to override it."})},"ieee485-design-margin":{kicker:"SIZING FACTOR",title:"Design margin",body:(0,i.jsx)("p",{children:"Spare capacity for load growth and for uncertainty in the duty cycle. The Design Margin input on this form is the margin the calculation applies — the default 1.15 adds 15%, multiplying the required capacity. The margin shown under Industry Type is a recommendation for that sector; it does not change this calculation on its own."})},"ieee485-temperature-correction":{kicker:"SIZING FACTOR",title:"Temperature correction factor",body:(0,i.jsxs)("p",{children:["Below the 25 \xb0C reference temperature a battery delivers less capacity, so the required capacity is multiplied by K_temp, which the tool reads from IEEE 485-2020 ",D.jE," Table 1, interpolating linearly between the two adjacent tabulated rows and rounding to two decimals. Table 1 is scoped to cells of nominal 1.215 specific gravity rated at 25 \xb0C; consult the manufacturer for the specific battery. Below 4.4 \xb0C — the coldest tabulated row — K_temp is held at 1.300, which is not an IEEE 485 value: the standard defers below-range temperatures to the manufacturer. At or above 25 \xb0C K_temp is exactly 1.0, and"," ",D.jE," treats sizing at the standard temperature as conservative practice — the extra capacity a warmer cell delivers is retained as design margin rather than sized away."]})},"ieee485-duty-cycle-method":{kicker:"SIZING METHOD",title:"Duty cycle method",body:(0,i.jsx)("p",{children:"The load profile is divided into periods at each point where the load changes. For every period where the load increases, the tool adds a contribution of ΔI \xd7 (time remaining in the cycle \xf7 60) \xf7 Kt, where ΔI is the increase in current. Periods where the load falls contribute nothing. The largest running total across the profile sets the uncorrected cell size, which is then multiplied by the temperature, aging and design-margin factors and rounded up."})},"en50272-2-hydrogen-evolution":{kicker:"EN 50272-2 \xb7 ANNEX C",title:"Hydrogen evolution rate",body:null},"en50272-2-ventilation-flow":{kicker:"EN 50272-2 \xb7 \xa78.2",title:"Required ventilation airflow",body:null},"en50272-2-dilution-factor":{kicker:"EN 50272-2 \xb7 \xa78.2.2",title:"Hydrogen dilution factor",body:null}};var I=a(3870),P=a(92599),V=a(84028),O=a(7451),L=a(71991),z=a(57062),B=a(32948),_=a(58860),q=a(27032),W=a(40178);let Y=[["temperature","sizingTemperatureC"],["designMargin","designMarginFactor"],["agingFactor","agingFactor"],["endOfDischargeVoltage","endOfDischargeVpc"]];function H(e){let t=parseFloat(e);return Number.isFinite(t)?t:null}async function K(e,t){try{var a,i;let n=await fetch("/api/v1/projects/".concat(encodeURIComponent(e),"/requirements"),{method:"POST",credentials:"include",cache:"no-store",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),s=await n.json().catch(()=>({}));if(n.ok&&!0===s.success)return{ok:!0,message:null};return{ok:!1,message:null!=(i=null==(a=s.error)?void 0:a.message)?i:"HTTP ".concat(n.status)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:"Network error"}}}
1var Q=a(84671),G=a(21171),U=a(78346),$=a(54630),Z=a(48874),J=a(8735),X=a(61043),ee=a(64033),et=a(30429),ea=a(41713),ei=a(69444),en=a(22960);let es={no_hydrogen:"This chemistry does not produce hydrogen.",unauthenticated:"Please log in to derive a ventilation design.",rate_limited:"Rate limit exceeded — please try again shortly.",error:"Could not derive a ventilation design. Please try again."};async function er(e){let t,a;try{t=await fetch("/api/v1/ventilation/design",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({bridge:e})})}catch(e){return{ok:!1,reason:"error",message:e instanceof Error?e.message:es.error}}if(!t.ok){let e=400===t.status?"no_hydrogen":401===t.status?"unauthenticated":429===t.status?"rate_limited":"error",a=null;try{a=await t.json()}catch(e){a=null}return{ok:!1,reason:e,message:function(e,t){let a=null==e?void 0:e.error;return"string"==typeof(null==a?void 0:a.message)&&a.message.length>0?a.message:es[t]}(a,e)}}try{a=await t.json()}catch(e){return{ok:!1,reason:"error",message:e instanceof Error?e.message:es.error}}let i=a;if(!(null==i?void 0:i.success)||!i.result)return{ok:!1,reason:"error",message:es.error};let{bridgeData:n,...s}=i.result;return{ok:!0,result:s,bridgeData:n}}var el=a(46865);function eo(e){let{result:t,bridgeData:a}=e,{hybridSplit:n,fanSystem:s,compliance:r,warnings:l,recommendations:o}=t;return(0,i.jsxs)(S.T,{level:1,className:"p-4 space-y-3",children:[(0,i.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,i.jsx)("p",{className:"font-mono text-xs text-ink-3 uppercase tracking-wider",children:"EN 50272-2 Ventilation Design"}),(0,i.jsx)(F.a,{status:n.isCompliant?"ok":"fault",label:n.isCompliant?"Compliant":"Review"})]}),(0,i.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("p",{className:"font-mono text-[10px] text-ink-3 uppercase tracking-wider",children:"H₂ production"}),(0,i.jsxs)("span",{children:[(0,i.jsx)(C.V,{size:"lg",color:"rim",weight:600,children:a.hydrogenProductionRate.toFixed(3)}),(0,i.jsx)("span",{className:"ml-1 font-mono text-xs text-ink-3",children:"m\xb3/h"})]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("p",{className:"font-mono text-[10px] text-ink-3 uppercase tracking-wider",children:"Corrected flow"}),(0,i.jsxs)("span",{children:[(0,i.jsx)(C.V,{size:"lg",color:"rim",weight:600,children:t.correctedVentilationFlow.toFixed(1)}),(0,i.jsx)("span",{className:"ml-1 font-mono text-xs text-ink-3",children:"m\xb3/h"})]})]})]}),(0,i.jsxs)("dl",{className:"grid grid-cols-2 gap-x-4 gap-y-1 text-xs",children:[(0,i.jsx)("dt",{className:"text-ink-3",children:"Natural flow"}),(0,i.jsx)("dd",{className:"text-ink-2 text-right font-mono",children:"".concat(n.naturalFlow.toFixed(1)," m\xb3/h")}),(0,i.jsx)("dt",{className:"text-ink-3",children:"Forced flow"}),(0,i.jsx)("dd",{className:"text-ink-2 text-right font-mono",children:"".concat(n.forcedFlow.toFixed(1)," m\xb3/h")}),(0,i.jsx)("dt",{className:"text-ink-3",children:"Minimum aperture"}),(0,i.jsx)("dd",{className:"text-ink-2 text-right font-mono",children:"".concat(n.minimumAperture.toFixed(0)," cm\xb2")})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("p",{className:"font-mono text-[10px] text-ink-3 uppercase tracking-wider mb-1",children:"Fan system"}),(0,i.jsxs)("dl",{className:"grid grid-cols-2 gap-x-4 gap-y-1 text-xs",children:[(0,i.jsx)("dt",{className:"text-ink-3",children:"Fans (working + N+1)"}),(0,i.jsx)("dd",{className:"text-ink-2 text-right font-mono",children:"".concat(s.baseFans," + ").concat(s.redundancy," = ").concat(s.totalFans)}),(0,i.jsx)("dt",{className:"text-ink-3",children:"Per-fan flow"}),(0,i.jsx)("dd",{className:"text-ink-2 text-right font-mono",children:"".concat(s.perFanFlow.toFixed(1)," m\xb3/h")}),(0,i.jsx)("dt",{className:"text-ink-3",children:"Duct diameter"}),(0,i.jsx)("dd",{className:"text-ink-2 text-right font-mono",children:"".concat(s.ductDiameter.toFixed(0)," mm")})]})]}),(0,i.jsxs)("dl",{className:"grid grid-cols-2 gap-x-4 gap-y-1 text-xs",children:[(0,i.jsx)("dt",{className:"text-ink-3",children:"Aperture area"}),(0,i.jsx)("dd",{className:"text-ink-2 text-right font-mono",children:"".concat(t.apertureArea.toFixed(0)," cm\xb2")}),(0,i.jsx)("dt",{className:"text-ink-3",children:"Equivalent diameter"}),(0,i.jsx)("dd",{className:"text-ink-2 text-right font-mono",children:"".concat(t.equivalentDiameter.toFixed(0)," mm")})]}),(0,i.jsx)("div",{"data-testid":"vent-compliance",className:"space-y-1",children:r.map((e,t)=>(0,i.jsx)("div",{title:e.description,children:(0,i.jsx)(F.a,{status:e.passed?"ok":"fault",label:e.standard})},"".concat(e.standard,"-").concat(t)))}),l.length>0&&(0,i.jsxs)("div",{"data-testid":"vent-warnings",className:"border-t border-rim-hair pt-2",children:[(0,i.jsx)("p",{className:"font-mono text-[10px] text-warn uppercase tracking-wider mb-1",children:"Warnings"}),(0,i.jsx)("ul",{className:"text-xs text-warn/90 space-y-1 list-disc list-inside",children:l.map((e,t)=>(0,i.jsx)("li",{children:e},t))})]}),o.length>0&&(0,i.jsxs)("div",{"data-testid":"vent-recommendations",className:"border-t border-rim-hair pt-2",children:[(0,i.jsx)("p",{className:"font-mono text-[10px] text-ink-3 uppercase tracking-wider mb-1",children:"Recommendations"}),(0,i.jsx)("ul",{className:"text-xs text-ink-2 space-y-1 list-disc list-inside",children:o.map((e,t)=>(0,i.jsx)("li",{children:e},t))})]})]})}let ec=[{value:"Float",label:"Float"},{value:"Boost",label:"Boost"}];function ed(e){var t,a,s,r,l,o;let{initial:c,onSubmit:d,disabled:m=!1}
1=e,[x,u]=(0,n.useState)(null!=(t=c.roomLength)?t:""),[h,p]=(0,n.useState)(null!=(a=c.roomWidth)?a:""),[g,f]=(0,n.useState)(null!=(s=c.roomHeight)?s:""),[v,j]=(0,n.useState)(null!=(r=c.temperatureCelsius)?r:""),[b,k]=(0,n.useState)(null!=(l=c.altitudeMeters)?l:""),[y,w]=(0,n.useState)(null!=(o=c.chargingMethod)?o:"Float"),C=!m&&""!==x&&""!==h&&""!==g;return(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("p",{className:"font-mono text-xs text-ink-3 uppercase tracking-wider",children:"Room parameters"}),(0,i.jsxs)("div",{className:"grid grid-cols-1 gap-3",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"vent-room-length",className:"block font-mono text-[10px] text-ink-3 uppercase tracking-wider mb-1",children:"Length (m)"}),(0,i.jsx)(E.Q,{id:"vent-room-length",name:"vent-room-length",value:x,onChange:u,min:1,max:100,step:.1,suffix:"m"})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"vent-room-width",className:"block font-mono text-[10px] text-ink-3 uppercase tracking-wider mb-1",children:"Width (m)"}),(0,i.jsx)(E.Q,{id:"vent-room-width",name:"vent-room-width",value:h,onChange:p,min:1,max:100,step:.1,suffix:"m"})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"vent-room-height",className:"block font-mono text-[10px] text-ink-3 uppercase tracking-wider mb-1",children:"Height (m)"}),(0,i.jsx)(E.Q,{id:"vent-room-height",name:"vent-room-height",value:g,onChange:f,min:1,max:20,step:.1,suffix:"m"})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"vent-temperature",className:"block font-mono text-[10px] text-ink-3 uppercase tracking-wider mb-1",children:"Temperature (\xb0C)"}),(0,i.jsx)(E.Q,{id:"vent-temperature",name:"vent-temperature",value:v,onChange:j,min:-40,max:60,step:1,suffix:"\xb0C"})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"vent-altitude",className:"block font-mono text-[10px] text-ink-3 uppercase tracking-wider mb-1",children:"Altitude (m)"}),(0,i.jsx)(E.Q,{id:"vent-altitude",name:"vent-altitude",value:b,onChange:k,min:-200,max:3e3,step:10,suffix:"m"})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"vent-charging-method",className:"block font-mono text-[10px] text-ink-3 uppercase tracking-wider mb-1",children:"Charging method"}),(0,i.jsx)(A.l,{id:"vent-charging-method",name:"vent-charging-method",value:y,onChange:e=>w("Boost"===e?"Boost":"Float"),options:ec})]})]}),(0,i.jsx)(N.$,{variant:"primary",disabled:!C,onClick:function(){C&&d({roomLength:Number(x),roomWidth:Number(h),roomHeight:Number(g),temperatureCelsius:""===v?25:Number(v),altitudeMeters:""===b?0:Number(b),chargingMethod:y})},children:"Derive ventilation"})]})}var em=a(87401);function ex(e,t){return t>0?(e/t).toFixed(4):"0.0000"}var eu=a(4167),eh=a(19636),ep=a(84382),eg=a(94465),ef=a(67244),ev=a(19232),ej=a(62453),eb=a(69080),ek=a(86996);function ey(e){let{open:t,onClose:s,prefill:r,projectId:l,projectName:o,onAccepted:c}=e,d=(0,ej.F)((0,ek.N8)(r)),m=function(){let{save:e}=(0,em.p)(),[t,i]=n.useState(!1),[s,r]=n.useState(null);return{saveToProject:n.useCallback(async t=>{let{projectId:s,projectName:l,form:o,result:c}=t;i(!0),r(null);try{let t=new Date().toISOString(),i=(0,eb.On)(o,c,t),r=(0,eb.qN)(i,{projectName:null!=l?l:void 0,generatedAt:t}),{pdf:d}=await Promise.all([a.e(4792),a.e(8247),a.e(1278),a.e(9788),a.e(1746),a.e(7509),a.e(6378),a.e(2858)]).then(a.bind(a,80213)),{default:m}=await Promise.all([a.e(4792),a.e(8247),a.e(1278),a.e(9788),a.e(1746),a.e(7509),a.e(6378),a.e(1846)]).then(a.bind(a,32109)),x=await d(n.createElement(m,r)).toBlob();await e({pdfBlob:x,projectId:s,docType:"DCSC_REPORT",status:"S0",title:"DC System Configuration"});let u=(0,eb.ve)({snapshot:i,priorStage:0}),h=await fetch("/api/v1/projects/".concat(encodeURIComponent(s)),{method:"PATCH",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)});if(!h.ok)throw Error("project patch failed: ".concat(h.status));return{chargerRatingA:c.requirement.optimumChargerContinuousRatingA,batteryCapacityAh:c.requirement.optimumBatteryCapacityAh}}catch(e){throw r(e instanceof Error?e.message:"Failed to save charger"),e}finally{i(!1)}},[e]),saving:t,error:s}}(),x=n.useCallback(async()=>
1{if(l&&"ready"===d.recommendStatus&&d.recommendation)try{let e=await m.saveToProject({projectId:l,projectName:o,form:d.form,result:d.recommendation});c(e),s()}catch(e){}},[l,o,d.form,d.recommendation,d.recommendStatus,m,c,s]);return t?(0,i.jsx)(eg.a,{open:t,onClose:s,title:"Add Charger",widthClass:"max-w-3xl",children:(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)("div",{className:"space-y-1 text-xs text-ink-3",children:[(0,i.jsxs)("p",{"data-testid":"add-charger-procurement-figure",children:["IEEE 485 required capacity:"," ",(0,i.jsxs)("span",{className:"font-mono tabular-nums text-ink",children:[r.requiredCapacityAh," Ah"]})," ","— ",V.n4]}),r.voltageSnapped&&(0,i.jsxs)("p",{children:["Sized bus ",r.rawSystemVoltage," V snapped to the nearest catalog voltage ",r.nominalBatteryVoltage," V — no catalog systems exist at the exact sized voltage."]})]}),(0,i.jsx)(ef.X,{state:d,showSignInHint:!0}),"ready"===d.recommendStatus&&d.recommendation&&(0,i.jsxs)("div",{className:"space-y-2",children:[d.recommendation.requirement.optimumBatteryCapacityAh<r.requiredCapacityAh&&(0,i.jsx)("p",{role:"note","data-testid":"add-charger-procurement-floor",className:"p-3 rounded border border-warn/30 bg-warn/10 text-sm text-ink-2",children:V.RN}),(0,i.jsx)(ev.W,{result:d.recommendation}),(0,i.jsx)("p",{"data-testid":"add-charger-design-aid",className:"text-xs text-ink-3",children:V.vo})]}),(0,i.jsx)("div",{className:"space-y-2 border-t border-rim-hair pt-3",children:null===l?(0,i.jsx)("p",{className:"text-sm text-ink-3",children:"Set an active project to save this charger."}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(N.$,{variant:"primary",disabled:m.saving||"ready"!==d.recommendStatus,onClick:()=>{x()},children:m.saving?"Saving…":"Accept & save charger"}),null!==m.error&&(0,i.jsx)("p",{className:"text-sm text-fault",children:m.error})]})})]})}):null}let eN=(0,s.default)(()=>Promise.all([a.e(4792),a.e(8247),a.e(1278),a.e(9788),a.e(1746),a.e(7509),a.e(6378),a.e(7285),a.e(2636)]).then(a.bind(a,30905)),{loadableGenerated:{webpack:()=>[30905]},ssr:!1,loading:()=>null}),ew=(0,s.default)(()=>Promise.all([a.e(4792),a.e(8247),a.e(1278),a.e(9788),a.e(1746),a.e(7509),a.e(6378),a.e(8230),a.e(1279)]).then(a.bind(a,70402)),{loadableGenerated:{webpack:()=>[70402]},ssr:!1,loading:()=>null}),eC=(0,s.default)(()=>Promise.all([a.e(4792),a.e(8247),a.e(1278),a.e(9788),a.e(1746),a.e(7509),a.e(6378),a.e(8230),a.e(7040)]).then(a.bind(a,93963)).then(e=>e.SLDSaveButton),{loadableGenerated:{webpack:()=>[93963]},ssr:!1,loading:()=>null});function eF(e){let{methodKey:t}=e,{kicker:a,title:n,body:s}=M[t];return(0,i.jsx)(R.j,{kicker:a,title:n,body:s,triggerLabel:"How ".concat(n," is calculated"),children:(0,i.jsx)("span",{"aria-hidden":"true","data-testid":"method-hint-".concat(t),className:"ml-1.5 text-ink-3 hover:text-ink-bright cursor-help",children:"?"})})}function eS(){var e,t,s,r,R,M,es,ec,eg,ef;let{batteryType:ev,industry:ej,systemVoltage:eb,temperature:eS,designMargin:eA,agingFactor:eE,endOfDischargeVoltage:eT,equalizeVoltage:eR,minOperatingVoltage:eD,maxChargeVoltage:eM,selectedBattery:eI,selectedBatteryDischargeRates:eP,showBatteryPicker:eV,showDischargeRates:eO,selectionResult:eL,selectionLoading:ez,selectionError:eB,loads:e_,calculatedCapacity:eq,calculationDetails:eW,warnings:eY,ieee485Result:eH,isCalculating:eK,expandedSections:eQ,chartDataUrl:eG,isClient:eU,isChartMounted:e$,setBatteryType:eZ,setIndustry:eJ,setSystemVoltage:eX,setTemperature:e0,setDesignMargin:e1,setAgingFactor:e2,setEndOfDischargeVoltage:e3,setEqualizeVoltage:e4,setMinOperatingVoltage:e5,setMaxChargeVoltage:e8,setLoads:e6,setShowBatteryPicker:e7,setShowDischargeRates:e9,isAuthenticatedRef:te,designMarginError:tt,agingFactorError:ta,loadErrors:ti,availableVoltages:tn,chartData:ts,toggleSection:tr,handleBatterySelected:tl,handleCatalogBatterySelected:to,handleClearBattery:tc,handleFindBestBattery:td,addLoad:tm,removeLoad:tx,updateLoad:tu,handleVoltageChange:th,calculateCapacity:tp,restoreResult:tg}=(0,k.u)(),tf=null!=(e=O.du[ev])?e:O.du.vrla,tv=O.E_.filter(e=>e.appliesTo.includes(ev)).map(e=>{var t;return"".concat(e.construction," ").concat(null!=(t=e.equalizeVpc)?t:"none required").concat(e.note?" (".concat(e.note,")"):"")}).join(";
1 "),[tj,tb]=(0,n.useState)(!1),[tk,ty]=(0,n.useState)(null),[tN,tw]=(0,n.useState)(null),[tC,tF]=(0,n.useState)(!1),[tS,tA]=(0,n.useState)(!1),[tE,tT]=(0,n.useState)(null),tR=(0,n.useRef)(null),[tD,tM]=(0,n.useState)(null),[tI,tP]=(0,n.useState)(null),tV=(0,n.useRef)(void 0),[tO,tL]=(0,n.useState)(null),[tz,tB]=(0,n.useState)(null),[t_,tq]=(0,n.useState)(null),[tW,tY]=(0,n.useState)(!1),[tH,tK]=(0,n.useState)(!1),[tQ,tG]=(0,n.useState)(null),[tU,t$]=(0,n.useState)(!1),{save:tZ,isSaving:tJ,error:tX}=(0,em.p)(),[t0,t1]=(0,n.useState)(!1),[t2,t3]=(0,n.useState)(null),[t4,t5]=(0,n.useState)("C/10"),t8=(0,n.useMemo)(()=>eH?(0,ek.Yt)({loads:e_,systemVoltage:eb,result:eH,recharge:t4}):null,[eH,e_,eb,t4]),t6=(0,n.useRef)(!1),t7=(0,n.useRef)(!1),t9=(0,n.useRef)(null),ae=(0,n.useRef)(null),{state:at,reportResult:aa}=(0,z.S)("sizing"),ai=null;try{ai=(0,_.O)()}catch(e){}let an=null!=(t=null==ai?void 0:ai.project)?t:null,as=null!=(s=null==ai?void 0:ai.patchContext)?s:null,ar=null!=(r=null==ai?void 0:ai.advanceStage)?r:null;(0,n.useEffect)(()=>{if(!at||t6.current||"ready"!==at.stepStatus&&"running"!==at.stepStatus&&"complete"!==at.stepStatus)return;let e=(0,B.Z)(at);e&&(t6.current=!0,eZ(e.batteryType),eX(e.systemVoltage),e0(e.temperature),e1(e.designMargin),e.loads.length>0&&e6(e.loads),tF(!0))},[at,eZ,eX,e0,e1,e6]),(0,n.useEffect)(()=>{var e,t;if(tS||!an||tC)return;let a=(0,q.Gs)(an,{batteryType:ev,industry:ej,systemVoltage:eb,temperature:eS,designMargin:eA,loads:[]});eZ(a.batteryType),eJ(a.industry),eX(a.systemVoltage),e0(a.temperature),e1(a.designMargin),void 0!==a.agingFactor&&e2(a.agingFactor),void 0!==a.endOfDischargeVoltage&&e3(a.endOfDischargeVoltage),a.savedResult&&(ae.current=a.savedResult,t9.current=a.savedResult,t7.current=!0,tT(a.savedResult),tg(a.savedResult)),tR.current={temperature:a.temperature,designMargin:a.designMargin,agingFactor:null!=(e=a.agingFactor)?e:eE,endOfDischargeVoltage:null!=(t=a.endOfDischargeVoltage)?t:eT},a.loads.length>0&&e6(a.loads);let i=a.defaultLoadMinutes;void 0!==i&&e6(e=>1===e.length?[{...e[0],endTime:e[0].startTime+i,duration:i}]:e),tA(!0)},[an,tS,tC]),(0,n.useEffect)(()=>{eH&&at&&!t7.current&&(t7.current=!0,aa({result:eH,resultSummary:"".concat(eH.requiredCellCapacity,"Ah at ").concat(parseFloat(eb)||48,"V")}))},[eH,at,aa,eb]),(0,n.useEffect)(()=>{var e;if(!eH||eH===ae.current||!an||!as)return;ae.current=eH;let t=(0,q.Mb)({batteryType:ev,industry:ej,systemVoltage:eb,ieee485Result:eH,currentStage:an.stage,currentApplication:an.application,loads:e_});tV.current=t.loadProfile,as(t),tP((e=(0,W.X)(e_)).ok?null:"idle"===e.reason?"no load runs from ".concat(e.fromMinutes," to ").concat(e.toMinutes," min, and a project load profile has no idle periods"):"a load row has an invalid start, end or power");let a={temperature:eS,designMargin:eA,agingFactor:eE,endOfDischargeVoltage:eT},i=tR.current?function(e,t){let a={};for(let[i,n]of Y){let s=H(t[i]);null!==s&&s!==H(e[i])&&(a[n]=s)}return Object.keys(a).length>0?{values:a,source:"calculator:ieee485"}:null}(tR.current,a):null;i?K(an.id,i).then(e=>{tM(e.ok?null:e.message),e.ok&&(tR.current=a)}):tM(null)},[eH]),(0,n.useEffect)(()=>{eH&&an&&ar&&t9.current!==eH&&(t9.current=eH,ar(4))},[eH,an,ar]);let al=(0,n.useMemo)(()=>"battery-sizing-report-".concat(eq||0,"Ah-").concat(eb,"V-").concat(new Date().toISOString().split("T")[0],".pdf"),[eq,eb]),ao=(0,n.useMemo)(()=>({batterySpecs:{capacity:(null==eH?void 0:eH.requiredCellCapacity)||eq||0,voltage:parseFloat(eb),type:ev,typeName:D.YB[ev].name,maxDOD:D.YB[ev].maxDOD,temperature:parseFloat(eS),industry:ej,industryName:D.vR[ej].description,designMargin:parseFloat(eA)},calculations:eW||{temperatureFactors:{Kt:1,adjustedPeukertN:1,tempRateFactor:1},loadAnalysis:{totalDuration:0,avgCurrent:0,peakCurrent:0,peakToAverageRatio:1},capacityFactors:{tempMarginAdjustment:1,effectiveAgingFactor:1,effectiveEfficiency:1,totalMargin:1},finalCapacity:(null==eH?void 0:eH.requiredCellCapacity)||0},loads:e_.map(e=>({type:e.type,power:e.power,current:e.current,startTime:e.startTime,endTime:e.endTime,duration:e.duration,powerFactor:e.powerFactor,inverterEfficiency:e.inverterEfficiency,description:e.description})),chartDataUrl:eG,ieee485Result:eH}),[eq,eb,ev,eS,ej,eW,e_,eG,eH,eA]),ac=(0,U.y)({docType:"IEEE485"}),ad=(0,ep.e)(),am=(0,n.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"submission",t=arguments.length>1?arguments[1]:void 0;try{let[i,n]=await Promise.all([Promise.all([a.e(4792),a.e(8247),a.e(1278),a.e(9788),a.e(1746),a.e(7509),a.e(6378),a.e(2858)]).then(a.bind(a,80213)).then(e=>e.pdf),Promise.all([a.e(4792),a.e(8247),a.e(1278),a.e(9788),a.e(1746),a.e(7509),a.e(6378),a.e(9322),a.e(714)]).then(a.bind(a,59322)).then(e=>e.BatteryReport)]),{createElement:s}=await Promise.resolve().then(a.t.bind(a,12115,19)),r="submission"===e,l=ac.saved,o=r&&l?(0,U.M)(l.revisionLetter):null==l?void 0:l.revisionLetter,c=s(n,{...ao,tier:e,revisionLetter:o,docNumber:null==l?void 0:l.docNumber,savedAt:new Date().toISOString(),status:r?"S3":"S0"}),d=await i(c).toBlob();return"draft"===e?ac.saveDraft(d,t):ac.saveProUpgrade(d),d}catch(e){return null}},[ao,ac]),ax=(0,n.useMemo)(()=>JSON.stringify({batteryType:ev,industry:ej,systemVoltage:eb,temperature:eS,designMargin:eA,loads:e_}),[ev,ej,eb,eS,eA,e_]),{authentication:au,credits:ah,isGenerating:ap,error:ag,showTierSelection:af,availableTiers:av,selectedTier:aj,initiateDownload:ab,selectTier:ak,confirmDownload:ay,handleAuthenticationRequired:aN,closeTierSelection:aw}=(0,Q.l)({calculatorType:"ieee-485",generatePDF:am,fileName:al,inputsHash:ax,calculationResults:eH?{uncorrectedCellSize:eH.uncorrectedCellSize,requiredCellCapacity:eH.requiredCellCapacity,periods:eH.periods,worstCasePeriod:eH.worstCasePeriod,systemConfig:{batteryType:ev,industry:ej,systemVoltage:parseFloat(eb),temperature:parseFloat(eS),designMargin:parseFloat(eA)},loads:e_}:void 0});te.current=au.isAuthenticated;let aC=(0,n.useMemo)(()=>
1eH?"IEEE 485 sizing review. Inputs: voltage=".concat(eb," V, load steps=").concat(e_.length,", ambient=").concat(eS,"\xb0C, design margin=").concat(eA,". Recommended cell capacity: ").concat(eH.requiredCellCapacity," Ah. Please review for code-compliance."):"",[eH,eb,e_.length,eS,eA]),aF=(0,n.useCallback)(async()=>{var e,t;if(!au.isAuthenticated)return void aN();let a=null;try{let t=await fetch("/api/credits/balance",{credentials:"include",cache:"no-store"});if(t.ok){let i=await t.json().catch(()=>null),n=null==i||null==(e=i.balance)?void 0:e.total_credits;a="number"==typeof n?n:null}}catch(e){a=null}if(tw(a),null==an?void 0:an.id){ty(an.id),tb(!0);return}try{let e=await fetch("/api/v1/project-context/ensure-default",{method:"POST",credentials:"include",cache:"no-store"});if(!e.ok)throw Error("ensure_default_failed");let a=await e.json().catch(()=>null),i=null==a||null==(t=a.result)?void 0:t.id;if(!i)throw Error("ensure_default_failed");ty(i),tb(!0)}catch(e){console.error("[ask-expert] ensure-default failed",e)}},[au.isAuthenticated,aN,an]),aS=(0,n.useMemo)(()=>eH?(0,G.T3)({batteryType:ev,systemVoltage:eb,temperature:eS,designMargin:eA,industry:ej,loads:e_,ieee485Result:eH}):"",[eH,ev,eb,eS,eA,ej,e_]),aA=(0,n.useMemo)(()=>eH?(0,G.OM)(eb,ev,eH.requiredCellCapacity):"",[eH,eb,ev]),{requestQuote:aE,isLoading:aT,error:aR}=(0,G.Fn)({sourceType:"ieee485_calculator",sourceDataJson:aS,title:aA}),aD=(0,n.useCallback)(async e=>{if(eH){tY(!0),tq(null);try{let t=await er({ieee485Result:{cellsInSeries:eH.cellsInSeries,requiredCellCapacity:eH.requiredCellCapacity},roomParams:e,batteryType:ev});t.ok?(tL(t.result),tB(t.bridgeData),tK(!1),tG(e),t$(!1),an&&as&&as((0,el.Y)({ventilationResult:t.result,priorStage:an.stage}))):tq(t.message)}finally{tY(!1)}}},[eH,ev,an,as]),aM=(0,n.useMemo)(()=>{var e,t,a,i,n,s,r,l;return{roomLength:null!=(n=null==an||null==(e=an.roomDimensions)?void 0:e.lengthM)?n:void 0,roomWidth:null!=(s=null==an||null==(t=an.roomDimensions)?void 0:t.widthM)?s:void 0,roomHeight:null!=(r=null==an||null==(a=an.roomDimensions)?void 0:a.heightM)?r:void 0,temperatureCelsius:null!=(l=null==an||null==(i=an.temperatureRangeC)?void 0:i.max)?l:void 0,altitudeMeters:0,chargingMethod:"Float"}},[an]),aI=(0,n.useCallback)(()=>{if("lithium"===ev)return;let e=null==an?void 0:an.roomDimensions;if((null==e?void 0:e.lengthM)!=null&&null!=e.widthM&&null!=e.heightM){var t,a;aD({roomLength:e.lengthM,roomWidth:e.widthM,roomHeight:e.heightM,temperatureCelsius:null!=(a=null==an||null==(t=an.temperatureRangeC)?void 0:t.max)?a:25,altitudeMeters:0,chargingMethod:"Float"})}else tK(!0)},[ev,an,aD]),aP=(0,n.useCallback)(async()=>{if(!tO||!tz||!tQ||!an)return;let e=function(e,t,a,i){var n;let{fanSystem:s}=e;return{projectName:i.projectName,location:i.location,batteryParams:{batteryType:t.batteryType,chargingMethod:t.chargingMethod,numCells:t.numCells,capacity:t.capacityAh,dilutionFactor:t.dilutionFactor,gasEvolutionCurrent:t.gasEvolutionCurrent},roomParams:{length:a.roomLength,width:a.roomWidth,height:a.roomHeight,roomVolume:t.roomVolume,ventilationType:"Hybrid",heightDifference:null!=(n=a.heightDifference)?n:0,ambientTemp:a.temperatureCelsius,altitude:a.altitudeMeters},fanConfig:{fanFlowRate:s.perFanFlow,fanFlowMargin:0,fansInParallel:s.baseFans,fanRedundancy:s.redundancy},results:function(e,t){let{hybridSplit:a,fanSystem:i}=e,{roomVolume:n}=t,s=a.minimumAperture>0?((e.apertureArea/a.minimumAperture-1)*100).toFixed(1):"0.0";return{hydrogenProduction:t.hydrogenProductionRate.toFixed(6),naturalVentFlow:a.naturalFlow.toFixed(3),forcedVentFlow:a.forcedFlow.toFixed(3),naturalAirChanges:ex(a.naturalFlow,n),forcedAirChanges:ex(a.forcedFlow,n),apertureArea:e.apertureArea.toFixed(1),requiredDiameter:e.equivalentDiameter.toFixed(1),adjustedOneFanFlow:i.perFanFlow.toFixed(3),perFanFlow:i.perFanFlow.toFixed(3),totalFansWithRedundancy:String(i.totalFans),isCompliant:e.compliance.every(e=>e.passed),safetyMargin:s,recommendations:e.recommendations}}(e,t)}}(tO,tz,tQ,{projectName:an.name}),[t,i]=await Promise.all([Promise.all([a.e(4792),a.e(8247),a.e(1278),a.e(9788),a.e(1746),a.e(7509),a.e(6378),a.e(2858)]).then(a.bind(a,80213)).then(e=>e.pdf),Promise.all([a.e(4792),a.e(8247),a.e(1278),a.e(9788),a.e(1746),a.e(7509),a.e(6378),a.e(5044)]).then(a.bind(a,65368)).then(e=>e.HydrogenReport)]),s=n.createElement(i,{...e,status:"S0"}),r=await t(s).toBlob();await tZ({pdfBlob:r,projectId:an.id,docType:"H2VENT",status:"S0",title:"H₂ Ventilation — ".concat(an.name||an.id)}),t$(!0)}
1,[tO,tz,tQ,an,tZ]),[aV,aO]=(0,n.useState)("loads"),aL=[{id:"loads",label:"Load profile",status:e_.length>0?"complete":"current"},{id:"battery",label:"Battery selection",status:eI?"complete":"pending"},{id:"results",label:"Results",status:eH?"complete":"pending"}],az=(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(w.Y,{color:"rim",children:"RESULT \xb7 IEEE 485"}),(0,i.jsxs)("div",{className:"mt-3 flex items-baseline gap-1",children:[(0,i.jsx)(C.V,{size:"xl",color:"rim",weight:600,children:null!=eq?eq.toLocaleString():"—"}),(0,i.jsx)("span",{className:"font-mono text-xs text-ink-3",children:"Ah"})]}),null!==eH&&eH===tE&&(0,i.jsxs)("p",{className:"mt-1 text-xs text-ink-3","data-testid":"ieee485-restored-note",children:["Saved result from ",null!=(R=null==an?void 0:an.name)?R:"this project",". Recalculate after changing an input."]}),null!=eq&&(0,i.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,i.jsx)(L.m,{rows:[{label:"Battery Model",value:null!=(M=null==eI?void 0:eI.model_name)?M:"—"},{label:"System Voltage",value:"".concat(eb,"V DC")},{label:"Design Margin",value:"".concat((0,D.S3)(parseFloat(eA)),"%")},{label:"Standard",value:"IEEE 485-2020"}]}),(null==eH?void 0:eH.isCompliant)&&(0,i.jsx)(F.a,{status:"ok",label:"IEEE 485 COMPLIANT"})]}),eH&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("div",{className:"mt-4 space-y-2",children:[(0,i.jsx)(N.$,{variant:"primary",disabled:ap||!au.isAuthenticated,onClick:()=>{ab()},children:ap?"Generating...":"Download PDF"}),ag&&(0,i.jsx)("p",{className:"text-xs text-fault",children:ag}),(0,i.jsx)(N.$,{variant:"ghost",disabled:aT,onClick:()=>{aE()},children:aT?"Requesting...":"Request quote"}),aR&&(0,i.jsx)("p",{className:"text-xs text-fault",children:aR}),(0,i.jsx)("div",{className:"pt-1",children:(0,i.jsx)(eu.u,{saved:!!ac.saved,projectName:null!=(es=null==an?void 0:an.name)?es:null,projectId:null!=(ec=null==an?void 0:an.id)?ec:null,saveLabel:"Save to project",saving:ac.isSaving,onSave:()=>{ad.requestSave(e=>{if(eH&&as&&e===(null==an?void 0:an.id)){let e=tV.current;as(e?{ieee485Result:eH,loadProfile:e}:{ieee485Result:eH})}am("draft",e)})},testId:"ieee485-save-chip"})}),tD&&(0,i.jsxs)("p",{className:"text-xs text-fault",role:"alert",children:["Sizing inputs were not saved to the project: ",tD]}),tI&&(0,i.jsxs)("p",{className:"text-xs text-ink-3","data-testid":"ieee485-load-profile-note",children:["Load profile not saved to the project: ",tI,"."]})]}),eH&&au.isAuthenticated&&(0,i.jsx)("div",{"data-testid":"ieee485-calculation-record-mount",children:(0,i.jsx)(eN,{batterySpecs:ao.batterySpecs,calculations:ao.calculations,ieee485Result:eH})}),eH&&au.isAuthenticated&&(0,i.jsx)("div",{"data-testid":"ieee485-sld-download-mount",children:(0,i.jsx)(ew,{systemVoltage:parseFloat(eb),batteryType:ev,ieee485Result:eH})}),eH&&au.isAuthenticated&&(null==an?void 0:an.id)&&(0,i.jsx)("div",{"data-testid":"ieee485-sld-save-mount",children:(0,i.jsx)(eC,{systemVoltage:parseFloat(eb),batteryType:ev,ieee485Result:eH})}),(0,i.jsxs)("div",{className:"mt-4 space-y-2 pt-3 border-t border-rim-hair",children:[(0,i.jsx)(N.$,{variant:"ghost",disabled:tW||"lithium"===ev,onClick:aI,children:tW?"Deriving…":"Derive H₂ ventilation from this sizing"}),"lithium"===ev&&(0,i.jsx)("p",{className:"text-xs text-ink-3",children:"LiFePO₄/lithium does not produce hydrogen — no ventilation design required."}),t_&&(0,i.jsx)("p",{className:"text-xs text-fault",children:t_}),tH&&!tO&&(0,i.jsx)(ed,{initial:aM,onSubmit:e=>{aD(e)},disabled:tW}),tO&&tz&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(eo,{result:tO,bridgeData:tz}),an?(0,i.jsxs)("div",{className:"space-y-1",children:[(0,i.jsx)(N.$,{variant:"ghost",disabled:tJ||!tQ,onClick:()=>{aP()},children:tJ?"Saving…":"Save to project"}),tU&&(0,i.jsxs)("p",{className:"text-xs text-ink-3",children:["Saved to ",an.name||"project"," ✓"]}),tX&&(0,i.jsx)("p",{className:"text-xs text-fault",children:tX})]}):(0,i.jsx)("p",{className:"text-xs text-ink-3",children:"Set an active project to save this as a document."})]})]}),(0,i.jsxs)("div",{className:"mt-4 space-y-2 pt-3 border-t border-rim-hair",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 text-xs text-ink-3",children:[(0,i.jsx)("span",{children:"Recharge:"}),["C/10","C/5"].map(e=>(0,i.jsx)("button",{type:"button","aria-pressed":t4===e,onClick:()=>t5(e),className:t4===e?"font-semibold text-ink":"",children:e},e))]}),(0,i.jsx)(N.$,{variant:"ghost",onClick:()=>t1(!0),children:"Add Charger"}),t2&&(0,i.jsxs)("p",{className:"text-xs text-ink-3",children:["Charger sized: ",Math.ceil(t2.chargerRatingA)," A",(null==an?void 0:an.name)?" \xb7 saved to ".concat(an.name," ✓"):" ✓"]})]}),t0&&eH&&t8&&(0,i.jsx)(ey,{open:t0,onClose:()=>t1(!1),prefill:t8,projectId:null!=(eg=null==an?void 0:an.id)?eg:null,projectName:null!=(ef=null==an?void 0:an.name)?ef:null,onAccepted:t3}),(0,i.jsx)(eh.f,{open:ad.attachOpen,onClose:()=>{ad.cancelAttach()},onAttached:ad.resolveAttach})]})]});return(0,i.jsxs)(i.Fragment,{children:[(null==at?void 0:at.workflowId)&&(0,i.jsx)($.A,{workflowId:at.workflowId}),(0,i.jsxs)(y.t,{title:"IEEE 485 Battery Sizing Calculator",standard:"IEEE 485-2020",sections:aL,
1currentSectionId:aV,onSectionChange:aO,rightPanel:az,children:[(0,i.jsx)("div",{className:"px-6 pt-6 pb-4 border-b border-rim-hair",children:(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)("h1",{className:"font-display text-ink-bright text-xl leading-tight",children:"IEEE 485 Battery Sizing Calculator"}),(0,i.jsx)(F.a,{status:"ok",label:"IEEE 485-2020"})]})}),tC&&(0,i.jsx)("div",{className:"px-6 pt-4",children:(0,i.jsx)("div",{className:"p-3 rounded bg-warn/10 border border-warn/30",children:(0,i.jsx)("p",{className:"text-sm text-warn",children:"Pre-loaded from AI workflow — verify and adjust before calculating"})})}),(0,i.jsxs)("div",{className:"px-6 py-6 border-b border-rim-hair",children:[(0,i.jsxs)("p",{className:"font-mono text-xs text-ink-3 uppercase tracking-wider mb-3",children:["Battery Type",(0,i.jsx)(eF,{methodKey:"ieee485-k-factor"})]}),(0,i.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-3",children:D.C8.map(e=>(0,i.jsx)("button",{onClick:()=>eZ(e.id),className:"text-left",children:(0,i.jsxs)(S.T,{level:1,accent:ev===e.id?"rim":void 0,className:"p-4 h-full",children:[(0,i.jsx)("div",{className:"text-2xl mb-2",children:e.icon}),(0,i.jsx)("div",{className:"font-semibold text-ink-bright text-sm",children:e.name}),(0,i.jsx)("div",{className:"text-xs text-ink-3",children:e.description})]})},e.id))}),(0,i.jsxs)("p",{className:"text-xs text-ink-3 mb-6",children:["Reference values for ",D.YB[ev].name," — Max DOD:"," ",(100*D.YB[ev].maxDOD).toFixed(0),"%."," ",V.J8," | Peukert N:"," ",D.YB[ev].peukertN,". ",V.cW]}),eI?(0,i.jsxs)(S.T,{level:2,accent:"rim",className:"p-4",children:[(0,i.jsxs)("div",{className:"flex items-start justify-between mb-2",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("p",{className:"font-mono text-xs text-ink-3 uppercase tracking-wider",children:"Selected Battery"}),(0,i.jsx)("p",{className:"text-lg font-bold text-ink-bright mt-0.5",children:eI.model_name})]}),(0,i.jsxs)("div",{className:"flex gap-2",children:[(0,i.jsx)("button",{onClick:()=>e7(!0),"aria-expanded":eV,className:"px-3 py-1.5 text-xs font-medium text-ink-2 bg-surface border border-rim-hair rounded hover:bg-surface-deep transition-colors",children:"Change"}),(0,i.jsx)("button",{onClick:()=>{(0,X.pB)((0,X._O)(eI,parseFloat(eb)||48,eL)),window.location.assign("/design-studio")},className:"px-3 py-1.5 text-xs font-medium text-ink-2 bg-surface border border-rim-hair rounded hover:bg-surface-deep transition-colors",children:"Send to Design Studio"}),(0,i.jsx)("button",{onClick:tc,className:"px-3 py-1.5 text-xs font-medium text-fault bg-surface border border-rim-hair rounded hover:bg-fault/10 transition-colors",children:"Clear"})]})]}),(0,i.jsxs)("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-x-4 gap-y-1 text-xs text-ink-2 mt-3",children:[(0,i.jsx)("span",{className:"text-ink-3",children:"Chemistry"}),(0,i.jsx)("span",{children:eI.chemistry}),(0,i.jsx)("span",{className:"text-ink-3",children:"Cell Voltage"}),(0,i.jsxs)("span",{children:[eI.nominal_voltage,"V"]}),(0,i.jsx)("span",{className:"text-ink-3",children:"Capacity"}),(0,i.jsxs)("span",{children:[eI.nominal_capacity_ah," Ah"]}),(0,i.jsx)("span",{className:"text-ink-3",children:"Manufacturer"}),(0,i.jsx)("span",{children:eI.manufacturer}),null!==eI.weight_kg&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:"text-ink-3",children:"Weight"}),(0,i.jsxs)("span",{children:[eI.weight_kg," kg"]})]}),null!==eI.design_life_years&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:"text-ink-3",children:"Design Life"}),(0,i.jsxs)("span",{children:[eI.design_life_years," years"]})]}),(0,i.jsx)("span",{className:"text-ink-3",children:"Dimensions"}),(0,i.jsxs)("span",{children:[eI.dimensions.length_mm,"\xd7",eI.dimensions.width_mm,"\xd7",eI.dimensions.height_mm," mm"]})]}),eP&&Object.keys(eP).length>0&&(0,i.jsx)("div",{className:"mt-3",children:(0,i.jsxs)("button",{onClick:()=>e9(e=>!e),className:"text-xs text-rim hover:text-rim/80 transition-colors",children:[eO?"Hide":"Show"," Discharge Rates"]})})]}):(0,i.jsxs)("div",{children:[(0,i.jsx)("button",{onClick:()=>e7(!0),"aria-expanded":eV,className:"px-4 py-2.5 text-sm font-medium text-ink-2 bg-surface border border-rim-hair rounded hover:border-rim/50 hover:text-ink-bright transition-all",children:"Select Battery Model"}),(0,i.jsx)("p",{className:"mt-1.5 text-xs text-ink-3",children:"Optional — select a specific battery for reference"})]}),(0,i.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-6",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"industry-select",className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"Industry Type"}),(0,i.jsx)(A.l,{id:"industry-select",name:"industry",value:ej,onChange:e=>{eJ(e);let t=D.M[e];
1t&&!t.includes(parseFloat(eb))&&th(String(t[0]))},options:Object.entries(D.vR).map(e=>{let[t,a]=e;return{value:t,label:a.description}})}),D.vR[ej]&&(0,i.jsxs)("p",{className:"mt-1 text-xs text-ink-3",children:["Design margin:"," ",((D.vR[ej].additionalMargin-1)*100).toFixed(0),"% — a recommendation for this sector. ",V.cW]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"voltage-select",className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"System Voltage"}),(0,i.jsx)(A.l,{id:"voltage-select",name:"systemVoltage",value:eb,onChange:th,options:tn.map(e=>({value:String(e),label:"".concat(e,"V DC")}))})]}),(0,i.jsxs)("div",{children:[(0,i.jsxs)("label",{htmlFor:"temperature-input",className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:["Operating Temperature",(0,i.jsx)(eF,{methodKey:"ieee485-temperature-correction"})]}),(0,i.jsx)(E.Q,{id:"temperature-input",name:"temperature",value:Number.isFinite(parseFloat(eS))?parseFloat(eS):"",onChange:e=>e0(""===e?"":String(e)),suffix:"\xb0C"}),D.vR[ej]&&(0,i.jsxs)("p",{className:"mt-1 text-xs text-ink-3",children:["Recommended: ",D.vR[ej].tempRange.min,"\xb0C to"," ",D.vR[ej].tempRange.max,"\xb0C"]})]}),(0,i.jsxs)("div",{children:[(0,i.jsxs)("label",{htmlFor:"design-margin-input",className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:["Design Margin (IEEE 485)",(0,i.jsx)(eF,{methodKey:"ieee485-design-margin"})]}),(0,i.jsx)(E.Q,{id:"design-margin-input",name:"designMargin",value:Number.isFinite(parseFloat(eA))?(0,D.S3)(parseFloat(eA)):"",onChange:e=>{e1(String(1+(""===e?0:e)/100))},suffix:"%",min:10,step:5}),(0,i.jsx)("p",{className:"mt-1 text-xs text-ink-3",children:"IEEE 485 recommends a 10–15% design margin"}),tt&&(0,i.jsxs)("div",{role:"alert",className:"mt-2 p-3 bg-warn/10 border border-warn/30 rounded flex items-start gap-2",children:[(0,i.jsx)(o.A,{className:"text-warn shrink-0 mt-0.5",size:16}),(0,i.jsx)("p",{className:"text-xs text-ink-2",children:tt})]})]}),(0,i.jsxs)("div",{children:[(0,i.jsxs)("label",{htmlFor:"aging-factor-input",className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:["Aging Factor",(0,i.jsx)(eF,{methodKey:"ieee485-aging-factor"})]}),(0,i.jsx)(E.Q,{id:"aging-factor-input",name:"agingFactor",value:Number.isFinite(parseFloat(eE))?parseFloat(eE):"",onChange:e=>e2(""===e?"":String(e)),min:1,max:2,step:.05,error:null!=ta?ta:void 0}),(0,i.jsxs)("p",{className:"mt-1 text-xs text-ink-3",children:["Leave blank to use the ",D.YB[ev].name," default of"," ",D.YB[ev].agingFactor,". IEEE 485 uses 1.25 for lead-acid."]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"eodv-input",className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"End-of-Discharge Voltage"}),(0,i.jsx)(E.Q,{id:"eodv-input",name:"endOfDischargeVoltage",value:Number.isFinite(parseFloat(eT))?parseFloat(eT):"",onChange:e=>e3(""===e?"":String(e)),step:.01,suffix:"V/cell"}),(0,i.jsxs)("p",{className:"mt-1 text-xs text-ink-3",children:["Leave blank to use the ADR-019 (a) default of ",tf," V/cell."]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"equalize-voltage-input",className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"Equalizing Voltage"}),(0,i.jsx)(E.Q,{id:"equalize-voltage-input",name:"equalizeVoltage",value:Number.isFinite(parseFloat(eR))?parseFloat(eR):"",onCh
1ange:e=>e4(""===e?"":String(e)),step:.01,suffix:"V/cell"}),(0,i.jsxs)("p",{className:"mt-1 text-xs text-ink-3",children:["Per construction, not chemistry (ADR-019 (b)): ",tv,". No default is inferred."]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"min-operating-voltage-input",className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"Minimum Load Operating Voltage"}),(0,i.jsx)(E.Q,{id:"min-operating-voltage-input",name:"minOperatingVoltage",value:Number.isFinite(parseFloat(eD))?parseFloat(eD):"",onChange:e=>e5(""===e?"":String(e)),step:.1,suffix:"V"}),(0,i.jsx)("p",{className:"mt-1 text-xs text-ink-3",children:"The DC bus lower limit. Supplied, not derived from a percentage of nominal (ADR-019 (c))."})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"max-charge-voltage-input",className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"Maximum Charge Voltage"}),(0,i.jsx)(E.Q,{id:"max-charge-voltage-input",name:"maxChargeVoltage",value:Number.isFinite(parseFloat(eM))?parseFloat(eM):"",onChange:e=>e8(""===e?"":String(e)),step:.1,suffix:"V"}),(0,i.jsx)("p",{className:"mt-1 text-xs text-ink-3",children:"The DC bus upper limit. With equalizing voltage, re-bases the cell count per IEEE 485 \xa76.2.2 rule 1."})]})]})]}),(0,i.jsxs)("div",{className:"px-6 py-6",children:[(0,i.jsxs)("p",{className:"font-mono text-xs text-ink-3 uppercase tracking-wider mb-3",children:["Load Profile",(0,i.jsx)(eF,{methodKey:"ieee485-duty-cycle-method"})]}),(0,i.jsxs)("div",{className:"space-y-4",children:[e_.map((e,t)=>{let a=parseFloat(eb);return(0,i.jsxs)(S.T,{level:1,className:"p-4",children:[(0,i.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,i.jsxs)("span",{className:"text-sm font-medium text-ink-bright",children:["Load ",t+1]}),e_.length>1&&(0,i.jsx)("button",{onClick:()=>tx(e.id),"aria-label":"Remove load ".concat(t+1),className:"px-2 py-1 text-xs text-fault hover:bg-fault/10 rounded transition-colors",children:"Remove"})]}),(0,i.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-3",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"load-type-".concat(e.id),className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"Type"}),(0,i.jsx)(A.l,{id:"load-type-".concat(e.id),name:"load-type-".concat(e.id),value:e.type,onChange:t=>tu(e.id,"type",t),options:[{value:"dc",label:"DC Load"},{value:"ac",label:"AC Load"}]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"load-power-".concat(e.id),className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"ac"===e.type?"Apparent Power (kVA)":"Power (kW)"}),(0,i.jsx)(E.Q,{id:"load-power-".concat(e.id),name:"load-power-".concat(e.id),value:Number.isFinite(e.power)?e.power:"",onChange:t=>tu(e.id,"power",""===t?0:t),min:0,step:.1,error:null==ti?void 0:ti.get(e.id)}),"dc"===e.type&&(0,i.jsxs)("div",{className:"mt-1.5",children:[(0,i.jsx)("label",{htmlFor:"load-watts-".concat(e.id),className:"block font-mono text-[10px] text-ink-3 mb-0.5",children:"or Power (W)"}),(0,i.jsx)(E.Q,{id:"load-watts-".concat(e.id),name:"load-watts-".concat(e.id),value:Number.isFinite(e.power)&&0!==e.power?Math.round(1e3*e.power):"",onChange:t=>tu(e.id,"power",""===t?0:t/1e3),min:0,step:1}),Number.isFinite(a)&&a>0&&Number.isFinite(e.power)&&e.power>0&&(0,i.jsxs)("p",{className:"mt-0.5 font-mono text-[10px] text-ink-3","data-testid":"watts-amps-readout",children:["≈ ",(0,I.g)(1e3*e.power,a).toFixed(2)," A @ ",a," V"]})]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"load-start-".concat(e.id),className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"Start (min)"}),(0,i.jsx)(E.Q,{id:"load-start-".concat(e.id),name:"load-start-".concat(e.id),value:Number.isFinite(e.startTime)?e.startTime:"",onChange:t=>tu(e.id,"startTime",""===t?0:t),min:0})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"load-end-".concat(e.id),className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"End (min)"}),(0,i.jsx)(E.Q,{id:"load-end-".concat(e.id),name:"load-end-".concat(e.id),value:Number.isFinite(e.endTime)?e.endTime:"",onChange:t=>tu(e.id,"endTime",""===t?0:t),min:e.startTime})]})]}),"ac"===e.type&&(0,i.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 mt-3",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"load-pf-".concat(e.id),className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"Power Factor"}),(0,i.jsx)(E.Q,{id:"load-pf-".concat(e.id),name:"load-pf-".concat(e.id),value:Number.isFinite(e.powerFactor)?e.powerFactor:"",onChange:t=>
1tu(e.id,"powerFactor",""===t?1:t),min:0,max:1,step:.01})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("label",{htmlFor:"load-inveff-".concat(e.id),className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"Inverter Eff."}),(0,i.jsx)(E.Q,{id:"load-inveff-".concat(e.id),name:"load-inveff-".concat(e.id),value:Number.isFinite(e.inverterEfficiency)?e.inverterEfficiency:"",onChange:t=>tu(e.id,"inverterEfficiency",""===t?.92:t),min:.1,max:1,step:.01})]})]}),(0,i.jsxs)("div",{className:"mt-3 flex items-center justify-between font-mono text-xs text-ink-3","data-testid":"load-readout-".concat(e.id),children:[(0,i.jsxs)("span",{children:["Duration: ",e.duration," min"]}),(0,i.jsxs)("span",{children:["Current: ",e.current.toFixed(1)," A"]}),(0,i.jsxs)("span",{children:["Energy: ",(e.power*e.duration/60).toFixed(2)," kWh"]})]}),(0,i.jsxs)("div",{className:"mt-3",children:[(0,i.jsx)("label",{htmlFor:"load-desc-".concat(e.id),className:"block font-mono text-xs text-ink-3 uppercase tracking-wider mb-1",children:"Description"}),(0,i.jsx)(T.p,{id:"load-desc-".concat(e.id),name:"load-desc-".concat(e.id),value:e.description,onChange:t=>tu(e.id,"description",t),placeholder:"Load description (optional)"})]})]},e.id)}),(0,i.jsx)(N.$,{variant:"ghost",onClick:tm,children:"+ Add Load"})]}),ts.length>0&&(0,i.jsxs)("div",{className:"mt-6",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,i.jsx)(c.A,{size:16,className:"text-rim"}),(0,i.jsx)(w.Y,{color:"rim",children:"LOAD PROFILE VISUALIZATION"})]}),(0,i.jsx)("span",{className:"sr-only",children:"Load profile chart with ".concat(e_.length," load step").concat(1===e_.length?"":"s",". ")+"Total duration ".concat(e_.length>0?Math.max(...e_.map(e=>e.endTime)):0," minutes. ")+"Peak power ".concat(ts.length>0?Math.max(...ts.map(e=>{var t;return null!=(t=e.total)?t:0})).toFixed(1):"0.0"," kW.")+((null==eH?void 0:eH.worstCasePeriod)?" Governing section: periods 1 to ".concat(eH.worstCasePeriod,"."):"")}),(0,i.jsxs)(S.T,{level:1,className:"p-4 relative z-[60]","aria-hidden":"true",children:[(0,i.jsx)("div",{className:"w-full h-64",children:e$&&(0,i.jsx)(m.u,{width:"100%",height:256,children:(0,i.jsxs)(x.Q,{data:ts,margin:{top:10,right:30,left:0,bottom:0},children:[(0,i.jsx)("defs",{children:e_.map((e,t)=>(0,i.jsxs)("linearGradient",{id:"cosmicColorLoad".concat(t),x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,i.jsx)("stop",{offset:"5%",stopColor:b.multiLine[t%b.multiLine.length],stopOpacity:.8}),(0,i.jsx)("stop",{offset:"95%",stopColor:b.multiLine[t%b.multiLine.length],stopOpacity:.2})]},"gradient-".concat(t)))}),(0,i.jsx)(u.d,{strokeDasharray:"3 3",stroke:b.grid,strokeOpacity:.5}),(0,i.jsx)(h.W,{dataKey:"time",stroke:b.text,tick:{fill:b.text,fontSize:11},label:{value:"Time (minutes)",position:"insideBottom",offset:-5,fill:b.text,fontSize:12}}),(0,i.jsx)(p.h,{stroke:b.text,tick:{fill:b.text,fontSize:11},label:{value:"Power (kW)",angle:-90,position:"insideLeft",fill:b.text,fontSize:12}}),(0,i.jsx)(g.m,{contentStyle:{backgroundColor:"var(--surface-deep)",border:"1px solid var(--rim-hair)",borderRadius:"8px",color:"var(--ink-bright)"},labelStyle:{color:"var(--ink-bright)",fontWeight:"bold"},formatter:(e,t)=>{let a="number"==typeof e?e:0,i=String(t),n=i.match(/load(\d+)/);if(n){var s;let e=parseInt(n[1]),t=(null==(s=e_[e])?void 0:s.description)||"Load ".concat(e+1);return["".concat(a.toFixed(2)," kW"),t]}return["".concat(a.toFixed(2)," kW"),i]},labelFormatter:e=>"Time: ".concat(e," min")}),(0,i.jsx)(f.s,{wrapperStyle:{paddingTop:"10px"},formatter:e=>{let t=e.match(/load(\d+)/);if(t){var a;let e=parseInt(t[1]);return(null==(a=e_[e])?void 0:a.description)||"Load ".concat(e+1)}return e}}),e_.map((e,t)=>(0,i.jsx)(v.Gk,{type:"stepAfter",dataKey:"load".concat(t),name:"load".concat(t),stackId:"1",stroke:b.multiLine[t%b.multiLine.length],fill:"url(#cosmicColorLoad".concat(t,")"),strokeWidth:2},t)),eH&&eH.worstCasePeriod>0&&eH.periods[0]&&eH.periods[eH.worstCasePeriod-1]&&(0,i.jsx)(j.T,{x1:eH.periods[0].startTime,x2:eH.periods[eH.worstCasePeriod-1].endTime,stroke:b.fault,strokeOpacity:.8,fill:b.fault,fillOpacity:.15,label:{value:"Governing section",position:"top",fill:b.fault,fontSize:11}})]})})}),(0,i.jsxs)("div",{className:"mt-3 flex items-center justify-between font-mono text-xs text-ink-3",children:[(0,i.jsxs)("span",{children:["Total Duration: ",e_.length>0?Math.max(...e_.map(e=>e.endTime)):0," min"]}),(0,i.jsxs)("span",{children:["Peak Power: ",ts.length>
10?Math.max(...ts.map(e=>{var t;return null!=(t=e.total)?t:0})).toFixed(1):"0.0"," kW"]}),(0,i.jsxs)("span",{children:[e_.length," load",e_.length>1?"s":""," configured"]})]})]})]})]}),(0,i.jsxs)("div",{className:"px-6 pt-6 pb-2",children:[(0,i.jsx)(N.$,{variant:"primary",onClick:tp,disabled:0===e_.length,loading:eK,className:"w-full",children:eK?"Calculating...":"Calculate Battery Capacity"}),ac.banner&&(0,i.jsx)("div",{role:"status","aria-live":"polite",className:"mt-2 text-xs px-2 py-1 rounded ".concat("error"===ac.banner.kind?"bg-fault/10 text-fault":"bg-ok/10 text-ok"),children:ac.banner.text})]}),(0,i.jsxs)("div",{className:"px-6",children:[eH&&au.isAuthenticated&&!eL&&!ez&&!eB&&(0,i.jsxs)(N.$,{variant:"secondary",onClick:td,disabled:ez,className:"w-full gap-2 mb-3",children:[(0,i.jsx)(d.A,{size:16}),"Find Best Battery for This Requirement"]}),(0,i.jsx)(J.A,{result:eL,loading:ez,error:eB,onSelectBattery:to,onRetry:td})]}),eY.length>0&&(0,i.jsx)("div",{className:"px-6 py-3",children:(0,i.jsxs)("div",{className:"p-4 bg-warn/10 border border-warn/30 rounded flex items-start gap-3",children:[(0,i.jsx)(o.A,{className:"text-warn shrink-0 mt-0.5",size:18}),(0,i.jsx)("div",{className:"text-sm text-ink-2 space-y-1",children:eY.map((e,t)=>e.includes("Authentication required")?(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("p",{children:"Sign in to access the calculation engine."}),(0,i.jsx)(l(),{href:"/auth/signup?returnTo=".concat(encodeURIComponent("/tools/ieee-485-battery-sizing")),className:"inline-flex items-center gap-2 px-4 py-2 bg-rim text-ink-bright font-medium rounded text-sm hover:bg-rim-deep transition-colors",children:"Create Free Account"}),(0,i.jsxs)("p",{className:"text-xs text-ink-3",children:["Already have an account?"," ",(0,i.jsx)(l(),{href:"/auth/login?returnTo=".concat(encodeURIComponent("/tools/ieee-485-battery-sizing")),className:"underline hover:text-ink-2",children:"Log in"})]})]},t):(0,i.jsx)("p",{children:e},t))})]})}),null!==eq&&(0,i.jsxs)("div",{className:"px-6 py-6 border-t border-rim-hair space-y-6",children:[(0,i.jsxs)(S.T,{level:2,accent:"rim",className:"p-5",children:[(0,i.jsx)(w.Y,{color:"rim",children:"REQUIRED BATTERY CAPACITY"}),(0,i.jsxs)("div",{className:"mt-2 flex items-baseline gap-2",children:[(0,i.jsx)(C.V,{size:"xl",color:"rim",weight:600,children:eq.toLocaleString()}),(0,i.jsx)("span",{className:"font-mono text-sm text-ink-2",children:"Ah"})]}),(0,i.jsxs)("p",{className:"mt-1 text-xs text-ink-3",children:["At ",eb,"V DC ="," ",(eq*parseFloat(eb)/1e3).toFixed(1)," kWh"]})]}),eW&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[(0,i.jsxs)(S.T,{level:1,className:"p-3",children:[(0,i.jsx)("p",{className:"font-mono text-[10px] text-ink-3 uppercase tracking-wider",children:"Temperature correction factor"}),(0,i.jsx)("p",{className:"font-mono text-sm text-ink-bright mt-1",children:eW.temperatureFactors.Kt.toFixed(4)}),(0,i.jsx)("p",{className:"text-[10px] text-ink-3 mt-1",children:"Capacity correction for cell temperature"})]}),(0,i.jsxs)(S.T,{level:1,className:"p-3",children:[(0,i.jsx)("p",{className:"font-mono text-[10px] text-ink-3 uppercase tracking-wider",children:"Peukert Number (n)"}),(0,i.jsx)("p",{className:"font-mono text-sm text-ink-bright mt-1",children:eW.temperatureFactors.adjustedPeukertN.toFixed(4)}),(0,i.jsx)("p",{className:"text-[10px] text-ink-3 mt-1",children:V.cW})]}),(0,i.jsxs)(S.T,{level:1,className:"p-3",children:[(0,i.jsx)("p",{className:"font-mono text-[10px] text-ink-3 uppercase tracking-wider",children:"Total Design Margin"}),(0,i.jsxs)("p",{className:"font-mono text-sm text-ink-bright mt-1",children:[(100*eW.capacityFactors.totalMargin).toFixed(1),"%"]}),(0,i.jsx)("p",{className:"text-[10px] text-ink-3 mt-1",children:"Combined safety and industry margins"})]}),(0,i.jsxs)(S.T,{level:1,className:"p-3",children:[(0,i.jsx)("p",{className:"font-mono text-[10px] text-ink-3 uppercase tracking-wider",children:"Effective Aging Factor"}),(0,i.jsx)("p",{className:"font-mono text-sm text-ink-bright mt-1",children:eW.capacityFactors.effectiveAgingFactor.toFixed(2)}),(0,i.jsx)("p",{className:"text-[10px] text-ink-3 mt-1",children:"End-of-life capacity compensation"})]})]}),(0,i.jsxs)(S.T,{level:1,className:"p-4",children:[(0,i.jsx)("p",{className:"font-mono text-xs text-ink-3 uppercase tracking-wider mb-3",children:"Load Profile Analysis"}),(0,i.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3 text-sm",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("span",{className:"text-ink-3 text-xs",children:"Duration:"}),(0,i.jsxs)("span",{className:"ml-2 text-ink-bright font-mono",children:[(60*eW.loadAnalysis.totalDuration).toFixed(0)," min"]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("span",{className:"text-ink-3 text-xs",children:"Avg Current:"}),(0,i.jsxs)("span",{className:"ml-2 text-ink-bright font-mono",children:[eW.loadAnalysis.avgCurrent.toFixed(1)," A"]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("span",{className:"text-ink-3 text-xs",children:"Peak Current:"}),(0,i.jsxs)("span",{className:"ml-2 text-ink-bright font-mono",children:[eW.loadAnalysis.peakCurrent.toFixed(1)," A"]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("span",{className:"text-ink-3 text-xs",children:"Peak/Avg Ratio:"}),(0,i.jsx)("span",{className:"ml-2 text-ink-bright font-mono",children:eW.loadAnalysis.peakToAverageRatio.toFixed(2)})]})]})]}),(0,i.jsxs)(S.T,{level:1,className:"p-4",children:[(0,i.jsx)("p",{className:"font-mono text-xs text-ink-3 uppercase tracking-wider mb-2",children:"System Configuration Summary"}),(0,i.jsxs)("ul",{className:"text-sm text-ink-2 space-y-1",children:[(0,i.jsxs)("li",{children:["Battery Type: ",D.YB[ev].name]}),(0,i.jsxs)("li",{children:["Max Depth of Discharge:"," ",(100*D.YB[ev].maxDOD).toFixed(0),"% —"," ",V.J8]}),(0,i.jsxs)("li",{children:["Operating Temperature: ",eS,"\xb0C"]}),(0,i.jsxs)("li",{children:["Industry: ",D.vR[ej].description]}),(0,i.jsxs)("li",{children:["System Voltage: ",eb,"V DC"]}),(0,i.jsxs)("li",{children:["Design Margin: ",(0,D.S3)(parseFloat(eA)),"%"]})]})]}),eH&&eH.periods.length>0&&(0,i.jsxs)(S.T,{level:1,className:"p-4",children:[(0,i.jsx)("div",{className:"flex items-center gap-2 mb-3",children:(0,i.jsx)(w.Y,{color:"rim",children:"IEEE 485-2020 \xb7 DUTY CYCLE WORKSHEET"})}),(0,i.jsx)("div",{className:"overflow-x-auto",children:(0,i.jsxs)("table",{className:"w-full text-xs",children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{className:"border-b border-rim-hair",children:[(0,i.jsx)("th",{className:"p-2 text-left font-mono text-ink-3",children:"Period"}),(0,i.jsx)("th",{className:"p-2 text-right font-mono text-ink-3",children:"Time (min)"}),(0,i.jsx)("th",{className:"p-2 text-right font-mono text-ink-3",children:"Load (A)"}),(0,i.jsx)("th",{className:"p-2 text-right font-mono text-ink-3",children:"ΔI (A)"}),(0,i.jsx)("th",{className:"p-2 text-right font-mono text-ink-3",children:"t to section end"}),(0,i.jsx)("th",{className:"p-2 text-right font-mono text-ink-3",children:"Kt"}),(0,i.jsx)("th",{className:"p-2 text-right font-mono text-ink-3",children:"Section term (Ah)"}),(0,i.jsx)("th",{className:"p-2 text-right font-mono text-ink-3",children:"Cum. in section"})]})}),(0,i.jsx)("tbody",{children:eH.periods.map(e=>{let t=e.periodNumber===eH.worstCasePeriod,a=e.periodNumber<=eH.worstCasePeriod;return(0,i.jsxs)("tr",{className:t?"bg-warn/10 border-l-2 border-warn":"",children:[(0,i.jsxs)("td",{className:"p-2 text-ink-2",children:[e.periodNumber,t&&(0,i.jsx)("span",{className:"ml-1 text-warn",children:"★"})]}),(0,i.jsx)("td",{className:"p-2 text-right font-mono text-ink-2",children:e.startTime}),(0,i.jsx)("td",{className:"p-2 text-right font-mono text-ink-2",children:e.loadAtEnd.toFixed(1)}),(0,i.jsxs)("td",{className:"p-2 text-right font-mono ".concat(e.loadChange>0?"text-ok":e.loadChange<0?"text-fault":"text-ink-3"),children:[e.loadChange>0?"+":"",e.loadChange.toFixed(1)]}),(0,i.jsx)("td",{className:"p-2 text-right font-mono text-ink-2",children:a?e.timeToEnd:D.k2}),(0,i.jsx)("td",{className:"p-2 text-right font-mono text-rim",children:a?e.Kt.toFixed(3):D.k2}),(0,i.jsx)("td",{className:"p-2 text-right font-mono text-ink-2",children:a?e.cellSizeContribution.toFixed(2):D.k2}),(0,i.jsx)("td",{className:"p-2 text-right font-mono font-semibold text-ink-bright",children:a?e.cumulativeCellSize.toFixed(2):D.k2})]},e.periodNumber)})}),(0,i.jsx)("tfoot",{className:"border-t border-rim-hair",children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{colSpan:6,className:"p-2 text-right font-mono text-ink-3",children:"Maximum (Uncorrected):"}),(0,i.jsxs)("td",{colSpan:2,className:"p-2 text-right font-mono font-bold text-rim",children:[eH.uncorrectedCellSize.toFixed(2)," Ah"]})]})})]})}),(0,i.jsxs)("p",{className:"mt-3 text-xs text-ink-3",children:[(0,i.jsx)("span",{className:"text-warn",children:"★"})," Last period of the governing section S ="," ",eH.worstCasePeriod," (IEEE 485-2020 \xa76.4.2: the battery is sized on the largest section total, not on the whole cycle). Periods after it fall outside that section and show ",D.k2,"."]})]}),eH&&eH.complianceNotes.length>0&&(0,i.jsxs)(S.T,{level:1,className:"p-4",accent:"rim",children:[(0,i.jsx)(w.Y,{color:"rim",children:"IEEE 485-2020 \xb7 COMPLIANCE NOTES"}),(0,i.jsx)("ul",{className:"mt-3 text-sm text-ink-2 space-y-1",children:eH.complianceNotes.map((e,t)=>(0,i.jsxs)("li",{className:"flex gap-2",children:[(0,i.jsx)("span",{className:"text-ok shrink-0",children:"•"}),(0,i.jsx)("span",{children:e})]},t))})]}),(null==eH?void 0:eH.sizingProvenance)&&(0,i.jsxs)(S.T,{level:1,className:"p-4",accent:"rim",children:[(0,i.jsx)(w.Y,{color:"rim",children:P._3}),(0,i.jsx)("p",{className:"mt-3 text-sm text-ink-2",children:P.vX[eH.sizingProvenance]})]})]}),(0,i.jsxs)("div",{className:"mt-4 flex flex-wrap items-center justify-between gap-3 pt-4 border-t border-rim-hair",children:[(0,i.jsx)(N.$,{variant:"ghost",onClick:()=>{window.location.reload()},children:"Reset Calculator"}),eH&&(0,i.jsx)(N.$,{variant:"ghost",onClick:()=>{aF()},children:"Get Expert Review"})]})]}),eH&&an?(()=>{var e,t;let a=(0,en.R)(an.id,Math.max(an.stage,4),!0,null!=an.h2VentResult,(null==(e=an.selectedBattery)?void 0:e.batteryId)!=null,(null==(t=an.roomDimensions)?void 0:t.lengthM)!=null,null!=an.h2ZoneResult);return a?(0,i.jsx)("div",{className:"px-6 pb-6",children:(0,i.jsx)(ei.A,{projectId:an.id,fromStage:4,recommendedNext:a.recommendedNext,al
1soOption:a.alsoOption})}):null})():null]}),(0,i.jsx)(Z.A,{isOpen:eV,onClose:()=>e7(!1),onSelect:tl,preFilterCalculatorType:ev}),tj&&null!==tk&&(0,i.jsx)(ee.A,{open:tj,onClose:()=>tb(!1),projectId:tk,creditsRemaining:tN,initialQuestion:aC,onSubmitted:()=>tb(!1)}),(0,i.jsx)(et.V,{isOpen:!1,onClose:()=>{},onSuccess:()=>{},calculatorType:"ieee-485",projectName:void 0}),(0,i.jsx)(ea.s,{isOpen:af,onClose:aw,isAuthenticated:au.isAuthenticated,user:au.user,creditBalance:ah.balance,creditLoading:ah.loading,creditError:ah.error,calculatorType:"IEEE 485 Battery Sizing",fileName:al,availableTiers:av,selectedTier:aj,onTierSelect:ak,onConfirmDownload:ay,onAuthenticationRequired:aN,isGenerating:ap,error:ag,pdfPreviewElement:eW?(0,i.jsxs)("div",{className:"text-center text-gray-500",children:[(0,i.jsx)("div",{className:"mb-2",children:(0,i.jsx)("strong",{children:"IEEE 485 Battery Sizing Report"})}),(0,i.jsxs)("div",{className:"text-sm",children:["Capacity: ",null==eq?void 0:eq.toLocaleString()," Ah"]}),eH&&(0,i.jsxs)("div",{className:"text-xs text-gray-400 mt-1",children:[eH.periods.length," duty cycle periods analyzed"]})]}):void 0})]})}let eA=eS},46865:(e,t,a)=>{a.d(t,{Y:()=>n});var i=a(32386);function n(e){let t={stage:Math.max(9,e.priorStage)};return e.h2ZoneResult&&(t.h2ZoneResult=(0,i.W)(e.h2ZoneResult,e.inputsHash)),void 0!==e.ventilationResult&&(t.ventilationResult=e.ventilationResult),t}},54604:(e,t,a)=>{a.d(t,{j:()=>d});var i=a(95155),n=a(16424),s=a(88334),r=a(98785),l=a(12115),o=a(24401),c=a(4750);function d(e){let{kicker:t,title:a,body:d,children:m,triggerLabel:x}=e,[u,h]=(0,l.useState)(!1),[p,g]=(0,l.useState)(null);(0,l.useEffect)(()=>{let e=document.createElement("div");return e.setAttribute("data-ui","cosmic"),document.body.appendChild(e),g(e),()=>{document.body.contains(e)&&document.body.removeChild(e)}},[]);let{refs:f,floatingStyles:v,context:j}=(0,n.we)({open:u,onOpenChange:h,placement:"bottom-start",middleware:[(0,s.cY)(8),(0,s.UU)(),(0,s.BN)({padding:8})],whileElementsMounted:r.ll}),b=(0,n.kp)(j),k=(0,n.s9)(j,{outsidePress:!0,escapeKey:!0}),y=(0,n.It)(j,{role:"dialog"}),{getReferenceProps:N,getFloatingProps:w}=(0,n.bv)([b,k,y]);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("button",{ref:f.setReference,type:"button","aria-label":x,...N(),children:m}),u&&(0,i.jsx)(n.XF,{root:p,children:(0,i.jsx)(n.s3,{context:j,modal:!1,initialFocus:-1,children:(0,i.jsx)("div",{ref:f.setFloating,style:v,"data-testid":"method-popover",...w(),children:(0,i.jsx)(c.T,{level:1,children:(0,i.jsxs)("div",{className:"p-4",children:[(0,i.jsx)(o.Y,{color:"rim",children:t}),(0,i.jsx)("div",{className:"font-display text-ink-bright mt-1",children:a}),(0,i.jsx)("div",{className:"text-ink mt-2 text-sm",children:d})]})})})})})]})}},61043:(e,t,a)=>{a.d(t,{_O:()=>s,hX:()=>o,kY:()=>l,pB:()=>r});var i=a(28066);let n="ebatt:battery-system-send";function s(e,t,a){let n=e.nominal_voltage,s=function(e,t){if(null===t||"number"!=typeof e.id)return null;let a=[t.recommendation,...t.alternatives].find(t=>null!==t&&t.battery.id===e.id);return a?a.configuration.totalUnits:null}(e,a),r=null!=s?s:n>0?Math.round(t/n):1;return{battery:{model:e.model_name,manufacturer:e.manufacturer,chemistry:e.chemistry,capacityAh:e.nominal_capacity_ah,widthMm:e.dimensions.width_mm,depthMm:e.dimensions.length_mm,heightMm:e.dimensions.height_mm,nominalVoltageV:n,count:Math.min(i.wA,Math.max(1,r))},systemVoltageV:t}}function r(e){try{let t={version:1,savedAt:Date.now(),...e};return sessionStorage.setItem(n,JSON.stringify(t)),!0}catch(e){return!1}}function l(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Date.now();try{let t=sessionStorage.getItem(n);if(null===t)return null;sessionStorage.removeItem(n);let a=JSON.parse(t);if(1!==a.version||"number"!=typeof a.savedAt||e-a.savedAt>18e5)return null;let i=a.battery;if([null==i?void 0:i.widthMm,null==i?void 0:i.depthMm,null==i?void 0:i.heightMm,null==i?void 0:i.nominalVoltageV,null==i?void 0:i.count].some(e=>"number"!=typeof e||!Number.isFinite(e)))return null;return a}catch(e){return null}}function o(e){let t=e.battery;return{designMode:"cabinet",batteryWidth:String(t.widthMm),batteryDepth:String(t.depthMm),batteryHeight:String(t.heightMm),batteryCount:String(t.count),batteryNominalVoltage:String(t.nominalVoltageV)}}},61498:(e,t,a)=>{a.d(t,{V:()=>l});var i=a(95155);a(12115);let n={xs:"text-xs",sm:"text-sm",md:"text-base",lg:"text-lg",xl:"text-xl"},s={ink:"text-ink","ink-bright":"text-ink-bright",rim:"text-rim",warm:"text-warm",fault:"text-fault"},r={400:"font-normal",500:"font-medium",600:"font-semibold",700:"font-bold"};function l(e){let{children:t,size:a="md",color:l="ink",weight:o=400}=e;return(0,i.jsx)("span",{className:["font-mono tabular-nums",n[a],s[l],r[o]].join(" "),children:t})}},83504:(e,t,a)=>{a.d(t,{t:()=>o});var i=a(95155),n=a(12115),s=a(5917),r=a(4750);let l={complete:"text-ok",current:"text-rim",pending:"text-ink-3"};function o(e){let{title:t,standard:a,sections:o,currentSectionId:c,onSectionChange:d,rightPanel:m,children:x}=e,u=(0,n.useRef)(null);return(0,i.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,i.jsxs)("header",{className:"px-4 py-3 border-b border-rim-hair shrink-0",children:[(0,i.jsx)("h1",{className:"font-display text-ink-bright text-lg leading-tight",children:t}),a&&(0,i.jsx)("span",{className:"font-mono text-xs text-ink-3 uppercase tracking-wider",children:a})]}),(0,i.jsxs)("div",{className:"flex flex-1 flex-col md:flex-row overflow-y-auto md:overflow-hidden",children:[(0,i.jsx)("nav",{ref:u,"aria-label":"Calculator sections",className:"flex flex-row overflow-x-auto shrink-0 border-b border-rim-hair md:flex-col md:w-52 md:overflow-y-auto md:border-b-0 md:border-r md:border-rim-hair",children:o.map((e,t)=>(0,i.jsxs)("button",{type:"button","data-rail-item":"true","data-status":e.status,"aria-current":e.id===c?"step":void 0,onClick:()=>d(e.id),onKeyDown:e=>(function(e,t){var a;if("ArrowDown"!==e.key&&"ArrowUp"!==e.key)return;e.preventDefault();let i=null==(a=u.current)?void 0:a.querySelectorAll("[data-rail-item]");if(!i)return;let n="ArrowDown"===e.key?i[t+1]:i[t-1];null==n||n.focus()})(e,t),className:["flex items-center gap-2 px-3 py-2 text-sm text-left w-full min-h-11 shrink-0 transition-colors","focus-visible:ring-2 focus-visible:ring-rim focus-visible:ring-offset-2 focus-visible:outline-none",l[e.status],"current"===e.status?"border-l-2 border-rim pl-2":""].filter(
1Boolean).join(" "),children:["complete"===e.status?(0,i.jsx)(s.A,{size:14,"aria-hidden":"true",className:"shrink-0"}):(0,i.jsx)("span",{className:"w-3.5 shrink-0","aria-hidden":"true"}),(0,i.jsx)("span",{children:e.label})]},e.id))}),(0,i.jsx)("main",{className:"flex-1 p-4 min-w-0 md:overflow-auto",children:x}),m&&(0,i.jsx)("aside",{className:"shrink-0 p-4 md:w-72 border-t border-rim-hair md:border-t-0 md:border-l md:border-rim-hair",children:(0,i.jsx)(r.T,{level:2,accent:"rim",children:(0,i.jsx)("div",{className:"p-4",children:m})})})]})]})}}}]);

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.