PageSourceSearch

https://bumpsale.com/assets/contact-_5rQellL.js

js bumpsale.com collected 2026-10-10 02:34:16 UTC 2,907 bytes, 1 lines download raw bytes

1import{r as e}from"./chunk-QTnfLwEv.js";import{t}from"./react-xd4aoMiW.js";import{t as n}from"./jsx-runtime-DsKLSDJq.js";import{t as r}from"./useServerFn-B1TZg38n.js";import{At as i,Mt as a,Yt as o,jt as s,sn as c}from"./index-BuU-dLV7.js";import{t as l}from"./CmsPage-VvwaI4VJ.js";var u=e(t(),1),d=n(),f=i({name:s().trim().min(1,`Name is required`).max(100),email:s().trim().email(`Enter a valid email`).max(255),message:s().trim().min(1,`Message is required`).max(5e3)});function p(){let e=r(c),[t,n]=(0,u.useState)({name:``,email:``,message:``}),[i,a]=(0,u.useState)(`idle`),[o,s]=(0,u.useState)(null);async function l(r){r.preventDefault(),s(null);let i=f.safeParse(t);if(!i.success){a(`error`),s(i.error.issues[0]?.message??`Invalid input`);return}a(`loading`);try{await e({data:i.data}),a(`success`),n({name:``,email:``,message:``})}catch(e){a(`error`),s(e instanceof Error?e.message:`Something went wrong`)}}return i===`success`?(0,d.jsxs)(`div`,{className:`border border-border bg-paper p-8`,children:[(0,d.jsx)(`p`,{className:`font-serif text-2xl`,children:`Got it. Thanks for writing in.`}),(0,d.jsx)(`p`,{className:`mt-2 text-muted-foreground`,children:`We'll get back to you soon.`})]}):(0,d.jsxs)(`form`,{onSubmit:l,className:`space-y-5 max-w-xl`,children:[(0,d.jsxs)(`div`,{className:`grid gap-2`,children:[(0,d.jsx)(`label`,{htmlFor:`name`,className:`text-sm font-medium`,children:`Name`}),(0,d.jsx)(`input`,{id:`name`,type:`text`,required:!0,value:t.name,onChange:e=>n({...t,name:e.target.value}),className:`px-3 py-2.5 bg-card border border-input focus:border-accent outline-none`})]}),(0,d.jsxs)(`div`,{className:`grid gap-2`,children:[(0,d.jsx)(`label`,{htmlFor:`email`,className:`text-sm font-medium`,children:`Email`}),(0,d.jsx)(`input`,{id:`email`,type:`email`,required:!0,value:t.email,onChange:e=>n({...t,email:e.target.value}),className:`px-3 py-2.5 bg-card border border-input focus:border-accent outline-none`})]}),(0,d.jsxs)(`div`,{className:`grid gap-2`,children:[(0,d.jsx)(`label`,{htmlFor:`message`,className:`text-sm font-medium`,children:`Message`}),(0,d.jsx)(`textarea`,{id:`message`,required:!0,rows:6,value:t.message,onChange:e=>n({...t,message:e.target.value}),className:`px-3 py-2.5 bg-card border border-input focus:border-accent outline-none resize-y`})]}),o&&(0,d.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:o}),(0,d.jsx)(`button`,{type:`submit`,disabled:i===`loading`,className:`px-8 py-3 bg-accent text-accent-foreground font-medium hover:brightness-110 disabled:opacity-50 transition-all`,children:i===`loading`?`Sending...`:`Send message`})]})}var m=()=>(0,d.jsx)(o,{children:(0,d.jsxs)(`div`,{className:`grid gap-16 lg:grid-cols-2`,children:[(0,d.jsx)(l,{page:a.useLoaderData()}),(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`h2`,{className:`font-serif text-3xl mb-6`,children:`Send a message`}),(0,d.jsx)(p,{})]})]})});export{m 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.