3 lines
6.4 KiB
JavaScript
3 lines
6.4 KiB
JavaScript
import{d as f,a as y,s as T,r as d,b as A,l as k,j as e,I as w,A as t,B as C,K as i}from"./index-BTPmxtwM.js";import{C as o,a as h}from"./Chart-BGHtrE8S.js";const R=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],S=["W1","W2","W3","W4","W5"],m=["Applied","Screening","Assessment","Interview","Offer","Hired"],E=5,x=n=>n===0?"var(--bg-sunken)":`rgba(79,70,229,${.2+n/E*.8})`;function P(){const{toast:n}=f(),{data:r=[]}=y(T("recruiters")),[v,j]=d.useState(null),s=r.find(a=>a.id===v)??r[0],p=d.useMemo(()=>s?{labels:A.hiringTrend.labels,area:!0,datasets:[{label:"Hires",data:s.monthlyTrend,color:o.PALETTE[0]}]}:null,[s]),u=d.useMemo(()=>({labels:m,data:m.map(()=>k(2,14)),colors:o.PALETTE}),[s==null?void 0:s.id]),b=d.useMemo(()=>[...r].sort((a,l)=>l.hires-a.hires).slice(0,8),[r]);if(!s)return null;const g=s.sla==="On Track"?"b-green":s.sla==="At Risk"?"b-amber":"b-red";return e.jsxs("div",{className:"page",children:[e.jsxs("div",{className:"page-head",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"page-title",children:"Recruiter Hub"}),e.jsx("p",{className:"page-sub",children:"Personalized performance dashboard & workload"})]}),e.jsxs("div",{className:"page-head-actions",children:[e.jsx("select",{className:"select",value:s.id,onChange:a=>j(a.target.value),children:r.map(a=>e.jsx("option",{value:a.id,children:a.name},a.id))}),e.jsxs("button",{className:"btn btn-secondary",onClick:()=>n("Report exported","success"),children:[e.jsx(w,{name:"download"})," Export"]})]})]}),e.jsx("div",{className:"card brand-hero mb-18",children:e.jsxs("div",{className:"card-body",style:{display:"flex",alignItems:"center",gap:18},children:[e.jsx(t,{name:s.name,initials:s.initials,color:"rgba(255,255,255,.18)",className:"avatar-lg"}),e.jsxs("div",{style:{flex:1},children:[e.jsx("div",{style:{fontSize:20,fontWeight:700},children:s.name}),e.jsxs("div",{style:{opacity:.85},children:[s.department," Recruiter · ⭐ ",s.rating," rating"]})]}),e.jsxs("div",{style:{textAlign:"center"},children:[e.jsxs("div",{style:{fontSize:26,fontWeight:800},children:[s.workload,"%"]}),e.jsx("div",{style:{opacity:.85,fontSize:12},children:"Workload"})]}),e.jsxs("div",{style:{textAlign:"center"},children:[e.jsxs("div",{style:{fontSize:26,fontWeight:800},children:[s.efficiency,"%"]}),e.jsx("div",{style:{opacity:.85,fontSize:12},children:"Efficiency"})]}),e.jsx("div",{style:{textAlign:"center"},children:e.jsx(C,{className:g,children:s.sla})})]})}),e.jsxs("div",{className:"grid g-kpi mb-18",children:[e.jsx(i,{label:"Open Positions",value:s.openPositions,icon:"briefcase",tone:"i-indigo",foot:"active reqs"}),e.jsx(i,{label:"Closed Positions",value:s.closedPositions,icon:"check-circle",tone:"i-green",foot:"this year"}),e.jsx(i,{label:"Avg Time to Hire",value:`${s.avgTimeToHire}d`,icon:"clock",tone:"i-teal",foot:"target 30d"}),e.jsx(i,{label:"Avg Time to Fill",value:`${s.avgTimeToFill}d`,icon:"target",tone:"i-amber",foot:"req → offer"})]}),e.jsxs("div",{className:"grid g-kpi mb-18",children:[e.jsx(i,{label:"Interviews Today",value:s.interviewsToday,icon:"calendar",tone:"i-purple"}),e.jsx(i,{label:"Offers Pending",value:s.offersPending,icon:"file",tone:"i-blue"}),e.jsx(i,{label:"Awaiting Approval",value:s.jobsAwaitingApproval,icon:"clock",tone:"i-amber"}),e.jsx(i,{label:"Jobs Overdue",value:s.jobsOverdue,icon:"alert",tone:"i-red"})]}),e.jsxs("div",{className:"grid g-kpi mb-18",children:[e.jsx(i,{label:"Conversion Rate",value:`${s.conversionRate}%`,icon:"trending-up",tone:"i-green",foot:"applicant → hire"}),e.jsx(i,{label:"Interview Completion",value:`${s.interviewCompletion}%`,icon:"check-square",tone:"i-teal"}),e.jsx(i,{label:"Avg Response Time",value:`${s.avgResponseTime}h`,icon:"zap",tone:"i-purple",foot:"to candidates"}),e.jsx(i,{label:"TAT Performance",value:`${s.tat}%`,icon:"award",tone:"i-indigo",foot:"turnaround"})]}),e.jsxs("div",{className:"grid g-2-1 mb-18",children:[e.jsxs("div",{className:"card",children:[e.jsx("div",{className:"card-head",children:e.jsxs("div",{children:[e.jsx("h3",{children:"Monthly Hiring Trend"}),e.jsx("span",{className:"ch-sub",children:"Hires per month"})]})}),e.jsx("div",{className:"card-body",children:e.jsx("div",{className:"chart-wrap",children:e.jsx(h,{type:"line",data:p,height:260})})})]}),e.jsxs("div",{className:"card",children:[e.jsx("div",{className:"card-head",children:e.jsxs("div",{children:[e.jsx("h3",{children:"Workload Heatmap"}),e.jsx("span",{className:"ch-sub",children:"Interview load"})]})}),e.jsxs("div",{className:"card-body",children:[e.jsxs("div",{className:"heatmap",children:[e.jsx("div",{className:"hm-label"}),S.map(a=>e.jsx("div",{className:"hm-label",style:{justifyContent:"center"},children:a},a)),R.map((a,l)=>e.jsxs("div",{style:{display:"contents"},children:[e.jsx("div",{className:"hm-label",children:a}),s.heatmap[l].map((c,N)=>e.jsx("div",{className:"hm-cell",style:{background:x(c)},"data-tip":`${c} interviews`},`${a}-${N}`))]},a))]}),e.jsxs("div",{className:"hm-legend",children:["Less",[0,1,2,3,5].map(a=>e.jsx("span",{className:"hm-box",style:{background:x(a)}},a)),"More"]})]})]})]}),e.jsxs("div",{className:"grid g-2",children:[e.jsxs("div",{className:"card",children:[e.jsx("div",{className:"card-head",children:e.jsxs("div",{children:[e.jsx("h3",{children:"Recruiter Leaderboard"}),e.jsx("span",{className:"ch-sub",children:"Top performers by hires"})]})}),e.jsx("div",{className:"card-body",children:b.map((a,l)=>e.jsxs("div",{className:"leader-row",style:a.id===s.id?{background:"var(--primary-soft)",borderRadius:10,paddingLeft:8,paddingRight:8}:void 0,children:[e.jsx("span",{className:`leader-rank ${l===0?"gold":l===1?"silver":l===2?"bronze":""}`,children:l+1}),e.jsx(t,{name:a.name,initials:a.initials,color:a.color}),e.jsxs("div",{className:"lr-main",children:[e.jsx("div",{className:"lr-title",children:a.name}),e.jsxs("div",{className:"lr-sub",children:[a.efficiency,"% efficiency · ",a.avgTimeToHire,"d avg"]})]}),e.jsxs("div",{className:"lr-right",children:[e.jsx("div",{className:"fw-600",children:a.hires}),e.jsx("div",{className:"lr-sub",children:"hires"})]})]},a.id))})]}),e.jsxs("div",{className:"card",children:[e.jsx("div",{className:"card-head",children:e.jsxs("div",{children:[e.jsx("h3",{children:"Candidate Pipeline"}),e.jsx("span",{className:"ch-sub",children:"This recruiter’s active candidates"})]})}),e.jsx("div",{className:"card-body",children:e.jsx("div",{className:"chart-wrap",children:e.jsx(h,{type:"horizontalBar",data:u,height:260})})})]})]})]})}export{P as default};
|
||
//# sourceMappingURL=RecruiterHub-D8UTHwdV.js.map
|