1import{j as e,r as n}from"./query-DcTnDyCN.js";import{c as O,L as C}from"./router-CNYwvikX.js";import{u as G,N as V,m,F as q}from"./Footer-CcywhPPV.js";import{u as D,a as Q}from"./jobSlug-CwGWrM-b.js";import{u as Y}from"./usePagedJobs-9E9nGpMH.js";import{t as K,l as Z,_ as X,S as ee,G as te}from"./index-DvPOWfJI.js";import{S as se}from"./search-w9iP37sR.js";import{M as F}from"./map-pin-DRUt6WLA.js";import{C as B}from"./chevron-right-Dt4-RtyG.js";import{C as re}from"./clock-BNYZWxAK.js";import{B as ae}from"./briefcase-DouW3ys0.js";import{S as ne}from"./smartphone-WPUsuv-C.js";import{C as oe}from"./calendar-check-Bu9652RW.js";import{Z as ie}from"./zap-BtnQHeCQ.js";import{S as le}from"./shield-DDDGkVd_.js";import"./AppStoreBadges-CXUw_qI1.js";/** 2 * @license lucide-react v0.462.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const ce=K("UserCheck",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["polyline",{points:"16 11 18 13 22 9",key:"1pwet4"}]]);function a({className:s,...u}){return e.jsx("div",{className:Z("animate-pulse rounded-md bg-muted",s),...u})}const de=[{icon:ne,title:"Ditch the Agency Hassle",description:"No more juggling multiple agencies, endless phone calls, and constant paperwork. One intelligent platform replaces it all."},{icon:oe,title:"You're in Control",description:"Update your availability via email, WhatsApp, or SMS. Choose when and where you work with full freedom over your workload."},{icon:ie,title:"AI-Powered Matching",description:"Our smart AI system automatically matches your skills, role, and availability to the best shifts â no more missed opportunities."},{icon:le,title:"Compliance Made Easy",description:"From DBS checks to professional registration and occupational health â your credentials are managed and verified in one place."},{icon:te,title:"Nationwide Network",description:"Access opportunities across NHS Trusts and healthcare organisations throughout the UK, all through one streamlined platform."},{icon:ce,title:"Built for Healthcare",description:"Flexzo is the only platform designed specifically for healthcare professionals. We understand the challenges you face every day."}],_=20,me=40,ue=220,Ae=()=>{const{t:s}=G(),{regionPath:u,region:L}=X(),{jobs:I,loading:k}=D(),[l,P]=n.useState(""),[x,J]=n.useState(""),[i,S]=n.useState(!1),g=n.useRef(null),c=n.useRef(null),y=n.useRef(null),p=n.useRef(!1),o=n.useRef(null),A=O(),U=()=>{const t=new URLSearchParams;l&&t.set("role",l),x&&t.set("location",x),A(`${u("/jobs/search")}?${t.toString()}`)},d=n.useMemo(()=>I.filter(t=>{const r=!l||t.title.toLowerCase().includes(l.toLowerCase())||t.organisation.toLowerCase().includes(l.toLowerCase()),f=!x||t.location.toLowerCase().includes(x.toLowerCase());return r&&f}),[I,l,x]),$=n.useMemo(()=>d.map(t=>t.id).join("\0"),[d]),{visibleJobs:h,totalCount:W,loadMore:z}=Y(d,_),M=Math.min(W,me),R=h.length<M,T=!k&&h.length>0,b=!R,w=Math.max(0,M-h.length),H=i?Math.max(1,Math.min(_,w)):0,E=()=>{if(b||!R){const t=new URLSearchParams;l&&t.set("role",l),x&&t.set("location",x);const r=t.toString();A(`${u("/jobs/search")}${r?`?${r}`:""}`);return}i||(y.current=h.length,p.current=!0,o.current&&window.clearTimeout(o.current),c.current&&window.clearTimeout(c.current),S(!0),c.current=window.setTimeout(()=>{z(),c.current=null,S(!1)},ue))};return n.useEffect(()=>{c.current&&window.clearTimeout(c.current),o.current&&window.clearTimeout(o.current),c.current=null,o.current=null,y.current=null,p.current=!1,S(!1),g.current&&(g.current.scrollLeft=0)},[$]),n.useEffect(()=>{const t=y.current,r=g.current;if(t===null||i||!r)return;const f=r.children.item(t);if(f){const N=r.getBoundingClientRect().left,j=f.getBoundingClientRect().left,v=Math.max(0,r.scrollLeft+j-N-16);r.scrollTo({left:v,behavior:"smooth"})}y.current=null,o.current&&window.clearTimeout(o.current),o.current=window.setTimeout(()=>{p.current=!1,o.current=null},900)},[h.length,i]),n.useEffect(()=>()=>{c.current&&window.clearTimeout(c.current),o.current&&window.clearTimeout(o.current)},[]),n.useMemo(()=>d.reduce((t,r)=>(t.applicants+=r.appliedCount||0,t.aiMatches+=r.aiMatchedCount||0,t),{applicants:0,aiMatches:0}),[d]),n.useEffect(()=>{const t=g.current;if(!t)return;let r,f=.5;const N=()=>{!p.current&&t.scrollWidth>t.clientWidth&&(t.scrollLeft+=f,t.scrollLeft>=t.scrollWidth-t.clientWidth&&(t.scrollLeft=0)),r=requestAnimationFrame(N)};r=requestAnimationFrame(N);const j=()=>{p.current=!0},v=()=>{p.current=!1};return t.addEventListener("mouseenter",j),t.addEventListener("mouseleave",v),()=>{cancelAnimationFrame(r),t.removeEventListener("mouseenter",j),t.removeEventListener("mouseleave",v)}},[d]),e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(ee,{title:s("Healthcare Jobs"),description:s("Find healthcare jobs across the UK. Browse nursing, pharmacy, social care and hospital roles. Apply directly through Flexzo's AI-powered staffing platform."),path:u("/jobs")}),e.jsx(V,{}),e.jsx("section",{className:"border-b border-border bg-muted pt-32 pb-16",children:e.jsxs("div",{className:"mx-auto max-w-4xl px-6 text-center",children:[e.jsxs(m.div,{initial:{opacity:0,y:20}
6,animate:{opacity:1,y:0},transition:{duration:.5},children:[e.jsx("p",{className:"mb-3 font-display text-sm font-semibold uppercase tracking-[0.2em] text-accent",children:s("Flexzo Jobs")}),e.jsx("h1",{className:"mb-4 font-display text-4xl font-bold tracking-tight text-foreground md:text-5xl",children:s("Find your next healthcare role")}),e.jsx("p",{className:"mb-10 text-base text-muted-foreground",children:s("Browse opportunities across NHS Trusts and healthcare organisations nationwide.")})]}),e.jsxs(m.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5,delay:.1},className:"flex w-full flex-col overflow-hidden rounded-md border border-border bg-background shadow-sm sm:flex-row",children:[e.jsxs("div",{className:"flex flex-1 items-center gap-3 border-b border-border px-5 py-5 sm:border-b-0 sm:border-r",children:[e.jsx(se,{className:"h-5 w-5 shrink-0 text-muted-foreground"}),e.jsx("input",{type:"text",placeholder:s("Search by role or organisation"),value:l,onChange:t=>P(t.target.value),className:"w-full bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground"})]}),e.jsxs("div",{className:"flex flex-1 items-center gap-3 px-5 py-5",children:[e.jsx(F,{className:"h-5 w-5 shrink-0 text-muted-foreground"}),e.jsx("input",{type:"text",placeholder:s("Region or city"),value:x,onChange:t=>J(t.target.value),className:"w-full bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground"})]}),e.jsx("button",{onClick:U,className:"rounded-md bg-primary px-8 py-5 font-display text-sm font-semibold text-primary-foreground transition-all hover:bg-accent hover:text-accent-foreground",children:s("Search")})]}),e.jsx(m.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.5,delay:.2},className:"mt-4 text-center",children:e.jsxs(C,{to:u("/jobs/search"),className:"inline-flex items-center gap-1.5 text-sm font-medium text-accent underline-offset-4 transition-colors hover:underline",children:[s("View all jobs"),e.jsx(B,{className:"h-3.5 w-3.5"})]})})]})}),e.jsxs("section",{className:"py-16",children:[e.jsx("div",{className:"mx-auto max-w-7xl px-6",children:e.jsx("div",{className:"mb-8 flex flex-wrap items-center justify-between gap-4",children:k?e.jsx(a,{className:"h-5 w-40"}):e.jsxs("p",{className:"text-sm font-medium text-foreground",children:[e.jsx("span",{className:"text-accent",children:d.length})," ",d.length===1?s("role"):s("roles")," ",s("available")]})})}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{ref:g,className:"flex gap-4 sm:gap-6 overflow-x-auto px-4 sm:px-6 pb-6 pt-2 scrollbar-hide snap-x snap-mandatory",style:{scrollbarWidth:"none",msOverflowStyle:"none"},children:k?Array.from({length:6}).map((t,r)=>e.jsxs("div",{className:"shrink-0 snap-start w-[85vw] max-w-[340px] sm:w-[320px] md:w-[340px] rounded-2xl border border-border bg-background p-6",children:[e.jsxs("div",{className:"mb-5 flex items-center justify-between gap-2",children:[e.jsx(a,{className:"h-7 w-28 rounded-full"}),e.jsx(a,{className:"h-7 w-20 rounded-md"})]}),e.jsx(a,{className:"mb-2 h-6 w-4/5"}),e.jsx(a,{className:"mb-4 h-4 w-3/5"}),e.jsxs("div",{className:"mb-5 flex gap-1.5",children:[e.jsx(a,{className:"h-5 w-24 rounded-md"}),e.jsx(a,{className:"h-5 w-16 rounded-md"})]}),e.jsxs("div",{className:"space-y-3 border-t border-border pt-5",children:[e.jsx(a,{className:"h-4 w-2/3"}),e.jsx(a,{className:"h-4 w-1/2"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 pt-2",children:[e.jsx(a,{className:"h-16 rounded-lg"}),e.jsx(a,{className:"h-16 rounded-lg"})]})]})]},r)):d.length===0?e.jsx("div",{className:"mx-auto rounded-xl border border-border bg-background px-6 py-16 text-center min-w-[300px]",children:e.jsx("p",{className:"text-base text-muted-foreground",children:s("No jobs match your search. Try broadening your criteria.")})}):e.jsxs(e.Fragment,{children:[h.map((t,r)=>e.jsx(m.div,{initial:{opacity:0,y:15},animate:{opacity:1,y:0},transition:{delay:r*.05},className:"shrink-0 snap-start",children:e.jsxs(C,{to:u(`/jobs/${Q(t)}`),className:"group relative flex h-full w-[85vw] max-w-[340px] sm:w-[320px] md:w-[340px] flex-col overflow-hidden rounded-2xl border border-border bg-background p-5 sm:p-6 transition-all duration-300 hover:-translate-y-1 hover:border-accent/40 hover:shadow-[0_20px_50px_-15px_hsl(var(--accent)/0.25)]",children:[e.jsx("span",{className:"absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r from-primary via-accent to-primary opacity-60 transition-opacity duration-300 group-hover:opacity-100"}),e.jsx("span",{className:"pointer-events-none absolute -right-16 -top-16 h-40 w-40 rounded-full bg-accent/10 opacity-0 blur-3xl transition-opacity duration-500 group-hover:opacity-100"}),e.jsxs("div",{className:"relative mb-5 flex min-h-[28px] items-center justify-between gap-2",children:[t.contractType?e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-accent/20 bg-accent/10 px-3 py-1 text-[11px] font-semibold uppercase tracking-wider text-accent",children:[e.jsx(re,{className:"h-3 w-3"}),t.contractType]}):e.jsx("span",{}),t.posted&&t.posted!=="Open"&&t.closing&&t.closing!=="Open"?e.jsxs("span",{className:"shrink-0 rounded-md bg-muted/60 px-2 py-1 text-[10px] text-right text-muted-foreground leading-tight",children:[t.posted,e.jsx("br",{}),t.closing]}):t.posted&&t.posted!=="Open"?e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground",children:t.posted}):null]}),e.jsxs("div",{className:"relative flex-1",children:[e.jsx("h3",{className:"mb-1.5 font-display text-lg font-semibold leading-snug tracking-tight text-foreground transition-colors group-hover:text-accent line-clamp-2",children:t.title}),t.organisation&&e.jsx("p",{className:"mb-3 text-sm text-muted-foreground line-clamp-1",children:t.organisation}),(t.speciality||t.band&&L!=="us")&&e.jsxs("div",{className:"mb-3 flex flex-wrap gap-1.5",children:[t.speciality&&e.jsxs("span",{className:"rounded-md bg-muted px-2 py-0.5 text-[11px] font-medium text-foreground
6/70",children:[t.speciality,t.subSpeciality?` · ${t.subSpeciality}`:""]}),t.band&&L!=="us"&&e.jsx("span",{className:"rounded-md bg-muted px-2 py-0.5 text-[11px] font-medium text-foreground/70",children:t.band})]}),t.description&&e.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground line-clamp-3",children:t.description})]}),e.jsxs("div",{className:"relative mt-5 space-y-3 border-t border-border pt-5 text-sm text-muted-foreground",children:[t.location&&e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx(F,{className:"h-3.5 w-3.5 shrink-0 text-accent"}),e.jsx("span",{className:"truncate",children:t.location})]}),e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("span",{className:"flex items-center gap-2 font-semibold text-foreground",children:[e.jsx(ae,{className:"h-3.5 w-3.5 shrink-0 text-accent"}),t.salary]}),t.contractType&&e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground",children:t.contractType})]})]})]})},t.id)),Array.from({length:H}).map((t,r)=>e.jsxs("div",{className:"shrink-0 snap-start w-[85vw] max-w-[340px] sm:w-[320px] md:w-[340px] rounded-2xl border border-border bg-background p-6",children:[e.jsxs("div",{className:"mb-5 flex items-center justify-between gap-2",children:[e.jsx(a,{className:"h-7 w-28 rounded-full"}),e.jsx(a,{className:"h-7 w-20 rounded-md"})]}),e.jsx(a,{className:"mb-2 h-6 w-4/5"}),e.jsx(a,{className:"mb-4 h-4 w-3/5"}),e.jsxs("div",{className:"mb-5 flex gap-1.5",children:[e.jsx(a,{className:"h-5 w-24 rounded-md"}),e.jsx(a,{className:"h-5 w-16 rounded-md"})]}),e.jsxs("div",{className:"space-y-3 border-t border-border pt-5",children:[e.jsx(a,{className:"h-4 w-2/3"}),e.jsx(a,{className:"h-4 w-1/2"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 pt-2",children:[e.jsx(a,{className:"h-16 rounded-lg"}),e.jsx(a,{className:"h-16 rounded-lg"})]})]})]},`append-skeleton-${r}`))]})}),T&&e.jsxs("div",{className:"pointer-events-none absolute inset-y-0 right-0 hidden w-32 items-center justify-end pr-3 sm:flex",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-l from-background via-background/70 to-transparent"}),e.jsxs("button",{onClick:E,disabled:i,className:"pointer-events-auto relative z-10 flex h-full max-h-[420px] my-auto flex-col items-center justify-center gap-1.5 rounded-xl border border-border/60 bg-background/80 px-4 text-muted-foreground backdrop-blur-sm transition-all hover:border-accent/40 hover:text-accent disabled:cursor-wait disabled:opacity-70","aria-label":s(b?"Browse all jobs":"Show more jobs"),"aria-busy":i,children:[e.jsx(B,{className:"h-4 w-4"}),e.jsx("span",{className:"font-display text-xs font-medium",children:s(i?"Loading":b?"Browse all":"Show more")}),!b&&w>0&&e.jsxs("span",{className:"text-[10px] opacity-70",children:["+",w," ",s("jobs")]})]})]}),T&&e.jsx("div",{className:"mt-4 flex justify-center sm:hidden",children:e.jsx("button",{onClick:E,disabled:i,className:"rounded-lg border border-border/60 bg-background px-5 py-2.5 text-xs font-medium text-muted-foreground transition-all hover:border-accent/40 hover:text-accent disabled:cursor-wait disabled:opacity-70","aria-busy":i,children:i?s("Loading"):b?s("Browse all jobs"):`${s("Show more")} (+${w})`})})]})]}),e.jsx("section",{className:"border-t border-border bg-muted py-24",children:e.jsxs("div",{className:"mx-auto max-w-7xl px-6",children:[e.jsxs(m.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},className:"mb-6 text-center",children:[e.jsx("p",{className:"mb-3 font-display text-sm font-semibold uppercase tracking-[0.2em] text-accent",children:s("For Healthcare Professionals")}),e.jsx("h2",{className:"mb-4 font-display text-3xl font-bold tracking-tight text-foreground md:text-4xl",children:s("The future of healthcare staffing")}),e.jsx("p",{className:"mx-auto max-w-2xl text-base text-muted-foreground",children:s("Flexzo AI's Collaborative Staff Bank connects you directly with hospitals across the UK. No agencies, no hassle â just one intelligent platform built for you.")})]}),e.jsx("div",{className:"mt-16 grid gap-8 md:grid-cols-2 lg:grid-cols-3",children:de.map((t,r)=>e.jsxs(m.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{delay:r*.08}
6,className:"group flex gap-4 rounded-xl border border-border bg-background p-6 transition-shadow hover:shadow-md",children:[e.jsx("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-accent/10",children:e.jsx(t.icon,{className:"h-5 w-5 text-accent"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"mb-2 font-display text-base font-semibold text-foreground",children:s(t.title)}),e.jsx("p",{className:"text-sm leading-relaxed text-muted-foreground",children:s(t.description)})]})]},t.title))})]})}),e.jsx("section",{className:"py-24",children:e.jsxs("div",{className:"mx-auto max-w-5xl px-6",children:[e.jsxs(m.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},className:"mb-16 text-center",children:[e.jsx("h2",{className:"mb-4 font-display text-3xl font-bold tracking-tight text-foreground md:text-4xl",children:s("How it works")}),e.jsx("p",{className:"mx-auto max-w-2xl text-base text-muted-foreground",children:s("Getting started with Flexzo is simple. Sign up once, and our AI handles the rest.")})]}),e.jsx("div",{className:"grid gap-12 md:grid-cols-3",children:[{step:"01",title:"Create Your Profile",description:"Sign up quickly using our step-by-step process. Upload your credentials once â the AI system handles everything else."},{step:"02",title:"Set Your Availability",description:"Update your desired shift availability via email, WhatsApp, or SMS. It only takes a few clicks."},{step:"03",title:"Get Matched & Confirmed",description:"When your skills match a shift, you'll be notified automatically. Accept or decline with full freedom â your placement is secured upon approval."}].map((t,r)=>e.jsxs(m.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{delay:r*.1},className:"text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-accent/10 font-display text-lg font-bold text-accent",children:t.step}),e.jsx("h3",{className:"mb-2 font-display text-lg font-semibold text-foreground",children:s(t.title)}),e.jsx("p",{className:"text-sm leading-relaxed text-muted-foreground",children:s(t.description)})]},t.step))})]})}),e.jsx("section",{className:"border-t border-border bg-primary py-20",children:e.jsx("div",{className:"mx-auto max-w-3xl px-6 text-center",children:e.jsxs(m.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},children:[e.jsx("h2",{className:"mb-4 font-display text-3xl font-bold tracking-tight text-primary-foreground md:text-4xl",children:s("Ready to take control of your career?")}),e.jsx("p",{className:"mb-8 text-base text-primary-foreground/70",children:s("Join the Flexzo AI Collaborative Staff Bank and access opportunities nationwide.")}),e.jsx(C,{to:u("/book-demo"),className:"inline-block rounded-lg bg-accent px-8 py-3 font-display text-sm font-semibold text-accent-foreground transition-all hover:opacity-90",children:s("Get Started")})]})})}),e.jsx(q,{})]})};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.