1import{t as e}from"./vendor-react-b3djFrM1.js";import{At as t,In as n,Lr as r,Xt as i,Y as a,fr as o,in as s,n as c,sn as l,un as u}from"./tailwindUtils-Dhq_pdoI.js";import{N as d,i as f,s as p,y as m}from"./date-D33nXckr.js";import{s as h}from"./routineConstants-DimlmAjD.js";var g=e(),_={NO_ROUTINE:`no-routine`,ROUTINE_EXPIRED:`routine-expired`,ROUTINE_SOON_TO_EXPIRE:`routine-soon-to-expire`,ROUTINE_NEVER_TRAINED:`routine-never-trained`,ROUTINE_NOT_TRAINED_LATELY:`routine-not-trained-lately`,ROUTINE_NOT_SENT:`routine-not-sent`,ROUTINE_COMPLETED:`routine-completed`,CLIENT_BIRTHDAY:`client-birthday`,MEDICAL_CLEARANCE_EXPIRING:`medical-clearance-expiring`,MEDICAL_CLEARANCE_EXPIRED:`medical-clearance-expired`},v=7,y=30,b=()=>f(d()),x=(e,t)=>{let n=p(e,b());return n<=0?`expired`:n<=t?`expiring`:`valid`},S={noRoutine:{enabled:!0},routineExpired:{enabled:!0},routineNotSent:{enabled:!0},routineCompleted:{enabled:!0},routineSoonToExpire:{enabled:!0,thresholdDays:v},routineNeverTrained:{enabled:!0,thresholdDays:v},routineNotTrainedLately:{enabled:!0,thresholdDays:v},clientBirthday:{enabled:!0},medicalClearanceSoonToExpire:{enabled:!0,thresholdDays:y},medicalClearanceExpired:{enabled:!0}},C={[_.NO_ROUTINE]:`noRoutine`,[_.ROUTINE_EXPIRED]:`routineExpired`,[_.ROUTINE_NOT_SENT]:`routineNotSent`,[_.ROUTINE_COMPLETED]:`routineCompleted`,[_.ROUTINE_SOON_TO_EXPIRE]:`rout
1ineSoonToExpire`,[_.ROUTINE_NEVER_TRAINED]:`routineNeverTrained`,[_.ROUTINE_NOT_TRAINED_LATELY]:`routineNotTrainedLately`,[_.CLIENT_BIRTHDAY]:`clientBirthday`,[_.MEDICAL_CLEARANCE_EXPIRING]:`medicalClearanceSoonToExpire`,[_.MEDICAL_CLEARANCE_EXPIRED]:`medicalClearanceExpired`},w=e=>e in C,T=e=>({...S,...e}),E=(e,t)=>t[C[e]].enabled,D={HIGH:{level:`high`,color:`alert-red`,rank:0},MEDIUM:{level:`medium`,color:`alert-orange`,rank:1},LOW:{level:`low`,color:`alert-yellow`,rank:2}},O=class e{type;severity;icon;priority;iconColor;constructor(e,t,n,r,i){this.type=e,this.severity=t,this.icon=n,this.priority=r,this.iconColor=i}static CLIENT_BIRTHDAY=new e(_.CLIENT_BIRTHDAY,D.LOW,e=>(0,g.jsx)(c,{icon:t,className:e?.className}),0,`birthday`);static MEDICAL_CLEARANCE_EXPIRED=new e(_.MEDICAL_CLEARANCE_EXPIRED,D.HIGH,e=>(0,g.jsx)(c,{icon:o,className:e?.className}),8);static MEDICAL_CLEARANCE_EXPIRING=new e(_.MEDICAL_CLEARANCE_EXPIRING,D.MEDIUM,e=>(0,g.jsx)(c,{icon:o,className:e?.className}),0);static ROUTINE_COMPLETED=new e(_.ROUTINE_COMPLETED,D.LOW,e=>(0,g.jsx)(c,{icon:r,className:e?.className}),7);static NO_ROUTINE=new e(_.NO_ROUTINE,D.HIGH,e=>(0,g.jsx)(c,{icon:u,className:e?.className}),6);static ROUTINE_EXPIRED=new e(_.ROUTINE_EXPIRED,D.HIGH,e=>(0,g.jsx)(c,{icon:s,className:e?.className}),5);static ROUTINE_NEVER_TRAINED=new e(_.ROUTINE_NEVER_TRAINED,D.HIGH,e=>(0,g.jsx)(c,{icon:n,className:e?.className}),4);static ROUTINE_NOT_TRAINED_LATELY=new e(_.ROUTINE_NOT_TRAINED_LATELY,D.MEDIUM,e=>(0,g.jsx)(c,{icon:l,className:e?.className}),2);static ROUTINE_NOT_SENT=new e(_.ROUTINE_NOT_SENT,D.LOW,e=>(0,g.jsx)(c,{icon:i,className:e?.className}),3);static ROUTINE_SOON_TO_EXPIRE=new e(_.ROUTINE_SOON_TO_EXPIRE,D.LOW,e=>(0,g.jsx)(c,{icon:a,className:e?.className}),1);buildTitle(e,t,n){let r=d();switch(this.type){case _.NO_ROUTINE:return e(`home.alerts.title.noRoutine`,{name:n});case _.ROUTINE_EXPIRED:return e(`home.alerts.title.routineExpired`,{name:n,count:t?.expiresAt?Math.max(0,m(r,t.expiresAt)):0});case _.ROUTINE_SOON_TO_EXPIRE:return e(`home.alerts.title.routineSoonToExpire`,{name:n,count:t?.expiresAt?Math.max(0,m(t.expiresAt,r)):0});case _.ROUTINE_NEVER_TRAINED:return e(`home.alerts.title.routineNeverTrained`,{name:n});case _.ROUTINE_NOT_TRAINED_LATELY:return e(`home.alerts.title.routineNotTrainedLately`,{name:n,count:t?.lastTrainedAt?Math.max(0,m(r,t.lastTrainedAt)):0});case _.ROUTINE_NOT_SENT:return e(`home.alerts.title.routineNotSent`,{name:n});case _.ROUTINE_COMPLETED:return e(`home.alerts.title.routineCompleted`,{name:n});case _.MEDICAL_CLEARANCE_EXPIRED:return e(`home.alerts.title.medicalClearanceExpired`,{name:n,count:t?.medicalClearanceExpiresOn?Math.max(0,-p(t.medicalClearanceExpiresOn,b())):0});case _.MEDICAL_CLEARANCE_EXPIRING:return e(`home.alerts.title.medicalClearanceExpiring`,{name:n,count:t?.medicalClearanceExpiresOn?Math.max(0,p(t.medicalClearanceExpiresOn,b())):0});case _.CLIENT_BIRTHDAY:return e(`home.alerts.title.clientBirthday`,{name:n})}}buildShortLabel(e){switch(this.type){case _.NO_ROUTINE:return e(`attention.shortLabel.noRoutine`);case _.ROUTINE_EXPIRED:return e(`attention.shortLabel.routineExpired`);case _.ROUTINE_SOON_TO_EXPIRE:return e(`attention.shortLabel.routineSoonToExpire`);case _.ROUTINE_NEVER_TRAINED:return e(`attention.shortLabel.routineNeverTrained`);case _.ROUTINE_NOT_TRAINED_LATELY:return e(`attention.shortLabel.routineNotTrainedLately`);case _.ROUTINE_NOT_SENT:return e(`attention.shortLabel.routineNotSent`);case _.ROUTINE_COMPLETED:return e(`attention.shortLabel.routineCompleted`);case _.MEDICAL_CLEARANCE_EXPIRED:return e(`attention.shortLabel.medicalClearanceExpired`);case _.MEDICAL_CLEARANCE_EXPIRING:return e(`attention.shortLabel.medicalClearanceExpiring`);case _.CLIENT_BIRTHDAY:return e(`attention.shortLabel.clientBirthday`)}}buildMessage(e,t){switch(this.type){case _.NO_ROUTINE:return e(`home.alerts.message.noRoutine`);case _.ROUTINE_EXPIRED:return e(`home.alerts.message.routineExpired`);case _.ROUTINE_SOON_TO_EXPIRE:return e(`home.alerts.message.routineSoonToExpire`);case _.ROUTINE_NEVER_TRAINED:return e(`home.alerts.message.routineNeverTrained`);case _.ROUTINE_NOT_TRAINED_LATELY:return e(`home.alerts.message.routineNotTrainedLately`);case _.ROUTINE_NOT_SENT:return e(`home.alerts.message.routineNotSent`);case _.ROUTINE_COMPLETED:return e(`home.alerts.message.routineCompleted`);case _.MEDICAL_CLEARANCE_EXPIRED:return e(`home.alerts.message.medicalClearanceExpired`);case _.MEDICAL_CLEARANCE_EXPIRING:return e(`home.alerts.message.medicalClearanceExpiring`);case _.CLIENT_BIRTHDAY:return e(`home.alerts.message.clientBirthday`)}}buildCta(e){let t=e?.routineId;switch(this.type){case _.NO_ROUTINE:return{kind:`assign-routine`};
1case _.ROUTINE_EXPIRED:return t?{kind:`renew-routine`,routineId:t}:{kind:`assign-routine`};case _.ROUTINE_SOON_TO_EXPIRE:return t?{kind:`plan-next-block`,routineId:t}:{kind:`assign-routine`};case _.ROUTINE_NOT_SENT:return t?{kind:`send-routine`,routineId:t}:{kind:`assign-routine`};case _.ROUTINE_NEVER_TRAINED:case _.ROUTINE_NOT_TRAINED_LATELY:return{kind:`send-message`};case _.ROUTINE_COMPLETED:return{kind:`assign-routine`};case _.MEDICAL_CLEARANCE_EXPIRED:case _.MEDICAL_CLEARANCE_EXPIRING:return{kind:`view-medical-clearance`};case _.CLIENT_BIRTHDAY:return{kind:`send-message`}}}static values(){return[e.ROUTINE_COMPLETED,e.NO_ROUTINE,e.ROUTINE_EXPIRED,e.ROUTINE_NOT_SENT,e.ROUTINE_NEVER_TRAINED,e.ROUTINE_NOT_TRAINED_LATELY,e.ROUTINE_SOON_TO_EXPIRE,e.CLIENT_BIRTHDAY,e.MEDICAL_CLEARANCE_EXPIRED,e.MEDICAL_CLEARANCE_EXPIRING]}static fromType(t){return e.values().find(e=>e.type===t)}static getHighestPriority(e){return e.length===0?null:e.reduce((e,t)=>t.priority>e.priority?t:e)}},k=(e,t=S,n={})=>{let r=n.trainsInApp??!0,i=e.routineId,a=e.expiresAt,o=e.lastTrainedAt,s=e.routineStartsAt,c=e.routineStatus,l=d(),u=[];t.routineCompleted.enabled&&e.routineCompletedAt&&u.push(O.ROUTINE_COMPLETED),t.noRoutine.enabled&&!i&&u.push(O.NO_ROUTINE),t.routineNotSent.enabled&&i&&c===h.READY_FOR_TRAINER&&u.push(O.ROUTINE_NOT_SENT),t.routineExpired.enabled&&a&&m(l,a)>0&&u.push(O.ROUTINE_EXPIRED),t.routineSoonToExpire.enabled&&a&&m(a,l)>=0&&m(a,l)<=t.routineSoonToExpire.thresholdDays&&u.push(O.ROUTINE_SOON_TO_EXPIRE),r&&t.routineNeverTrained.enabled&&s&&!o&&m(l,s)>t.routineNeverTrained.thresholdDays&&u.push(O.ROUTINE_NEVER_TRAINED),r&&t.routineNotTrainedLately.enabled&&o&&m(l,o)>t.routineNotTrainedLately.thresholdDays&&u.push(O.ROUTINE_NOT_TRAINED_LATELY);let f=e.medicalClearanceExpiresOn;if(f){let e=x(f,t.medicalClearanceSoonToExpire.thresholdDays);e===`expired`&&t.medicalClearanceExpired.enabled?u.push(O.MEDICAL_CLEARANCE_EXPIRED):e===`expiring`&&t.medicalClearanceSoonToExpire.enabled&&u.push(O.MEDICAL_CLEARANCE_EXPIRING)}return O.getHighestPriority(u)},A=[`organizationClientsAttention`],j=e=>void e.invalidateQueries({queryKey:A});export{E as a,w as i,k as n,T as o,j as r,O as t};
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.