1import{j as e}from"./vendor-react-CRoJIXvf.js";import{r as c}from"./vendor-sentry-Bo95V9RW.js";import{X as L,aF as u,aa as M}from"./vendor-lucide-CQhDwR8B.js";import{f as I}from"./vendor-date-fns-CSEsEUDY.js";(function(){try{var n=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};n.SENTRY_RELEASE={id:"98eebef43de11912f79e7737d212134331142526"};var l=new n.Error().stack;l&&(n._sentryDebugIds=n._sentryDebugIds||{},n._sentryDebugIds[l]="c5f90ca9-84e9-4a6a-8278-7e0b285f746f",n._sentryDebugIdIdentifier="sentry-dbid-c5f90ca9-84e9-4a6a-8278-7e0b285f746f")}catch{}})();const s=n=>`${n.paydayKey||"na"}__${n.id}`,P=({isOpen:n,onClose:l,onSave:y,onSaveCorrection:g,onSaveItem:E,onClearItem:F,correction:a,cycle:r})=>{const[h,k]=c.useState(""),[j,f]=c.useState({}),[x,z]=c.useState(""),[v,N]=c.useState(!1),[w,d]=c.useState({});if(c.useEffect(()=>{if(n&&r){const t=a&&Number.isFinite(Number(a.amount))?Number(a.amount):0,i=!!(a!=null&&a.applyWithOverride),o=Number(r.oneOffIncomeTotal)||0,p=(Number(r.income)||0)-o,W=r.hasTotalOverride&&i?p-t:p;k(W.toString());const C={};(r.contributingJobs||[]).forEach(D=>{C[s(D)]=D.amount.toString()}),f(C),z(t?String(t):""),N(!!(a!=null&&a.applyWithOverride)),d({})}},[n,r==null?void 0:r.id,r==null?void 0:r.income,a==null?void 0:a.amount,a==null?void 0:a.applyWithOverride]),!n||!r)return null;const O=r.contributingJobs||[],T=O.filter(t=>(t.amount||0)>0||t.isOverridden||t.payDate),m=T.length>0?T:O,b=t=>{const i=s(t),o=parseFloat(j[i]);Number.isNaN(o)||(E(t.id,o,t.paydayKey),d(p=>({...p,[i]:!1})))},A=t=>{const i=s(t);f(o=>({...o,[i]:String(t.amount??"")})),d(o=>({...o,[i]:!1}))},R=()=>{m.forEach(t=>{w[s(t)]&&b(t)})},S=()=>{const t=parseFloat(x);g&&(x.trim()===""||Number.isNaN(t)||Math.abs(t)<1e-5?g(void 0,v):g(t,v))};return e.jsx("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,background:"rgba(0,0,0,0.8)",backdropFilter:"blur(12px)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1100,padding:"1rem"},role:"presentation",children:e.jsxs("div",{className:"glass-card sentry-mask ph-sensitive",style:{width:"100%",maxWidth:"450px",padding:"2rem",position:"relative",maxHeight:"min(85vh, 85dvh)",overflowY:"auto",WebkitOverflowScrolling:"touch"},role:"dialog","aria-modal":"true","aria-labelledby":"override-modal-title",children:[e.jsx("button",{type:"button",onClick:l,style:{position:"absolute",top:"1rem",right:"1rem",background:"none",border:"none",color:"var(--text-dim)",cursor:"pointer"},"aria-label":"Close",children:e.jsx(L,{size:24})}),e.jsxs("h2",{id:"override-modal-title",style:{marginBottom:"1.5rem",display:"flex",alignItems:"center",gap:"0.75rem",fontSize:"1.25rem"},children:[e.jsx(u,{className:"color-primary"}),"Change this pay"]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"1.25rem"},children:[e.jsxs("div",{className:"glass-card",style:{padding:"0.75rem",background:"rgba(255,255,255,0.03)",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[e.jsxs("div",{children:[e.jsx("p",{style:{fontSize:"0.65rem",color:"var(--text-dim)",textTransform:"uppercase"},children:"Pay of"}),e.jsx("p",{style:{fontWeight:"600",fontSize:"0.9rem"},children:I(r.start,"d MMMM yyyy")})]}),e.jsxs("div",{style:{textAlign:"right"},children:[e.jsx("p",{style:{fontSize:"0.65rem",color:"var(--text-dim)",textTransform:"uppercase"},children:"Adds up to"}),e.jsxs("p",{style:{fontWeight:"800",fontSize:"1.1rem",color:"var(--primary)"},children:["$",(Number(r.income)||0).toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2})]})]})]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[e.jsx("h3",{style:{fontSize:"0.75rem",color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Each job"}),m.map(t=>e.jsxs("div",{style:{padding:"1rem",borderRadius:"0.75rem",background:"rgba(255,255,255,0.02)",border:t.isOverridden?"1px solid var(--primary)":"1px solid rgba(255,255,255,0.05)",display:"flex",flexDirection:"column",gap:"0.75rem"},children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[e.jsxs("div",{children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"0.4rem"},children:[e.jsx("p",{style:{fontWeight:"700",fontSize:"0.9rem"},children:t.name}),e.jsxs("span",{style:{fontSize:"0.65rem",color:"var(--primary)",o
1pacity:.8},children:["(Paid: ",t.payDate?I(new Date(t.payDate),"d MMM"):"Off-week",")"]})]}),t.workLabel==="Paused (Leave)"&&e.jsx("p",{style:{fontSize:"0.7rem",color:"var(--text-dim)"},children:"On leave"})]}),t.isOverridden&&e.jsx("button",{onClick:()=>{d(i=>({...i,[s(t)]:!1})),f(i=>({...i,[s(t)]:String(t.scheduledAmount??t.amount??"")})),F(t.id,t.paydayKey)},style:{fontSize:"0.65rem",background:"rgba(239, 68, 68, 0.1)",color:"var(--danger)",border:"none",padding:"0.2rem 0.5rem",borderRadius:"0.25rem",cursor:"pointer"},children:"Go back to each job"})]}),e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",fontSize:"0.78rem"},children:[e.jsx("span",{style:{color:"var(--text-dim)"},children:"Expected"}),e.jsxs("span",{style:{fontWeight:700,color:t.isOverridden?"var(--text-dim)":"var(--text-primary)",textDecoration:t.isOverridden?"line-through":"none"},children:["$",(Number(t.scheduledAmount??t.amount)||0).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})]})]}),w[s(t)]?e.jsxs("div",{children:[e.jsx("label",{htmlFor:`override-${s(t)}`,style:{display:"block",fontSize:"0.7rem",color:"var(--text-dim)",marginBottom:"0.35rem"},children:"Paid on this day"}),e.jsxs("div",{style:{position:"relative"},children:[e.jsx("input",{id:`override-${s(t)}`,className:"input-premium",style:{width:"100%",paddingLeft:"2.5rem",height:"2.5rem",fontSize:"0.9rem"},type:"number",inputMode:"decimal",autoFocus:!0,value:j[s(t)]??"",onChange:i=>{const o=i.target.value;f(p=>({...p,[s(t)]:o}))},onKeyDown:i=>{i.key==="Enter"&&(i.preventDefault(),b(t))}}),e.jsx(u,{size:14,style:{position:"absolute",left:"1rem",top:"50%",transform:"translateY(-50%)",color:"var(--text-dim)"}})]}),e.jsxs("div",{style:{display:"flex",gap:"0.5rem",marginTop:"0.6rem"},children:[e.jsx("button",{type:"button",className:"btn-primary",style:{flex:1,fontSize:"0.75rem",padding:"0.4rem 0.75rem"},onClick:()=>b(t),children:"Save this pay"}),e.jsx("button",{type:"button",className:"btn-secondary",style:{fontSize:"0.75rem",padding:"0.4rem 0.75rem"},onClick:()=>A(t),children:"Cancel"})]})]}):t.isOverridden?e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"0.5rem"},children:[e.jsxs("span",{style:{fontSize:"0.78rem",fontWeight:700,color:"var(--primary)"},children:["Set to $",(Number(t.amount)||0).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})]}),e.jsx("button",{type:"button",className:"btn-secondary",style:{fontSize:"0.72rem",padding:"0.3rem 0.7rem"},onClick:()=>d(i=>({...i,[s(t)]:!0})),children:"Change"})]}):e.jsx("button",{type:"button",className:"btn-secondary",style:{alignSelf:"flex-start",fontSize:"0.72rem",padding:"0.3rem 0.7rem"},onClick:()=>d(i=>({...i,[s(t)]:!0})),children:"Set this payâs total"})]},s(t)))]}),m.length===0&&e.jsxs("div",{children:[e.jsx("label",{style:{display:"block",fontSize:"0.75rem",color:"var(--text-dim)",marginBottom:"0.5rem"},children:"This pay"}),e.jsxs("div",{style:{position:"relative"},children:[e.jsx("input",{className:"input-premium",style:{width:"100%",paddingLeft:"2.5rem"},type:"number",value:h,onChange:t=>k(t.target.value)}),e.jsx(u,{size:16,style:{position:"absolute",left:"1rem",top:"50%",transform:"translateY(-50%)",color:"var(--text-dim)"}})]}),(Number(r.oneOffIncomeTotal)||0)>.009&&e.jsxs("p",{style:{fontSize:"0.68rem",color:"var(--text-dim)",marginTop:"0.45rem",lineHeight:1.35},children:["Your pay only. The $",(Number(r.oneOffIncomeTotal)||0).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})," of one-off income and money paid back this cycle stays on top."]})]}),m.length>0&&r.hasTotalOverride&&e.jsxs("div",{style:{padding:"0.85rem 1rem",borderRadius:"0.75rem",background:"rgba(245, 158, 11, 0.08)",border:"1px solid rgba(245, 158, 11, 0.3)"},children:[e.jsx("p",{style:{fontSize:"0.78rem",color:"#fbbf24",fontWeight:600,margin:0},children:"This cycleâs whole pay is set by hand"}),e.jsx("p",{style:{fontSize:"0.7rem",color:"var(--text-secondary)",margin:"0.3rem 0 0",lineHeight:1.4},children:"It ignores the pays above. Clear it to go back to editing them one by one."})]}),e.jsxs("div",{style:{marginTop:"0.5rem",padding:"1rem",borderRadius:"0.75rem",background:"rgba(16, 185, 129, 0.06)",border:"1px dashed rgba(16, 185, 129, 0.25)"},children:[e.jsx("label",{style:{display:"block",fontSize:"0.75rem",color:"var(--text-dim)",marginBottom:"0.55rem"},children:"PAY CORRECTION (+/-)"}),e.jsxs("div",{style:{position:"relative"},children:[e.jsx("input",{className:"input-premium",style:{width:"100%",paddingLeft:"2.5rem"},type:"number",placeholder:"+120.50 or -35",value:x,onChange:t=>z(t.target.value)}),e.jsx(u,{size:16,style:{position:"absolute",left:"1rem",top:"50%",transform:"translateY(-50%)",color:"var(--text-dim)"}})]}),r.hasTotalOverride&&e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"0.45rem",fontSize:"0.74rem",color:"var(--text-secondary)",marginTop:"0.55rem"},children:[e.jsx("input",{type:"checkbox",checked:v,onChange:t=>N(t.target.checked)}),"Add or take off an amount"]})]}),e.jsxs("div",{style:{display:"flex",alignItems:"flex-start",ga
1p:"0.75rem",padding:"0.75rem",borderRadius:"0.75rem",background:"rgba(59, 130, 246, 0.05)",color:"var(--primary)"},children:[e.jsx(M,{size:14,style:{marginTop:"0.1rem"}}),e.jsx("p",{style:{fontSize:"0.7rem",lineHeight:"1.4"},children:"Override a pay when it landed differently this cycle (a part week, a job change). Use Pay correction for a small difference after payday, like being short $35."})]}),e.jsxs("div",{style:{display:"flex",gap:"1rem"},children:[e.jsx("button",{className:"btn-secondary",style:{flex:1},onClick:()=>{R(),S(),l()},children:"Done"}),m.length===0&&e.jsx("button",{className:"btn-primary",style:{flex:1},onClick:()=>{S(),y(h===""?void 0:parseFloat(h)),l()},children:"Save"}),m.length>0&&r.hasTotalOverride&&e.jsx("button",{className:"btn-primary",style:{flex:1,background:"var(--danger)"},onClick:()=>{S(),y(void 0),l()},children:"Go back to each job"})]})]})]})})};export{P 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.