PageSourceSearch

https://home.robusta.dev/assets/careers._slug-1FwTher5.js

js robusta.dev collected 2026-10-02 03:53:59 UTC 7,015 bytes, 1 lines download raw bytes

1import{R as S,j as e,L as C,e as E,r as i,t as w}from"./index-Cq5vDiOZ.js";import{A}from"./AmbientBackground-BWNYYSoM.js";import{S as _,a as F}from"./SiteChrome-DGBfJ9YJ.js";import{d as P,E as T}from"./ContactForm-BVdfEbHh.js";import{A as B}from"./arrow-left-Bz9yvBOR.js";import{A as q}from"./RobustaLogo-DRAs1esM.js";function I(){const{slug:c}=S.useParams(),s=E[c];return e.jsxs("div",{className:"dir-terminal relative min-h-screen bg-background text-foreground",children:[e.jsx(A,{}),e.jsx(_,{}),e.jsxs("section",{className:"relative overflow-hidden border-b border-border bg-background",children:[e.jsx("div",{className:"pointer-events-none absolute inset-0 bg-grid-dots opacity-60"}),e.jsx("div",{className:"pointer-events-none absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-border-strong to-transparent"}),e.jsx("div",{className:"pointer-events-none absolute inset-0 bg-gradient-to-b from-background/0 via-background/40 to-background"}),e.jsxs("div",{className:"relative mx-auto max-w-7xl px-8 md:px-12 pb-20 pt-16 md:pt-20",children:[e.jsxs(C,{to:"/careers",className:"inline-flex items-center gap-2 text-sm text-muted-foreground transition hover:text-foreground",children:[e.jsx(B,{className:"h-4 w-4"}),"Back to careers"]}),e.jsx("h1",{className:"mt-8 font-display text-3xl font-extralight leading-[1.1] tracking-tight text-white md:text-5xl",children:s.title}),e.jsx("p",{className:"mt-6 max-w-2xl text-lg text-muted-foreground md:text-xl",children:s.subtitle})]})]}),e.jsx("section",{className:"bg-surface-alt",children:e.jsxs("div",{className:"mx-auto max-w-5xl px-8 md:px-12 py-14 pb-24",children:[e.jsxs("div",{className:"blog-content",children:[s.intro&&e.jsx("p",{children:s.intro}),s.sections.map((r,m)=>e.jsxs("div",{children:[r.title&&e.jsx("h2",{children:r.title}),r.content&&r.content.map((l,d)=>e.jsx("p",{children:l},d)),r.bullets&&e.jsx("ul",{children:r.bullets.map((l,d)=>e.jsx("li",{children:l},d))}),r.bonusBullets&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"font-medium text-foreground",children:"Bonus:"}),e.jsx("ul",{children:r.bonusBullets.map((l,d)=>e.jsx("li",{children:l},d))})]})]},m)),e.jsxs("div",{className:"mt-12 border-t border-border pt-4",children:[e.jsx("h2",{children:s.closing.title}),e.jsx("p",{children:s.closing.text})]})]}),e.jsx("div",{className:"mt-12",children:e.jsx(W,{jobTitle:s.title})})]})}),e.jsx(F,{})]})}const D="0edf2063-cd36-4e22-9b7a-c4c2b521834b",L=5*1024*1024,M=".pdf,.doc,.docx",V=/\.(pdf|docx?)$/i;function W({jobTitle:c}){const[s,r]=i.useState(""),[m,l]=i.useState(""),[d,b]=i.useState(""),[n,g]=i.useState(null),[h,j]=i.useState(!1),[u,p]=i.useState({}),v=i.useRef(null),y=i.useRef(null),x=i.useRef(null),k=async o=>{o.preventDefault();const t={};if(s.trim()||(t.name="This field is required."),m.trim()?T.test(m.trim())||(t.email="Please enter a valid email address."):t.email="This field is required.",n?V.test(n.name)?n.size>L&&(t.cv="Please keep your file under 5 MB."):t.cv="Please upload a PDF or Word document.":t.cv="This field is required.",p(t),t.name||t.email||t.cv||!n){(t.name?v:t.email?y:x).current?.focus({preventScroll:!0});return}j(!0);try{const a=new FormData;a.append("access_key",D),a.append("subject",`New job application — ${c}`),a.append("from_name","Robusta website"),a.append("job",c),a.append("name",s.trim()),a.append("email",m.trim()),a.append("message",d.trim()||"—"),a.append("attachment",n,n.name);const N=await fetch("https://api.web3forms.com/submit",{method:"POST",headers:{Accept:"application/json"},body:a}),R=await N.json().catch(()=>null);if(!N.ok||!R?.success)throw new Error("web3forms submission failed");w.success("Application sent!",{description:"Thanks for applying. We'll be in touch soon."}),r(""),l(""),b(""),g(null),x.current&&(x.current.value="")}catch{w.error("Something went wrong",{description:"Please try again or email us at [email protected]."})}finally{j(!1)}};return e.jsxs("form",{onSubmit:k,noValidate:!0,className:"border border-border bg-surface/40 p-8",style:{borderRadius:"var(--radius)"},children:[e.jsx("h3",{className:"mb-6 font-display text-xl font-medium text-foreground",children:"Apply now"}),e.jsxs("div",{className:"grid grid-cols-1 gap-6 sm:grid-cols-2",children:[e.jsx(f,{label:"Full name *",error:u.name,children:e.jsx("input",{ref:v,type:"text",value:s,onChange:o=>{r(o.target.value),u.name&&p(t=>({...t,name:void 0}))},required:!0,placeholder:"Your name",className:"w-full border-0 bg-transparent p-0 text-base text-foreground outline-none placeholder:text-muted-foreground
1/60 focus:ring-0"})}),e.jsx(f,{label:"Email *",error:u.email,children:e.jsx("input",{ref:y,type:"email",value:m,onChange:o=>{l(o.target.value),u.email&&p(t=>({...t,email:void 0}))},required:!0,placeholder:"[email protected]",className:"w-full border-0 bg-transparent p-0 text-base text-foreground outline-none placeholder:text-muted-foreground/60 focus:ring-0"})})]}),e.jsx("div",{className:"mt-6",children:e.jsxs(f,{label:"Upload your CV *",error:u.cv,children:[e.jsx("input",{ref:x,type:"file",accept:M,onChange:o=>{g(o.target.files?.[0]??null),u.cv&&p(t=>({...t,cv:void 0}))},required:!0,className:"sr-only"}),e.jsxs("span",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"shrink-0 cursor-pointer bg-surface-3 px-3 py-1.5 font-mono text-[10px] uppercase tracking-[0.18em] text-foreground",style:{borderRadius:"var(--radius)"},children:"Choose file"}),e.jsx("span",{className:`truncate text-base ${n?"text-foreground":"text-muted-foreground/60"}`,children:n?n.name:"PDF or Word, up to 5 MB"})]})]})}),e.jsx("div",{className:"mt-6",children:e.jsx(f,{label:"Tell us about yourself",children:e.jsx("textarea",{rows:4,value:d,onChange:o=>b(o.target.value),placeholder:"Tell us why you're a good fit — and anything your CV doesn't cover.",className:"w-full resize-none border-0 bg-transparent p-0 text-base text-foreground outline-none placeholder:text-muted-foreground/60 focus:ring-0"})})}),e.jsx(P,{}),e.jsx("div",{className:"mt-6 flex justify-end",children:e.jsxs("button",{type:"submit",disabled:h,className:"group inline-flex items-center gap-2 bg-primary px-6 py-3 text-sm font-medium text-primary-foreground transition hover:opacity-90 disabled:opacity-60",style:{borderRadius:"var(--radius)"},children:[h?"Sending...":"Apply now",e.jsx(q,{className:"h-4 w-4 transition group-hover:translate-x-0.5"})]})})]})}function f({label:c,error:s,children:r}){return e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"mb-2 block font-mono text-[10px] uppercase tracking-[0.18em] text-white",children:c}),e.jsx("div",{className:`border px-3.5 py-3 focus-within:border-primary ${s?"border-destructive":""}`,style:{borderColor:s?"var(--destructive)":"var(--border)",borderRadius:"var(--radius)",background:"color-mix(in oklch, var(--surface-2) 60%, transparent)"},children:r}),s&&e.jsx("p",{className:"mt-1.5 text-sm leading-relaxed tracking-[0.015em] [text-rendering:auto] text-destructive",children:s})]})}export{I as component};

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.