PageSourceSearch

https://healthserve.ae/assets/Careers-Bn58S3yP.js

js healthserve.ae collected 2026-10-04 02:40:21 UTC 14,046 bytes, 1 lines download raw bytes

1import{r as o,y as k,aO as y,j as e,S as T,aE as $,N as M,V as q,E as U,k as H,M as J,d as I,F as R,b7 as W,b8 as g,b9 as _,X as Y,q as Q,z as X}from"./index-CzMEFmtw.js";import{U as Z}from"./upload-C1EWCH4L.js";const G=W({full_name:g().trim().min(2).max(120),email:g().trim().email().max(255),phone:g().trim().min(6).max(30),location:g().trim().max(120).optional().or(_("")),years_experience:g().trim().max(30).optional().or(_("")),cover_letter:g().trim().max(3e3).optional().or(_(""))});function ae(){const[r,p]=o.useState([]),[s,x]=o.useState(!0),[n,h]=o.useState(""),[i,w]=o.useState("all"),[b,f]=o.useState(null);o.useEffect(()=>{(async()=>{const{data:a,error:c}=await k.from("job_positions").select("*").eq("is_active",!0).order("sort_order").order("created_at");c&&y.error(c.message),p(a??[]),x(!1)})()},[]);const N=o.useMemo(()=>{const a=new Set;return r.forEach(c=>c.department&&a.add(c.department)),["all",...Array.from(a)]},[r]),j=o.useMemo(()=>{const a=n.toLowerCase().trim();return r.filter(c=>(i==="all"||c.department===i)&&(!a||c.title.toLowerCase().includes(a)||(c.short_description??"").toLowerCase().includes(a)||(c.location??"").toLowerCase().includes(a)))},[r,n,i]);return e.jsxs("div",{className:"min-h-screen bg-white",children:[e.jsx(T,{title:"Careers at Healthserve — Join our UAE Healthcare Team",description:"Open positions at Healthserve: DHA/DOH nurses, sales, business development and customer service. Apply online — upload your CV and answer a few quick questions.",path:"/careers"}),e.jsx($,{}),e.jsx(M,{}),e.jsxs("main",{className:"pt-[112px]",children:[e.jsxs("section",{className:"relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-[#F9A01B]/8 via-white to-[#2CC5F4]/8"}),e.jsx("div",{className:"absolute -top-40 -right-40 w-[520px] h-[520px] rounded-full bg-[#F9A01B]/10 blur-3xl"}),e.jsx("div",{className:"absolute -bottom-40 -left-40 w-[520px] h-[520px] rounded-full bg-[#2CC5F4]/10 blur-3xl"}),e.jsxs("div",{className:"relative max-w-[1200px] mx-auto px-6 md:px-10 py-20 md:py-28",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 h-7 rounded-full bg-white/70 backdrop-blur border border-gray-200 text-[11px] font-bold uppercase tracking-wider text-[#B26800]",children:[e.jsx(q,{size:12})," Careers · UAE"]}),e.jsx("h1",{className:"mt-4 font-heading text-4xl md:text-6xl font-bold text-gray-900 leading-[1.05] max-w-3xl",children:e.jsx(U,{id:"hero.title",defaultValue:"Build UAE healthcare with us."})}),e.jsx("p",{className:"mt-5 text-lg text-gray-600 max-w-2xl",children:e.jsx(U,{id:"hero.subtitle",defaultValue:"We're hiring licensed nurses and commercial talent to grow Healthserve's homecare, occupational health and marketplace businesses. Pick a role, tell us about yourself, upload your CV — we reply within 3 working days.",multiline:!0})}),e.jsxs("div",{className:"mt-8 flex flex-col md:flex-row gap-3 md:items-center max-w-3xl",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(H,{className:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-400",size:16}),e.jsx("input",{value:n,onChange:a=>h(a.target.value),placeholder:"Search roles, city, department…",className:"w-full h-12 pl-10 pr-3 rounded-xl border border-gray-200 bg-white/80 backdrop-blur text-sm focus:outline-none focus:ring-2 focus:ring-[#F9A01B]/40"})]}),e.jsx("div",{className:"flex gap-2 overflow-x-auto no-scrollbar",children:N.map(a=>e.jsx("button",{onClick:()=>w(a),className:`h-10 px-4 rounded-full text-xs font-semibold whitespace-nowrap border transition ${i===a?"bg-gray-900 text-white border-gray-900":"bg-white/70 text-gray-700 border-gray-200 hover:border-gray-300"}`,children:a==="all"?"All departments":a},a))})]})]})]}),e.jsx("section",{className:"max-w-[1200px] mx-auto px-6 md:px-10 pb-24",children:s?e.jsx("div",{className:"text-center py-16 text-gray-500 text-sm",children:"Loading open roles…"}):j.length===0?e.jsx("div",{className:"text-center py-16 text-gray-500 text-sm",children:"No matching positions right now — try clearing filters."}):e.jsx("div",{className:"grid gap-4",children:j.map(a=>e.jsx("button",{onClick:()=>f(a),className:"group text-left w-full bg-white border border-gray-200 rounded-2xl p-6 md:p-7 hover:border-[#F9A01B]/50 hover:shadow-[0_20px_50px_-25
1px_rgba(249,160,27,0.4)] transition-all",children:e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center md:justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2 mb-2",children:[a.department&&e.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider text-[#B26800] bg-[#F9A01B]/10 px-2 py-1 rounded-full",children:a.department}),a.employment_type&&e.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider text-gray-600 bg-gray-100 px-2 py-1 rounded-full",children:a.employment_type})]}),e.jsx("h3",{className:"font-heading text-xl md:text-2xl font-bold text-gray-900 group-hover:text-[#B26800] transition-colors",children:a.title}),a.short_description&&e.jsx("p",{className:"text-sm text-gray-600 mt-1.5 max-w-2xl",children:a.short_description}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4 mt-3 text-xs text-gray-500",children:[a.location&&e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(J,{size:12})," ",a.location]}),e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(I,{size:12})," Apply in ~2 min"]})]})]}),e.jsx("div",{className:"shrink-0",children:e.jsx("span",{className:"inline-flex h-11 px-5 items-center rounded-full bg-[#F9A01B] text-white text-sm font-bold shadow-sm group-hover:bg-[#e8900a] transition-colors",children:"View & apply →"})})]})},a.id))})})]}),b&&e.jsx(K,{position:b,onClose:()=>f(null)}),e.jsx(R,{})]})}function K({position:r,onClose:p}){var c,S,A,F,B;const[s,x]=o.useState({full_name:"",email:"",phone:"",location:"",years_experience:"",cover_letter:""}),[n,h]=o.useState({}),[i,w]=o.useState(null),[b,f]=o.useState(!1),[N,j]=o.useState(!1);o.useEffect(()=>(document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}),[]);async function a(t){var E;if(t.preventDefault(),!G.safeParse(s).success){y.error("Please fill your name, valid email and phone.");return}for(const m of r.questions??[])if(m.required&&!(n[m.id]??"").trim()){y.error(`Please answer: ${m.label}`);return}if(i&&i.size>10*1024*1024){y.error("CV must be under 10MB.");return}f(!0);try{let m=null,C=null;if(i){const v=((E=i.name.split(".").pop())==null?void 0:E.toLowerCase())??"pdf",V=["pdf","doc","docx"].includes(v)?v:"pdf",L=r.slug.replace(/[^a-zA-Z0-9_-]/g,"-"),O=crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,D=`applications/${L}/${O}.${V}`,{error:P}=await k.storage.from("cvs").upload(D,i,{contentType:i.type||"application/octet-stream",upsert:!1});if(P)throw P;m=D,C=i.name}const{error:z}=await k.from("job_applications").insert({position_id:r.id,position_title:r.title,full_name:s.full_name.trim(),email:s.email.trim(),phone:s.phone.trim(),location:s.location.trim()||null,years_experience:s.years_experience.trim()||null,cover_letter:s.cover_letter.trim()||null,cv_url:m,cv_name:C,answers:n});if(z)throw z;X("JobApplications",[new Date().toISOString(),r.title,s.full_name.trim(),s.email.trim(),s.phone.trim(),s.location.trim(),s.years_experience.trim(),s.cover_letter.trim(),C??"",JSON.stringify(n)]).catch(v=>console.warn("Job application sheet mirror failed:",v)),j(!0)}catch(m){y.error(m.message||"Something went wrong. Please try again.")}finally{f(!1)}}return e.jsx("div",{className:"fixed inset-0 z-[999] flex items-end md:items-center justify-center p-0 md:p-6 bg-black/40 backdrop-blur-sm",onClick:p,children:e.jsxs("div",{className:"relative w-full md:max-w-2xl max-h-[95vh] overflow-y-auto bg-white rounded-t-3xl md:rounded-3xl shadow-2xl",onClick:t=>t.stopPropagation(),children:[e.jsx("button",{onClick:p,className:"absolute top-4 right-4 w-9 h-9 rounded-full bg-gray-100 hover:bg-gray-200 text-gray-600 flex items-center justify-center z-10","aria-label":"Close",children:e.jsx(Y,{size:18})}),N?e.jsxs("div",{className:"p-10 text-center",children:[e.jsx("div",{className:"w-14 h-14 mx-auto rounded-full bg-green-100 text-green-600 flex items-center justify-center",children:e.jsx(Q,{size:26})}),e.jsx("h3",{className:"mt-4 font-heading text-2xl font-bold text-gray-900",children:"Application received"}),e.jsxs("p",{className:"mt-2 text-sm text-gray-600 max-w-md mx-auto",children:["Thanks for applying to ",e.jsx("b",{children:r.title}),". Our talent team will review your CV and reply to"," ",e.jsx("b",{children:s.email})," within 3 working days."]}),e.jsx("button",{onClick:p,className:"mt-6 inline-flex h-11 px-6 items-center rounded-full bg-gray-900 text-white text-sm font-semibold",children:"Close"})]}):e.jsxs("form",{onSubmit:a,className:"p-6 md:p-8",children:[e.jsxs("div",{className:"mb-1 text-[10px] font-bold uppercase tracking-wider text-[#B26800]",children:[r.department," · ",r.location]}),e.jsx("h3",{className:"font-heading text-2xl md:text-3xl font-bold text-gray-900",children:r.title}),r.description&&e.jsx("p",{className:"mt-3 text-sm text-gray-600 leading-relaxed",children:r.description}),(((c=r.responsibilities)==null?void 0:c.length)>0||((S=r.requirements)==null?void 0:S.length)>0)&&e.jsxs("div",{className:"mt-5 grid md:grid-cols-2 gap-4",children:[((A=r.responsibilities)==null?void 0:A.length)>0&&e.jsxs("div",{className:"bg-gray-50 rounded-2xl p-4",children:[e.jsx("div",{className:"text-xs font-bold uppercase tracking-wider text-gray-700 mb-2",children:"Responsibilities"}),e.jsx("ul",{className:"space-y-1.5",children:r.responsibilities.map((t,l)=>e.jsxs("li",{className:"text-xs text-gray-600 leading-relaxed pl-3 relative",children:[e.jsx("span",{className:"absolute left-0 top-1.5 w-1 h-1 rounded-full bg-[#F9A01B]"})," ",t]},l))})]}),((F=r.requirements)==null?void 0:F.length)>0&&e.jsxs("div",{className:"bg-gray-50 rounded-2xl p-4",children:[e.jsx("div",{className:"text-xs font-bold uppercase tracking-wider text-gray-700 mb-2",children:"Requirements"}),e.jsx("ul",{className:"space-y-1.5",children:r.requirements.map((t,l)=>e.jsxs("li",{className:"text-xs text-gray-600 leading-relaxed pl-3 relative",children:[e.jsx("span",{className:"absolute left-0 top-1.5 w-1 h-1 rounded-full bg-[#2CC5F4]"})," ",t]},l))})]})]}),e.jsxs("div",{className:"mt-7 border-t border-gray-100 pt-6",children:[e.jsx("h4",{className:"text-sm font-bold text-gray-900 mb-4",children:"Your details"}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-3",children:[e.jsx(u,{label:"Full name *",children:e.jsx("input",{required:!0,value:s.full_name,onChange:t=>x({...s,full_name:t.target.value}),className:d})}),e.jsx(u,{label:"Email *",children:e.jsx("input",{required:!0,type:"email",value:s.email,onChange:t=>x({...s,email:t.target.value}),className:d})}),e.jsx(u,{label:"Phone / WhatsApp *",children:e.jsx("input",{required:!0,value:s.phone,onChange:t=>x({...s,phone:t.target.value}),className:d})}),e.jsx(u,{label:"Current city",children:e.jsx("input",{value:s.location,onChange:t=>x({...s,location:t.target.value}),className:d})}),e.jsx(u,{label:"Total years of experience",children:e.jsx("input",{value:s.years_experience,onChange:t=>x({...s,years_experience:t.target.value}),className:d})}),e.jsx(u,{label:"Upload CV (PDF/DOC, ≤10MB)",children:e.jsxs("label",{className:"flex items-center gap-2 h-11 px-3 border border-dashed border-gray-300 rounded-lg cursor-pointer hover:border-[#F9A01B] text-xs text-gray-600",children:[e.jsx(Z,{size:14}),e.jsx("span",{className:"truncate flex-1",children:i?i.name:"Choose file…"}),e.jsx("input",{type:"file",accept:".pdf,.doc,.docx",onChange:t=>{var l;return w(((l=t.target.files)==null?void 0:l[0])??null)},className:"hidden"})]})})]})]}),((B=r.questions)==null?void 0:B.length)>0&&e.jsxs("div",{className:"mt-6 border-t border-gray-100 pt-6",children:[e.jsx("h4",{className:"text-sm font-bold text-gray-900 mb-4",children:"A few quick questions"}),e.jsx("div",{className:"grid gap-3",children:r.questions.map(t=>e.jsx(u,{label:t.label+(t.required?" *":""),children:t.type==="textarea"?e.jsx("textarea",{rows:3,value:n[t.id]??"",onChange:l=>h({...n,[t.id]:l.target.value}),className:d}):t.type==="select"?e.jsxs("select",{value:n[t.id]??"",onChange:l=>h({...n,[t.id]:l.target.value}),className:d,children:[e.jsx("option",{value:"",children:"Select…"}
1),(t.options??[]).map(l=>e.jsx("option",{value:l,children:l},l))]}):t.type==="yesno"?e.jsx("div",{className:"flex gap-2",children:["Yes","No"].map(l=>e.jsx("button",{type:"button",onClick:()=>h({...n,[t.id]:l}),className:`h-10 px-4 rounded-lg text-xs font-semibold border ${n[t.id]===l?"bg-gray-900 text-white border-gray-900":"bg-white text-gray-700 border-gray-200 hover:border-gray-300"}`,children:l},l))}):e.jsx("input",{value:n[t.id]??"",onChange:l=>h({...n,[t.id]:l.target.value}),className:d})},t.id))})]}),e.jsx("div",{className:"mt-6",children:e.jsx(u,{label:"Cover note (optional)",children:e.jsx("textarea",{rows:3,value:s.cover_letter,onChange:t=>x({...s,cover_letter:t.target.value}),className:d,placeholder:"Anything else you'd like the hiring manager to know?"})})}),e.jsx("button",{type:"submit",disabled:b,className:"mt-6 w-full h-12 rounded-full bg-[#F9A01B] hover:bg-[#e8900a] disabled:opacity-60 text-white text-sm font-bold",children:b?"Submitting…":"Submit application"}),e.jsxs("p",{className:"text-[11px] text-gray-500 text-center mt-3",children:["By submitting you agree to our ",e.jsx("a",{href:"/privacy-policy",className:"underline",children:"privacy policy"}),"."]})]})]})})}const d="w-full h-11 px-3 border border-gray-200 rounded-lg text-sm bg-white focus:outline-none focus:ring-2 focus:ring-[#F9A01B]/40";function u({label:r,children:p}){return e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"block text-xs font-semibold text-gray-700 mb-1.5",children:r}),p]})}export{ae 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.