PageSourceSearch

https://cycleevmobility.nl/assets/contact-BVoYjGu1.js

js cycleevmobility.nl collected 2026-10-07 06:15:17 UTC 9,370 bytes, 1 lines download raw bytes

1import{r as x,j as e}from"./vendor-react-DJmjAfl2.js";import{S as _}from"./SiteLayout-CrET8Wk0.js";import{B as n,L as G,l as R,t as z,G as b,w as O,x as V,v as w,y as k}from"./index-x9QNWmN4.js";import{t as y}from"./vendor-sonner-_Iiq5v5b.js";import{I as h}from"./input-BeTpIO3a.js";import{L as c}from"./label-CQxwAlB-.js";import{T as B}from"./textarea-C8LHgBed.js";import{s as I}from"./public-request.functions-DkSqoKof.js";import{a as P,l as F,u as M,h as C,S,P as W,v as A,w as T,M as U}from"./vendor-icons-C-5BG5OA.js";import{o as K,s as m}from"./vendor-forms-BpJIEFtM.js";import{G as D}from"./GoogleMapEmbed-TKaYhgzx.js";import"./react-BDwo-9YC.js";import"./contact-clicks.functions-CymtXWgm.js";import"./vehicle-type-Kxtm5gnV.js";import"./vendor-supabase-DLvwz3tW.js";import"./vendor-query-B8PBsYdN.js";import"./vendor-radix-zGLEosEN.js";import"./vendor-charts-DUPonvJN.js";import"./data-aeo-BuSp_0My.js";import"./data-faq-VtuDGZ0E.js";import"./data-gemeentes-CX7wwwEd.js";import"./data-blog-4niK8dn0.js";const $=K({fullName:m().trim().min(2,"Vul je naam in").max(120),email:m().trim().email("Vul een geldig e-mailadres in").max(255),phone:m().trim().max(30).optional(),subject:m().trim().max(200).optional(),message:m().trim().min(5,"Vul je bericht in").max(2e3)}),E={fullName:"",email:"",phone:"",subject:"",message:""};function H(){const[a,j]=x.useState(E),[l,g]=x.useState({}),[u,d]=x.useState("idle"),[f,v]=x.useState(null),i=(t,o)=>{j(s=>({...s,[t]:o})),g(s=>({...s,[t]:void 0}))},L=async t=>{t.preventDefault();const o=$.safeParse(a);if(!o.success){const r={};for(const N of o.error.issues){const p=N.path[0];p&&!r[p]&&(r[p]=N.message)}g(r);return}const s=o.data;d("saving");try{const r=await I({data:{attribution:R()??void 0,type:"contact",subject:s.subject?.trim()?`Contactvraag — ${s.subject.trim()}`:`Contactvraag van ${s.fullName}`,guest_name:s.fullName,guest_email:s.email,...s.phone?.trim()?{guest_phone:s.phone.trim()}:{},payload:{bron:"contactpagina",onderwerp:s.subject?.trim()||"Algemene vraag",bericht:s.message}}});v(r.ref),d("done"),z("contact_form_submit",{source:"contactpagina"}
1),y.success("Bericht verstuurd — we nemen snel contact op.")}catch(r){d("idle"),y.error(r instanceof Error?r.message:"Versturen mislukt. Probeer het opnieuw.")}};return u==="done"?e.jsxs("div",{className:"flex flex-col items-center gap-3 rounded-xl border border-electric/40 bg-card p-8 text-center",children:[e.jsx(P,{className:"h-10 w-10 text-electric"}),e.jsx("h2",{className:"font-display text-2xl font-bold",children:"Bedankt voor je bericht"}),e.jsxs("p",{className:"text-muted-foreground",children:["We hebben je vraag ontvangen",f?` (referentie CEV-${f})`:""," en reageren binnen één werkdag."]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Wil je de status zelf volgen? Maak een account met ",e.jsx("strong",{children:a.email})," in het klantportaal — je aanvraag wordt automatisch aan je account gekoppeld."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-2",children:[e.jsx(n,{asChild:!0,children:e.jsx(G,{to:"/portaal",children:"Volg in klantportaal"})}),e.jsx(n,{variant:"outline",onClick:()=>{j(E),v(null),d("idle")},children:"Nog een bericht sturen"})]})]}):e.jsxs("form",{onSubmit:L,className:"space-y-4 rounded-xl border bg-card p-6",children:[e.jsx("h2",{className:"font-display text-xl font-bold",children:"Stuur ons een bericht"}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(c,{htmlFor:"contact-name",children:"Naam *"}),e.jsx(h,{id:"contact-name",value:a.fullName,onChange:t=>i("fullName",t.target.value),maxLength:120,className:"mt-1"}),l.fullName&&e.jsx("p",{className:"mt-1 text-xs text-destructive",children:l.fullName})]}),e.jsxs("div",{children:[e.jsx(c,{htmlFor:"contact-email",children:"E-mail *"}),e.jsx(h,{id:"contact-email",type:"email",value:a.email,onChange:t=>i("email",t.target.value),maxLength:255,className:"mt-1"}),l.email&&e.jsx("p",{className:"mt-1 text-xs text-destructive",children:l.email})]}),e.jsxs("div",{children:[e.jsx(c,{htmlFor:"contact-phone",children:"Telefoon"}),e.jsx(h,{id:"contact-phone",value:a.phone??"",onChange:t=>i("phone",t.target.value),maxLength:30,className:"mt-1"})]}),e.jsxs("div",{children:[e.jsx(c,{htmlFor:"contact-subject",children:"Onderwerp"}),e.jsx(h,{id:"contact-subject",value:a.subject??"",onChange:t=>i("subject",t.target.value),maxLength:200,placeholder:"Bijv. scootmobiel via PGB",className:"mt-1"})]})]}),e.jsxs("div",{children:[e.jsx(c,{htmlFor:"contact-message",children:"Bericht *"}),e.jsx(B,{id:"contact-message",rows:5,value:a.message,onChange:t=>i("message",t.target.value),maxLength:2e3,className:"mt-1"}),l.message&&e.jsx("p",{className:"mt-1 text-xs text-destructive",children:l.message})]}),e.jsx(n,{type:"submit",className:"w-full",disabled:u==="saving",children:u==="saving"?e.jsxs(e.Fragment,{children:[e.jsx(F,{className:"mr-2 h-4 w-4 animate-spin"})," Versturen…"]}):e.jsxs(e.Fragment,{children:[e.jsx(M,{className:"mr-2 h-4 w-4"})," Verstuur bericht"]})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"We gebruiken je gegevens alleen om je vraag te beantwoorden."})]})}function je(){return e.jsx(_,{children:e.jsxs("section",{className:"container mx-auto px-4 py-16 max-w-5xl",children:[e.jsx("h1",{className:"font-display text-4xl md:text-5xl font-bold",children:"Neem contact op"}),e.jsx("p",{className:"text-muted-foreground mt-3 max-w-xl",children:"Bedankt voor je interesse in Cycle EV Mobility. Wij nemen zo spoedig mogelijk contact met je op."}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-10 mt-12",children:[e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(C,{className:"h-5 w-5 text-electric mt-1"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold",children:"Proefritlocatie"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Noord 12, 2931 SK Krimpen aan de Lek (showroom & proefritlocatie — geen bezoekadres van de statutaire vestiging). In Amsterdam en omstreken: proefrit aan huis of op locatie in Amsterdam Noord."})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(S,{className:"h-5 w-5 text-electric mt-1"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold",children:"Google bedrijfsprofiel"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Lees ervaringen van klanten op ons Google bedrijfsprofiel, of laat zelf een beoordeling achter."}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[e.jsx(n,{asChild:!0,size:"sm",variant:"outline",children:e.jsx("a",{href:b,target:"_blank",rel:"noopener noreferrer",children:"Bekijk Google reviews"})}),e.jsx(n,{asChild:!0,size:"sm",variant:"outline",children:e.jsx("a",{href:O,target:"_blank",rel:"noopener noreferrer",children:"Schrijf een review"})})]})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(W,{className:"h-5 w-5 text-electric mt-1"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold",children:"Telefoon"}),e.jsx("a",{href:"tel:+31686453772",className:"text-sm text-muted-foreground hover:text-foreground",children:"+31 6 86 45 37 72"})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(A,{className:"h-5 w-5 text-electric mt-1"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold",children:"E-mail"}),e.jsx("a",{href:"mailto:[email protected]",className:"text-sm text-muted-foreground hover:text-foreground",children:"[email protected]"})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(T,{className:"h-5 w-5 text-electric mt-1"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold",children:"Openingstijden"}),e.jsx("ul",{className:"text-sm text-muted-foreground space-y-0.5",children:V.map(a=>e.jsx("li",{children:a},a))}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Showroombezoek en proefritten op afspraak."}),e.jsxs("a",{href:k,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-electric hover:underline mt-2 inline-block",children:["Route naar ",w.streetAddress,", ",w.locality]})]})]}),e.jsx(n,{asChild:!0,size:"lg",className:"bg-electric text-electric-foreground hover:bg-electric/90",children:e.jsxs("a",{href:"https://wa.me/31686453772?text=Hi%20Cycle%20EV%20Mobility%2C%20ik%20heb%20een%20vraag",target:"_blank",rel:"noopener noreferrer",children:[e.jsx(U,{className:"mr-2 h-4 w-4"})," Stuur een WhatsApp"]})})]}),e.jsx(H,{})]}),e.jsxs("div",{className:"mt-14",children:[e.jsx("h2",{className:"font-display text-2xl md:text-3xl font-bold",children:"Onze locatie"}),e.jsx("p",{className:"mt-2 text-muted-foreground",children:"Showroom & werkplaats — Noord 12, 2931 SK Krimpen aan de Lek. Bezoek en proefrit op afspraak."}),e.jsx("div",{className:"mt-6",children:e.jsx(D,{})}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3",children:[e.jsx(n,{asChild:!0,size:"sm",variant:"outline",children:e.jsxs("a",{href:k,target:"_blank",rel:"noopener noreferrer",children:[e.jsx(C,{className:"mr-1.5 h-4 w-4"})," Route plannen"]}
1)}),e.jsx(n,{asChild:!0,size:"sm",variant:"outline",children:e.jsxs("a",{href:b,target:"_blank",rel:"noopener noreferrer",children:[e.jsx(S,{className:"mr-1.5 h-4 w-4"})," Google reviews"]})})]})]})]})})}export{je 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.