1import{aP as e,cJ as N,eO as y,ir as w}from"../../vendors/vendor-YUfIzhZH-1791218974056.js";import{l as c,f as C,s as S,t as $}from"../../sprint-planning/sprint-planning-core-D8DFNeL2-1791218975454.js";import{P as f}from"../../index-BqcUo8yk-1791218901832.js";function D(s){try{const r=s?.data?.data?.[0];return r?.profiles?.length?r:null}catch{return null}}function h(s){return s.replace(/_/g," ").replace(/\b\w/g,r=>r.toUpperCase())}function P(s){return s<=7?"success":s<=14?"warning":"destructive"}function b(s){return s<=7?{text:"text-emerald-500",bar:"[&>div]:bg-emerald-500",banner:"bg-emerald-500"}:s<=14?{text:"text-amber-500",bar:"[&>div]:bg-amber-500",banner:"bg-amber-500"}:{text:"text-red-500",bar:"[&>div]:bg-red-500",banner:"bg-red-500"}}function E({artifact:s}){const r=D(s);if(!r)return e.jsx("div",{"data-testid":"renderer-slip-profiles",className:"flex items-center justify-center p-8 text-muted-foreground text-sm",children:"No slip data available"});const{profiles:n}=r,v=[...n].sort((a,d)=>(d.averageSlipDays??0)-(a.averageSlipDays??0)),u=Math.max(...n.map(a=>a.averageSlipDays??0),1),i=n.filter(a=>(a.averageSlipDays??0)>14).length,m=i===0&&n.every(a=>(a.averageSlipDays??0)<=7);return e.jsxs("div",{"data-testid":"renderer-slip-profiles",className:"flex flex-col gap-4 p-4",children:[e.jsxs("div",{className:c("flex items-center gap-3 rounded-lg p-3",m?"bg-emerald-500/10":i>0?"bg-red-500/10":"bg-amber-500/10"),children:[m?e.jsx(N,{className:"w-5 h-5 text-emerald-500 flex-shrink-0"}):e.jsx(y,{className:c("w-5 h-5 flex-shrink-0",i>0?"text-red-500":"text-amber-500")}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:m?"All lanes within acceptable slip range":i>0?`${i} lane${i>1?"s":""} with critical slip exceeding 14 days`:"Some lanes showing elevated slip â review recommended"}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-0.5",children:[e.jsx(w,{className:"w-3 h-3 inline mr-1"}),r.totalEpicsAnalyzed??0," epic",(r.totalEpicsAnalyzed??0)!==1?"s":""," analyzed across ",n.length," lane",n.length!==1?"s":""]})]})]}),v.map((a,d)=>{const l=a.averageSlipDays??0,j=b(l),x=Object.entries(a.causalPercentages??{}).sort(([,o],[,t])=>t-o).slice(0,4),p=x.length>0?x[0][1]:0;return e.jsx(C,{className:c("border-border/50",l>14&&"border-red-500/30"),children:e.jsxs(S,{className:"p-3 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs font-semibold text-foreground",children:a.laneId||`Lane ${d+1}`}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-[11px] text-muted-foreground",children:[a.totalCompletedEpics??0," epics"]}),e.jsxs($,{variant:P(l),size:"xs",children:[l.toFixed(1),"d avg slip"]})]})]}),e.jsx(f,{value:l/u*100,className:c("h-1.5",j.bar),role:"meter","aria-valuenow":l,"aria-valuemin":0,"aria-valuemax":u,"aria-label":`${a.laneId||`Lane ${d+1}`}: ${l.toFixed(1)} day average slip`}),x.length>0&&e.jsxs("div",{className:"space-y-2 pt-1 border-t border-border/30",children:[e.jsx("span",{className:"text-[11px] font-medium text-muted-foreground",children:"Causal breakdown"}),e.jsx("div",{className:"space-y-1.5",children:x.map(([o,t])=>{const g=b(t>50?21:t>25?10:5);return e.jsxs("div",{className:"space-y-0.5",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-[11px] text-foreground truncate pr-2",children:h(o)}),e.jsxs("span",{className:c("text-[11px] font-semibold tabular-nums flex-shrink-0",g.text),children:[t.toFixed(0),"%"]})]}),e.jsx(f,{value:t,className:c("h-1",g.bar),role:"meter","aria-valuenow":t,"aria-valuemin":0,"aria-valuemax":p>0?p:100,"aria-label":`${h(o)}: ${t.toFixed(0)}% of slip causes for ${a.laneId||`Lane ${d+1}`}`})]},o)})})]})]})},a.laneId||d)})]})}export{E as default};
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.