import{b as P,B as C,h as Y,c as m,F as D,f as s,y as _,z as h,v as U,t as B,k as R,n as Z,e as O,r as p,g as T,a as q,L as E,o as u,u as j,M as G,p as I,w as K,bH as J,q as Q,A as X}from"./index-BhWsT2U5.js";import{u as ee,a as te,b as se}from"./FormSuccessScreen-Nt5nhLQq.js";import{F as le}from"./FormShell-B6ETKAUs.js";import{_ as z}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{M as L}from"./index-Dr7FLb7l.js";const ae={class:"slot-picker"},ie=["value","disabled"],oe={class:"slot-picker__date-row"},ne=["min","max","disabled"],re={key:0,class:"slot-picker__loading"},de={key:1,class:"slot-picker__error"},ue={key:2,class:"slot-picker__empty"},ce={key:3,class:"slot-picker__empty"},me={key:4,class:"slot-picker__grid"},fe=["disabled","aria-label","onClick"],pe={key:5,class:"form-field__hint"},ve=P({__name:"AppointmentSlotPicker",props:{modelValue:{},durationMinutes:{},disabled:{type:Boolean}},emits:["update:modelValue","focus"],setup(i,{emit:n}){const b=i,F=n,M=new Date().toISOString().slice(0,10),A=(()=>{const l=new Date;return l.setDate(l.getDate()+90),l.toISOString().slice(0,10)})(),f=p(M),v=p([]),N=p(!1),k=p(null),r=p(!1),y=T(()=>v.value.filter(l=>l.available)),x=T(()=>v.value.length>0);async function S(l){N.value=!0,k.value=null;try{const o=await q.get(`/forms/booking/availability?date=${encodeURIComponent(l)}`,{skipAuth:!0});o.success&&o.data?(v.value=o.data.slots,r.value=!1):o.status===503||o.status===0?(E.info("FORM","Slot-System nicht erreichbar, Fallback auf datetime-local",{status:o.status,code:o.error}),r.value=!0,v.value=[]):(k.value=o.error||"Verfügbarkeit konnte nicht geladen werden.",v.value=[])}catch(o){E.error("FORM","Slot-Load-Fehler",{err:String(o)}),k.value="Verfügbarkeit konnte nicht geladen werden.",v.value=[]}finally{N.value=!1}}function e(l){!l.available||b.disabled||F("update:modelValue",l.start)}function w(l){return b.modelValue===l.start}function $(l){const o=new Date(l.start);return new Intl.DateTimeFormat("de-DE",{hour:"2-digit",minute:"2-digit"}).format(o)}C(f,l=>{l&&(b.modelValue&&b.modelValue.slice(0,10)!==l&&F("update:modelValue",""),S(l))}),Y(()=>{if(b.modelValue){const l=b.modelValue.slice(0,10);l&&l>=M&&l<=A&&l!==f.value?f.value=l:S(f.value)}else S(f.value)});function V(){F("focus")}return(l,o)=>(u(),m("div",ae,[r.value?(u(),m("input",{key:0,value:i.modelValue,type:"datetime-local",class:"form-field__input",disabled:i.disabled,onInput:o[0]||(o[0]=c=>F("update:modelValue",c.target.value)),onFocus:V},null,40,ie)):(u(),m(D,{key:1},[s("div",oe,[o[2]||(o[2]=s("label",{class:"slot-picker__date-label",for:"slot-picker-date"},"Datum",-1)),_(s("input",{id:"slot-picker-date","onUpdate:modelValue":o[1]||(o[1]=c=>f.value=c),type:"date",min:U(M),max:U(A),class:"form-field__input slot-picker__date-input",disabled:i.disabled,onFocus:V},null,40,ne),[[h,f.value]])]),N.value?(u(),m("div",re,"Verfügbare Zeiten werden geladen ...")):k.value?(u(),m("div",de,B(k.value),1)):x.value?y.value.length===0?(u(),m("div",ce," Alle Termine an diesem Tag sind bereits belegt. Bitte einen anderen Tag wählen. ")):(u(),m("div",me,[(u(!0),m(D,null,R(v.value,c=>(u(),m("button",{key:c.start,type:"button",class:Z(["slot-picker__slot",{"slot-picker__slot--unavailable":!c.available,"slot-picker__slot--selected":w(c)}]),disabled:!c.available||i.disabled,"aria-label":`Termin um ${$(c)}${c.available?"":" (belegt)"}`,onClick:g=>e(c)},B($(c)),11,fe))),128))])):(u(),m("div",ue," An diesem Tag stehen keine Termine zur Auswahl. Bitte einen anderen Tag wählen. ")),x.value&&y.value.length>0?(u(),m("p",pe," Wählen Sie eine freie Zeit. Termine sind sofort gebucht und werden per E-Mail bestätigt. ")):O("",!0)],64))]))}}),ge=z(ve,[["__scopeId","data-v-facec76a"]]),_e={class:"form-field form-field--row"},be={class:"form-field__col"},he=["for"],ke=["id","disabled"],ye={class:"form-field__col"},Se=["for"],we=["id","disabled"],$e={class:"form-field form-field--row"},Ve={class:"form-field__col"},Fe=["for"],Te=["id","disabled"],Me={class:"form-field__col"},Ae=["for"],Ne=["id","disabled"],xe={class:"form-field form-field--row"},Ue={class:"form-field__col"},Be=["for"],Ee=["id","disabled"],Ce={class:"form-field__col"},De=["for"],Ie=["id","disabled"],Le=["value"],Pe={class:"form-field"},Re={class:"form-field__label"},Oe={key:0,class:"form-field__hint-inline"},qe={class:"form-field"},ze=["for"],We=["id","disabled"],He={class:"form-field__honeypot","aria-hidden":"true"},Ye=["name"],Ze=P({__name:"FormBooking",props:{preset:{},previewMode:{type:Boolean,default:!1},initialTopic:{default:""},initialEmail:{default:""},initialEml:{default:""}},setup(i){const n=i,{trackFormStart:b,trackFormSubmit:F}=se(),{cleanUtm:M}=ee(),{honeypotField:A,honeypotValue:f,isBot:v}=te(),N=j(),k=T(()=>{const d=n.preset.options.topicWhitelist;return!d||d.length===0?Object.entries(L).map(([t,a])=>({value:t,label:a})):d.map(t=>({value:t,label:L[t]||t}))}),r=p("idle"),y=p(""),x=p(0),S=p(!1),e=G({firstName:"",lastName:"",email:n.initialEmail||"",phone:"",company:"",topic:n.initialTopic||n.preset.options.defaultTopic||"",scheduledAt:"",message:""});C(()=>n.initialEmail,d=>{d&&!e.email&&(e.email=d)}),C(()=>n.initialTopic,d=>{d&&!e.topic&&(e.topic=d)});const w=p(!1),$=p(!1),V=p(!1),l=T(()=>n.preset.options.defaultDurationMinutes),o=T(()=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.email.trim())),c=T(()=>!!(!e.firstName.trim()||!e.lastName.trim()||!o.value||!e.topic||!e.scheduledAt||n.preset.consentText&&!w.value));function g(){S.value||n.previewMode||(S.value=!0,b(`preset-${n.preset.slug}`))}async function W(){if(n.previewMode||v.value||c.value)return;r.value="submitting",y.value="";const d=await q.post("/forms/booking",{firstName:e.firstName.trim(),lastName:e.lastName.trim(),email:e.email.trim(),phone:e.phone.trim()||void 0,company:e.company.trim()||void 0,topic:e.topic,scheduledAt:e.scheduledAt||void 0,durationMinutes:l.value||void 0,message:e.message.trim()||void 0,privacyAccepted:w.value,consentTracking:$.value,consentMarketing:V.value,presetSlug:n.preset.slug,page:window.location.pathname+window.location.search,utm:M.value,eml:n.initialEml||void 0,cookieConsent:N.getSnapshot()??void 0,[A]:f.value},{skipAuth:!0});d.success?(r.value="success",F(`preset-${n.preset.slug}`),E.info("SYSTEM","Preset-Buchungsformular abgesendet",{slug:n.preset.slug})):(r.value="error",y.value=d.error||"Die Termin-Anfrage konnte nicht gesendet werden.",E.error("SYSTEM","Preset-Buchungsformular Fehler",{slug:n.preset.slug,status:d.status,error:d.error}),d.status===409&&(e.scheduledAt="",x.value++))}function H(){r.value="idle",y.value="",e.firstName="",e.lastName="",e.email=n.initialEmail||"",e.phone="",e.company="",e.topic=n.initialTopic||n.preset.options.defaultTopic||"",e.scheduledAt="",e.message="",w.value=!1,$.value=!1,V.value=!1,S.value=!1}return(d,t)=>(u(),I(le,{preset:i.preset,status:r.value,"error-message":y.value,consent:w.value,"tracking-consent":$.value,"marketing-consent":V.value,"submit-disabled":c.value,"preview-mode":i.previewMode,"analytics-event":"conversion","analytics-params":{form_type:"preset-booking",preset_slug:i.preset.slug},onSubmit:W,"onUpdate:consent":t[9]||(t[9]=a=>w.value=a),"onUpdate:trackingConsent":t[10]||(t[10]=a=>$.value=a),"onUpdate:marketingConsent":t[11]||(t[11]=a=>V.value=a),onReset:H},{default:K(()=>[s("div",_e,[s("div",be,[s("label",{class:"form-field__label",for:`${i.preset.slug}-firstname`},"Vorname *",8,he),_(s("input",{id:`${i.preset.slug}-firstname`,"onUpdate:modelValue":t[0]||(t[0]=a=>e.firstName=a),type:"text",autocomplete:"given-name",class:"form-field__input",disabled:r.value==="submitting",required:"",onFocus:g},null,40,ke),[[h,e.firstName]])]),s("div",ye,[s("label",{class:"form-field__label",for:`${i.preset.slug}-lastname`},"Nachname *",8,Se),_(s("input",{id:`${i.preset.slug}-lastname`,"onUpdate:modelValue":t[1]||(t[1]=a=>e.lastName=a),type:"text",autocomplete:"family-name",class:"form-field__input",disabled:r.value==="submitting",required:"",onFocus:g},null,40,we),[[h,e.lastName]])])]),s("div",$e,[s("div",Ve,[s("label",{class:"form-field__label",for:`${i.preset.slug}-email`},"E-Mail *",8,Fe),_(s("input",{id:`${i.preset.slug}-email`,"onUpdate:modelValue":t[2]||(t[2]=a=>e.email=a),type:"email",autocomplete:"email",class:"form-field__input",disabled:r.value==="submitting",required:"",onFocus:g},null,40,Te),[[h,e.email]])]),s("div",Me,[s("label",{class:"form-field__label",for:`${i.preset.slug}-phone`},"Telefon",8,Ae),_(s("input",{id:`${i.preset.slug}-phone`,"onUpdate:modelValue":t[3]||(t[3]=a=>e.phone=a),type:"tel",autocomplete:"tel",class:"form-field__input",disabled:r.value==="submitting",onFocus:g},null,40,Ne),[[h,e.phone]])])]),s("div",xe,[s("div",Ue,[s("label",{class:"form-field__label",for:`${i.preset.slug}-company`},"Unternehmen",8,Be),_(s("input",{id:`${i.preset.slug}-company`,"onUpdate:modelValue":t[4]||(t[4]=a=>e.company=a),type:"text",autocomplete:"organization",class:"form-field__input",disabled:r.value==="submitting",onFocus:g},null,40,Ee),[[h,e.company]])]),s("div",Ce,[s("label",{class:"form-field__label",for:`${i.preset.slug}-topic`},"Thema *",8,De),_(s("select",{id:`${i.preset.slug}-topic`,"onUpdate:modelValue":t[5]||(t[5]=a=>e.topic=a),class:"form-field__input",disabled:r.value==="submitting",required:"",onFocus:g},[t[12]||(t[12]=s("option",{value:"",disabled:""},"Bitte auswählen",-1)),(u(!0),m(D,null,R(k.value,a=>(u(),m("option",{key:a.value,value:a.value},B(a.label),9,Le))),128))],40,Ie),[[J,e.topic]])])]),s("div",Pe,[s("label",Re,[t[13]||(t[13]=Q(" Wunschtermin * ",-1)),l.value?(u(),m("span",Oe,"("+B(l.value)+" Min.)",1)):O("",!0)]),(u(),I(ge,{key:x.value,modelValue:e.scheduledAt,"onUpdate:modelValue":t[6]||(t[6]=a=>e.scheduledAt=a),"duration-minutes":l.value,disabled:r.value==="submitting",onFocus:g},null,8,["modelValue","duration-minutes","disabled"]))]),s("div",qe,[s("label",{class:"form-field__label",for:`${i.preset.slug}-message`},"Nachricht",8,ze),_(s("textarea",{id:`${i.preset.slug}-message`,"onUpdate:modelValue":t[7]||(t[7]=a=>e.message=a),class:"form-field__textarea",rows:"4",disabled:r.value==="submitting",onFocus:g},null,40,We),[[h,e.message]])]),s("div",He,[_(s("input",{"onUpdate:modelValue":t[8]||(t[8]=a=>X(f)?f.value=a:null),name:U(A),type:"text",tabindex:"-1",autocomplete:"off"},null,8,Ye),[[h,U(f)]])])]),_:1},8,["preset","status","error-message","consent","tracking-consent","marketing-consent","submit-disabled","preview-mode","analytics-params"]))}}),Xe=z(Ze,[["__scopeId","data-v-5dc21574"]]);export{Xe as F};