@puberty-labs/refuctor
Version:
AI-powered, snark-fueled technical debt cleansing suite with automatic snarky language detection that turns code cleanup into a darkly humorous financial metaphor.
1 lines • 192 kB
JavaScript
(()=>{"use strict";var n,e={0:(n,e,A)=>{var r=A(696),t=A(470),a=A(206),o=A(292),i=A.n(o),s=A(893),d=A.n(s),l=A(383),c=A.n(l),m=A(884),f=A.n(m),C=A(88),E=A.n(C),p=A(997),g=A.n(p),B=A(214),b={};b.styleTagTransform=g(),b.setAttributes=f(),b.insert=c().bind(null,"head"),b.domAPI=d(),b.insertStyleElement=E(),i()(B.A,b),B.A&&B.A.locals&&B.A.locals;var h=A(200),x={};x.styleTagTransform=g(),x.setAttributes=f(),x.insert=c().bind(null,"head"),x.domAPI=d(),x.insertStyleElement=E(),i()(h.A,x),h.A&&h.A.locals&&h.A.locals;var u=A(540);const y=({fileDebtMap:n,onFileSelect:e,onDebtItemClick:A})=>{const[t,a]=(0,r.useState)("debtCount"),[o,i]=(0,r.useState)("desc"),[s,d]=(0,r.useState)("all"),[l,c]=(0,r.useState)(""),[m,f]=(0,r.useState)(""),[C,E]=(0,r.useState)(new Set),[p,g]=(0,r.useState)(1),[B]=(0,r.useState)(10),[b,h]=(0,r.useState)(!1);(0,r.useEffect)(()=>{const n=setTimeout(()=>{f(l),g(1)},300);return()=>clearTimeout(n)},[l]);const x=(0,r.useMemo)(()=>n&&0!==Object.keys(n).length?Object.entries(n):[],[n]),y=(0,r.useMemo)(()=>{if(0===x.length)return[];h(!0);try{let n=x.map(([n,e])=>({fullPath:n,fileName:n.split("/").pop(),directory:n.split("/").slice(0,-1).join("/"),debtCount:e.count||0,severity:e.severity||"p4",categories:e.categories||{},issues:e.issues||[]}));if(m){const e=m.toLowerCase();n=n.filter(n=>n.fileName.toLowerCase().includes(e)||n.directory.toLowerCase().includes(e))}"all"!==s&&(n=n.filter(n=>n.severity===s));const e={p1:4,p2:3,p3:2,p4:1};return n.sort((n,A)=>{let r,a;switch(t){case"debtCount":default:r=n.debtCount,a=A.debtCount;break;case"severity":r=e[n.severity]||0,a=e[A.severity]||0;break;case"name":r=n.fileName.toLowerCase(),a=A.fileName.toLowerCase()}return"asc"===o?r>a?1:-1:r<a?1:-1}),n}finally{setTimeout(()=>h(!1),0)}},[x,m,s,t,o]),k=Math.ceil(y.length/B),w=(p-1)*B,v=y.slice(w,w+B),j=(0,r.useCallback)(n=>{t===n?i("asc"===o?"desc":"asc"):(a(n),i("desc"))},[t,o]),I=(0,r.useCallback)(n=>{E(e=>{const A=new Set(e);return A.has(n)?A.delete(n):A.add(n),A})},[]),z=(0,r.useCallback)(n=>{c(n.target.value)},[]),N=(0,r.useCallback)(n=>{d(n.target.value),g(1)},[]),S=(0,r.useCallback)(n=>{g(n);const e=document.querySelector(".file-list");e&&e.scrollIntoView({behavior:"smooth",block:"start"})},[]),W=n=>{switch(n){case"p1":return"#ff4757";case"p2":return"#ffa502";case"p3":return"#3742fa";default:return"#7f8fa6"}},D=n=>{switch(n){case"p1":return"Critical";case"p2":return"High";case"p3":return"Medium";case"p4":return"Low";default:return"Unknown"}},q=n=>{switch(n){case"markdown":return"📝";case"spelling":return"📚";case"eslint-errors":return"🔧";case"eslint-warnings":return"⚠️";case"typescript":return"📘";case"console-logs":return"🖥️";case"todos":return"📋";case"formatting":return"🎨";case"security":return"🔒";case"dependencies":return"📦";default:return"📄"}},T=n=>{switch(n){case"markdown":return"Markdown Issues";case"spelling":return"Spelling Errors";case"eslint-errors":return"ESLint Errors";case"eslint-warnings":return"ESLint Warnings";case"typescript":return"TypeScript Errors";case"console-logs":return"Console Logs";case"todos":return"TODO Comments";case"formatting":return"Formatting Issues";case"security":return"Security Issues";case"dependencies":return"Dependency Issues";default:return n}};return n&&0!==Object.keys(n).length?(0,u.jsxs)("div",{className:"file-debt-breakdown "+(b?"loading":""),children:[(0,u.jsxs)("div",{className:"breakdown-header",children:[(0,u.jsx)("h3",{children:"📁 File-Level Debt Breakdown"}),(0,u.jsxs)("div",{className:"breakdown-stats",children:[(0,u.jsxs)("span",{className:"stat-item",children:[(0,u.jsx)("strong",{children:y.length})," files with debt"]}),(0,u.jsxs)("span",{className:"stat-item",children:[(0,u.jsx)("strong",{children:y.reduce((n,e)=>n+e.debtCount,0)})," total issues"]}),b&&(0,u.jsx)("span",{className:"stat-item loading-indicator",children:"⏳ Processing..."})]})]}),(0,u.jsxs)("div",{className:"breakdown-controls",children:[(0,u.jsxs)("div",{className:"search-filter-row",children:[(0,u.jsx)("input",{type:"text",placeholder:"Search files...",className:"search-input",value:l,onChange:z}),(0,u.jsxs)("select",{className:"filter-select",value:s,onChange:N,children:[(0,u.jsx)("option",{value:"all",children:"All Severities"}),(0,u.jsx)("option",{value:"p1",children:"Critical Only"}),(0,u.jsx)("option",{value:"p2",children:"High Only"}),(0,u.jsx)("option",{value:"p3",children:"Medium Only"}),(0,u.jsx)("option",{value:"p4",children:"Low Only"})]})]}),(0,u.jsxs)("div",{className:"sort-controls",children:[(0,u.jsxs)("button",{className:"sort-button "+("debtCount"===t?"active":""),onClick:()=>j("debtCount"),children:["Sort by Debt Count ","debtCount"===t&&("asc"===o?"↑":"↓")]}),(0,u.jsxs)("button",{className:"sort-button "+("severity"===t?"active":""),onClick:()=>j("severity"),children:["Sort by Severity ","severity"===t&&("asc"===o?"↑":"↓")]}),(0,u.jsxs)("button",{className:"sort-button "+("name"===t?"active":""),onClick:()=>j("name"),children:["Sort by Name ","name"===t&&("asc"===o?"↑":"↓")]})]})]}),(0,u.jsx)("div",{className:"file-list",children:v.map((n,r)=>(0,u.jsxs)("div",{className:"file-item",children:[(0,u.jsxs)("div",{className:`file-header ${n.severity}`,onClick:()=>I(n.fullPath),children:[(0,u.jsxs)("div",{className:"file-info",children:[(0,u.jsx)("span",{className:"expand-icon",children:C.has(n.fullPath)?"▼":"▶"}),(0,u.jsx)("span",{className:"file-name",children:n.fileName}),(0,u.jsx)("span",{className:"file-directory",children:n.directory})]}),(0,u.jsxs)("div",{className:"file-metrics",children:[(0,u.jsxs)("span",{className:"debt-count",children:[n.debtCount," issues"]}),(0,u.jsx)("span",{className:`severity-badge ${n.severity}`,style:{backgroundColor:W(n.severity)},children:D(n.severity)})]})]}),C.has(n.fullPath)&&(0,u.jsxs)("div",{className:"file-details",children:[(0,u.jsxs)("div",{className:"file-actions",children:[(0,u.jsx)("button",{className:"action-button primary",onClick:()=>e&&e(n.fullPath),children:"📂 View File"}),(0,u.jsx)("button",{className:"action-button secondary",onClick:()=>A&&A(n.fullPath,"auto-fix"),children:"🔧 Auto-Fix"})]}),(0,u.jsxs)("div",{className:"debt-categories",children:[(0,u.jsx)("h4",{children:"Issues by Category:"}),(0,u.jsx)("div",{className:"category-grid",children:Object.entries(n.categories).map(([e,r])=>(0,u.jsxs)("div",{className:"category-item clickable",onClick:()=>A&&A(n.fullPath,e),children:[(0,u.jsx)("span",{className:"category-icon",children:q(e)}),(0,u.jsx)("span",{className:"category-label",children:T(e)}),(0,u.jsx)("span",{className:"category-count",children:r})]},e))})]})]})]},n.fullPath))}),k>1&&(0,u.jsxs)("div",{className:"pagination",children:[(0,u.jsx)("button",{className:"pagination-button",disabled:1===p,onClick:()=>S(p-1),children:"Previous"}),(0,u.jsxs)("span",{className:"pagination-info",children:["Page ",p," of ",k]}),(0,u.jsx)("button",{className:"pagination-button",disabled:p===k,onClick:()=>S(p+1),children:"Next"})]})]}):(0,u.jsxs)("div",{className:"file-debt-breakdown",children:[(0,u.jsx)("div",{className:"breakdown-header",children:(0,u.jsx)("h3",{children:"📁 File-Level Debt Breakdown"})}),(0,u.jsx)("div",{className:"no-debt-files",children:(0,u.jsxs)("div",{className:"no-debt-message",children:[(0,u.jsx)("span",{className:"no-debt-icon",children:"🎉"}),(0,u.jsx)("h4",{children:"No File-Level Debt Detected"}),(0,u.jsx)("p",{children:"All files are debt-free! Keep up the excellent work!"})]})})]})};var k=A(909),w={};w.styleTagTransform=g(),w.setAttributes=f(),w.insert=c().bind(null,"head"),w.domAPI=d(),w.insertStyleElement=E(),i()(k.A,w),k.A&&k.A.locals&&k.A.locals;const v=({debtHistory:n,trendAnalysis:e,velocityAnalysis:A,peakAnalysis:t})=>{const[a,o]=(0,r.useState)("trend"),[i,s]=(0,r.useState)("7d"),d=r.useMemo(()=>n&&0!==n.length?n.map(n=>({date:n.date,timestamp:n.timestamp,total:n.summary.total,p1:n.summary.p1,p2:n.summary.p2,p3:n.summary.p3,p4:n.summary.p4,breakdown:n.breakdown,shameLevel:n.shameLevel})):[],[n]),l=(n,e)=>n&&0!==n.length?Math.max(...n.map(n=>n[e]||0)):0,c=(n,e)=>n&&0!==n.length?Math.min(...n.map(n=>n[e]||0)):0,m=(n,e)=>{if(!n||0===n.length)return"";const A=l(n,e),r=c(n,e),t=A-r||1;return`M ${n.map((A,a)=>`${20+360*a/(n.length-1)},${180-(A[e]-r)/t*160}`).join(" L ")}`},f=(n,e)=>{if(!n||0===n.length)return[];const A=l(n,e),r=c(n,e),t=A-r||1;return n.map((A,a)=>({x:20+360*a/(n.length-1),y:180-(A[e]-r)/t*160,value:A[e],date:A.date,...A}))},C=n=>{switch(n){case"increasing":return"#ff4757";case"decreasing":return"#4caf50";case"stable":return"#3742fa";default:return"#7f8fa6"}},E=n=>new Date(n).toLocaleDateString("en-US",{month:"short",day:"numeric"});return n&&0!==n.length?(0,u.jsxs)("div",{className:"trend-analysis",children:[(0,u.jsxs)("div",{className:"trend-header",children:[(0,u.jsx)("h3",{children:"📈 Trend Analysis"}),(0,u.jsxs)("div",{className:"trend-summary",children:[(0,u.jsxs)("div",{className:"summary-item",children:[(0,u.jsx)("span",{className:"summary-label",children:"Direction:"}),(0,u.jsxs)("span",{className:`summary-value ${e?.direction||"stable"}`,children:[(n=>{switch(n){case"increasing":return"📈";case"decreasing":return"📉";case"stable":return"📊";default:return"❓"}})(e?.direction)," ",e?.direction||"stable"]})]}),(0,u.jsxs)("div",{className:"summary-item",children:[(0,u.jsx)("span",{className:"summary-label",children:"Change:"}),(0,u.jsxs)("span",{className:"summary-value "+(e?.changePercent>0?"negative":"positive"),children:[e?.changePercent>0?"+":"",e?.changePercent||0,"%"]})]})]})]}),(0,u.jsxs)("div",{className:"trend-tabs",children:[(0,u.jsx)("button",{className:"tab-button "+("trend"===a?"active":""),onClick:()=>o("trend"),children:"📈 Debt Trend"}),(0,u.jsx)("button",{className:"tab-button "+("velocity"===a?"active":""),onClick:()=>o("velocity"),children:"🚀 Velocity"}),(0,u.jsx)("button",{className:"tab-button "+("breakdown"===a?"active":""),onClick:()=>o("breakdown"),children:"📊 Breakdown"})]}),"trend"===a&&(0,u.jsxs)("div",{className:"trend-chart-container",children:[(0,u.jsxs)("div",{className:"chart-header",children:[(0,u.jsx)("h4",{children:"Total Debt Over Time"}),(0,u.jsxs)("div",{className:"chart-stats",children:[(0,u.jsxs)("span",{className:"stat-item",children:["Current: ",(0,u.jsx)("strong",{children:d[d.length-1]?.total||0})]}),(0,u.jsxs)("span",{className:"stat-item",children:["Peak: ",(0,u.jsx)("strong",{children:t?.peakDebt||0})]}),(0,u.jsxs)("span",{className:"stat-item",children:["Days Tracked: ",(0,u.jsx)("strong",{children:d.length})]})]})]}),(0,u.jsxs)("div",{className:"chart-wrapper",children:[(0,u.jsxs)("svg",{width:400,height:200,className:"trend-chart",children:[(0,u.jsx)("defs",{children:(0,u.jsx)("pattern",{id:"grid",width:"40",height:"40",patternUnits:"userSpaceOnUse",children:(0,u.jsx)("path",{d:"M 40 0 L 0 0 0 40",fill:"none",stroke:"rgba(255,255,255,0.1)",strokeWidth:"1"})})}),(0,u.jsx)("rect",{width:"100%",height:"100%",fill:"url(#grid)"}),(0,u.jsx)("path",{d:m(d,"total"),fill:"none",stroke:C(e?.direction),strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"}),f(d,"total").map((n,A)=>(0,u.jsx)("circle",{cx:n.x,cy:n.y,r:"4",fill:C(e?.direction),stroke:"#ffffff",strokeWidth:"2",className:"chart-point",children:(0,u.jsx)("title",{children:`${n.date}: ${n.value} issues`})},A))]}),(0,u.jsx)("div",{className:"chart-labels",children:d.map((n,e)=>(0,u.jsx)("div",{className:"chart-label",children:E(n.date)},e))})]})]}),"velocity"===a&&(0,u.jsxs)("div",{className:"velocity-analysis",children:[(0,u.jsxs)("div",{className:"velocity-header",children:[(0,u.jsx)("h4",{children:"Debt Velocity Analysis"}),(0,u.jsxs)("div",{className:"velocity-summary",children:[(0,u.jsxs)("div",{className:"velocity-metric",children:[(0,u.jsx)("span",{className:"metric-label",children:"Daily Change:"}),(0,u.jsxs)("span",{className:"metric-value "+(A?.velocity>0?"negative":"positive"),children:[A?.velocity>0?"+":"",A?.velocity||0]})]}),(0,u.jsxs)("div",{className:"velocity-metric",children:[(0,u.jsx)("span",{className:"metric-label",children:"Acceleration:"}),(0,u.jsx)("span",{className:"metric-value "+(A?.accelerating?"negative":"positive"),children:A?.accelerating?"⬆️ Accelerating":"⬇️ Decelerating"})]})]})]}),(0,u.jsx)("div",{className:"velocity-chart-container",children:(0,u.jsxs)("svg",{width:400,height:200,className:"velocity-chart",children:[(0,u.jsx)("rect",{width:"100%",height:"100%",fill:"url(#grid)"}),d.map((n,e)=>{if(0===e)return null;const A=d[e-1],r=n.total-A.total,t=Math.max(...d.slice(1).map((n,e)=>Math.abs(n.total-d[e].total))),a=t>0?Math.abs(r)/t*160:0,o=360/(d.length-1),i=20+(e-1)*o,s=r>=0?100-a:100;return(0,u.jsx)("rect",{x:i,y:s,width:.8*o,height:a,fill:r>=0?"#ff4757":"#4caf50",opacity:.7,rx:"2",children:(0,u.jsx)("title",{children:`${n.date}: ${r>0?"+":""}${r} issues`})},e)}),(0,u.jsx)("line",{x1:20,y1:100,x2:380,y2:100,stroke:"rgba(255,255,255,0.3)",strokeWidth:"1",strokeDasharray:"5,5"})]})})]}),"breakdown"===a&&(0,u.jsxs)("div",{className:"breakdown-analysis",children:[(0,u.jsx)("div",{className:"breakdown-header",children:(0,u.jsx)("h4",{children:"Debt Category Breakdown"})}),(0,u.jsx)("div",{className:"breakdown-grid",children:["p1","p2","p3","p4"].map(n=>(0,u.jsxs)("div",{className:"breakdown-item",children:[(0,u.jsxs)("div",{className:"breakdown-item-header",children:[(0,u.jsxs)("h5",{children:[n.toUpperCase()," Issues"]}),(0,u.jsx)("span",{className:"breakdown-current",children:d[d.length-1]?.[n]||0})]}),(0,u.jsx)("div",{className:"breakdown-mini-chart",children:(0,u.jsxs)("svg",{width:"200",height:"40",className:"mini-chart",children:[(0,u.jsx)("path",{d:m(d,n),fill:"none",stroke:"p1"===n?"#ff4757":"p2"===n?"#ffa502":"p3"===n?"#3742fa":"#7f8fa6",strokeWidth:"2"}),f(d,n).map((e,A)=>(0,u.jsx)("circle",{cx:.5*e.x,cy:.2*e.y,r:"2",fill:"p1"===n?"#ff4757":"p2"===n?"#ffa502":"p3"===n?"#3742fa":"#7f8fa6"},A))]})})]},n))})]}),(0,u.jsxs)("div",{className:"trend-insights",children:[(0,u.jsx)("h4",{children:"📊 Key Insights"}),(0,u.jsxs)("div",{className:"insights-grid",children:[(0,u.jsxs)("div",{className:"insight-item",children:[(0,u.jsx)("span",{className:"insight-icon",children:"📈"}),(0,u.jsxs)("div",{className:"insight-content",children:[(0,u.jsx)("h5",{children:"Trend Direction"}),(0,u.jsxs)("p",{children:["Debt is currently ",e?.direction||"stable"]})]})]}),(0,u.jsxs)("div",{className:"insight-item",children:[(0,u.jsx)("span",{className:"insight-icon",children:"🎯"}),(0,u.jsxs)("div",{className:"insight-content",children:[(0,u.jsx)("h5",{children:"Peak Debt"}),(0,u.jsxs)("p",{children:[t?.peakDebt||0," issues on ",t?.peakDate?E(t.peakDate):"N/A"]})]})]}),(0,u.jsxs)("div",{className:"insight-item",children:[(0,u.jsx)("span",{className:"insight-icon",children:"⚡"}),(0,u.jsxs)("div",{className:"insight-content",children:[(0,u.jsx)("h5",{children:"Daily Velocity"}),(0,u.jsxs)("p",{children:[A?.velocity>0?"+":"",A?.velocity||0," issues/day"]})]})]}),(0,u.jsxs)("div",{className:"insight-item",children:[(0,u.jsx)("span",{className:"insight-icon",children:"📅"}),(0,u.jsxs)("div",{className:"insight-content",children:[(0,u.jsx)("h5",{children:"Tracking Period"}),(0,u.jsxs)("p",{children:[d.length," days of data"]})]})]})]})]})]}):(0,u.jsxs)("div",{className:"trend-analysis",children:[(0,u.jsx)("div",{className:"trend-header",children:(0,u.jsx)("h3",{children:"📈 Trend Analysis"})}),(0,u.jsx)("div",{className:"no-trend-data",children:(0,u.jsxs)("div",{className:"no-trend-message",children:[(0,u.jsx)("span",{className:"no-trend-icon",children:"📊"}),(0,u.jsx)("h4",{children:"No Historical Data Available"}),(0,u.jsx)("p",{children:"Run some debt scans to start tracking trends!"})]})})]})},j=()=>{const[n,e]=(0,r.useState)(null),[A,t]=(0,r.useState)(null),[o,i]=(0,r.useState)(!0),[s,d]=(0,r.useState)(null),[l,c]=(0,r.useState)(null),[m,f]=(0,r.useState)(!1),[C,E]=(0,r.useState)({show:!1,content:"",x:0,y:0}),[p,g]=(0,r.useState)(null),[B,b]=(0,r.useState)(!1),[h,x]=(0,r.useState)(null),[k,w]=(0,r.useState)([]),[j,I]=(0,r.useState)(!1),[z,N]=(0,r.useState)(!1),S=async()=>{if(!B){b(!0);try{const n=await fetch("/api/financial/metrics");if(n.ok){const e=await n.json();e.success&&g(e.data)}}catch(n){console.error("💥 Failed to fetch financial metrics:",n)}finally{b(!1)}}},W=()=>{N(!1)},D=n=>{if(!n)return{total:0,p1:0,p2:0,p3:0,p4:0,guido:0,mafia:0};const e=n.currentDebt?.Guido?.length||0,A=n.currentDebt?.Mafia?.length||0,r=n.summary?.p1||0,t=n.summary?.p2||0,a=n.summary?.p3||0,o=n.summary?.p4||0;return{total:n.summary?.total||0,p1:r,p2:t,p3:a,p4:o,guido:e,mafia:A}},q=n=>n?.topHotspots?n.topHotspots.slice(0,10):[];(0,r.useEffect)(()=>{const n=(0,a.Ay)();return c(n),n.on("connect",()=>{f(!0)}),n.on("disconnect",()=>{f(!1)}),n.on("debt-update",n=>{"scan-complete"===n.type&&(e(n.data),d(n.timestamp))}),T(),()=>{n.close()}},[]);const T=async()=>{try{i(!0);const[n,A]=await Promise.all([fetch("/api/project/info"),fetch("/api/debt/status")]),r=await n.json(),a=await A.json();t(r.data),e(a.data),d((new Date).toISOString()),S(),M(),O()}catch(n){console.error("💥 Failed to load dashboard data:",n)}finally{i(!1)}},Y=async()=>{try{i(!0);const n=await fetch("/api/debt/scan"),A=await n.json();e(A.data),d(A.metadata.scannedAt),await S()}catch(n){console.error("💥 Scan failed:",n)}finally{i(!1)}},X=async n=>{try{const e=await fetch("/api/debt/fix",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fixType:n})});await e.json(),setTimeout(()=>{Y()},2e3)}catch(n){console.error("💥 Fix failed:",n)}},F=async(n="chunked")=>{try{i(!0);const e=await fetch("/api/debt/uncook",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:n,chunkSize:10,maxChunks:20,maxFiles:25})});await e.json(),setTimeout(()=>{Y()},2e3)}catch(n){console.error("💥 Uncook failed:",n)}finally{i(!1)}},M=async()=>{I(!0);try{const n=await fetch("/api/mode"),e=await n.json();e.success?x(e.data):console.error("Failed to fetch current mode:",e.error)}catch(n){console.error("Error fetching current mode:",n)}finally{I(!1)}},O=async()=>{try{const n=await fetch("/api/mode/available"),e=await n.json();e.success?w(e.data.modes):console.error("Failed to fetch available modes:",e.error)}catch(n){console.error("Error fetching available modes:",n)}},P=(n,e)=>{const A=n.currentTarget.getBoundingClientRect();E({show:!0,content:e,x:A.left+A.width/2,y:A.top-10})},R=()=>{E({show:!1,content:"",x:0,y:0})},L="Un-cook the books by processing ignored files in manageable chunks. Reveals hidden debt in node_modules, build directories, and other typically ignored locations. Choose from chunked, interactive, or smart processing modes to audit what's really hiding in your ignored files.";return o?(0,u.jsx)("div",{className:"loading-container",children:(0,u.jsxs)("div",{className:"loading-content",children:[(0,u.jsxs)("div",{className:"loading-logo-container",children:[(0,u.jsx)("img",{src:"/images/refuctor-logo.png",alt:"Refuctor Logo",className:"loading-logo-image",onError:n=>{n.target.style.display="none",n.target.nextSibling.style.display="block"}}),(0,u.jsx)("div",{className:"loading-logo fallback-loading",style:{display:"none"},children:"REFUCTOR"})]}),(0,u.jsx)("div",{className:"loading-text",children:"💀 The Debt Collector is awakening..."}),(0,u.jsx)("div",{className:"loading-spinner"})]})}):(0,u.jsxs)("div",{className:"dashboard",children:[(0,u.jsx)("header",{className:"dashboard-header",children:(0,u.jsxs)("div",{className:"header-content",children:[(0,u.jsxs)("div",{className:"logo-container",children:[(0,u.jsx)("img",{src:"/images/refuctor-logo.png",alt:"Refuctor Logo",className:"dashboard-logo",onError:n=>{n.target.style.display="none",n.target.nextSibling.style.display="block"}}),(0,u.jsx)("h1",{className:"dashboard-title fallback-title",style:{display:"none"},children:"REFUCTOR"}),(0,u.jsx)("div",{className:"dashboard-subtitle",children:'"The Debt Collector" - Professional Technical Debt Management'})]}),(0,u.jsx)("div",{className:"connection-status",children:(0,u.jsx)("div",{className:"status-indicator "+(m?"connected":"disconnected"),children:m?"🟢 CONNECTED":"🔴 DISCONNECTED"})})]})}),A&&(0,u.jsxs)("div",{className:"project-info",children:[(0,u.jsx)("h2",{children:A.name}),(0,u.jsxs)("div",{className:"project-details",children:[(0,u.jsx)("span",{children:A.path}),(0,u.jsxs)("span",{className:"project-version",children:["v",A.version]}),(0,u.jsxs)("span",{className:"refuctor-version",children:["Refuctor v",A.refuctorVersion]})]})]}),(0,u.jsxs)("main",{className:"dashboard-main",children:[(0,u.jsxs)("div",{className:"dashboard-grid",children:[(0,u.jsx)("div",{className:"upper-left-panel",children:(0,u.jsxs)("div",{className:"financial-metrics",children:[(0,u.jsx)("h2",{children:"💰 Financial Impact"}),(0,u.jsxs)("div",{className:"financial-grid",children:[(0,u.jsxs)("div",{className:"financial-metric",children:[(0,u.jsx)("div",{className:"metric-value",children:B?"...":p?.creditScore?.score||0}),(0,u.jsx)("div",{className:"metric-label",children:"Credit Score"})]}),(0,u.jsxs)("div",{className:"financial-metric",children:[(0,u.jsx)("div",{className:"metric-value",children:B?"...":p?.creditScore?.classification?.replace("_"," ")||"VIBE"}),(0,u.jsx)("div",{className:"metric-label",children:"Credit Tier"})]}),(0,u.jsxs)("div",{className:"financial-metric",children:[(0,u.jsx)("div",{className:"metric-value",children:B?"...":p?.debtCostAnalysis?.estimatedCost?`$${p.debtCostAnalysis.estimatedCost}`:"$0"}),(0,u.jsx)("div",{className:"metric-label",children:"Total Debt Cost"})]}),(0,u.jsxs)("div",{className:"financial-metric",children:[(0,u.jsx)("div",{className:"metric-value",children:B?"...":p?.debtCostAnalysis?.estimatedHours?`${p.debtCostAnalysis.estimatedHours}h`:"0h"}),(0,u.jsx)("div",{className:"metric-label",children:"Time Wasted"})]}),(0,u.jsxs)("div",{className:"financial-metric",children:[(0,u.jsx)("div",{className:"metric-value",children:B?"...":p?.creditScore?.interestRate?`${p.creditScore.interestRate}%`:"0%"}),(0,u.jsx)("div",{className:"metric-label",children:"Interest Rate (APR)"})]})]})]})}),(0,u.jsx)("div",{className:"upper-right-panel",children:(0,u.jsxs)("div",{className:"debt-status",children:[(0,u.jsxs)("div",{className:"status-header",children:[(0,u.jsx)("h2",{children:"📊 Debt Analysis"}),s&&(0,u.jsxs)("div",{className:"last-scan",children:["Last scan: ",new Date(s).toLocaleString()]})]}),(0,u.jsx)("div",{className:"shame-level",children:(0,u.jsx)("div",{className:`shame-indicator ${p?.debtStatus?.shameLevel||"unknown"}`,children:B?"📊 Loading debt analysis...":p?.debtStatus?.shameLevel?(n=>{switch(n){case"spotless":case"debt-free":return"🎉 Debt-free! You magnificent debt-slayer!";case"mild embarrassment":return"⚠️ Minor debt detected. Handle it when convenient.";case"professional responsibility":return"📝 Professional development debt. Schedule cleanup time.";case"needs attention":return"🛠️ Moderate debt levels. Worth addressing in next sprint.";case"documentation focused":return"📚 Documentation-heavy debt. Normal for active development.";case"minor-issues":return"⚠️ Minor debt detected. Handle it before it breeds.";case"needs-attention":return"🚨 Debt levels rising. Time to call The Fixer.";case"embarrassing":return"💀 This is fucking embarrassing. Fix it NOW.";case"bankruptcy-imminent":case"career ending":return"💀 This is career-ending debt. Fix it NOW.";case"guido territory":return"⚰️ Your code is in foreclosure. Guido is on his way.";default:return"📊 Debt status unknown. Run a scan."}})(p.debtStatus.shameLevel):"📊 Run a scan to analyze debt"})}),(0,u.jsxs)("div",{className:"debt-summary",children:[(0,u.jsxs)("div",{className:"debt-metric total clickable",onClick:()=>{N(!0)},children:[(0,u.jsx)("div",{className:"metric-value",children:p?.debtStatus?.summary?.total||0}),(0,u.jsx)("div",{className:"metric-label",children:"Total Debt"}),(0,u.jsx)("div",{className:"metric-subtitle",children:"Click for details"})]}),(0,u.jsxs)("div",{className:"debt-metrics-grid",children:[(p?.debtStatus?.currentDebt?.Guido?.length||0)>0&&(0,u.jsxs)("div",{className:"debt-metric guido",children:[(0,u.jsx)("div",{className:"metric-value",children:p?.debtStatus?.currentDebt?.Guido?.length||0}),(0,u.jsx)("div",{className:"metric-label",children:"🤌 Guido"})]}),(p?.debtStatus?.currentDebt?.Mafia?.length||0)>0&&(0,u.jsxs)("div",{className:"debt-metric mafia",children:[(0,u.jsx)("div",{className:"metric-value",children:p?.debtStatus?.currentDebt?.Mafia?.length||0}),(0,u.jsx)("div",{className:"metric-label",children:"🕴️ Mafia"})]}),(0,u.jsxs)("div",{className:"debt-metric p1",children:[(0,u.jsx)("div",{className:"metric-value",children:p?.debtStatus?.summary?.p1||0}),(0,u.jsx)("div",{className:"metric-label",children:"P1 Critical"})]}),(0,u.jsxs)("div",{className:"debt-metric p2",children:[(0,u.jsx)("div",{className:"metric-value",children:p?.debtStatus?.summary?.p2||0}),(0,u.jsx)("div",{className:"metric-label",children:"P2 High"})]}),(0,u.jsxs)("div",{className:"debt-metric p3",children:[(0,u.jsx)("div",{className:"metric-value",children:p?.debtStatus?.summary?.p3||0}),(0,u.jsx)("div",{className:"metric-label",children:"P3 Medium"})]}),(0,u.jsxs)("div",{className:"debt-metric p4",children:[(0,u.jsx)("div",{className:"metric-value",children:p?.debtStatus?.summary?.p4||0}),(0,u.jsx)("div",{className:"metric-label",children:"P4 Low"})]})]})]})]})}),(0,u.jsxs)("div",{className:"full-width-control-panel",children:[(0,u.jsxs)("div",{className:"control-panel-header",children:[(0,u.jsx)("h2",{children:"🎯 Debt Management Operations"}),(0,u.jsx)("div",{className:"control-panel-subtitle",children:"Professional debt elimination strategies"})]}),(0,u.jsxs)("div",{className:"mode-management-section",children:[(0,u.jsxs)("div",{className:"mode-header",children:[(0,u.jsx)("h3",{children:"🔧 Classification Mode"}),(0,u.jsx)("div",{className:"mode-subtitle",children:j?"Loading...":h?`Current: ${h.config.emoji} ${h.config.name}`:"Select debt classification mode"})]}),(0,u.jsxs)("div",{className:"mode-controls",children:[(0,u.jsx)("div",{className:"mode-radio-group",children:k.map(n=>(0,u.jsxs)("label",{className:"mode-radio-option",children:[(0,u.jsx)("input",{type:"radio",name:"debt-mode",value:n.key,checked:h?.currentMode===n.key,onChange:()=>(async n=>{I(!0);try{const e=await fetch("/api/mode",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:n})}),A=await e.json();A.success?(await M(),await S(),await T()):console.error("Failed to switch mode:",A.error)}catch(n){console.error("Error switching mode:",n)}finally{I(!1)}})(n.key),disabled:j}),(0,u.jsxs)("div",{className:"mode-radio-content",children:[(0,u.jsx)("div",{className:"mode-icon",children:n.emoji}),(0,u.jsxs)("div",{className:"mode-info",children:[(0,u.jsx)("div",{className:"mode-name",children:n.name}),(0,u.jsx)("div",{className:"mode-description",children:n.description})]})]})]},n.key))}),(0,u.jsxs)("div",{className:"mode-actions",children:[(0,u.jsx)("button",{className:"mode-action-button auto-detect",onClick:()=>(async(n=!1)=>{I(!0);try{const e=await fetch("/api/mode/auto-detect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apply:n})}),A=await e.json();if(A.success)return n&&(await M(),await S(),await T()),A.data;console.error("Failed to auto-detect mode:",A.error)}catch(n){console.error("Error auto-detecting mode:",n)}finally{I(!1)}})(!0),disabled:j,children:"🔍 Auto-Detect & Apply"}),(0,u.jsx)("button",{className:"mode-action-button refresh",onClick:M,disabled:j,children:"🔄 Refresh"})]})]})]}),(0,u.jsxs)("div",{className:"control-buttons-container",children:[(0,u.jsxs)("button",{className:"control-button scan-button",onClick:Y,disabled:o,onMouseEnter:n=>P(n,"Runs a comprehensive analysis of your codebase to identify technical debt across multiple categories including spelling errors, linting issues, security vulnerabilities, and code quality problems. This is your first step in the debt elimination process."),onMouseLeave:R,children:[(0,u.jsx)("div",{className:"button-icon",children:"📊"}),(0,u.jsxs)("div",{className:"button-text",children:[(0,u.jsx)("div",{className:"button-title",children:"SCAN DEBT"}),(0,u.jsx)("div",{className:"button-subtitle",children:"Comprehensive analysis"})]})]}),(0,u.jsxs)("button",{className:"control-button fix-button",onClick:()=>X("auto"),disabled:o,onMouseEnter:n=>P(n,"Automatically fixes safe, low-risk technical debt items that can be resolved without human intervention. This includes spelling corrections, import organization, and basic formatting issues. Perfect for quick wins and instant debt reduction."),onMouseLeave:R,children:[(0,u.jsx)("div",{className:"button-icon",children:"✨"}),(0,u.jsxs)("div",{className:"button-text",children:[(0,u.jsx)("div",{className:"button-title",children:"MAKE IT DISAPPEAR"}),(0,u.jsx)("div",{className:"button-subtitle",children:"One-click cleanup of safe fixes"})]})]}),(0,u.jsxs)("button",{className:"control-button refinance-button",onClick:()=>X("schedule"),disabled:o,onMouseEnter:n=>P(n,"Restructures your technical debt by prioritizing fixes, creating payment schedules, and organizing debt into manageable chunks. This helps you tackle debt systematically rather than being overwhelmed by the total amount."),onMouseLeave:R,children:[(0,u.jsx)("div",{className:"button-icon",children:"💰"}),(0,u.jsxs)("div",{className:"button-text",children:[(0,u.jsx)("div",{className:"button-title",children:"REFINANCE DEBT"}),(0,u.jsx)("div",{className:"button-subtitle",children:"Restructure payment plan"})]})]}),(0,u.jsxs)("button",{className:"control-button collectors-button",onClick:()=>X("ai-help"),disabled:o,onMouseEnter:n=>P(n,"Deploys AI-powered assistance to help resolve complex technical debt that requires human judgment. The AI Collection Agency provides intelligent suggestions and automated refactoring for challenging debt items."),onMouseLeave:R,children:[(0,u.jsx)("div",{className:"button-icon",children:"🤖"}),(0,u.jsxs)("div",{className:"button-text",children:[(0,u.jsx)("div",{className:"button-title",children:"SELL TO COLLECTORS"}),(0,u.jsx)("div",{className:"button-subtitle",children:"AI-powered debt resolution"})]})]}),(0,u.jsxs)("button",{className:"control-button uncook-button",onClick:()=>F("chunked"),disabled:o,onMouseEnter:n=>P(n,L),onMouseLeave:R,children:[(0,u.jsx)("div",{className:"button-icon",children:"🍳"}),(0,u.jsxs)("div",{className:"button-text",children:[(0,u.jsx)("div",{className:"button-title",children:"UN-COOK THE BOOKS"}),(0,u.jsx)("div",{className:"button-subtitle",children:"Audit ignored files"})]})]}),(0,u.jsxs)("button",{className:"control-button bankruptcy-button",onClick:()=>X("nuclear"),disabled:o,onMouseEnter:n=>P(n,"The nuclear option - performs aggressive debt elimination including major refactoring, dependency updates, and structural changes. Use with caution as this can make significant changes to your codebase. Always backup first!"),onMouseLeave:R,children:[(0,u.jsx)("div",{className:"button-icon",children:"⚡"}),(0,u.jsxs)("div",{className:"button-text",children:[(0,u.jsx)("div",{className:"button-title",children:"FILE FOR BANKRUPTCY"}),(0,u.jsx)("div",{className:"button-subtitle",children:"Nuclear option - complete reset"})]})]}),(0,u.jsxs)("button",{className:"control-button uncook-button",onClick:()=>F("chunked"),disabled:o,onMouseEnter:n=>P(n,L),onMouseLeave:R,children:[(0,u.jsx)("div",{className:"button-icon",children:"🍳"}),(0,u.jsxs)("div",{className:"button-text",children:[(0,u.jsx)("div",{className:"button-title",children:"UN-COOK THE BOOKS"}),(0,u.jsx)("div",{className:"button-subtitle",children:"Audit ignored files"})]})]})]})]})]}),(0,u.jsx)("div",{className:"enhanced-analysis-section",children:(0,u.jsxs)("div",{className:"analysis-grid",children:[(0,u.jsx)("div",{className:"analysis-panel",children:(0,u.jsx)(y,{fileDebtMap:n?.fileDebtMap||{},onFileSelect:n=>console.log("File selected:",n),onDebtItemClick:(n,e)=>console.log("Debt action:",e,n)})}),(0,u.jsx)("div",{className:"analysis-panel",children:(0,u.jsx)(v,{debtHistory:n?.debtHistory||[],trendAnalysis:n?.trendAnalysis||{},velocityAnalysis:n?.velocityAnalysis||{},peakAnalysis:n?.peakAnalysis||{}})})]})})]}),(0,u.jsx)("footer",{className:"dashboard-footer",children:(0,u.jsxs)("div",{className:"footer-content",children:[(0,u.jsx)("div",{className:"footer-tagline",children:"💀 Refactor or Be Repossessed 💀"}),(0,u.jsx)("div",{className:"footer-info",children:"The Debt Collector © 2024 Puberty Labs"})]})}),z&&(0,u.jsx)("div",{className:"modal-overlay",onClick:W,children:(0,u.jsxs)("div",{className:"debt-modal",onClick:n=>n.stopPropagation(),children:[(0,u.jsxs)("div",{className:"modal-header",children:[(0,u.jsx)("h2",{children:"📊 Debt Analysis Details"}),(0,u.jsx)("button",{className:"modal-close",onClick:W,children:"✕"})]}),(0,u.jsxs)("div",{className:"modal-content",children:[(0,u.jsxs)("div",{className:"debt-summary-stats",children:[(0,u.jsxs)("div",{className:"summary-stat",children:[(0,u.jsx)("div",{className:"stat-value",children:D(n).total}),(0,u.jsx)("div",{className:"stat-label",children:"Total Issues"})]}),D(n).guido>0&&(0,u.jsxs)("div",{className:"summary-stat guido",children:[(0,u.jsx)("div",{className:"stat-value",children:D(n).guido}),(0,u.jsx)("div",{className:"stat-label",children:"🤌 Guido Categories"})]}),(0,u.jsxs)("div",{className:"summary-stat",children:[(0,u.jsx)("div",{className:"stat-value",children:q(n).length}),(0,u.jsx)("div",{className:"stat-label",children:"Hotspot Files"})]})]}),(0,u.jsxs)("div",{className:"debt-breakdown-section",children:[(0,u.jsx)("h3",{children:"📋 Issues by Category"}),(0,u.jsx)("div",{className:"debt-categories",children:(n=>{if(!n?.summary)return[];const e=[],A=n.summary;return A.markdown>0&&e.push({category:"Markdown Issues",count:A.markdown,icon:"📝",description:"Documentation formatting and structure issues",severity:"high"}),A.spelling>0&&e.push({category:"Spelling Errors",count:A.spelling,icon:"📚",description:"Misspelled words and typos in documentation",severity:"medium"}),A.security>0&&e.push({category:"Security Vulnerabilities",count:A.security,icon:"🔒",description:"Known security issues in dependencies",severity:"critical"}),A.dependencies>0&&e.push({category:"Dependency Issues",count:A.dependencies,icon:"📦",description:"Outdated or problematic package dependencies",severity:"medium"}),A.eslint>0&&e.push({category:"ESLint Issues",count:A.eslint,icon:"🔧",description:"Code style and quality violations",severity:"medium"}),A.typescript>0&&e.push({category:"TypeScript Errors",count:A.typescript,icon:"📘",description:"Type checking and compilation errors",severity:"high"}),A.codeQuality>0&&e.push({category:"Code Quality Issues",count:A.codeQuality,icon:"💻",description:"Console.log statements, TODOs, and code smells",severity:"low"}),A.formatting>0&&e.push({category:"Formatting Issues",count:A.formatting,icon:"🎨",description:"Code formatting and style inconsistencies",severity:"low"}),e})(n).map((n,e)=>(0,u.jsx)("div",{className:`debt-category-card ${n.severity}`,children:(0,u.jsxs)("div",{className:"category-header",children:[(0,u.jsx)("span",{className:"category-icon",children:n.icon}),(0,u.jsxs)("div",{className:"category-info",children:[(0,u.jsx)("h4",{children:n.category}),(0,u.jsx)("p",{children:n.description})]}),(0,u.jsx)("div",{className:"category-count",children:n.count})]})},e))})]}),q(n).length>0&&(0,u.jsxs)("div",{className:"hotspots-section",children:[(0,u.jsx)("h3",{children:"🔥 Top Debt Hotspots"}),(0,u.jsx)("div",{className:"hotspots-list",children:q(n).map((n,e)=>(0,u.jsx)("div",{className:"hotspot-card",children:(0,u.jsxs)("div",{className:"hotspot-info",children:[(0,u.jsx)("div",{className:"hotspot-file",children:n.file}),(0,u.jsxs)("div",{className:"hotspot-stats",children:[(0,u.jsxs)("span",{className:"hotspot-count",children:[n.debtCount," issues"]}),(0,u.jsx)("span",{className:`hotspot-priority ${n.priority}`,children:n.priority.toUpperCase()}),(0,u.jsxs)("span",{className:"hotspot-temp",children:["🌡️ ",n.temperature,"°"]})]})]})},e))})]}),n?.currentDebt?.Guido&&n.currentDebt.Guido.length>0&&(0,u.jsxs)("div",{className:"guido-messages-section",children:[(0,u.jsx)("h3",{children:"🤌 Guido's Collection Notices"}),(0,u.jsx)("div",{className:"guido-messages",children:n.currentDebt.Guido.map((n,e)=>(0,u.jsx)("div",{className:"guido-message",children:(0,u.jsx)("div",{className:"guido-text",children:n})},e))})]})]})]})}),C.show&&(0,u.jsx)("div",{className:"tooltip",style:{position:"fixed",left:C.x,top:C.y,transform:"translateX(-50%) translateY(-100%)",zIndex:1e3,pointerEvents:"none"},children:(0,u.jsx)("div",{className:"tooltip-content",children:C.content})})]})};t.createRoot(document.getElementById("root")).render((0,u.jsx)(r.StrictMode,{children:(0,u.jsx)(j,{})}))},200:(n,e,A)=>{A.d(e,{A:()=>i});var r=A(942),t=A.n(r),a=A(278),o=A.n(a)()(t());o.push([n.id,"/* File Debt Breakdown Component Styles */\n.file-debt-breakdown {\n background: #1a1a1a;\n border: 2px solid #ffffff;\n border-radius: 12px;\n padding: 1.5rem;\n margin: 1rem 0;\n color: #ffffff;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n/* Header */\n.breakdown-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 1.5rem;\n padding-bottom: 1rem;\n border-bottom: 2px solid #333;\n}\n\n.breakdown-header h3 {\n color: #ffffff;\n font-size: 1.8rem;\n font-weight: 900;\n margin: 0;\n text-shadow: 2px 2px 0px #000000;\n}\n\n.breakdown-stats {\n display: flex;\n gap: 1rem;\n}\n\n.stat-item {\n color: #bbb;\n font-size: 0.9rem;\n}\n\n.stat-item strong {\n color: #ffffff;\n font-size: 1.1rem;\n}\n\n/* No Debt State */\n.no-debt-files {\n text-align: center;\n padding: 3rem;\n}\n\n.no-debt-message {\n background: rgba(76, 175, 80, 0.1);\n border: 2px solid #4caf50;\n border-radius: 8px;\n padding: 2rem;\n display: inline-block;\n}\n\n.no-debt-icon {\n font-size: 3rem;\n display: block;\n margin-bottom: 1rem;\n}\n\n.no-debt-message h4 {\n color: #4caf50;\n margin: 0 0 0.5rem 0;\n}\n\n.no-debt-message p {\n color: #bbb;\n margin: 0;\n}\n\n/* Controls */\n.breakdown-controls {\n margin-bottom: 1.5rem;\n}\n\n.search-filter-row {\n display: flex;\n gap: 1rem;\n margin-bottom: 1rem;\n}\n\n.search-input {\n flex: 1;\n padding: 0.8rem;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 6px;\n color: #ffffff;\n font-size: 1rem;\n}\n\n.search-input::placeholder {\n color: #888;\n}\n\n.search-input:focus {\n outline: none;\n border-color: #3742fa;\n box-shadow: 0 0 0 2px rgba(55, 66, 250, 0.2);\n}\n\n.filter-select {\n padding: 0.8rem;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 6px;\n color: #ffffff;\n font-size: 1rem;\n cursor: pointer;\n}\n\n.filter-select:focus {\n outline: none;\n border-color: #3742fa;\n}\n\n.sort-controls {\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n\n.sort-button {\n padding: 0.6rem 1rem;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 6px;\n color: #ffffff;\n cursor: pointer;\n transition: all 0.3s ease;\n font-size: 0.9rem;\n}\n\n.sort-button:hover {\n background: rgba(255, 255, 255, 0.1);\n border-color: rgba(255, 255, 255, 0.3);\n}\n\n.sort-button.active {\n background: #3742fa;\n border-color: #3742fa;\n color: #ffffff;\n}\n\n/* File List */\n.file-list {\n display: grid;\n gap: 1rem;\n}\n\n.file-item {\n background: rgba(255, 255, 255, 0.02);\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.3s ease;\n}\n\n.file-item:hover {\n border-color: rgba(255, 255, 255, 0.3);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n}\n\n.file-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.file-header:hover {\n background: rgba(255, 255, 255, 0.05);\n}\n\n.file-header.p1 {\n border-left: 4px solid #ff4757;\n}\n\n.file-header.p2 {\n border-left: 4px solid #ffa502;\n}\n\n.file-header.p3 {\n border-left: 4px solid #3742fa;\n}\n\n.file-header.p4 {\n border-left: 4px solid #7f8fa6;\n}\n\n.file-info {\n display: flex;\n align-items: center;\n gap: 0.8rem;\n flex: 1;\n}\n\n.expand-icon {\n color: #888;\n font-size: 0.9rem;\n transition: transform 0.2s ease;\n}\n\n.file-name {\n color: #ffffff;\n font-weight: 600;\n font-size: 1.1rem;\n}\n\n.file-directory {\n color: #888;\n font-size: 0.9rem;\n}\n\n.file-metrics {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.debt-count {\n color: #ffffff;\n font-weight: 600;\n}\n\n.severity-badge {\n padding: 0.3rem 0.8rem;\n border-radius: 4px;\n color: #ffffff;\n font-size: 0.8rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* File Details */\n.file-details {\n padding: 1rem;\n background: rgba(255, 255, 255, 0.02);\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.file-actions {\n display: flex;\n gap: 0.8rem;\n margin-bottom: 1rem;\n}\n\n.action-button {\n padding: 0.6rem 1.2rem;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 0.9rem;\n font-weight: 600;\n transition: all 0.3s ease;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.action-button.primary {\n background: #3742fa;\n color: #ffffff;\n}\n\n.action-button.primary:hover {\n background: #2c38e6;\n transform: translateY(-2px);\n}\n\n.action-button.secondary {\n background: rgba(255, 255, 255, 0.05);\n color: #ffffff;\n border: 1px solid rgba(255, 255, 255, 0.2);\n}\n\n.action-button.secondary:hover {\n background: rgba(255, 255, 255, 0.1);\n border-color: rgba(255, 255, 255, 0.3);\n transform: translateY(-2px);\n}\n\n.debt-categories h4 {\n color: #ffffff;\n margin: 0 0 0.8rem 0;\n font-size: 1.1rem;\n}\n\n.category-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 0.8rem;\n}\n\n.category-item {\n display: flex;\n align-items: center;\n gap: 0.6rem;\n padding: 0.8rem;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.1);\n border-radius: 6px;\n transition: all 0.3s ease;\n}\n\n.category-item.clickable {\n cursor: pointer;\n}\n\n.category-item.clickable:hover {\n background: rgba(255, 255, 255, 0.1);\n border-color: rgba(255, 255, 255, 0.3);\n transform: translateY(-1px);\n}\n\n.category-icon {\n font-size: 1.2rem;\n}\n\n.category-label {\n color: #ffffff;\n flex: 1;\n font-size: 0.95rem;\n}\n\n.category-count {\n color: #ffa502;\n font-weight: 600;\n font-size: 0.9rem;\n}\n\n/* Pagination */\n.pagination {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 1rem;\n margin-top: 2rem;\n padding-top: 1rem;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.pagination-button {\n padding: 0.6rem 1.2rem;\n background: rgba(255, 255, 255, 0.05);\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 6px;\n color: #ffffff;\n cursor: pointer;\n transition: all 0.3s ease;\n font-size: 0.9rem;\n}\n\n.pagination-button:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.1);\n border-color: rgba(255, 255, 255, 0.3);\n}\n\n.pagination-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.pagination-info {\n color: #bbb;\n font-size: 0.9rem;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .breakdown-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 1rem;\n }\n\n .breakdown-stats {\n flex-direction: column;\n gap: 0.5rem;\n }\n\n .search-filter-row {\n flex-direction: column;\n }\n\n .sort-controls {\n flex-direction: column;\n }\n\n .file-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 0.8rem;\n }\n\n .file-info {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .file-metrics {\n align-self: flex-end;\n }\n\n .file-actions {\n flex-direction: column;\n }\n\n .category-grid {\n grid-template-columns: 1fr;\n }\n\n .pagination {\n flex-direction: column;\n gap: 0.5rem;\n }\n}\n\n/* Loading states */\n.file-debt-breakdown.loading {\n opacity: 0.9;\n position: relative;\n}\n\n.loading-indicator {\n color: #ffa502 !important;\n font-weight: 600;\n animation: pulse 1.5s ease-in-out infinite alternate;\n}\n\n.file-debt-breakdown.loading .file-list {\n opacity: 0.6;\n pointer-events: none;\n}\n\n.file-debt-breakdown.loading::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n width: 40px;\n height: 40px;\n margin: -20px 0 0 -20px;\n border: 4px solid rgba(255, 255, 255, 0.3);\n border-radius: 50%;\n border-top-color: #3742fa;\n animation: spin 1s linear infinite;\n z-index: 100;\n}\n\n@keyframes spin {\n to { transform: rotate(360deg); }\n}\n\n@keyframes pulse {\n from { opacity: 0.7; }\n to { opacity: 1; }\n}\n\n/* Performance optimizations */\n.file-item {\n contain: layout style;\n will-change: transform;\n}\n\n.file-header {\n contain: layout;\n}\n\n.category-grid {\n contain: layout;\n}\n\n/* Hover effects for better UX */\n.file-item:hover .expand-icon {\n transform: scale(1.1);\n}\n\n.file-item:hover .file-name {\n color: #3742fa;\n}\n\n/* Focus states for accessibility */\n.search-input:focus,\n.filter-select:focus,\n.sort-button:focus,\n.action-button:focus,\n.pagination-button:focus {\n outline: 2px solid #3742fa;\n outline-offset: 2px;\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n .file-debt-breakdown {\n border-color: #ffffff;\n }\n \n .file-header {\n border-color: #ffffff;\n }\n \n .category-item {\n border-color: #ffffff;\n }\n} ","",{version:3,sources:["webpack://./src/components/FileDebtBreakdown.css"],names:[],mappings:"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