1import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{t}from"./react-CcWVLM6k.js";import{n,t as r}from"./createServerFn-_kTphzvs.js";import{t as i}from"./link-Dbp4c8_I.js";import{t as a}from"./jsx-runtime-B6jttwkn.js";import{Lt as o,_t as s,gt as c,vt as l,xt as u}from"./index-CAs-taeK.js";var d=e(t()),f=r({method:`POST`}).handler(n(`51995fbdbfb8836cf92f13064f0ff8665b8bd3c850c280e9307ae39b2a303a6d`)),p={version:1,asset_id:`5428c9b9-91bb-4c48-94bf-410a4cbdf139`,project_id:`b88a5d83-dc26-4118-9feb-d973d027b052`,url:`/__l5e/assets-v1/5428c9b9-91bb-4c48-94bf-410a4cbdf139/rachel-assistant.jpg`,r2_key:`a/v1/b88a5d83-dc26-4118-9feb-d973d027b052/5428c9b9-91bb-4c48-94bf-410a4cbdf139/rachel-assistant.jpg`,original_filename:`rachel-assistant.jpg`,size:220624,content_type:`image/jpeg`,created_at:`2026-08-21T09:39:06Z`},m=a(),h=[`Website design`,`Website redesign`,`Accessibility / WCAG remediation`,`SEO`,`Website maintenance`,`Small business website`,`Nonprofit website`,`Not sure yet`],g=[{label:`Under $5,000`,value:`under-5k`},{label:`$5,000 to $10,000`,value:`5k-10k`},{label:`$10,000 to $20,000`,value:`10k-20k`},{label:`$20,000 to $40,000`,value:`20k-40k`},{label:`$40,000+`,value:`40k-plus`},{label:`I'd rather discuss first`,value:`discuss`}],_=[{q:`How quickly will you reply?`,a:`We reply to every project inquiry within two business days, often sooner.`},{q:`Do you work with clients outside Austin?`,a:`Yes. We're based in the Austin, Texas area and work with businesses and nonprofits across Texas and the U.S.`},{q:`What does accessibility include?`,a:`Every project ships to WCAG 2.2 AA: keyboard navigation, screen reader testing, color contrast, form labels, and documented results.`}];function v(){let[e,t]=(0,d.useState)(!1),[n,r]=(0,d.useState)(!1),[a,v]=(0,d.useState)(null),[x,S]=(0,d.useState)({});return(0,m.jsxs)(`div`,{className:`container-page py-10 md:py-14`,children:[(0,m.jsxs)(`div`,{className:`mx-auto max-w-3xl`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,m.jsx)(`span`,{className:`eyebrow text-primary/70 tabular-nums`,"aria-hidden":`true`,children:`07`}),(0,m.jsx)(`span`,{className:`eyebrow text-muted-foreground`,children:`Start a project`}),(0,m.jsx)(`span`,{"aria-hidden":`true`,className:`h-px flex-1 bg-border`})]}),(0,m.jsx)(`h1`,{className:`mt-6 text-4xl font-extrabold leading-[1.02] tracking-tight md:text-6xl`,children:`Tell us what you're building.`}),(0,m.jsx)(`p`,{className:`mt-5 max-w-xl text-lg leading-relaxed text-muted-foreground`,children:`A few details are enough to get started. We reply within two business days, and every conversation starts with listening.`})]}),e?(0,m.jsx)(`div`,{className:`mx-auto mt-6 max-w-2xl`,children:(0,m.jsxs)(`div`,{role:`status`,className:`rounded-3xl border border-border bg-card p-6 text-center shadow-soft md:p-8`,children:[(0,m.jsx)(`div`,{className:`mx-auto grid size-14 place-items-center rounded-full bg-accent text-accent-foreground`,children:(0,m.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`26`,height:`26`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`3`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:(0,m.jsx)(`polyline`,{points:`20 6 9 17 4 12`})})}),(0,m.jsx)(`h2`,{className:`mt-4 text-2xl md:text-3xl`,children:`Thank you. We've got it.`}),(0,m.jsx)(`p`,{className:`mx-auto mt-2 max-w-md text-muted-foreground`,children:`We'll be in touch within two business days with next steps. While you wait, feel free to look through our recent work.`}),(0,m.jsxs)(`div`,{className:`mt-5 flex flex-wrap justify-center gap-3`,children:[(0,m.jsx)(i,{to:`/portfolio`,className:`inline-flex min-h-10 items-center rounded-full bg-primary px-5 text-sm font-semibold text-primary-foreground transition-colors hover:bg-primary/90`,children:`View portfolio`}),(0,m.jsx)(i,{to:`/services`,className:`inline-flex min-h-10 items-center rounded-full border border-border bg-card px-5 text-sm font-semibold text-foreground transition-colors hover:bg-secondary`,children:`Explore services`})]})]})}):(0,m.jsxs)(`div`,{className:`mx-auto mt-6 grid max-w-5xl gap-6 lg:grid-cols-[1.35fr_1fr]`,children:[(0,m.jsxs)(`form`,{className:`space-y-4`,onSubmit:async e=>{e.preventDefault();let n=e.currentTarget,i=new FormData(n),a={},s=i.get(`name`)?.toString().trim(),c=i.get(`email`)?.toString().trim(),l=i.get(`project`)?.toString().trim();if(s||(a.name=`Please enter your name.`),(!c||!c.includes(`@`))&&(a.email=`Please enter a valid email address.`),(!l||l.length<10)&&(a.project=`Tell us a little more about your project, at least a sentence or tw
1o.`),Object.keys(a).length>0){S(a),n.querySelector(`[aria-invalid='true']`)?.focus();return}S({}),v(null),r(!0);let u=typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():null,{error:d}=await o.from(`contact_submissions`).insert({...u?{id:u}:{},name:s.slice(0,120),email:c.slice(0,255),phone:i.get(`phone`)?.toString().trim().slice(0,40)||null,organization:i.get(`organization`)?.toString().trim().slice(0,160)||null,service:i.get(`service`)?.toString().trim().slice(0,120)||null,budget:i.get(`budget`)?.toString().trim().slice(0,60)||null,website:i.get(`website`)?.toString().trim().slice(0,300)||null,project:l.slice(0,5e3)});if(r(!1),d){v(`Something went wrong sending your details. Please try again, or email [email protected].`);return}u&&f({data:{submissionId:u}}).catch(()=>{}),t(!0),window.scrollTo({top:0,behavior:`smooth`})},noValidate:!0,children:[(0,m.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,m.jsx)(y,{id:`name`,label:`Your name`,required:!0,error:x.name}),(0,m.jsx)(y,{id:`email`,label:`Email address`,type:`email`,required:!0,error:x.email})]}),(0,m.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,m.jsx)(y,{id:`phone`,label:`Phone`,type:`tel`,required:!1,help:`Optional, but helpful if you'd like a video call.`}),(0,m.jsx)(y,{id:`organization`,label:`Organization`,required:!1,help:`Business or nonprofit name.`})]}),(0,m.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,m.jsx)(b,{id:`service`,label:`What do you need help with?`,options:h.map(e=>({label:e,value:e})),required:!1}),(0,m.jsx)(b,{id:`budget`,label:`Budget range`,options:g,required:!1})]}),(0,m.jsx)(y,{id:`website`,label:`Current website`,type:`url`,required:!1,placeholder:`https://`,help:`Leave blank if you don't have one yet.`}),(0,m.jsxs)(`div`,{className:`grid gap-2`,children:[(0,m.jsxs)(`label`,{htmlFor:`project`,className:`text-sm font-semibold`,children:[`Tell us about your project`,(0,m.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,m.jsx)(`textarea`,{id:`project`,name:`project`,rows:4,"aria-invalid":!!x.project,"aria-describedby":x.project?`project-error`:void 0,className:`rounded-xl border border-input bg-card px-4 py-3 text-base transition-colors focus:border-primary focus:ring-2 focus:ring-ring/30`}),x.project?(0,m.jsx)(`p`,{id:`project-error`,className:`text-sm font-medium text-destructive`,children:x.project}):(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Goals, timeline, anything you know about your audience, and any accessibility needs.`})]}),a?(0,m.jsx)(`p`,{role:`alert`,className:`text-sm font-medium text-destructive`,children:a}):null,(0,m.jsxs)(`div`,{className:`flex flex-col gap-3 pt-1 sm:flex-row sm:items-center sm:justify-between`,children:[(0,m.jsx)(`button`,{type:`submit`,disabled:n,className:`inline-flex min-h-11 w-fit items-center rounded-full bg-primary px-6 py-2.5 text-base font-semibold text-primary-foreground transition-colors hover:bg-primary/90 disabled:opacity-70`,children:n?`Sendingâ¦`:`Send project details`}),(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No spam. We keep your information private.`})]})]}),(0,m.jsxs)(`aside`,{className:`space-y-4`,children:[(0,m.jsxs)(`div`,{className:`rounded-3xl border border-border bg-card p-5 shadow-soft`,children:[(0,m.jsx)(`h2`,{className:`text-base font-semibold`,children:`What happens next`}),(0,m.jsx)(`ol`,{className:`mt-3 space-y-2.5`,children:[`We read your note within two business days.`,`We reply with any clarifying questions and a short plan.`,`If it feels like a fit, we schedule a free 30-minute call.`].map((e,t)=>(0,m.jsxs)(`li`,{className:`flex gap-3`,children:[(0,m.jsx)(`span`,{"aria-hidden":`true`,className:`grid size-6 shrink-0 place-items-center rounded-full bg-accent text-xs font-bold text-accent-foreground`,children:t+1}),(0,m.jsx)(`span`,{className:`text-sm leading-relaxed text-muted-foreground`,children:e})]},e))})]}),(0,m.jsxs)(`div`,{className:`rounded-3xl border border-border bg-card p-5 shadow-soft`,children:[(0,m.jsx)(`h2`,{className:`text-base font-semibold`,children:`Rather book a time?`}),(0,m.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-muted-foreground`,children:`Pick a slot that works for you and we'll meet for a free 30-minute call.`}),(0,m.jsx)(`a`,{href:s,target:`_blank`,rel:`noopener noreferrer`,className:`mt-3 inline-flex min-h-10 items-center rounded-full bg-primary px-5 py-2 text-sm font-semibold text-primary-foreground transition-colors hover:bg-primary/90`,children:`Book a free consultation`})]}),(0,m.jsxs)(`div`,{className:`overflow-hidden rounded-3xl border border-border bg-card shadow-soft`,children:[(0,m.jsx)(`img`,{src:p.url,alt:`Rachel, the Twist Web Studio assistant, smiling and ready to help`,width:600,height:320,className:`aspect-[16/9] w-full object-cover object-top`,loading:`lazy`}),(0,m.jsxs)(`div`,{className:`p-5`,children:[(0,m.jsx)(`h2`,{className:`text-base font-semibold`,children:`Meet Rachel`}),(0,m.jsx)(`p`,{className:`mt-1.5 text-sm leading-relaxed text-muted-foreground`,children:`Have questions before you start? Rachel is here to help with project details, pricing, and next steps.`}),(0,m.jsxs)(`a`,{href:`tel:${u.replace(/-/g,``)}`,className:`mt-3 inline-flex min-h-10 items-center gap-2 rounded-full bg-primary px-5 text-sm font-semibold text-primary-foreground transition-colors hover:bg-primary/90`,children:[(0,m.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,
1width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:(0,m.jsx)(`path`,{d:`M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z`})}),`Call `,u]}),(0,m.jsx)(`p`,{className:`mt-1.5 text-xs text-muted-foreground`,children:`Monday through Friday, 9 AM to 5 PM Central Time`})]})]}),(0,m.jsxs)(`div`,{className:`rounded-3xl border border-border bg-card p-5 shadow-soft`,children:[(0,m.jsx)(`h2`,{className:`text-base font-semibold`,children:`Prefer email?`}),(0,m.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-muted-foreground`,children:`Send a note directly and we'll pick up the thread there.`}),(0,m.jsx)(`a`,{href:`mailto:${l}`,className:`mt-2 inline-block text-base font-semibold text-primary underline underline-offset-4`,children:l})]}),(0,m.jsxs)(`div`,{className:`rounded-3xl border border-border bg-card p-5`,children:[(0,m.jsx)(`h2`,{className:`text-base font-semibold`,children:`Common questions`}),(0,m.jsx)(`dl`,{className:`mt-3 space-y-3`,children:_.map(e=>(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`dt`,{className:`text-sm font-semibold`,children:e.q}),(0,m.jsx)(`dd`,{className:`mt-1 text-sm leading-relaxed text-muted-foreground`,children:e.a})]},e.q))})]})]})]}),(0,m.jsx)(`section`,{"aria-labelledby":`booking-heading`,className:`mx-auto mt-16 max-w-3xl`,children:(0,m.jsxs)(`div`,{className:`rounded-3xl border border-border bg-card p-5 shadow-soft sm:p-8`,children:[(0,m.jsx)(`h2`,{id:`booking-heading`,className:`text-xl font-semibold sm:text-2xl`,children:`Skip the form and grab a time`}),(0,m.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-muted-foreground sm:text-base`,children:`Pick any open slot below for a free 30-minute call. You'll get a confirmation right away.`}),(0,m.jsx)(`iframe`,{src:c,title:`Google Calendar appointment scheduling for Twist Web Studio`,className:`mt-6 w-full rounded-2xl border border-border bg-background`,style:{height:`600px`},loading:`lazy`})]})})]})}function y({id:e,label:t,type:n=`text`,required:r=!0,error:i,help:a,placeholder:o}){return(0,m.jsxs)(`div`,{className:`grid gap-2`,children:[(0,m.jsxs)(`label`,{htmlFor:e,className:`text-sm font-semibold`,children:[t,!r&&(0,m.jsx)(`span`,{className:`ml-2 font-normal text-muted-foreground`,children:`(optional)`}),r&&(0,m.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,m.jsx)(`input`,{id:e,name:e,type:n,placeholder:o,"aria-required":r,"aria-invalid":!!i,"aria-describedby":i?`${e}-error`:void 0,className:`min-h-12 rounded-xl border border-input bg-card px-4 text-base transition-colors focus:border-primary focus:ring-2 focus:ring-ring/30`}),i?(0,m.jsx)(`p`,{id:`${e}-error`,className:`text-sm font-medium text-destructive`,children:i}):a?(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a}):null]})}function b({id:e,label:t,options:n,required:r=!0}){return(0,m.jsxs)(`div`,{className:`grid gap-2`,children:[(0,m.jsxs)(`label`,{htmlFor:e,className:`text-sm font-semibold`,children:[t,!r&&(0,m.jsx)(`span`,{className:`ml-2 font-normal text-muted-foreground`,children:`(optional)`})]}),(0,m.jsxs)(`select`,{id:e,name:e,className:`min-h-12 appearance-none rounded-xl border border-input bg-card px-4 text-base transition-colors focus:border-primary focus:ring-2 focus:ring-ring/30`,children:[(0,m.jsx)(`option`,{value:``,children:`Choose an option`}),n.map(e=>(0,m.jsx)(`option`,{value:e.value,children:e.label},e.value))]})]})}export{v 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.