PageSourceSearch

https://washboat.art/assets/ContactPage_new-Bnpk-rTh.js

js washboat.art collected 2026-10-02 01:16:05 UTC 7,338 bytes, 6 lines download raw bytes

1import{d as y,u as N,r as l,j as e,q as w,H as v,b as c,s as k,F as S}from"./index-6puVifSu.js";import{N as F}from"./Navbar-jkL9nfIr.js";import{u as C,t as W,o as P,s as r}from"./zod-DKAA5UeX.js";import{S as z}from"./send-B52Z4joK.js";import"./sparkles-FzR1CUif.js";import"./log-out-CPd7ktNk.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 M=y("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),R=P({name:r().min(1,"Please enter your name"),email:r().email("Please enter a valid email address"),subject:r().optional(),message:r().min(10,"Message must be at least 10 characters")});function $(){const f=N(),[p,d]=l.useState(!1),o=l.useRef(0),m=l.useRef(0),{register:t,handleSubmit:g,formState:{errors:s,isSubmitting:x}}=C({resolver:W(R)}),j=async a=>{var h;if(a.website){d(!0);return}const u=Date.now(),b=u-o.current;if(o.current>0&&b<3e4){c.error(`Please wait ${Math.ceil((3e4-b)/1e3)} seconds before sending again.`);return}if(m.current>=3){c.error("Too many messages sent. Please email us directly if you need urgent help.");return}o.current=u,m.current+=1;const{error:n}=await k.functions.invoke("send-contact",{body:{name:a.name,email:a.email,subject:a.subject,message:a.message}});if(n){let i=n.message;if(n instanceof S)try{i=await((h=n.context)==null?void 0:h.text())||i}catch{}c.error("Failed to send message. Please try again."),console.error("Contact form error:",i);return}d(!0)};return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"fixed inset-0 z-0",style:{backgroundImage:`url(${w})`,backgroundSize:"cover",backgroundPosition:"center top"}}),e.jsx("div",{className:"fixed inset-0 z-0 bg-[#faf8f5]/75"}),e.jsxs(v,{children:[e.jsx("title",{children:"Contact — Washboat"}),e.jsx("meta",{name:"description",content:"Get in touch with the Washboat team. We read every message and respond within 1–2 business days."}),e.jsx("link",{rel:"canonical",href:"https://washboat.art/contact"}),e.jsx("meta",{name:"robots",content:"noindex"})]}),e.jsx(F,{}),e.jsx("div",{className:"relative z-10 min-h-screen",children:e.jsxs("div",{className:"pt-28 sm:pt-36 pb-24",children:[e.jsxs("div",{className:"px-8 pt-10 pb-12 text-center",children:[e.jsx("p",{className:"font-sans text-[10px] font-bold text-[#c9a84c] tracking-[0.4em] uppercase mb-5 select-none",children:"Get in touch"}),e.jsx("h1",{className:"font-serif text-4xl sm:text-5xl font-semibold text-[#1a1916] leading-tight mb-4",children:"Contact"}),e.jsx("p",{className:"font-serif text-lg font-medium text-[#1a1916]/75 max-w-sm mx-auto leading-relaxed mb-6",children:"We read every message and respond within 1–2 business days."}),e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-8 h-px bg-[#c9a84c]"})})]}),e.jsx("div",{className:"max-w-xl mx-auto px-8",children:p?e.jsxs("div",{className:"bg-white/60 backdrop-blur-sm border border-[#1a1916]/8 rounded-2xl p-12 text-center",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-[#c9a84c]/10 border border-[#c9a84c]/25 flex items-center justify-center mx-auto mb-5",children:e.jsx(M,{className:"w-5 h-5 text-[#c9a84c]"})}),e.jsx("h2",{className:"font-serif text-2xl font-semibold text-[#1a1916] mb-3",children:"Message sent"}),e.jsx("p",{className:"font-serif text-lg font-medium text-[#1a1916]/75 leading-relaxed max-w-sm mx-auto mb-8",children:"Thanks for reaching out. We'll get back to you at your email address within 1–2 business days."}),e.jsx("button",{onClick:()=>f("/"),className:"inline-flex items-center gap-2 px-6 py-3 bg-[#1a1916] text-[#faf8f5] font-sans text-sm font-medium rounded-lg hover:bg-[#2d2b27] transition-colors",children:"Back to Washboat"})]}):e.jsxs("form",{onSubmit:g(j),className:"bg-white/60 backdrop-blur-sm border border-[#1a1916]/8 rounded-2xl p-8 space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"name",className:"block font-sans text-sm font-medium text-[#1a1916]/70 mb-1.5",children:["Name ",e.jsx("span",{className:"text-[#c9a84c]",children:"*"})]}),e.jsx("input",{id:"name",type:"text",placeholder:"Your name",...t("name"),className:"w-full px-4 py-2.5 bg-white/80 border border-[#1a1916]/12 rounded-lg font-sans text-base text-[#1a1916] placeholder-[#1a1916]/25 focus:outline-none focus:border-[#c9a84c] transition-colors"}),s.name&&e.jsx("p",{className:"mt-1.5 font-sans text-xs text-red-500",children:s.name.message})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"email",className:"block font-sans text-sm font-medium text-[#1a1916]/70 mb-1.5",children:["Email ",e.jsx("span",{className:"text-[#c9a84c]",children:"*"})]}),e.jsx("input",{id:"email",type:"email",placeholder:"[email protected]",...t("email"),className:"w-full px-4 py-2.5 bg-white/80 border border-[#1a1916]/12 rounded-lg font-sans text-base text-[#1a1916] placeholder-[#1a1916]/25 focus:outline-none focus:border-[#c9a84c] transition-colors"}),s.email&&e.jsx("p",{className:"mt-1.5 font-sans text-xs text-red-500",children:s.email.message})]})]}),e.jsxs("div",{"aria-hidden":"true",style:{position:"absolute",left:"-9999px",opacity:0,height:0,overflow:"hidden"},children:[e.jsx("label",{htmlFor:"website",children:"Website (leave blank)"}),e.jsx("input",{id:"website",type:"text",tabIndex:-1,autoComplete:"off",...t("website")})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"subject",className:"block font-sans text-sm font-medium text-[#1a1916]/70 mb-1.5",children:["Subject ",e.jsx("span",{className:"text-[#1a1916]/25 font-normal",children:"(optional)"})]}),e.jsx("input",{id:"subject",type:"text",placeholder:"What's this about?",...t("subject"),className:"w-full px-4 py-2.5 bg-white/80 border border-[#1a1916]/12 rounded-lg font-sans text-base text-[#1a1916] placeholder-[#1a1916]/25 focus:outline-none focus:border-[#c9a84c] transition-colors"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"message",className:"block font-sans text-sm font-medium text-[#1a1916]/70 mb-1.5",children:["Message ",e.jsx("span",{className:"text-[#c9a84c]",children:"*"})]}),e.jsx("textarea",{id:"message",rows:6,placeholder:"Tell us what's on your mind…",...t("message"),className:"w-full px-4 py-2.5 bg-white/80 border border-[#1a1916]/12 rounded-lg font-sans text-base text-[#1a1916] placeholder-[#1a1916]/25 focus:outline-none focus:border-[#c9a84c] transition-colors resize-none leading-relaxed"}),s.message&&e.jsx("p",{className:"mt-1.5 font-sans text-xs text-red-500",children:s.message.message})]}),e.jsx("button",{type:"submit",disabled:x,className:"w-full flex items-center justify-center gap-2 px-6 py-3 bg-[#1a1916] text-[#faf8f5] font-sans text-sm font-semibold rounded-lg hover:bg-[#2d2b27] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:x?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin"}),"Sending…"]}):e.jsxs(e.Fragment,{children:[e.jsx(z,{className:"w-4 h-4"}),"Send message"]})}),e.jsx("p",{className:"text-center font-sans text-xs text-[#1a1916]/30",children:"We respond within 1–2 business days"})]})})]})})]})}export{$ 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.