3 lines
8.9 KiB
JavaScript
3 lines
8.9 KiB
JavaScript
import{d as w,a as p,s as N,g as q,r as u,j as e,I as d,K as j,A as y,m as b,f as A,B as S,p as g,Y as T,a0 as E,T as F}from"./index-BTPmxtwM.js";import{D as R}from"./DataTable-D5imKbZq.js";import{M as C}from"./Modal-B8aWFZt2.js";function V(){const{toast:t}=w(),{data:i=[]}=p(N("offers")),{data:o=[]}=p(N("candidates")),m=q("offers"),[r,l]=u.useState(""),[c,x]=u.useState(""),[a,h]=u.useState(null),[k,v]=u.useState(!1),f=u.useMemo(()=>{const s=i.filter(n=>["Accepted","Declined"].includes(n.status)).length;return{sent:i.filter(n=>n.status!=="Draft").length,accepted:i.filter(n=>n.status==="Accepted").length,pending:i.filter(n=>["Sent","Negotiating"].includes(n.status)).length,rate:Math.round(i.filter(n=>n.status==="Accepted").length/(s||1)*100)}},[i]),O=u.useMemo(()=>i.filter(s=>!(c&&s.status!==c||r&&!(s.candidate+s.jobTitle+s.recruiter).toLowerCase().includes(r.toLowerCase()))),[i,r,c]),D=[{key:"candidate",label:"Candidate",sortable:!0,render:s=>e.jsxs("div",{className:"user-cell",children:[e.jsx(y,{name:s.candidate,initials:s.initials,color:s.color}),e.jsxs("div",{children:[e.jsx("div",{className:"cell-primary",children:s.candidate}),e.jsx("div",{className:"cell-sub",children:s.jobTitle})]})]})},{key:"department",label:"Department",sortable:!0},{key:"base",label:"Base Salary",sortable:!0,align:"right",render:s=>e.jsx("b",{children:b(s.base)})},{key:"equity",label:"Equity",render:s=>e.jsx("span",{className:"text-muted",children:s.equity})},{key:"bonus",label:"Bonus",align:"center",render:s=>e.jsx("span",{className:"text-muted",children:s.bonus})},{key:"sent",label:"Sent",sortable:!0,sortValue:s=>s.sent.getTime(),render:s=>e.jsx("span",{className:"text-muted",children:A(s.sent)})},{key:"status",label:"Status",sortable:!0,render:s=>e.jsx(S,{children:s.status})},{key:"_a",label:"Actions",align:"right",render:s=>e.jsxs("div",{className:"row-actions",children:[e.jsx("button",{className:"act-btn","data-tip":"View",onClick:()=>h(s),children:e.jsx(d,{name:"eye"})}),e.jsx("button",{className:"act-btn","data-tip":"Resend",onClick:()=>t(`Offer resent to ${s.candidate}`,"info"),children:e.jsx(d,{name:"send"})})]})}];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:"Offers"}),e.jsx("p",{className:"page-sub",children:"Track offer letters and acceptance"})]}),e.jsx("div",{className:"page-head-actions",children:e.jsxs("button",{className:"btn btn-primary",onClick:()=>v(!0),children:[e.jsx(d,{name:"plus"})," Create Offer"]})})]}),e.jsxs("div",{className:"grid g-kpi mb-18",children:[e.jsx(j,{label:"Offers Sent",value:f.sent,icon:"send",tone:"i-indigo"}),e.jsx(j,{label:"Accepted",value:f.accepted,icon:"check-circle",tone:"i-green"}),e.jsx(j,{label:"Awaiting Response",value:f.pending,icon:"clock",tone:"i-amber"}),e.jsx(j,{label:"Acceptance Rate",value:`${f.rate}%`,icon:"trending-up",tone:"i-teal"})]}),e.jsxs("div",{className:"card",children:[e.jsx("div",{className:"card-body",style:{paddingBottom:0},children:e.jsxs("div",{className:"toolbar",children:[e.jsxs("div",{className:"toolbar-search",children:[e.jsx(d,{name:"search"}),e.jsx("input",{value:r,onChange:s=>l(s.target.value),placeholder:"Search candidate or role…"})]}),e.jsxs("select",{className:"select",value:c,onChange:s=>x(s.target.value),children:[e.jsx("option",{value:"",children:"All Status"}),["Sent","Accepted","Negotiating","Declined","Draft","Expired"].map(s=>e.jsx("option",{children:s},s))]})]})}),e.jsx(R,{columns:D,rows:O,pageSize:8})]}),a&&e.jsx(B,{offer:a,onClose:()=>h(null),toast:t}),k&&e.jsx(z,{candidates:o,onClose:()=>v(!1),onSave:s=>{m(n=>[s,...n]),v(!1),t("Offer sent successfully","success")},toast:t})]})}function B({offer:t,onClose:i,toast:o}){const m=t.base+Math.round(t.base*parseInt(t.bonus,10)/100);return e.jsxs(C,{title:"Offer Details",subtitle:t.id,size:"modal-lg",onClose:i,footer:e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"btn btn-secondary",onClick:i,children:"Close"}),e.jsxs("button",{className:"btn btn-secondary",onClick:()=>o("Offer PDF downloaded","info"),children:[e.jsx(d,{name:"download"})," Download"]}),e.jsxs("button",{className:"btn btn-primary",onClick:()=>{i(),o("Offer resent","success")},children:[e.jsx(d,{name:"send"})," Resend Offer"]})]}),children:[e.jsxs("div",{className:"flex items-center gap-12 mb-18",children:[e.jsx(y,{name:t.candidate,initials:t.initials,color:t.color,className:"avatar-lg"}),e.jsxs("div",{children:[e.jsx("div",{className:"ph-name",style:{fontSize:17},children:t.candidate}),e.jsxs("div",{className:"ph-role",children:[t.jobTitle," · ",t.department]})]}),e.jsx("div",{style:{marginLeft:"auto"},children:e.jsx(S,{children:t.status})})]}),e.jsx("div",{className:"card",style:{boxShadow:"none",background:"var(--bg-sunken)",marginBottom:18},children:e.jsxs("div",{className:"card-body",children:[e.jsx("div",{className:"form-section-title",style:{marginTop:0},children:"Compensation Package"}),e.jsxs("div",{className:"info-grid",children:[e.jsxs("div",{className:"info-item",children:[e.jsx("div",{className:"il",children:"Base Salary"}),e.jsx("div",{className:"iv",style:{fontSize:18},children:b(t.base)})]}),e.jsxs("div",{className:"info-item",children:[e.jsx("div",{className:"il",children:"Annual Bonus"}),e.jsx("div",{className:"iv",style:{fontSize:18},children:t.bonus})]}),e.jsxs("div",{className:"info-item",children:[e.jsx("div",{className:"il",children:"Equity"}),e.jsx("div",{className:"iv",style:{fontSize:18},children:t.equity})]}),e.jsxs("div",{className:"info-item",children:[e.jsx("div",{className:"il",children:"Est. Total Cash"}),e.jsx("div",{className:"iv",style:{fontSize:18,color:"var(--success)"},children:b(m)})]})]})]})}),e.jsxs("div",{className:"info-grid",children:[e.jsxs("div",{className:"info-item",children:[e.jsx("div",{className:"il",children:"Sent On"}),e.jsx("div",{className:"iv",children:g(t.sent)})]}),e.jsxs("div",{className:"info-item",children:[e.jsx("div",{className:"il",children:"Expires"}),e.jsx("div",{className:"iv",children:g(t.expires)})]}),e.jsxs("div",{className:"info-item",children:[e.jsx("div",{className:"il",children:"Recruiter"}),e.jsx("div",{className:"iv",children:t.recruiter})]}),e.jsxs("div",{className:"info-item",children:[e.jsx("div",{className:"il",children:"Offer ID"}),e.jsx("div",{className:"iv mono",children:t.id})]})]})]})}function z({candidates:t,onClose:i,onSave:o,toast:m}){var x;const r=t.filter(a=>["Interview","Offer"].includes(a.stage)),l=T({candidate:((x=r[0])==null?void 0:x.name)??"",base:"",bonus:"10",equity:"",expires:"",notes:""});function c(){if(!l.values.base||Number(l.values.base)<=0){l.setErrors({base:"Required"}),m("Enter a base salary","error");return}const a=t.find(h=>h.name===l.values.candidate)||t[0];o({id:`OFR-${9001+t.length}`,candidate:a.name,candidateId:a.id,initials:a.initials,color:a.color,jobTitle:a.jobTitle,department:a.department,status:"Sent",base:Number(l.values.base),equity:l.values.equity||"10k RSU",bonus:`${l.values.bonus||10}%`,sent:new Date(F),expires:l.values.expires?new Date(l.values.expires):new Date("2026-07-23"),recruiter:a.recruiter})}return e.jsx(C,{title:"Create Offer",subtitle:"Generate and send an offer letter",onClose:i,footer:e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"btn btn-secondary",onClick:i,children:"Cancel"}),e.jsxs("button",{className:"btn btn-primary",onClick:c,children:[e.jsx(d,{name:"send"})," Send Offer"]})]}),children:e.jsx("form",{noValidate:!0,onSubmit:a=>{a.preventDefault(),c()},children:e.jsxs("div",{className:"form-grid",children:[e.jsxs("div",{className:"form-field col-span-2",children:[e.jsxs("label",{children:["Candidate ",e.jsx("span",{className:"req",children:"*"})]}),e.jsx("select",{value:l.values.candidate,onChange:a=>l.setField("candidate",a.target.value),children:r.map(a=>e.jsx("option",{children:a.name},a.id))})]}),e.jsxs("div",{className:"form-field",children:[e.jsxs("label",{children:["Base Salary ($) ",e.jsx("span",{className:"req",children:"*"})]}),e.jsx("input",{type:"number",placeholder:"140000",className:l.errors.base?"err":"",value:l.values.base,onChange:a=>l.setField("base",a.target.value)}),e.jsx(E,{children:l.errors.base})]}),e.jsxs("div",{className:"form-field",children:[e.jsx("label",{children:"Annual Bonus (%)"}),e.jsx("input",{type:"number",value:l.values.bonus,onChange:a=>l.setField("bonus",a.target.value)})]}),e.jsxs("div",{className:"form-field",children:[e.jsx("label",{children:"Equity (RSU)"}),e.jsx("input",{placeholder:"20k RSU",value:l.values.equity,onChange:a=>l.setField("equity",a.target.value)})]}),e.jsxs("div",{className:"form-field",children:[e.jsx("label",{children:"Expiration Date"}),e.jsx("input",{type:"date",value:l.values.expires,onChange:a=>l.setField("expires",a.target.value)})]}),e.jsxs("div",{className:"form-field col-span-2",children:[e.jsx("label",{children:"Notes"}),e.jsx("textarea",{placeholder:"Additional details for the offer…",value:l.values.notes,onChange:a=>l.setField("notes",a.target.value)})]})]})})})}export{V as default};
|
|
//# sourceMappingURL=Offers-8TSZuYtE.js.map
|