PageSourceSearch

https://ambord.info/assets/BookingPage-DtXZHMHF.js

js ambord.info collected 2026-10-09 04:48:33 UTC 13,654 bytes, 1 lines download raw bytes

1import{r as i,k as v,j as e,H as L,a4 as w,C as V,al as Y,Z as K,v as W,a5 as O,M as P,ak as $,o as q,y as U}from"./index-t9n0_rcT.js";import{C as Z}from"./clock-Dd_JR0kb.js";import{M as J}from"./message-square-DKxzFg_z.js";const h="w-full rounded-sm border border-border bg-white px-3.5 py-2.5 text-sm outline-none transition focus:border-[#B8860B] focus:ring-2 focus:ring-[#B8860B]/25";function F(o){const n=o.getFullYear(),f=String(o.getMonth()+1).padStart(2,"0"),s=String(o.getDate()).padStart(2,"0");return`${n}-${f}-${s}`}function _(){const o=i.useMemo(()=>{const t=new Date;return t.setHours(0,0,0,0),t},[]),[n,f]=i.useState(new Date(o.getFullYear(),o.getMonth(),1)),[s,D]=i.useState(null),[C,x]=i.useState([]),[m,y]=i.useState(null),[j,z]=i.useState(!1),[R,T]=i.useState(!1),[r,d]=i.useState({name:"",email:"",phone:"",duration:60,subject:"",notes:""}),[S,M]=i.useState(!1),[b,k]=i.useState(null),[B,c]=i.useState(null);i.useEffect(()=>{v.fetch("/bookings/outlook-status").then(t=>t.json()).then(t=>{t&&typeof t.configured=="boolean"&&z(t.configured)}).catch(()=>{})},[]),i.useEffect(()=>{s&&(T(!0),c(null),y(null),v.fetch(`/bookings/availability?date=${s}`).then(t=>t.json()).then(t=>{t&&Array.isArray(t.slots)?(x(t.slots),z(!!t.outlookConnected)):(x([]),c(t?.error||"Keine Slots verfügbar."))}).catch(()=>{x([]),c("Verfügbarkeit konnte nicht geladen werden.")}).finally(()=>T(!1)))},[s]);const I=i.useMemo(()=>{const l=(new Date(n.getFullYear(),n.getMonth(),1).getDay()+6)%7,g=new Date(n.getFullYear(),n.getMonth()+1,0).getDate(),u=[];for(let a=0;a<l;a++)u.push(null);for(let a=1;a<=g;a++){const p=new Date(n.getFullYear(),n.getMonth(),a);u.push(p)}return u},[n]),A=t=>t<o,E=t=>t.getDay()===0||t.getDay()===6,N=n.toLocaleDateString("de-CH",{month:"long",year:"numeric"}),H=async t=>{if(t.preventDefault(),!s||!m){c("Bitte wähle Datum und Uhrzeit.");return}if(!r.name||!r.email){c("Name und E-Mail sind erforderlich.");return}M(!0),c(null),k(null);try{const l=await v.fetch("/bookings/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...r,date:s,time:m})}),g=await l.json();if(!l.ok)throw new Error(g.error||"Buchung fehlgeschlagen.");k({success:!0,outlookSynced:g.outlookSynced,date:s,time:m}),d({name:"",email:"",phone:"",duration:60,subject:"",notes:""}),D(null),y(null),x([])}catch(l){c(l.message)}finally{M(!1)}};return e.jsxs(e.Fragment,{children:[e.jsxs(L,{children:[e.jsx("title",{children:"Termin buchen – Beat Ambord"}),e.jsx("meta",{name:"description",content:"Termin mit Beat Ambord buchen — Vermarktungsexperte aus der Schweiz. Verfügbare Zeiten direkt aus dem Outlook-Kalender, automatische Bestätigung und Erinnerung."})]}),e.jsxs("div",{style:{fontFamily:'"Inter", sans-serif',background:"#151b23",minHeight:"100dvh",color:"#fff"},children:[e.jsxs("header",{style:{padding:"3rem 1.25rem 2rem",textAlign:"center"},children:[e.jsx("p",{style:{fontSize:"0.6875rem",fontWeight:600,letterSpacing:"0.2em",textTransform:"uppercase",color:"#e30613",marginBottom:"0.75rem"},children:"Terminbuchung"}),e.jsx("h1",{style:{fontFamily:'"Fraunces", serif',fontSize:"clamp(1.75rem, 4vw, 2.75rem)",fontWeight:600,color:"#fff",letterSpacing:"-0.02em",lineHeight:1.15,margin:"0 0 0.75rem"},children:"Termin mit Beat Ambord buchen."}),e.jsx("p",{style:{fontSize:"1rem",color:"rgba(255,255,255,0.6)",lineHeight:1.6,maxWidth:"34rem",margin:"0 auto"},children:"Wähle einen freien Termin direkt aus dem Kalender. Du erhältst sofort eine Bestätigung per E-Mail."}),e.jsxs("p",{style:{marginTop:"1rem",fontSize:"0.8125rem",color:j?"#7fd1a3":"rgba(255,255,255,0.4)",display:"inline-flex",alignItems:"center",gap:"0.4rem"},children:[e.jsx("span",{style:{width:8,height:8,borderRadius:"50%",background:j?"#7fd1a3":"rgba(255,255,255,0.3)",display:"inline-block"}}),j?"Outlook-Kalender live verbunden":"Verfügbarkeit wird generiert"]})]}),e.jsx("div",{style:{maxWidth:"42rem",margin:"0 auto",padding:"0 1.25rem 2.5rem"},children:e.jsxs("div",{style:{background:"rgba(227,6,19,0.06)",border:"1px solid rgba(227,6,19,0.25)",borderRadius:"6px",padding:"1.5rem",textAlign:"center",marginBottom:"2rem"},children:[e.jsx("p",{style:{fontSize:"1rem",color:"rgba(255,255,255,0.8)",lineHeight:1.6,margin:"0 0 1.25rem"},children:"Lieber zuerst ein kostenloses Erstgespräch? 30 Minuten Klartext, Rückmeldung innerhalb von 24 Stunden."}),e.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:"0.75rem",justifyContent:"center"},children:[e.jsx(w,{to:"/erstgespraech",style:{display:"inline-flex",alignItems:"center",gap:"0.5rem",background:"#e30613",color:"#fff",fontSize:"0.875rem",fontWeight:600,letterSpacing:"0.04em",textTransform:"uppercase",padding:"0.75rem 1.5rem",borderRadius:"3px",textDecoration:"none"},children:"Anfrage senden"}),e.jsx(w,{to:"/ihr-angebot",style:{display:"inline-flex",alignItems:"center",gap:"0.5rem",background:"transparent",border:"1px solid rgba(227,6,19,0.5)",color:"#fff",fontSize:"0.875rem",fontWeight:600,letterSpacing:"0.04em",textTransform:"uppercase",padding:"0.75rem 1.5rem",borderRadius:"3px",textDecoration:"none"},children:"Ihr Angebot erstellen"})]})]})}),b?e.jsx("div",{style:{maxWidth:"42rem",margin:"0 auto",padding:"0 1.25rem 4rem"},children:e.jsxs("div",{style:{background:"#fff",borderRadius:"8px",padding:"2.5rem 2rem",textAlign:"center",color:"#1D2530"},children:[e.jsx("div",{style:{width:56,height:56,borderRadius:"50%",background:"rgba(127,209,163,0.15)",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 1.25rem"},children:e.jsx(V,{style:{width:28,height:28,color:"#2e8b57"}})}),e.jsx("h2",{style:{fontFamily:'"Fraunces", serif',fontSize:"1.5rem",fontWeight:600,margin:"0 0 0.75rem"},children:"Termin bestätigt"}),e.jsxs("p",{style:{color:"#374151",lineHeight:1.6,margin:"0 0 0.5rem"},children:["Dein Termin am ",e.jsx("strong",{children:b.date})," um ",e.jsxs("strong",{children:[b.time," Uhr"]})," ist gebucht."]}),e.jsxs("p",{style:{color:"#6b7280",fontSize:"0.875rem",margin:"0 0 1.5rem"},children:["Du erhältst eine Bestätigungs-E-Mail",b.outlookSynced?" und der Termin wurde in den Outlook-Kalender eingetragen.":"."]}),e.jsx("button",{onClick:()=>k(null),style:{background:"#1D2530",color:"#fff",border:"none",borderRadius:"3px",padding:"0.75rem 1.5rem",fontSize:"0.875rem",fontWeight:600,cursor:"pointer"},children:"Weiteren Termin buchen"})]})}):e.jsx("div",{style:{maxWidth:"42rem",margin:"0 auto",padding:"0 1.25rem 4rem"},children:e.jsxs("div",{style:{background:"#fff",borderRadius:"8px",overflow:"hidden",color:"#1D2530"},children:[e.jsxs("div",{style:{padding:"1.5rem 1.5rem 1rem",borderBottom:"1px solid #e5e7eb"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"1rem"},children:[e.jsx("button",{onClick:()=>f(new Date(n.getFullYear(),n.getMonth()-1,1)),style:{border:"1px solid #e5e7eb",background:"#fff",borderRadius:"4px",padding:"0.4rem",cursor:"pointer",color:"#1D2530"},"aria-label":"Vorheriger Monat",children:e.jsx(Y,{style:{width:18,height:18}})}),e.jsx("span",{style:{fontFamily:'"Fraunces", serif',fontWeight:600,fontSize:"1.05rem"},children:N}),e.jsx("button",{onClick:()=>
1f(new Date(n.getFullYear(),n.getMonth()+1,1)),style:{border:"1px solid #e5e7eb",background:"#fff",borderRadius:"4px",padding:"0.4rem",cursor:"pointer",color:"#1D2530"},"aria-label":"Nächster Monat",children:e.jsx(K,{style:{width:18,height:18}})})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(7, 1fr)",gap:"4px",textAlign:"center"},children:[["Mo","Di","Mi","Do","Fr","Sa","So"].map(t=>e.jsx("div",{style:{fontSize:"0.75rem",fontWeight:600,color:"#6b7280",padding:"0.25rem 0"},children:t},t)),I.map((t,l)=>{if(!t)return e.jsx("div",{},l);const g=A(t),u=E(t),a=g||u,p=s===F(t);return e.jsx("button",{disabled:a,onClick:()=>D(F(t)),style:{aspectRatio:"1",borderRadius:"4px",border:p?"1px solid #832734":"1px solid transparent",background:p?"rgba(184,134,11,0.12)":a?"#f4f5f7":"#fff",color:a?"#cbd5e1":"#1D2530",cursor:a?"not-allowed":"pointer",fontSize:"0.85rem",fontWeight:p?700:500,transition:"all 0.15s"},children:t.getDate()},l)})]})]}),s&&e.jsxs("div",{style:{padding:"1.25rem 1.5rem",borderBottom:"1px solid #e5e7eb"},children:[e.jsxs("p",{style:{fontSize:"0.8125rem",fontWeight:600,color:"#6b7280",textTransform:"uppercase",letterSpacing:"0.05em",margin:"0 0 0.75rem"},children:["Verfügbare Zeiten — ",new Date(s+"T00:00:00").toLocaleDateString("de-CH",{weekday:"long",day:"numeric",month:"long"})]}),R?e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem",color:"#6b7280",fontSize:"0.875rem"},children:[e.jsx(W,{style:{width:16,height:16,animation:"spin 1s linear infinite"}})," Lade Verfügbarkeit…"]}):C.length===0?e.jsx("p",{style:{color:"#6b7280",fontSize:"0.875rem"},children:"Keine Termine verfügbar."}):e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(80px, 1fr))",gap:"8px"},children:C.map(t=>e.jsx("button",{disabled:!t.available,onClick:()=>y(t.time),style:{padding:"0.6rem 0.5rem",borderRadius:"4px",border:m===t.time?"1px solid #832734":"1px solid #e5e7eb",background:m===t.time?"rgba(184,134,11,0.12)":t.available?"#fff":"#f4f5f7",color:t.available?"#1D2530":"#cbd5e1",cursor:t.available?"pointer":"not-allowed",fontSize:"0.85rem",fontWeight:600,transition:"all 0.15s"},children:t.time},t.time))})]}),m&&e.jsxs("form",{onSubmit:H,style:{padding:"1.5rem"},children:[e.jsx("p",{style:{fontSize:"0.8125rem",fontWeight:600,color:"#6b7280",textTransform:"uppercase",letterSpacing:"0.05em",margin:"0 0 1rem"},children:"Deine Angaben"}),e.jsxs("div",{style:{display:"grid",gap:"0.875rem"},children:[e.jsxs("label",{style:{display:"block"},children:[e.jsxs("span",{style:{fontSize:"0.8125rem",color:"#374151",marginBottom:"0.3rem",display:"flex",alignItems:"center",gap:"0.3rem"},children:[e.jsx(O,{style:{width:14,height:14}})," Name *"]}),e.jsx("input",{className:h,value:r.name,onChange:t=>d({...r,name:t.target.value}),required:!0,placeholder:"Vor- und Nachname"})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"0.875rem"},children:[e.jsxs("label",{style:{display:"block"},children:[e.jsxs("span",{style:{fontSize:"0.8125rem",color:"#374151",marginBottom:"0.3rem",display:"flex",alignItems:"center",gap:"0.3rem"},children:[e.jsx(P,{style:{width:14,height:14}})," E-Mail *"]}),e.jsx("input",{className:h,type:"email",value:r.email,onChange:t=>d({...r,email:t.target.value}),required:!0,placeholder:"[email protected]"})]}),e.jsxs("label",{style:{display:"block"},children:[e.jsxs("span",{style:{fontSize:"0.8125rem",color:"#374151",marginBottom:"0.3rem",display:"flex",alignItems:"center",gap:"0.3rem"},children:[e.jsx($,{style:{width:14,height:14}})," Telefon"]}),e.jsx("input",{className:h,value:r.phone,onChange:t=>d({...r,phone:t.target.value}),placeholder:"+41 …"})]})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"0.875rem"},children:[e.jsxs("label",{style:{display:"block"},children:[e.jsxs("span",{style:{fontSize:"0.8125rem",color:"#374151",marginBottom:"0.3rem",display:"flex",alignItems:"center",gap:"0.3rem"},children:[e.jsx(Z,{style:{width:14,height:14}})," Dauer (Min.)"]}),e.jsxs("select",{className:h,value:r.duration,onChange:t=>d({...r,duration:Number(t.target.value)}),children:[e.jsx("option",{value:30,children:"30"}),e.jsx("option",{value:60,children:"60"}),e.jsx("option",{value:90,children:"90"}),e.jsx("option",{value:120,children:"120"})]})]}),e.jsxs("label",{style:{display:"block"},children:[e.jsx("span",{style:{fontSize:"0.8125rem",color:"#374151",marginBottom:"0.3rem"},children:"Thema"}),e.jsx("input",{className:h,value:r.subject,onChange:t=>d({...r,subject:t.target.value}),placeholder:"Worum geht es?"})]})]}),e.jsxs("label",{style:{display:"block"},children:[e.jsxs("span",{style:{fontSize:"0.8125rem",color:"#374151",marginBottom:"0.3rem",display:"flex",alignItems:"center",gap:"0.3rem"},children:[e.jsx(J,{style:{width:14,height:14}})," Notizen"]}),e.jsx("textarea",{className:h,rows:3,value:r.notes,onChange:t=>d({...r,notes:t.target.value}),placeholder:"Ergänzungen zum Termin"})]})]}),B&&e.jsxs("div",{style:{marginTop:"1rem",display:"flex",alignItems:"flex-start",ga
1p:"0.5rem",background:"rgba(227,6,19,0.08)",border:"1px solid rgba(227,6,19,0.25)",borderRadius:"4px",padding:"0.75rem",color:"#b91c1c",fontSize:"0.875rem"},children:[e.jsx(q,{style:{width:16,height:16,flexShrink:0,marginTop:2}})," ",B]}),e.jsx("button",{type:"submit",disabled:S,style:{marginTop:"1.25rem",width:"100%",background:"#e30613",color:"#fff",border:"none",borderRadius:"3px",padding:"0.875rem",fontSize:"0.875rem",fontWeight:600,letterSpacing:"0.04em",textTransform:"uppercase",cursor:S?"not-allowed":"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"0.5rem"},children:S?e.jsxs(e.Fragment,{children:[e.jsx(W,{style:{width:16,height:16,animation:"spin 1s linear infinite"}})," Termin wird gebucht…"]}):e.jsxs(e.Fragment,{children:[e.jsx(U,{style:{width:16,height:16}})," Termin verbindlich buchen"]})})]})]})}),e.jsx("footer",{style:{background:"#0e1318",borderTop:"1px solid rgba(255,255,255,0.07)",padding:"1.5rem 1.25rem"},children:e.jsxs("div",{style:{maxWidth:"72rem",margin:"0 auto",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"1rem"},children:[e.jsx(w,{to:"/",style:{fontSize:"0.875rem",color:"rgba(255,255,255,0.45)",textDecoration:"none"},children:"← Startseite"}),e.jsxs("p",{style:{fontSize:"0.8125rem",color:"rgba(255,255,255,0.3)",margin:0},children:["© ",new Date().getFullYear()," Beat Ambord"]})]})})]})]})}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.