@forgebuild/hotal-ui 0.23.203 → 0.23.204
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{$ as e,A as t,B as n,D as r,H as i,I as a,J as o,K as s,L as c,M as l,N as u,P as d,S as f,T as p,U as m,V as h,W as g,X as _,Y as ee,Z as v,et as y,f as b,h as x,i as S,j as C,n as w,o as te,s as ne,t as T,u as re,w as E,y as D,z as O}from"./chunks/client-BDk8LqGN.js";import{i as ie,o as ae,r as oe,t as se}from"./chunks/calendar-B8eNjUm2.js";import{t as k}from"./chunks/preload-helper-Czpn1I53.js";var
|
|
1
|
+
import{$ as e,A as t,B as n,D as r,H as i,I as a,J as o,K as s,L as c,M as l,N as u,P as d,S as f,T as p,U as m,V as h,W as g,X as _,Y as ee,Z as v,et as y,f as b,h as x,i as S,j as C,n as w,o as te,s as ne,t as T,u as re,w as E,y as D,z as O}from"./chunks/client-BDk8LqGN.js";import{i as ie,o as ae,r as oe,t as se}from"./chunks/calendar-B8eNjUm2.js";import{t as k}from"./chunks/stripe-BjXf5ZQJ.js";import{t as A}from"./chunks/preload-helper-Czpn1I53.js";var ce=r(`<div class="bf-loading svelte-gavyia"><div class="bf-spinner svelte-gavyia"></div></div>`),le=r(`<span class="svelte-gavyia"> </span>`),j=r(`<button type="button" class="bf-cal-cell svelte-gavyia"> </button>`),ue=r(`<div class="bf-empty svelte-gavyia"><p class="svelte-gavyia"> </p> <div class="bf-cal svelte-gavyia"><div class="bf-cal-header svelte-gavyia"><p class="bf-cal-month svelte-gavyia"> </p> <div class="bf-cal-nav svelte-gavyia"><button type="button" class="svelte-gavyia">‹</button> <button type="button" class="svelte-gavyia">›</button></div></div> <div class="bf-cal-weekdays svelte-gavyia"></div> <div class="bf-cal-grid svelte-gavyia"></div></div></div>`),de=r(`<button type="button"> </button>`),fe=r(`<option class="svelte-gavyia"> </option>`),pe=r(`<label class="svelte-gavyia"><span class="svelte-gavyia"> </span> <div class="bf-select-wrap svelte-gavyia"><select class="svelte-gavyia"><option class="svelte-gavyia"> </option><!></select> <svg class="bf-select-icon svelte-gavyia" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><path d="m6 9 6 6 6-6" stroke-linecap="round" stroke-linejoin="round" class="svelte-gavyia"></path></svg></div></label>`),me=r(`<p class="bf-error svelte-gavyia"> </p>`),he=r(`<div class="bf-payment svelte-gavyia"><div class="bf-payment-header svelte-gavyia"><span class="svelte-gavyia"> </span> <span class="svelte-gavyia"> </span></div> <div class="bf-payment-slot-anchor svelte-gavyia"></div> <p class="bf-payment-hint svelte-gavyia"> </p> <!></div>`),ge=r(`<span class="bf-spinner svelte-gavyia"></span>`),_e=r(`<form class="bf-form svelte-gavyia"><label class="svelte-gavyia"><span class="svelte-gavyia"> </span> <div class="bf-input-icon-wrap svelte-gavyia"><svg class="bf-input-icon svelte-gavyia" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><circle cx="12" cy="8" r="3.5" class="svelte-gavyia"></circle><path stroke-linecap="round" d="M5 20c1.2-3.4 4-5 7-5s5.8 1.6 7 5" class="svelte-gavyia"></path></svg> <input type="text" name="name" autocomplete="name" required="" class="svelte-gavyia"/></div></label> <label class="svelte-gavyia"><span class="svelte-gavyia"> </span> <div class="bf-input-icon-wrap svelte-gavyia"><svg class="bf-input-icon svelte-gavyia" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><rect x="2" y="4" width="20" height="16" rx="2" class="svelte-gavyia"></rect><path stroke-linecap="round" stroke-linejoin="round" d="m4 6 8 7 8-7" class="svelte-gavyia"></path></svg> <input type="email" name="email" autocomplete="email" class="svelte-gavyia"/></div></label> <label class="svelte-gavyia"><span class="svelte-gavyia"> </span> <div class="bf-input-icon-wrap svelte-gavyia"><svg class="bf-input-icon svelte-gavyia" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92Z" class="svelte-gavyia"></path></svg> <input type="tel" name="phone" autocomplete="tel" class="svelte-gavyia"/></div></label> <!> <!> <label class="svelte-gavyia"><span class="svelte-gavyia"> </span> <textarea name="notes" rows="3" class="svelte-gavyia"></textarea></label> <label class="bf-checkbox-row svelte-gavyia"><input type="checkbox" name="cancellation_policy" class="bf-checkbox svelte-gavyia" required=""/> <span class="svelte-gavyia"> </span></label> <button type="submit" class="bf-submit svelte-gavyia"><!> </button> <!></form>`),M=r(`<div class="bf-slots svelte-gavyia"><p class="bf-section-label svelte-gavyia"><svg class="bf-section-icon svelte-gavyia" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><circle cx="12" cy="12" r="9" class="svelte-gavyia"></circle><path stroke-linecap="round" stroke-linejoin="round" d="M12 7v5l3.5 2" class="svelte-gavyia"></path></svg> </p> <div class="bf-slot-list svelte-gavyia"></div></div> <!>`,1),ve=r(`<div class="bf-confirmed svelte-gavyia"><div class="bf-check-circle svelte-gavyia">✓</div> <p class="bf-confirmed-title svelte-gavyia"> </p> <div class="bf-confirmed-card svelte-gavyia"><div class="bf-confirmed-row svelte-gavyia"><span class="svelte-gavyia"> </span><span class="svelte-gavyia"> </span></div> <div class="bf-confirmed-row svelte-gavyia"><span class="svelte-gavyia"> </span><span class="svelte-gavyia"> </span></div> <div class="bf-confirmed-row svelte-gavyia"><span class="svelte-gavyia"> </span><span class="svelte-gavyia"> </span></div></div></div>`),ye=r(`<div class="bf-root svelte-gavyia"><!></div>`),be={hash:`svelte-gavyia`,code:`.bf-root.svelte-gavyia {font-family:inherit;color:var(--bf-text-color, #1a1a1a);}.bf-loading.svelte-gavyia {display:flex;flex-direction:column;align-items:center;gap:0.75rem;padding:2rem 0;}.bf-spinner.svelte-gavyia {width:24px;height:24px;border-radius:9999px;border:2px solid var(--bf-spinner-track, rgba(0, 0, 0, 0.15));border-top-color:var(--bf-spinner-active, #1a1a1a);
|
|
2
2
|
animation: svelte-gavyia-bf-spin 0.7s linear infinite;}
|
|
3
3
|
@keyframes svelte-gavyia-bf-spin {
|
|
4
4
|
to {
|
|
@@ -23,4 +23,4 @@ import{$ as e,A as t,B as n,D as r,H as i,I as a,J as o,K as s,L as c,M as l,N a
|
|
|
23
23
|
}
|
|
24
24
|
@media (prefers-reduced-motion: reduce) {.bf-spinner.svelte-gavyia {
|
|
25
25
|
animation: none;}
|
|
26
|
-
}.bf-confirmed.svelte-gavyia {text-align:center;}.bf-check-circle.svelte-gavyia {display:flex;align-items:center;justify-content:center;width:48px;height:48px;margin:0 auto 1rem;border-radius:9999px;background:var(--bf-accent-bg, #1a1a1a);color:var(--bf-accent-text, #fff);font-size:1.5rem;}.bf-confirmed-title.svelte-gavyia {font-size:1.1rem;}.bf-confirmed-card.svelte-gavyia {max-width:20rem;margin:1.5rem auto 0;border:1px solid var(--bf-border-color, rgba(0, 0, 0, 0.15));border-radius:2px;padding:1.25rem;text-align:left;}.bf-confirmed-row.svelte-gavyia {display:flex;justify-content:space-between;padding:0.6rem 0;border-bottom:1px solid var(--bf-border-color, rgba(0, 0, 0, 0.1));font-size:0.85rem;}.bf-confirmed-row.svelte-gavyia:last-child {border-bottom:none;}.bf-cal.svelte-gavyia {max-width:20rem;margin:1.5rem auto 0;border:1px solid var(--bf-border-color, rgba(0, 0, 0, 0.15));border-radius:2px;padding:1rem;}.bf-cal-header.svelte-gavyia {display:flex;align-items:center;justify-content:space-between;}.bf-cal-month.svelte-gavyia {margin:0;font-size:0.875rem;font-weight:600;}.bf-cal-nav.svelte-gavyia {display:flex;gap:0.25rem;}.bf-cal-nav.svelte-gavyia button:where(.svelte-gavyia) {display:flex;height:28px;width:28px;align-items:center;justify-content:center;border-radius:9999px;border:none;background:transparent;color:inherit;cursor:pointer;}.bf-cal-nav.svelte-gavyia button:where(.svelte-gavyia):disabled {cursor:default;opacity:0.3;}.bf-cal-weekdays.svelte-gavyia {display:grid;grid-template-columns:repeat(7, 1fr);margin-top:0.75rem;text-align:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.1em;opacity:0.4;}.bf-cal-grid.svelte-gavyia {display:grid;grid-template-columns:repeat(7, 1fr);row-gap:0.25rem;justify-items:center;margin-top:0.25rem;}.bf-cal-cell.svelte-gavyia {display:flex;height:32px;width:32px;align-items:center;justify-content:center;border-radius:9999px;border:none;background:transparent;color:inherit;font-size:0.875rem;cursor:pointer;}.bf-cal-cell.svelte-gavyia:disabled {cursor:default;opacity:0.25;}`};function N(t,r){v(r,!0),x(t,ye);let T={pickDateEmpty:`Pick a date to see available times:`,errorEmpty:`Something went wrong checking availability. Pick a date to try again:`,noSlotsEmpty:`No tables available for that date. Pick another date below:`,previousMonth:`Previous month`,nextMonth:`Next month`,availableTimes:`Available Times`,nameLabel:`Name`,emailLabel:`Email`,phoneLabel:`Phone`,selectOption:`Select an option`,paymentMethod:`Payment Method`,holdSuffix:`hold`,paymentHint:`A hold is placed on your card and released when you arrive — you're only charged if you no-show.`,paymentUnavailable:`Payment form unavailable — refresh to try again.`,notesLabel:`Notes`,cancellationPolicy:`I understand a card hold will be placed for this reservation, released when I arrive, and only charged if I don't show up.`,confirmButton:`Confirm Reservation`,processingButton:`Processing…`,paymentNotReady:`Payment form is not ready yet — please wait a moment and try again.`,cardHoldFailed:`Your card hold could not be placed. Please try again.`,confirmedTitle:`You're booked! We look forward to seeing you.`,dateLabel:`Date`,timeLabel:`Time`,partySizeLabel:`Party Size`,guestSingular:`Guest`,guestPlural:`Guests`},N=w(r,`date`,7),P=w(r,`guests`,7,2),F=w(r,`preferredTime`,7),be=w(r,`closedWeekdays`,23,()=>[]),xe=w(r,`customFields`,23,()=>[]),I=w(r,`locale`,7),Se=w(r,`currency`,7,`USD`),Ce=w(r,`strings`,7),L=w(r,`fetchAvailableDates`,7),R=w(r,`searchSlots`,7),z=w(r,`createPaymentIntent`,7),B=w(r,`book`,7),V=w(r,`stripePublishableKey`,7),we=w(r,`stripeAppearance`,7),H=o(()=>({...T,...Ce()})),Te=o(()=>oe(I())),Ee=o(()=>ie(I()));function De(e,t){r.$$host?.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}let U=g(`loading`),Oe=g(i([])),W=g(null),ke=new Set([`bif`,`clp`,`djf`,`gnf`,`jpy`,`kmf`,`krw`,`mga`,`pyg`,`rwf`,`ugx`,`vnd`,`vuv`,`xaf`,`xof`,`xpf`]);function Ae(e,t){let n=ke.has(t.toLowerCase())?e:e/100;return new Intl.NumberFormat(I(),{style:`currency`,currency:t,maximumFractionDigits:0}).format(n)}function je(e){let[t,n]=e.split(`:`),r=Number(t),i=r>=12?`PM`:`AM`;return`${r%12==0?12:r%12}:${n} ${i}`}function Me(e){let[t,n]=e.split(`:`);return Number(t)*60+Number(n)}function Ne(e){if(!e)return null;let t=e.match(/^(\d+):(\d+)\s*(AM|PM)$/i);if(!t)return null;let n=Number(t[1])%12;return t[3].toUpperCase()===`PM`&&(n+=12),n*60+Number(t[2])}function Pe(e){m(W,e,!0),m(U,`form`),We()}async function Fe(){if(!(!N()||!R())){m(U,`loading`);try{let e=await R()(N(),P());if(!e.length){await ct(`no-slots`);return}m(Oe,e,!0),m(U,`slots`);let t=Ne(F()),n=e[0],r=1/0;for(let i of e){if(t===null)break;let e=Math.abs(Me(i.time)-t);e<r&&(r=e,n=i)}Pe(n)}catch{await ct(`error`)}}}c(()=>{if(!N()){ct(`no-date`);return}Fe()});let G=null,Ie=null,K=null,Le=null,Re=null,ze=null,Be=g(``),Ve=g(``),q=g(!1),He=o(()=>!!(V()&&z()));async function Ue(){return V()?(Ie||=k(async()=>{let{loadStripe:e}=await import(`./chunks/lib-Bd4dedte.js`);return{loadStripe:e}},[]).then(({loadStripe:e})=>e(V())),G=await Ie,G):null}async function We(){if(!(Le||!N()||!z())){m(q,!0);try{await d();let e=await Ue();if(!e)throw Error(`Stripe failed to load`);let{clientSecret:t,paymentIntentId:n,amountCents:i}=await z()(N(),P());Re=t,ze=n,m(Ve,`${Ae(i,Se())} ${u(H).holdSuffix}`),K=e.elements({clientSecret:t,appearance:we()});let a=K.create(`payment`,{layout:{type:`tabs`,defaultCollapsed:!1},fields:{billingDetails:{address:{country:`auto`,postalCode:`never`}}}}),o=r.$$host,s=(o?.shadowRoot)?.querySelector(`.bf-payment-slot-anchor`);if(!s)throw Error(`payment slot anchor not found`);if(!s.querySelector(`slot[name="payment-mount"]`)){let e=document.createElement(`slot`);e.setAttribute(`name`,`payment-mount`),s.appendChild(e)}let c=document.createElement(`div`);c.slot=`payment-mount`,c.className=`bf-card-element`,o.appendChild(c),a.mount(c),Le=a}catch{m(Be,u(H).paymentUnavailable,!0)}finally{m(q,!1)}}}let J=g(``),Y=g(``),Ge=g(``),Ke=g(i({})),qe=g(``),X=g(``),Je=g(``),Ye=g(``),Xe=g(0),Ze=!1,Z=g(0),Q=g(0),$=g(null),Qe=g(`no-date`),$e=ae(new Date),et=o(()=>se(u(Z),u(Q),$e,be())),tt=o(()=>u(Z)!==$e.getFullYear()||u(Q)!==$e.getMonth()),nt=o(()=>u(Qe)===`no-date`?u(H).pickDateEmpty:u(Qe)===`error`?u(H).errorEmpty:u(H).noSlotsEmpty);function rt(e){return!!(!e.inMonth||e.isPast||e.isClosedWeekday||L()&&u($)!==null&&!u($).has(e.iso))}async function it(){if(!L()){m($,null);return}try{m($,new Set(await L()(P())),!0)}catch{m($,new Set,!0)}}function at(){u(tt)&&(m(Q,u(Q)-1),u(Q)<0&&(m(Q,11),m(Z,u(Z)-1)))}function ot(){m(Q,u(Q)+1),u(Q)>11&&(m(Q,0),m(Z,u(Z)+1))}function st(e){rt(e)||N(e.iso)}async function ct(e){m(U,`empty`),m(Qe,e,!0);let t=N()?new Date(N()):new Date;m(Z,t.getFullYear(),!0),m(Q,t.getMonth(),!0),await it()}function lt(e){return new Date(`${e}T00:00:00`).toLocaleDateString(I(),{weekday:`long`,month:`long`,day:`numeric`})}async function ut(e){if(e.preventDefault(),m(X,``),!u(W)||!N()||!B())return;if(u(He)&&(!G||!K||!Re||!ze)){m(X,u(H).paymentNotReady,!0);return}if(m(q,!0),u(He)&&!Ze){let e;try{e=await G.confirmPayment({elements:K,confirmParams:{payment_method_data:{billing_details:{name:u(J),email:u(Y)||void 0,phone:u(Ge)||void 0,address:{postal_code:`00000`}}}},redirect:`if_required`})}catch{m(X,u(H).cardHoldFailed,!0),m(q,!1);return}let{error:t,paymentIntent:n}=e;if(t||n?.status!==`requires_capture`){m(X,t?.message??u(H).cardHoldFailed,!0),m(q,!1);return}Ze=!0}let t=je(u(W).time),n=Object.fromEntries(Object.entries(u(Ke)).filter(([,e])=>e)),r=await B()({date:N(),startTime:u(W).time,timeDisplay:t,partySize:P(),contactName:u(J),contactEmail:u(Y)||void 0,contactPhone:u(Ge)||void 0,notes:u(qe)||void 0,customFieldValues:Object.keys(n).length?n:void 0,stripePaymentIntentId:ze??void 0,clerkUserId:window.Clerk?.user?.id||void 0});if(r.ok){m(Je,lt(N()),!0),m(Ye,t,!0),m(Xe,P()),m(U,`confirmed`),De(`booking-confirmed`,{date:N(),time:t,guests:P()});return}m(X,r.message,!0),m(q,!1),r.status===409&&Fe()}var dt={get date(){return N()},set date(e){N(e),s()},get guests(){return P()},set guests(e=2){P(e),s()},get preferredTime(){return F()},set preferredTime(e){F(e),s()},get closedWeekdays(){return be()},set closedWeekdays(e=[]){be(e),s()},get customFields(){return xe()},set customFields(e=[]){xe(e),s()},get locale(){return I()},set locale(e){I(e),s()},get currency(){return Se()},set currency(e=`USD`){Se(e),s()},get strings(){return Ce()},set strings(e){Ce(e),s()},get fetchAvailableDates(){return L()},set fetchAvailableDates(e){L(e),s()},get searchSlots(){return R()},set searchSlots(e){R(e),s()},get createPaymentIntent(){return z()},set createPaymentIntent(e){z(e),s()},get book(){return B()},set book(e){B(e),s()},get stripePublishableKey(){return V()},set stripePublishableKey(e){V(e),s()},get stripeAppearance(){return we()},set stripeAppearance(e){we(e),s()}},ft=ve(),pt=O(ft),mt=e=>{var t=A();p(e,t)},ht=e=>{var t=j(),n=O(t),r=O(n,!0);y(n);var i=h(n,2),o=O(i),s=O(o),c=O(s);y(s);var l=h(s,2),d=O(l),f=h(d,2);y(l),y(o);var m=h(o,2);D(m,20,()=>u(Ee),e=>e,(e,t)=>{var n=ce(),r=O(n,!0);y(n),a(()=>E(r,t)),p(e,n)}),y(m);var g=h(m,2);D(g,21,()=>u(et),e=>e.iso,(e,t)=>{var n=le(),r=O(n,!0);y(n),a(e=>{n.disabled=e,E(r,u(t).dayNumber)},[()=>rt(u(t))]),C(`click`,n,()=>st(u(t))),p(e,n)}),y(g),y(i),y(t),a(()=>{E(r,u(nt)),E(c,`${u(Te)[u(Q)]??``} ${u(Z)??``}`),d.disabled=!u(tt),ne(d,`aria-label`,u(H).previousMonth),ne(f,`aria-label`,u(H).nextMonth)}),C(`click`,d,at),C(`click`,f,ot),p(e,t)},gt=t=>{var r=_e(),i=n(r),o=O(i),s=h(O(o));y(o);var c=h(o,2);D(c,21,()=>u(Oe),e=>e.time,(e,t)=>{var n=ue();let r;var i=O(n,!0);y(n),a(e=>{r=b(n,1,`bf-slot svelte-gavyia`,null,r,{"bf-slot-selected":u(W)?.time===u(t).time}),E(i,e)},[()=>je(u(t).time)]),C(`click`,n,()=>Pe(u(t))),p(e,n)}),y(c),y(i);var d=h(i,2),g=t=>{var n=ge(),r=O(n),i=O(r),o=O(i,!0);y(i);var s=h(i,2),c=h(O(s),2);te(c),y(s),y(r);var d=h(r,2),g=O(d),_=O(g,!0);y(g);var v=h(g,2),b=h(O(v),2);te(b),y(v),y(d);var x=h(d,2),C=O(x),w=O(C,!0);y(C);var T=h(C,2),ie=h(O(T),2);te(ie),y(T),y(x);var ae=h(x,2);D(ae,17,xe,e=>e.key,(t,n)=>{var r=fe(),i=O(r),o=O(i,!0);y(i);var s=h(i,2),c=O(s),l=O(c),d=O(l,!0);y(l),l.value=l.__value=``;var f=h(l);D(f,16,()=>u(n).options,e=>e,(e,t)=>{var n=de(),r=O(n,!0);y(n);var i={};a(()=>{E(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),p(e,n)}),y(c),e(2),y(s),y(r),a(()=>{E(o,u(n).label),ne(c,`name`,u(n).key),E(d,u(H).selectOption)}),re(c,()=>u(Ke)[u(n).key],e=>u(Ke)[u(n).key]=e),p(t,r)});var oe=h(ae,2),se=e=>{var t=me(),n=O(t),r=O(n),i=O(r,!0);y(r);var o=h(r,2),s=O(o,!0);y(o),y(n);var c=h(n,4),l=O(c,!0);y(c);var d=h(c,2),m=e=>{var t=pe(),n=O(t,!0);y(t),a(()=>E(n,u(Be))),p(e,t)};f(d,e=>{u(Be)&&e(m)}),y(t),a(()=>{E(i,u(H).paymentMethod),E(s,u(Ve)),E(l,u(H).paymentHint)}),p(e,t)};f(oe,e=>{u(He)&&e(se)});var k=h(oe,2),A=O(k),ce=O(A,!0);y(A);var le=h(A,2);ee(le),y(k);var j=h(k,2),ue=h(O(j),2),_e=O(ue,!0);y(ue),y(j);var M=h(j,2),ve=O(M),ye=e=>{var t=he();p(e,t)};f(ve,e=>{u(q)&&e(ye)});var N=h(ve);y(M);var P=h(M,2),F=e=>{var t=pe(),n=O(t,!0);y(t),a(()=>E(n,u(X))),p(e,t)};f(P,e=>{u(X)&&e(F)}),y(n),a(()=>{E(o,u(H).nameLabel),E(_,u(H).emailLabel),E(w,u(H).phoneLabel),E(ce,u(H).notesLabel),E(_e,u(H).cancellationPolicy),M.disabled=u(q),E(N,` ${(u(q)?u(H).processingButton:u(H).confirmButton)??``}`)}),l(`submit`,n,ut),S(c,()=>u(J),e=>m(J,e)),S(b,()=>u(Y),e=>m(Y,e)),S(ie,()=>u(Ge),e=>m(Ge,e)),S(le,()=>u(qe),e=>m(qe,e)),p(t,n)};f(d,e=>{u(U)===`form`&&e(g)}),a(()=>E(s,` ${u(H).availableTimes??``}`)),p(t,r)},_t=e=>{var t=M(),n=h(O(t),2),r=O(n,!0);y(n);var i=h(n,2),o=O(i),s=O(o),c=O(s,!0);y(s);var l=h(s),d=O(l,!0);y(l),y(o);var f=h(o,2),m=O(f),g=O(m,!0);y(m);var _=h(m),ee=O(_,!0);y(_),y(f);var v=h(f,2),b=O(v),x=O(b,!0);y(b);var S=h(b),C=O(S);y(S),y(v),y(i),y(t),a(()=>{E(r,u(H).confirmedTitle),E(c,u(H).dateLabel),E(d,u(Je)),E(g,u(H).timeLabel),E(ee,u(Ye)),E(x,u(H).partySizeLabel),E(C,`${u(Xe)??``} ${(u(Xe)===1?u(H).guestSingular:u(H).guestPlural)??``}`)}),p(e,t)};return f(pt,e=>{u(U)===`loading`?e(mt):u(U)===`empty`?e(ht,1):u(U)===`slots`||u(U)===`form`?e(gt,2):u(U)===`confirmed`&&e(_t,3)}),y(ft),p(t,ft),_(dt)}t([`click`]),customElements.define(`booking-flow`,T(N,{date:{type:`String`},guests:{type:`Number`},preferredTime:{type:`String`},closedWeekdays:{attribute:`closed-weekdays`,type:`Array`},customFields:{type:`Array`},locale:{attribute:`locale`,type:`String`},currency:{attribute:`currency`,type:`String`},strings:{type:`Object`},fetchAvailableDates:{type:`Object`},searchSlots:{type:`Object`},createPaymentIntent:{type:`Object`},book:{type:`Object`},stripePublishableKey:{type:`String`},stripeAppearance:{type:`Object`}},[],[],{mode:`open`}));
|
|
26
|
+
}.bf-confirmed.svelte-gavyia {text-align:center;}.bf-check-circle.svelte-gavyia {display:flex;align-items:center;justify-content:center;width:48px;height:48px;margin:0 auto 1rem;border-radius:9999px;background:var(--bf-accent-bg, #1a1a1a);color:var(--bf-accent-text, #fff);font-size:1.5rem;}.bf-confirmed-title.svelte-gavyia {font-size:1.1rem;}.bf-confirmed-card.svelte-gavyia {max-width:20rem;margin:1.5rem auto 0;border:1px solid var(--bf-border-color, rgba(0, 0, 0, 0.15));border-radius:2px;padding:1.25rem;text-align:left;}.bf-confirmed-row.svelte-gavyia {display:flex;justify-content:space-between;padding:0.6rem 0;border-bottom:1px solid var(--bf-border-color, rgba(0, 0, 0, 0.1));font-size:0.85rem;}.bf-confirmed-row.svelte-gavyia:last-child {border-bottom:none;}.bf-cal.svelte-gavyia {max-width:20rem;margin:1.5rem auto 0;border:1px solid var(--bf-border-color, rgba(0, 0, 0, 0.15));border-radius:2px;padding:1rem;}.bf-cal-header.svelte-gavyia {display:flex;align-items:center;justify-content:space-between;}.bf-cal-month.svelte-gavyia {margin:0;font-size:0.875rem;font-weight:600;}.bf-cal-nav.svelte-gavyia {display:flex;gap:0.25rem;}.bf-cal-nav.svelte-gavyia button:where(.svelte-gavyia) {display:flex;height:28px;width:28px;align-items:center;justify-content:center;border-radius:9999px;border:none;background:transparent;color:inherit;cursor:pointer;}.bf-cal-nav.svelte-gavyia button:where(.svelte-gavyia):disabled {cursor:default;opacity:0.3;}.bf-cal-weekdays.svelte-gavyia {display:grid;grid-template-columns:repeat(7, 1fr);margin-top:0.75rem;text-align:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.1em;opacity:0.4;}.bf-cal-grid.svelte-gavyia {display:grid;grid-template-columns:repeat(7, 1fr);row-gap:0.25rem;justify-items:center;margin-top:0.25rem;}.bf-cal-cell.svelte-gavyia {display:flex;height:32px;width:32px;align-items:center;justify-content:center;border-radius:9999px;border:none;background:transparent;color:inherit;font-size:0.875rem;cursor:pointer;}.bf-cal-cell.svelte-gavyia:disabled {cursor:default;opacity:0.25;}`};function N(t,r){v(r,!0),x(t,be);let T={pickDateEmpty:`Pick a date to see available times:`,errorEmpty:`Something went wrong checking availability. Pick a date to try again:`,noSlotsEmpty:`No tables available for that date. Pick another date below:`,previousMonth:`Previous month`,nextMonth:`Next month`,availableTimes:`Available Times`,nameLabel:`Name`,emailLabel:`Email`,phoneLabel:`Phone`,selectOption:`Select an option`,paymentMethod:`Payment Method`,holdSuffix:`hold`,paymentHint:`A hold is placed on your card and released when you arrive — you're only charged if you no-show.`,paymentUnavailable:`Payment form unavailable — refresh to try again.`,notesLabel:`Notes`,cancellationPolicy:`I understand a card hold will be placed for this reservation, released when I arrive, and only charged if I don't show up.`,confirmButton:`Confirm Reservation`,processingButton:`Processing…`,paymentNotReady:`Payment form is not ready yet — please wait a moment and try again.`,cardHoldFailed:`Your card hold could not be placed. Please try again.`,confirmedTitle:`You're booked! We look forward to seeing you.`,dateLabel:`Date`,timeLabel:`Time`,partySizeLabel:`Party Size`,guestSingular:`Guest`,guestPlural:`Guests`},N=w(r,`date`,7),P=w(r,`guests`,7,2),xe=w(r,`preferredTime`,7),Se=w(r,`closedWeekdays`,23,()=>[]),Ce=w(r,`customFields`,23,()=>[]),F=w(r,`locale`,7),we=w(r,`currency`,7,`USD`),Te=w(r,`strings`,7),I=w(r,`fetchAvailableDates`,7),L=w(r,`searchSlots`,7),R=w(r,`createPaymentIntent`,7),z=w(r,`book`,7),B=w(r,`stripePublishableKey`,7),Ee=w(r,`stripeAppearance`,7),V=o(()=>({...T,...Te()})),De=o(()=>oe(F())),Oe=o(()=>ie(F()));function ke(e,t){r.$$host?.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}let H=g(`loading`),Ae=g(i([])),U=g(null);function je(e,t){let n=k(e,t);return new Intl.NumberFormat(F(),{style:`currency`,currency:t,maximumFractionDigits:0}).format(n)}function Me(e){let[t,n]=e.split(`:`),r=Number(t),i=r>=12?`PM`:`AM`;return`${r%12==0?12:r%12}:${n} ${i}`}function Ne(e){let[t,n]=e.split(`:`);return Number(t)*60+Number(n)}function Pe(e){if(!e)return null;let t=e.match(/^(\d+):(\d+)\s*(AM|PM)$/i);if(!t)return null;let n=Number(t[1])%12;return t[3].toUpperCase()===`PM`&&(n+=12),n*60+Number(t[2])}function Fe(e){m(U,e,!0),m(H,`form`),Ge()}async function Ie(){if(!(!N()||!L())){m(H,`loading`);try{let e=await L()(N(),P());if(!e.length){await ct(`no-slots`);return}m(Ae,e,!0),m(H,`slots`);let t=Pe(xe()),n=e[0],r=1/0;for(let i of e){if(t===null)break;let e=Math.abs(Ne(i.time)-t);e<r&&(r=e,n=i)}Fe(n)}catch{await ct(`error`)}}}c(()=>{if(!N()){ct(`no-date`);return}Ie()});let W=null,Le=null,G=null,Re=null,ze=null,Be=null,Ve=g(``),He=g(``),K=g(!1),Ue=o(()=>!!(B()&&R()));async function We(){return B()?(Le||=A(async()=>{let{loadStripe:e}=await import(`./chunks/lib-Bd4dedte.js`);return{loadStripe:e}},[]).then(({loadStripe:e})=>e(B())),W=await Le,W):null}async function Ge(){if(!(Re||!N()||!R())){m(K,!0);try{await d();let e=await We();if(!e)throw Error(`Stripe failed to load`);let{clientSecret:t,paymentIntentId:n,amountCents:i}=await R()(N(),P());ze=t,Be=n,m(He,`${je(i,we())} ${u(V).holdSuffix}`),G=e.elements({clientSecret:t,appearance:Ee()});let a=G.create(`payment`,{layout:{type:`tabs`,defaultCollapsed:!1},fields:{billingDetails:{address:{country:`auto`,postalCode:`never`}}}}),o=r.$$host,s=(o?.shadowRoot)?.querySelector(`.bf-payment-slot-anchor`);if(!s)throw Error(`payment slot anchor not found`);if(!s.querySelector(`slot[name="payment-mount"]`)){let e=document.createElement(`slot`);e.setAttribute(`name`,`payment-mount`),s.appendChild(e)}let c=document.createElement(`div`);c.slot=`payment-mount`,c.className=`bf-card-element`,o.appendChild(c),a.mount(c),Re=a}catch{m(Ve,u(V).paymentUnavailable,!0)}finally{m(K,!1)}}}let q=g(``),J=g(``),Y=g(``),Ke=g(i({})),qe=g(``),X=g(``),Je=g(``),Ye=g(``),Xe=g(0),Ze=!1,Z=g(0),Q=g(0),$=g(null),Qe=g(`no-date`),$e=ae(new Date),et=o(()=>se(u(Z),u(Q),$e,Se())),tt=o(()=>u(Z)!==$e.getFullYear()||u(Q)!==$e.getMonth()),nt=o(()=>u(Qe)===`no-date`?u(V).pickDateEmpty:u(Qe)===`error`?u(V).errorEmpty:u(V).noSlotsEmpty);function rt(e){return!!(!e.inMonth||e.isPast||e.isClosedWeekday||I()&&u($)!==null&&!u($).has(e.iso))}async function it(){if(!I()){m($,null);return}try{m($,new Set(await I()(P())),!0)}catch{m($,new Set,!0)}}function at(){u(tt)&&(m(Q,u(Q)-1),u(Q)<0&&(m(Q,11),m(Z,u(Z)-1)))}function ot(){m(Q,u(Q)+1),u(Q)>11&&(m(Q,0),m(Z,u(Z)+1))}function st(e){rt(e)||N(e.iso)}async function ct(e){m(H,`empty`),m(Qe,e,!0);let t=N()?new Date(N()):new Date;m(Z,t.getFullYear(),!0),m(Q,t.getMonth(),!0),await it()}function lt(e){return new Date(`${e}T00:00:00`).toLocaleDateString(F(),{weekday:`long`,month:`long`,day:`numeric`})}async function ut(e){if(e.preventDefault(),m(X,``),!u(U)||!N()||!z())return;if(u(Ue)&&(!W||!G||!ze||!Be)){m(X,u(V).paymentNotReady,!0);return}if(m(K,!0),u(Ue)&&!Ze){let e;try{e=await W.confirmPayment({elements:G,confirmParams:{payment_method_data:{billing_details:{name:u(q),email:u(J)||void 0,phone:u(Y)||void 0,address:{postal_code:`00000`}}}},redirect:`if_required`})}catch{m(X,u(V).cardHoldFailed,!0),m(K,!1);return}let{error:t,paymentIntent:n}=e;if(t||n?.status!==`requires_capture`){m(X,t?.message??u(V).cardHoldFailed,!0),m(K,!1);return}Ze=!0}let t=Me(u(U).time),n=Object.fromEntries(Object.entries(u(Ke)).filter(([,e])=>e)),r=await z()({date:N(),startTime:u(U).time,timeDisplay:t,partySize:P(),contactName:u(q),contactEmail:u(J)||void 0,contactPhone:u(Y)||void 0,notes:u(qe)||void 0,customFieldValues:Object.keys(n).length?n:void 0,stripePaymentIntentId:Be??void 0,clerkUserId:window.Clerk?.user?.id||void 0});if(r.ok){m(Je,lt(N()),!0),m(Ye,t,!0),m(Xe,P()),m(H,`confirmed`),ke(`booking-confirmed`,{date:N(),time:t,guests:P()});return}m(X,r.message,!0),m(K,!1),r.status===409&&Ie()}var dt={get date(){return N()},set date(e){N(e),s()},get guests(){return P()},set guests(e=2){P(e),s()},get preferredTime(){return xe()},set preferredTime(e){xe(e),s()},get closedWeekdays(){return Se()},set closedWeekdays(e=[]){Se(e),s()},get customFields(){return Ce()},set customFields(e=[]){Ce(e),s()},get locale(){return F()},set locale(e){F(e),s()},get currency(){return we()},set currency(e=`USD`){we(e),s()},get strings(){return Te()},set strings(e){Te(e),s()},get fetchAvailableDates(){return I()},set fetchAvailableDates(e){I(e),s()},get searchSlots(){return L()},set searchSlots(e){L(e),s()},get createPaymentIntent(){return R()},set createPaymentIntent(e){R(e),s()},get book(){return z()},set book(e){z(e),s()},get stripePublishableKey(){return B()},set stripePublishableKey(e){B(e),s()},get stripeAppearance(){return Ee()},set stripeAppearance(e){Ee(e),s()}},ft=ye(),pt=O(ft),mt=e=>{var t=ce();p(e,t)},ht=e=>{var t=ue(),n=O(t),r=O(n,!0);y(n);var i=h(n,2),o=O(i),s=O(o),c=O(s);y(s);var l=h(s,2),d=O(l),f=h(d,2);y(l),y(o);var m=h(o,2);D(m,20,()=>u(Oe),e=>e,(e,t)=>{var n=le(),r=O(n,!0);y(n),a(()=>E(r,t)),p(e,n)}),y(m);var g=h(m,2);D(g,21,()=>u(et),e=>e.iso,(e,t)=>{var n=j(),r=O(n,!0);y(n),a(e=>{n.disabled=e,E(r,u(t).dayNumber)},[()=>rt(u(t))]),C(`click`,n,()=>st(u(t))),p(e,n)}),y(g),y(i),y(t),a(()=>{E(r,u(nt)),E(c,`${u(De)[u(Q)]??``} ${u(Z)??``}`),d.disabled=!u(tt),ne(d,`aria-label`,u(V).previousMonth),ne(f,`aria-label`,u(V).nextMonth)}),C(`click`,d,at),C(`click`,f,ot),p(e,t)},gt=t=>{var r=M(),i=n(r),o=O(i),s=h(O(o));y(o);var c=h(o,2);D(c,21,()=>u(Ae),e=>e.time,(e,t)=>{var n=de();let r;var i=O(n,!0);y(n),a(e=>{r=b(n,1,`bf-slot svelte-gavyia`,null,r,{"bf-slot-selected":u(U)?.time===u(t).time}),E(i,e)},[()=>Me(u(t).time)]),C(`click`,n,()=>Fe(u(t))),p(e,n)}),y(c),y(i);var d=h(i,2),g=t=>{var n=_e(),r=O(n),i=O(r),o=O(i,!0);y(i);var s=h(i,2),c=h(O(s),2);te(c),y(s),y(r);var d=h(r,2),g=O(d),_=O(g,!0);y(g);var v=h(g,2),b=h(O(v),2);te(b),y(v),y(d);var x=h(d,2),C=O(x),w=O(C,!0);y(C);var T=h(C,2),ie=h(O(T),2);te(ie),y(T),y(x);var ae=h(x,2);D(ae,17,Ce,e=>e.key,(t,n)=>{var r=pe(),i=O(r),o=O(i,!0);y(i);var s=h(i,2),c=O(s),l=O(c),d=O(l,!0);y(l),l.value=l.__value=``;var f=h(l);D(f,16,()=>u(n).options,e=>e,(e,t)=>{var n=fe(),r=O(n,!0);y(n);var i={};a(()=>{E(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),p(e,n)}),y(c),e(2),y(s),y(r),a(()=>{E(o,u(n).label),ne(c,`name`,u(n).key),E(d,u(V).selectOption)}),re(c,()=>u(Ke)[u(n).key],e=>u(Ke)[u(n).key]=e),p(t,r)});var oe=h(ae,2),se=e=>{var t=he(),n=O(t),r=O(n),i=O(r,!0);y(r);var o=h(r,2),s=O(o,!0);y(o),y(n);var c=h(n,4),l=O(c,!0);y(c);var d=h(c,2),m=e=>{var t=me(),n=O(t,!0);y(t),a(()=>E(n,u(Ve))),p(e,t)};f(d,e=>{u(Ve)&&e(m)}),y(t),a(()=>{E(i,u(V).paymentMethod),E(s,u(He)),E(l,u(V).paymentHint)}),p(e,t)};f(oe,e=>{u(Ue)&&e(se)});var k=h(oe,2),A=O(k),ce=O(A,!0);y(A);var le=h(A,2);ee(le),y(k);var j=h(k,2),ue=h(O(j),2),de=O(ue,!0);y(ue),y(j);var M=h(j,2),ve=O(M),ye=e=>{var t=ge();p(e,t)};f(ve,e=>{u(K)&&e(ye)});var be=h(ve);y(M);var N=h(M,2),P=e=>{var t=me(),n=O(t,!0);y(t),a(()=>E(n,u(X))),p(e,t)};f(N,e=>{u(X)&&e(P)}),y(n),a(()=>{E(o,u(V).nameLabel),E(_,u(V).emailLabel),E(w,u(V).phoneLabel),E(ce,u(V).notesLabel),E(de,u(V).cancellationPolicy),M.disabled=u(K),E(be,` ${(u(K)?u(V).processingButton:u(V).confirmButton)??``}`)}),l(`submit`,n,ut),S(c,()=>u(q),e=>m(q,e)),S(b,()=>u(J),e=>m(J,e)),S(ie,()=>u(Y),e=>m(Y,e)),S(le,()=>u(qe),e=>m(qe,e)),p(t,n)};f(d,e=>{u(H)===`form`&&e(g)}),a(()=>E(s,` ${u(V).availableTimes??``}`)),p(t,r)},_t=e=>{var t=ve(),n=h(O(t),2),r=O(n,!0);y(n);var i=h(n,2),o=O(i),s=O(o),c=O(s,!0);y(s);var l=h(s),d=O(l,!0);y(l),y(o);var f=h(o,2),m=O(f),g=O(m,!0);y(m);var _=h(m),ee=O(_,!0);y(_),y(f);var v=h(f,2),b=O(v),x=O(b,!0);y(b);var S=h(b),C=O(S);y(S),y(v),y(i),y(t),a(()=>{E(r,u(V).confirmedTitle),E(c,u(V).dateLabel),E(d,u(Je)),E(g,u(V).timeLabel),E(ee,u(Ye)),E(x,u(V).partySizeLabel),E(C,`${u(Xe)??``} ${(u(Xe)===1?u(V).guestSingular:u(V).guestPlural)??``}`)}),p(e,t)};return f(pt,e=>{u(H)===`loading`?e(mt):u(H)===`empty`?e(ht,1):u(H)===`slots`||u(H)===`form`?e(gt,2):u(H)===`confirmed`&&e(_t,3)}),y(ft),p(t,ft),_(dt)}t([`click`]),customElements.define(`booking-flow`,T(N,{date:{type:`String`},guests:{type:`Number`},preferredTime:{type:`String`},closedWeekdays:{attribute:`closed-weekdays`,type:`Array`},customFields:{type:`Array`},locale:{attribute:`locale`,type:`String`},currency:{attribute:`currency`,type:`String`},strings:{type:`Object`},fetchAvailableDates:{type:`Object`},searchSlots:{type:`Object`},createPaymentIntent:{type:`Object`},book:{type:`Object`},stripePublishableKey:{type:`String`},stripeAppearance:{type:`Object`}},[],[],{mode:`open`}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=new Set([`bif`,`clp`,`djf`,`gnf`,`jpy`,`kmf`,`krw`,`mga`,`pyg`,`rwf`,`ugx`,`vnd`,`vuv`,`xaf`,`xof`,`xpf`]);function t(t,n){return e.has(n.toLowerCase())?t:t/100}export{t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{$ as e,A as t,B as n,D as r,E as i,H as a,I as o,J as s,K as c,L as l,M as u,N as d,
|
|
1
|
+
import{$ as e,A as t,B as n,D as r,E as i,H as a,I as o,J as s,K as c,L as l,M as u,N as d,P as f,S as p,T as m,U as h,V as g,W as _,X as v,Y as y,Z as b,_ as x,et as S,f as C,h as w,i as T,j as E,n as D,nt as ee,o as te,q as O,r as ne,rt as re,s as k,t as ie,tt as ae,v as oe,w as A,x as se,y as j,z as M}from"./chunks/client-BDk8LqGN.js";import{a as ce,i as le,n as ue,r as de,t as fe}from"./chunks/floating-ui.dom-DY3dGoEq.js";import{i as pe,n as me,o as he,r as ge,s as _e,t as ve}from"./chunks/calendar-B8eNjUm2.js";import{t as ye}from"./chunks/stripe-BjXf5ZQJ.js";import{t as be}from"./chunks/preload-helper-Czpn1I53.js";var xe=e=>e;function Se(e,{delay:t=0,duration:n=400,easing:r=xe}={}){let i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:e=>`opacity: ${e*i}`}}var Ce=r(`<strong class="svelte-1dxdgqu"> </strong>`),we=r(`<span class="svelte-1dxdgqu"> </span>`),Te=r(`<div class="sbw-summary-row sbw-summary-row-sub svelte-1dxdgqu"><span class="svelte-1dxdgqu"> </span> <!></div>`),Ee=r(`<div class="sbw-summary-row sbw-summary-row-sub svelte-1dxdgqu"><span class="svelte-1dxdgqu"> </span> <span class="svelte-1dxdgqu"> </span></div>`),De=r(`<span class="sbw-time-flash svelte-1dxdgqu"> </span>`),Oe=r(`<div class="sbw-summary-row sbw-summary-row-sub sbw-summary-row-datetime svelte-1dxdgqu"><span class="svelte-1dxdgqu"> </span> <!></div>`),ke=r(`<div class="sbw-summary-row sbw-summary-row-sub svelte-1dxdgqu"><span class="svelte-1dxdgqu"> </span> <span class="sbw-summary-row-bookedat-value svelte-1dxdgqu"> </span></div>`),Ae=r(`<div class="sbw-summary-total svelte-1dxdgqu"><span class="svelte-1dxdgqu"> </span> <strong class="svelte-1dxdgqu"> </strong></div>`),je=r(`<span class="sbw-spinner svelte-1dxdgqu"></span>`),Me=r(`<p class="sbw-hint svelte-1dxdgqu"> </p>`),Ne=r(`<p class="sbw-error-text svelte-1dxdgqu"> </p>`),Pe=r(`<button type="button" class="sbw-continue svelte-1dxdgqu"><!> <span class="svelte-1dxdgqu"> </span></button> <!> <!>`,1),Fe=r(`<button type="button" class="sbw-continue svelte-1dxdgqu"> </button> <button type="button" class="sbw-back sbw-back-service svelte-1dxdgqu"> </button>`,1),Ie=r(`<button type="submit" class="sbw-submit svelte-1dxdgqu"><!> <span class="svelte-1dxdgqu"> </span></button> <!> <button type="button" class="sbw-back sbw-back-service svelte-1dxdgqu"> </button>`,1),Le=r(`<aside class="sbw-summary svelte-1dxdgqu"><div class="sbw-summary-row svelte-1dxdgqu"><span class="svelte-1dxdgqu"> </span> <!></div> <!> <!> <!> <!> <!> <!></aside>`),Re=r(`<img class="sbw-logo svelte-1dxdgqu" alt=""/>`),ze=r(`<h2 class="sbw-heading svelte-1dxdgqu"> </h2> <div class="sbw-rule svelte-1dxdgqu"></div>`,1),Be=r(`<p class="sbw-tagline svelte-1dxdgqu"> </p>`),Ve=r(`<p class="sbw-description svelte-1dxdgqu"> </p>`),He=r(`<div class="sbw-intro svelte-1dxdgqu"><!> <!> <!> <!></div>`),Ue=r(`<span class="sbw-service-sub svelte-1dxdgqu"> </span>`),We=r(`<span class="sbw-service-prices svelte-1dxdgqu"><span class="sbw-service-price svelte-1dxdgqu"> </span> <!></span>`),Ge=r(`<li class="svelte-1dxdgqu"><button type="button" class="sbw-service-item svelte-1dxdgqu"><span class="sbw-service-name svelte-1dxdgqu"> <!></span> <!></button></li>`),Ke=r(`<ul class="sbw-service-list svelte-1dxdgqu" role="list"></ul>`),qe=r(`<div class="sbw-body svelte-1dxdgqu"><h3 class="sbw-step-title svelte-1dxdgqu"> </h3> <!></div>`),Je=r(`<li role="presentation" class="svelte-1dxdgqu"><button type="button" role="option" class="svelte-1dxdgqu"> </button></li>`),Ye=r(`<div class="sbw-therapist-filter svelte-1dxdgqu"><span class="sbw-visually-hidden svelte-1dxdgqu" id="sbw-therapist-filter-label"> </span> <button type="button" class="sbw-therapist-filter-trigger svelte-1dxdgqu" aria-haspopup="listbox" aria-labelledby="sbw-therapist-filter-label"><span class="svelte-1dxdgqu"> </span> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6" stroke-linecap="round" stroke-linejoin="round" class="svelte-1dxdgqu"></path></svg></button> <ul popover="" role="listbox" class="sbw-therapist-filter-panel svelte-1dxdgqu"><li role="presentation" class="svelte-1dxdgqu"><button type="button" role="option" class="svelte-1dxdgqu"> </button></li> <!></ul></div>`),Xe=r(`<span></span>`),Ze=r(`<button type="button"><span class="svelte-1dxdgqu"> </span> <!></button>`),Qe=r(`<button type="button"> </button>`),$e=r(`<div class="sbw-slot-group svelte-1dxdgqu"><p class="sbw-slot-group-label svelte-1dxdgqu"> </p> <div class="sbw-slot-buttons svelte-1dxdgqu"></div></div>`),et=r(`<div class="sbw-slot-groups svelte-1dxdgqu"></div>`),tt=r(`<div class="sbw-body sbw-datetime svelte-1dxdgqu"><div class="sbw-calendar-col svelte-1dxdgqu"><div class="sbw-cal-body svelte-1dxdgqu"><div class="sbw-cal-header svelte-1dxdgqu"><p class="sbw-cal-month svelte-1dxdgqu"> </p> <!> <div class="sbw-cal-nav svelte-1dxdgqu"><button type="button" class="svelte-1dxdgqu">‹</button> <button type="button" class="svelte-1dxdgqu">›</button></div></div> <div class="sbw-cal-weekdays svelte-1dxdgqu"></div> <div class="sbw-cal-grid svelte-1dxdgqu"></div></div> <div class="sbw-slots svelte-1dxdgqu"><!></div></div> <!></div>`),nt=r(`<span class="sbw-payment-amount svelte-1dxdgqu"> </span>`),rt=r(`<p class="sbw-payment-hint svelte-1dxdgqu"> </p>`),it=r(`<div class="sbw-payment svelte-1dxdgqu"><div class="sbw-payment-header svelte-1dxdgqu"><span class="sbw-label svelte-1dxdgqu"> </span> <!></div> <div class="sbw-payment-slot-anchor svelte-1dxdgqu"></div> <!> <!></div>`),at=r(`<form class="sbw-body sbw-datetime sbw-details svelte-1dxdgqu"><div class="sbw-details-fields svelte-1dxdgqu"><div class="sbw-grid svelte-1dxdgqu"><label class="sbw-field svelte-1dxdgqu"><span class="sbw-label svelte-1dxdgqu"> </span> <input type="text" required="" class="svelte-1dxdgqu"/></label> <label class="sbw-field svelte-1dxdgqu"><span class="sbw-label svelte-1dxdgqu"> </span> <input type="email" pattern="[^\\s@]+@[^\\s@]+\\.[^\\s@]+" class="svelte-1dxdgqu"/></label> <label class="sbw-field svelte-1dxdgqu"><span class="sbw-label svelte-1dxdgqu"> </span> <input type="tel" class="svelte-1dxdgqu"/></label></div> <label class="sbw-field sbw-notes-field svelte-1dxdgqu"><span class="sbw-label svelte-1dxdgqu"> </span> <textarea rows="3" class="svelte-1dxdgqu"></textarea></label> <!></div> <!></form>`),ot=r(`<div class="sbw-success svelte-1dxdgqu"><div class="sbw-success-icon svelte-1dxdgqu"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" class="svelte-1dxdgqu"><path d="M5 13l4 4L19 7" stroke-linecap="round" stroke-linejoin="round" class="svelte-1dxdgqu"></path></svg></div> <p class="svelte-1dxdgqu"> </p> <!></div>`),st=r(`<section class="sbw-root svelte-1dxdgqu"><!> <!></section>`),ct={hash:`svelte-1dxdgqu`,code:`.sbw-root.svelte-1dxdgqu {display:block;
|
|
2
2
|
/* Every layout breakpoint below is a container query against this box,
|
|
3
3
|
not the viewport. The widget is embedded in host layouts -- a narrow
|
|
4
4
|
column beside a summary card, a modal -- where the viewport says
|
|
@@ -188,7 +188,9 @@ import{$ as e,A as t,B as n,D as r,E as i,H as a,I as o,J as s,K as c,L as l,M a
|
|
|
188
188
|
.sbw-field.svelte-1dxdgqu input:where(.svelte-1dxdgqu):-webkit-autofill:hover,
|
|
189
189
|
.sbw-field.svelte-1dxdgqu textarea:where(.svelte-1dxdgqu):-webkit-autofill:hover,
|
|
190
190
|
.sbw-field.svelte-1dxdgqu input:where(.svelte-1dxdgqu):-webkit-autofill:focus,
|
|
191
|
-
.sbw-field.svelte-1dxdgqu textarea:where(.svelte-1dxdgqu):-webkit-autofill:focus {-webkit-text-fill-color:var(--sbw-text-color, #1a1a1a);-webkit-box-shadow:0 0 0 1000px var(--sbw-input-autofill-bg, var(--sbw-input-bg, #fff)) inset;box-shadow:0 0 0 1000px var(--sbw-input-autofill-bg, var(--sbw-input-bg, #fff)) inset;transition:background-color 600000s ease-in-out 0s;}.sbw-notes-field.svelte-1dxdgqu {margin-top:1.25rem;}.sbw-
|
|
191
|
+
.sbw-field.svelte-1dxdgqu textarea:where(.svelte-1dxdgqu):-webkit-autofill:focus {-webkit-text-fill-color:var(--sbw-text-color, #1a1a1a);-webkit-box-shadow:0 0 0 1000px var(--sbw-input-autofill-bg, var(--sbw-input-bg, #fff)) inset;box-shadow:0 0 0 1000px var(--sbw-input-autofill-bg, var(--sbw-input-bg, #fff)) inset;transition:background-color 600000s ease-in-out 0s;}.sbw-notes-field.svelte-1dxdgqu {margin-top:1.25rem;}.sbw-payment.svelte-1dxdgqu {display:flex;flex-direction:column;gap:0.5rem;margin-top:1.25rem;}.sbw-payment-header.svelte-1dxdgqu {display:flex;align-items:baseline;justify-content:space-between;gap:1rem;}.sbw-payment-amount.svelte-1dxdgqu {font-size:0.875rem;font-weight:600;color:var(--sbw-accent-color, #c49e5a);}.sbw-payment-slot-anchor.svelte-1dxdgqu slot[name='payment-mount'] {display:block;}
|
|
192
|
+
/* The mount node is a light-DOM child of the host projected in through
|
|
193
|
+
that slot (see setupPayment) -- only ::slotted() reaches it. */::slotted(.sbw-payment-element) {display:block;border-radius:2px;border:1px solid var(--sbw-border-color, rgba(0, 0, 0, 0.15));background:var(--sbw-input-bg, #fff);padding:0.9rem;}.sbw-payment-hint.svelte-1dxdgqu {margin:0;font-size:0.75rem;opacity:0.6;}.sbw-submit.svelte-1dxdgqu {display:inline-flex;align-items:center;justify-content:center;gap:0.5rem;width:100%;margin-top:1.25rem;cursor:pointer;border:none;border-radius:2px;background:var(--sbw-accent-bg, #1a1a1a);color:var(--sbw-accent-contrast, #fff);padding:0.8rem;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;transition:background-color 150ms ease;}.sbw-submit.svelte-1dxdgqu:hover:not(:disabled) {background:var(--sbw-accent-hover-bg, #333);}.sbw-submit.svelte-1dxdgqu:disabled {cursor:default;opacity:0.6;}.sbw-spinner.svelte-1dxdgqu {height:1rem;width:1rem;border-radius:9999px;border:2px solid color-mix(in oklab, var(--sbw-accent-contrast, #fff) 30%, transparent);border-top-color:var(--sbw-accent-contrast, #fff);
|
|
192
194
|
animation: svelte-1dxdgqu-sbw-spin 0.7s linear infinite;}
|
|
193
195
|
@keyframes svelte-1dxdgqu-sbw-spin {
|
|
194
196
|
to {
|
|
@@ -201,5 +203,5 @@ import{$ as e,A as t,B as n,D as r,E as i,H as a,I as o,J as s,K as c,L as l,M a
|
|
|
201
203
|
animation: none;}
|
|
202
204
|
}.sbw-error-text.svelte-1dxdgqu {margin:0.75rem 0 0;font-size:0.8125rem;color:var(--sbw-danger-color, #dc2626);}
|
|
203
205
|
|
|
204
|
-
/* --- Success --- */.sbw-success.svelte-1dxdgqu {max-width:var(--sbw-form-max-width, 40rem);margin:3rem auto 0;text-align:center;}.sbw-success-icon.svelte-1dxdgqu {display:flex;align-items:center;justify-content:center;width:3rem;height:3rem;margin:0 auto 1rem;border-radius:9999px;background:var(--sbw-success-bg, #c49e5a);color:#fff;}.sbw-success-icon.svelte-1dxdgqu svg:where(.svelte-1dxdgqu) {width:1.5rem;height:1.5rem;}.sbw-success.svelte-1dxdgqu .sbw-summary:where(.svelte-1dxdgqu) {margin-top:2rem;text-align:left;}.sbw-success.svelte-1dxdgqu p:where(.svelte-1dxdgqu) {margin:0;font-size:1.125rem;}`};function
|
|
205
|
-
${t??``}`)},[()=>d(Ft).toLocaleDateString(P(),{day:`numeric`,month:`short`}),()=>d(Ft).toLocaleTimeString(P(),{hour:`2-digit`,minute:`2-digit`})]),p(e,t)};f(w,e=>{d(a)&&d(Ft)&&e(E)});var ee=h(w,2),D=e=>{var t=De(),n=M(t),r=M(n,!0);x(n);var i=h(n,2),a=M(i);x(i),x(t),o(e=>{A(r,d(B).totalLabel),A(a,`£${e??``}`)},[()=>d(Z).amount.toFixed(2)]),p(e,t)};f(ee,e=>{!N()&&d(Z)&&e(D)});var O=h(ee,2),te=e=>{var r=i(),a=n(r),s=e=>{var t=je(),r=n(t),i=M(r),a=e=>{var t=Oe();p(e,t)};f(i,e=>{d(Q)&&e(a)});var s=h(i,2),c=M(s,!0);x(s),x(r);var l=h(r,2),u=e=>{var t=ke(),n=M(t,!0);x(t),o(()=>A(n,d(B).noChangeHint)),p(e,t)};f(l,e=>{d(Kt)&&e(u)});var m=h(l,2),g=e=>{var t=Ae(),n=M(t,!0);x(t),o(()=>A(n,d($))),p(e,t)};f(m,e=>{d($)&&e(g)}),o(()=>{r.disabled=!d(Y)||d(Q)||d(Kt),A(c,d(Q)?d(B).confirmingLabel:d(B).confirmRescheduleLabel)}),T(`click`,r,yn),p(e,t)},c=e=>{var t=Me(),r=n(t),i=M(r,!0);x(r);var a=h(r,2),s=M(a);x(a),o(()=>{r.disabled=!d(Y),A(i,d(B).continueLabel),A(s,`← ${d(B).changeServiceLabel??``}`)}),T(`click`,r,on),T(`click`,a,cn),p(e,t)},l=e=>{var t=Ne(),r=n(t),i=M(r),a=e=>{var t=Oe();p(e,t)};f(i,e=>{d(Q)&&e(a)});var s=h(i,2),c=M(s,!0);x(s),x(r);var l=h(r,2),u=e=>{var t=Ae(),n=M(t,!0);x(t),o(()=>A(n,d($))),p(e,t)};f(l,e=>{d($)&&e(u)});var m=h(l,2),g=M(m);x(m),o(()=>{r.disabled=d(Q),A(c,d(Q)?d(B).confirmingLabel:d(B).confirmLabel),A(g,`← ${d(B).backLabel??``}`)}),T(`click`,m,sn),p(e,t)};f(a,e=>{t()&&ct()?e(s):t()?e(c,1):e(l,-1)}),p(e,r)};f(O,e=>{d(a)||e(te)}),x(r),o(()=>A(l,d(H).name)),p(e,r)};f(c,e=>{d(H)&&e(l)}),p(e,s)},ve={chooseServiceLabel:`Choose a Service`,loadingServices:`Loading services…`,loadServicesError:`Could not load services. Please try again later.`,previousMonth:`Previous month`,nextMonth:`Next month`,morningLabel:`Morning`,afternoonLabel:`Afternoon`,eveningLabel:`Evening`,pickDayHint:`Pick a day to see times.`,noSlotsForDay:`No times available this day.`,noChangeHint:`Pick a different date or time to continue.`,therapistFilterLabel:`Therapist`,anyTherapistLabel:`Any therapist`,staffRowLabel:`Staff`,bookedAtLabel:`Booked`,totalLabel:`Total`,continueLabel:`Continue`,changeServiceLabel:`Change service`,backLabel:`Back`,nameLabel:`Name`,namePlaceholder:`Jane Smith`,emailLabel:`Email`,emailPlaceholder:`jane@email.com`,emailInvalidTitle:`Enter a valid email address, e.g. jane@email.com`,phoneLabel:`Phone (optional)`,phonePlaceholder:`+1 555 123 4567`,notesLabel:`Notes (optional)`,notesPlaceholder:`Anything we should know?`,confirmingLabel:`Booking…`,confirmLabel:`Confirm Booking`,confirmRescheduleLabel:`Confirm change`,notWiredError:`This widget is not wired up to make bookings yet.`,genericSubmitError:`Something went wrong booking that slot. Please try again.`,successMessage:`Booked! Check your email for confirmation.`,memberRateLabel:`Regulars' rate`,membersOnlyLabel:`Regulars only`,membersOnlyHint:`For clients who've visited in the last 4 weeks.`},rt=E(r,`heading`,7,`Book a Service`),it=E(r,`logoUrl`,7),at=E(r,`tagline`,7,``),ot=E(r,`description`,7,``),st=E(r,`staffLabel`,7,``),N=E(r,`hidePrice`,7,!1),ct=E(r,`skipDetailsStep`,7,!1),lt=E(r,`emailOptional`,7,!1),ut=E(r,`closedWeekdays`,23,()=>[]),P=E(r,`locale`,7),dt=E(r,`initialTreatmentTitle`,7),F=E(r,`initialDate`,7),ft=E(r,`initialTime`,7),I=E(r,`initialName`,7),L=E(r,`initialEmail`,7),R=E(r,`initialPhone`,7),z=E(r,`memberUntil`,7),pt=E(r,`strings`,7),mt=E(r,`fetchTreatments`,7),ht=E(r,`fetchTherapists`,7),gt=E(r,`fetchAvailability`,7),_t=E(r,`submitBooking`,7),B=s(()=>({...ve,...pt()})),vt=s(()=>he(P())),yt=s(()=>fe(P())),V=g(`service`),bt=g(a([])),xt=g(!0),St=g(!1),H=g(null);l(()=>{let e=mt();if(!e)return;let t=!1;return m(xt,!0),m(St,!1),e().then(e=>{if(!t){if(!e?.length)throw Error(`empty`);m(bt,e,!0)}}).catch(()=>{t||m(St,!0)}).finally(()=>{t||m(xt,!1)}),()=>{t=!0}});let Ct=g(a([])),U=g(``),W=g(!1),wt=g(void 0),Tt=g(void 0);l(()=>{let e=ht();if(!e)return;let t=!1;return e().then(e=>{t||m(Ct,e??[],!0)}).catch(()=>{t||m(Ct,[],!0)}),()=>{t=!0}});let Et=s(()=>d(Ct).find(e=>e.id===d(U))?.name);function Dt(){m(W,!d(W))}function Ot(e){m(U,e,!0),m(W,!1)}l(()=>{if(!d(W)||!d(wt)||!d(Tt))return;let e=d(wt),t=d(Tt);t.style.minWidth=`${e.getBoundingClientRect().width}px`,t.showPopover();let n=de(e,t,async()=>{let{x:n,y:r}=await le(e,t,{strategy:`fixed`,placement:`bottom-start`,middleware:[ce(4),ue(),se({padding:12})]});t.style.left=`${n}px`,t.style.top=`${r}px`});function r(e){e.newState===`closed`&&m(W,!1)}return t.addEventListener(`toggle`,r),()=>{n(),t.removeEventListener(`toggle`,r),t.matches(`:popover-open`)&&t.hidePopover()}});let kt=e=>e.trim().toLowerCase(),At;l(()=>{let e=dt();if(!e||e===At||!d(bt).length)return;let t=d(bt).find(t=>kt(t.name)===kt(e));t&&(At=e,Mt(t))});let jt;l(()=>{if(!F()||!d(H)||F()===jt)return;jt=F();let[e,t,n]=F().split(`-`).map(Number);m(K,e,!0),m(q,t-1),m(J,new Date(e,t-1,n),!0),m(Y,ft()??null,!0)});function Mt(e){m(H,e,!0),m(J,null),m(Y,null),Rt=0,m(V,`datetime`)}let Nt,Pt=!1;l(()=>{let e=gt();if(!Pt){Pt=!0,Nt=e;return}e===Nt||ct()||(Nt=e,d(V)!==`service`&&m(V,`service`),m(H,null),m(J,null),m(Y,null),Rt=0)});let G=me(new Date),K=g(a(G.getFullYear())),q=g(a(G.getMonth())),J=g(null),Y=g(null),Ft=g(null),It=g(a(new Map)),Lt=g(!1),Rt=0,zt=ge(G);function Bt(e,t){return e.memberPrice!=null&&!!z()&&t<=z()}function Vt(e,t){return Bt(e,t)||e.price==null?{amount:e.memberPrice??0,member:!0}:{amount:e.price,member:!1}}function Ht(e){return e.price!=null||Bt(e,zt)}let Ut=s(()=>_e(d(K),d(q),G,ut()??[])),Wt=s(()=>d(K)!==G.getFullYear()||d(q)!==G.getMonth()),X=s(()=>d(J)?ge(d(J)):null),Z=s(()=>d(H)?Vt(d(H),d(X)??zt):null),Gt=s(()=>d(X)?d(It).get(d(X))??[]:[]),Kt=s(()=>ct()&&!!d(Y)&&d(X)===F()&&d(Y)===ft()),qt=s(()=>{let e={morning:[],afternoon:[],evening:[]};for(let t of d(Gt)){let n=parseInt(t.slice(0,2),10);n<12?e.morning.push(t):n<17?e.afternoon.push(t):e.evening.push(t)}return e});function Jt(e){return d(It).get(e)?.length??0}function Yt(e){let t=Jt(e);return t===0?0:t<=5?1:t<=10?2:3}function Xt(){if(d(J))return;let e=d(Ut).find(e=>e.inMonth&&!e.isPast&&Yt(e.iso)>0);e?(m(J,e.date,!0),m(Y,null)):Rt<3&&(Rt++,nn())}function Zt(){let e=gt();if(!e||!d(H))return;let t=ge(new Date(d(K),d(q),1)),n=ge(new Date(d(K),d(q)+1,0)),r=d(H).id,i=d(U)||void 0;m(Lt,!0),e(t,n,r,i).then(e=>{if(d(H)?.id!==r||(d(U)||void 0)!==i)return;let t=new Map;for(let n of e??[])t.set(String(n.date).split(`T`)[0],n.slots.map(e=>e.time));m(It,t,!0),Xt()}).catch(()=>{m(It,new Map,!0)}).finally(()=>{m(Lt,!1)})}l(()=>{d(H),d(U),d(K),d(q),z(),Zt()});let Qt=``;l(()=>{d(U)!==Qt&&(Qt=d(U),m(J,null),m(Y,null))}),l(()=>{!d(X)||d(Y)||d(Gt).length>0&&m(Y,d(Gt)[0],!0)});function $t(){d(J)&&(d(J).getFullYear()!==d(K)||d(J).getMonth()!==d(q))&&(m(J,null),m(Y,null))}function en(e){e.classList.remove(`sbw-cal-nav-pulse`),e.offsetWidth,e.classList.add(`sbw-cal-nav-pulse`),e.addEventListener(`animationend`,()=>e.classList.remove(`sbw-cal-nav-pulse`),{once:!0})}function tn(){d(Wt)&&(m(q,d(q)-1),d(q)<0&&(m(q,11),m(K,d(K)-1)),$t())}function nn(){m(q,d(q)+1),d(q)>11&&(m(q,0),m(K,d(K)+1)),$t()}function rn(e){!e.inMonth||e.isPast||Yt(e.iso)===0||(m(J,e.date,!0),m(Y,null))}function an(e){m(Y,e,!0)}function on(){d(Y)&&m(V,`details`)}function sn(){m(V,`datetime`)}function cn(){m(V,`service`)}let ln=g(``),un=g(``),dn=g(``),fn=g(``),Q=g(!1),$=g(``),pn=!1,mn=!1,hn=!1;l(()=>{I()&&!pn&&!d(ln)&&(m(ln,I(),!0),pn=!0)}),l(()=>{L()&&!mn&&!d(un)&&(m(un,L(),!0),mn=!0)}),l(()=>{R()&&!hn&&!d(dn)&&(m(dn,R(),!0),hn=!0)});function gn(e,t){r.$$host?.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}async function _n(e){if(!_t()){m($,d(B).notWiredError,!0);return}m($,``),m(Q,!0);try{let t=await _t()(e);if(!t.ok)throw Error(t.error||`request failed`);m(Ft,new Date,!0),m(V,`success`),gn(`booking-submitted`,e)}catch(e){m($,e instanceof Error&&e.message!==`request failed`?e.message:d(B).genericSubmitError,!0),Zt()}finally{m(Q,!1)}}async function vn(e){e.preventDefault(),!(!d(H)||!d(X)||!d(Y))&&await _n({treatmentId:d(H).id,date:d(X),time:d(Y),therapistId:d(U)||void 0,name:d(ln),email:d(un),phone:d(dn),notes:d(fn)})}async function yn(){!d(H)||!d(X)||!d(Y)||await _n({treatmentId:d(H).id,date:d(X),time:d(Y),therapistId:d(U)||void 0,name:I()??``,email:L()??``,phone:R()??``,notes:``})}var bn={get heading(){return rt()},set heading(e=`Book a Service`){rt(e),c()},get logoUrl(){return it()},set logoUrl(e){it(e),c()},get tagline(){return at()},set tagline(e=``){at(e),c()},get description(){return ot()},set description(e=``){ot(e),c()},get staffLabel(){return st()},set staffLabel(e=``){st(e),c()},get hidePrice(){return N()},set hidePrice(e=!1){N(e),c()},get skipDetailsStep(){return ct()},set skipDetailsStep(e=!1){ct(e),c()},get emailOptional(){return lt()},set emailOptional(e=!1){lt(e),c()},get closedWeekdays(){return ut()},set closedWeekdays(e=[]){ut(e),c()},get locale(){return P()},set locale(e){P(e),c()},get initialTreatmentTitle(){return dt()},set initialTreatmentTitle(e){dt(e),c()},get initialDate(){return F()},set initialDate(e){F(e),c()},get initialTime(){return ft()},set initialTime(e){ft(e),c()},get initialName(){return I()},set initialName(e){I(e),c()},get initialEmail(){return L()},set initialEmail(e){L(e),c()},get initialPhone(){return R()},set initialPhone(e){R(e),c()},get memberUntil(){return z()},set memberUntil(e){z(e),c()},get strings(){return pt()},set strings(e){pt(e),c()},get fetchTreatments(){return mt()},set fetchTreatments(e){mt(e),c()},get fetchTherapists(){return ht()},set fetchTherapists(e){ht(e),c()},get fetchAvailability(){return gt()},set fetchAvailability(e){gt(e),c()},get submitBooking(){return _t()},set submitBooking(e){_t(e),c()}},xn=tt(),Sn=M(xn),Cn=t=>{var a=ze(),s=M(a),c=e=>{var t=Fe();o(()=>k(t,`src`,it())),p(e,t)};f(s,e=>{it()&&e(c)});var l=h(s,2);ae(l,r,`heading`,{},t=>{var r=i(),a=n(r),s=t=>{var r=Ie(),i=n(r),a=M(i,!0);x(i),e(2),o(()=>A(a,rt())),p(t,r)};f(a,e=>{rt()&&e(s)}),p(t,r)});var u=h(l,2),d=e=>{var t=Le(),n=M(t,!0);x(t),o(()=>A(n,at())),p(e,t)};f(u,e=>{at()&&e(d)});var m=h(u,2);ae(m,r,`description`,{},e=>{var t=i(),r=n(t),a=e=>{var t=Re(),n=M(t,!0);x(t),o(()=>A(n,ot())),p(e,t)};f(r,e=>{ot()&&e(a)}),p(e,t)}),x(a),p(t,a)};f(Sn,e=>{d(V)!==`success`&&e(Cn)});var wn=h(Sn,2),Tn=e=>{var t=We(),n=M(t),r=M(n,!0);x(n);var i=h(n,2),a=e=>{var t=ke(),n=M(t,!0);x(t),o(()=>A(n,d(B).loadingServices)),p(e,t)},c=e=>{var t=Ae(),n=M(t,!0);x(t),o(()=>A(n,d(B).loadServicesError)),p(e,t)},l=e=>{var t=Ue();j(t,21,()=>d(bt),e=>e.id,(e,t)=>{let n=s(()=>Ht(d(t)));var r=He(),i=M(r),a=M(i),c=M(a),l=h(c),u=e=>{var t=Be(),n=M(t,!0);x(t),o(()=>A(n,d(B).membersOnlyHint)),p(e,t)};f(l,e=>{d(n)||e(u)}),x(a);var m=h(a,2),g=e=>{var n=Ve(),r=M(n),i=M(r);x(r);var a=h(r,2),s=e=>{var t=Be(),n=M(t,!0);x(t),o(()=>A(n,d(B).membersOnlyLabel)),p(e,t)},c=e=>{var n=Be(),r=M(n);x(n),o(e=>A(r,`${d(B).memberRateLabel??``} £${e??``}`),[()=>d(t).memberPrice.toFixed(2)]),p(e,n)};f(a,e=>{d(t).price==null?e(s):d(t).memberPrice!=null&&e(c,1)}),x(n),o(e=>A(i,`£${e??``}`),[()=>(d(t).price??d(t).memberPrice??0).toFixed(2)]),p(e,n)};f(m,e=>{N()||e(g)}),x(i),x(r),o(()=>{i.disabled=!d(n),A(c,`${d(t).name??``} `)}),T(`click`,i,()=>Mt(d(t))),p(e,r)}),x(t),p(e,t)};f(i,e=>{d(xt)?e(a):d(St)?e(c,1):e(l,-1)}),x(t),o(()=>A(r,d(B).chooseServiceLabel)),p(e,t)},En=e=>{var t=Qe(),r=M(t),a=M(r),c=M(a),l=M(c),u=M(l);x(l);var g=h(l,2),_=e=>{var t=Ke(),n=M(t),r=M(n,!0);x(n);var i=h(n,2),a=M(i),s=M(a,!0);x(a);var c=h(a,2);let l;x(i),te(i,e=>m(wt,e),()=>d(wt));var u=h(i,2),f=M(u),g=M(f),_=M(g,!0);x(g),x(f);var v=h(f,2);j(v,17,()=>d(Ct),e=>e.id,(e,t)=>{var n=Ge(),r=M(n),i=M(r,!0);x(r),x(n),o(()=>{k(r,`aria-selected`,d(t).id===d(U)),A(i,d(t).name)}),T(`click`,r,()=>Ot(d(t).id)),p(e,n)}),x(u),te(u,e=>m(Tt,e),()=>d(Tt)),x(t),o(()=>{A(r,d(B).therapistFilterLabel),k(i,`aria-expanded`,d(W)),A(s,d(Et)??d(B).anyTherapistLabel),l=S(c,0,`sbw-chevron svelte-1dxdgqu`,null,l,{"sbw-chevron-open":d(W)}),k(u,`aria-label`,d(B).therapistFilterLabel),k(g,`aria-selected`,!d(U)),A(_,d(B).anyTherapistLabel)}),T(`click`,i,Dt),T(`click`,g,()=>Ot(``)),p(e,t)};f(g,e=>{d(Ct).length&&e(_)});var v=h(g,2),y=M(v),b=h(y,2);x(v),x(c);var C=h(c,2);j(C,20,()=>d(yt),e=>e,(e,t)=>{var n=xe(),r=M(n,!0);x(n),o(()=>A(r,t)),p(e,n)}),x(C);var w=h(C,2);j(w,21,()=>d(Ut),e=>e.iso,(e,t)=>{let n=s(()=>Yt(d(t).iso)),r=s(()=>d(t).inMonth&&!d(t).isPast&&d(n)>0);var i=Je();let a;var c=M(i),l=M(c,!0);x(c);var u=h(c,2),m=e=>{var t=qe();o(()=>S(t,1,`sbw-dot sbw-dot-${d(n)??``}`,`svelte-1dxdgqu`)),p(e,t)};f(u,e=>{d(r)&&e(m)}),x(i),o(()=>{a=S(i,1,`sbw-cal-cell svelte-1dxdgqu`,null,a,{"sbw-cal-cell-off":!d(t).inMonth||d(t).isPast,"sbw-cal-cell-selected":d(X)===d(t).iso}),i.disabled=!d(r),A(l,d(t).dayNumber)}),T(`click`,i,()=>rn(d(t))),p(e,i)}),x(w),x(a);var E=h(a,2),ee=M(E),D=e=>{var t=ke(),n=M(t,!0);x(t),o(()=>A(n,d(B).pickDayHint)),p(e,t)},O=e=>{var t=ke(),n=M(t,!0);x(t),o(()=>A(n,d(B).loadingServices)),p(e,t)},ie=e=>{var t=ke(),n=M(t,!0);x(t),o(()=>A(n,d(B).noSlotsForDay)),p(e,t)},ae=e=>{var t=Ze();j(t,21,()=>[[`morning`,d(B).morningLabel],[`afternoon`,d(B).afternoonLabel],[`evening`,d(B).eveningLabel]],([e,t])=>e,(e,t)=>{var r=s(()=>ne(d(t),2));let a=()=>d(r)[0],c=()=>d(r)[1],l=s(()=>d(qt)[a()]);var u=i(),m=n(u),g=e=>{var t=Xe(),n=M(t),r=M(n);x(n);var i=h(n,2);j(i,20,()=>d(l),e=>e,(e,t)=>{var n=Ye();let r;var i=M(n,!0);x(n),o(()=>{r=S(n,1,`sbw-slot-btn svelte-1dxdgqu`,null,r,{"sbw-slot-btn-selected":d(Y)===t}),A(i,t)}),T(`click`,n,()=>an(t)),p(e,n)}),x(i),x(t),o(()=>A(r,`${c()??``} (${d(l).length??``})`)),p(e,t)};f(m,e=>{d(l).length&&e(g)}),p(e,u)}),x(t),p(e,t)};f(ee,e=>{d(X)?d(Lt)?e(O,1):d(Gt).length?e(ae,-1):e(ie,2):e(D)}),x(E),x(r);var oe=h(r,2);re(oe,()=>!0),x(t),o(()=>{A(u,`${d(vt)[d(q)]??``} ${d(K)??``}`),y.disabled=!d(Wt),k(y,`aria-label`,d(B).previousMonth),k(b,`aria-label`,d(B).nextMonth),k(w,`aria-busy`,d(Lt))}),T(`click`,y,e=>{en(e.currentTarget),tn()}),T(`click`,b,e=>{en(e.currentTarget),nn()}),p(e,t)},Dn=e=>{var t=$e(),n=M(t),r=M(n),i=M(r),a=M(i),s=M(a,!0);x(a);var c=h(a,2);D(c),x(i);var l=h(i,2),f=M(l),g=M(f,!0);x(f);var _=h(f,2);D(_),x(l);var y=h(l,2),b=M(y),S=M(b,!0);x(b);var C=h(b,2);D(C),x(y),x(r);var T=h(r,2),E=M(T),ee=M(E,!0);x(E);var O=h(E,2);v(O),x(T),x(n);var te=h(n,2);re(te,()=>!1),x(t),o(()=>{A(s,d(B).nameLabel),k(c,`placeholder`,d(B).namePlaceholder),A(g,lt()?`${d(B).emailLabel} (optional)`:d(B).emailLabel),_.required=!lt(),k(_,`title`,d(B).emailInvalidTitle),k(_,`placeholder`,d(B).emailPlaceholder),A(S,d(B).phoneLabel),k(C,`placeholder`,d(B).phonePlaceholder),A(ee,d(B).notesLabel),k(O,`placeholder`,d(B).notesPlaceholder)}),u(`submit`,t,vn),w(c,()=>d(ln),e=>m(ln,e)),w(_,()=>d(un),e=>m(un,e)),w(C,()=>d(dn),e=>m(dn,e)),w(O,()=>d(fn),e=>m(fn,e)),p(e,t)},On=e=>{var t=et(),n=h(M(t),2),r=M(n,!0);x(n);var i=h(n,2);re(i,()=>!1,()=>!0),x(t),o(()=>A(r,d(B).successMessage)),p(e,t)};return f(wn,e=>{d(V)===`service`?e(Tn):d(V)===`datetime`&&d(H)?e(En,1):d(V)===`details`&&d(H)?e(Dn,2):d(V)===`success`&&e(On,3)}),x(xn),p(t,xn),_(bn)}t([`click`]),customElements.define(`spa-booking-widget`,re(rt,{heading:{attribute:`heading`,type:`String`},logoUrl:{attribute:`logo-url`,type:`String`},tagline:{attribute:`tagline`,type:`String`},description:{attribute:`description`,type:`String`},staffLabel:{attribute:`staff-label`,type:`String`},hidePrice:{attribute:`hide-price`,type:`Boolean`},skipDetailsStep:{attribute:`skip-details-step`,type:`Boolean`},emailOptional:{attribute:`email-optional`,type:`Boolean`},closedWeekdays:{attribute:`closed-weekdays`,type:`Array`},initialTreatmentTitle:{attribute:`initial-treatment-title`,type:`String`},initialDate:{attribute:`initial-date`,type:`String`},initialTime:{attribute:`initial-time`,type:`String`},initialName:{attribute:`initial-name`,type:`String`},initialEmail:{attribute:`initial-email`,type:`String`},initialPhone:{attribute:`initial-phone`,type:`String`},memberUntil:{attribute:`member-until`,type:`String`},locale:{attribute:`locale`,type:`String`},strings:{type:`Object`},fetchTreatments:{type:`Object`},fetchTherapists:{type:`Object`},fetchAvailability:{type:`Object`},submitBooking:{type:`Object`}},[`heading`,`description`],[],{mode:`open`}));
|
|
206
|
+
/* --- Success --- */.sbw-success.svelte-1dxdgqu {max-width:var(--sbw-form-max-width, 40rem);margin:3rem auto 0;text-align:center;}.sbw-success-icon.svelte-1dxdgqu {display:flex;align-items:center;justify-content:center;width:3rem;height:3rem;margin:0 auto 1rem;border-radius:9999px;background:var(--sbw-success-bg, #c49e5a);color:#fff;}.sbw-success-icon.svelte-1dxdgqu svg:where(.svelte-1dxdgqu) {width:1.5rem;height:1.5rem;}.sbw-success.svelte-1dxdgqu .sbw-summary:where(.svelte-1dxdgqu) {margin-top:2rem;text-align:left;}.sbw-success.svelte-1dxdgqu p:where(.svelte-1dxdgqu) {margin:0;font-size:1.125rem;}`};function lt(t,r){b(r,!0),w(t,ct);let ie=(e,t=ee,r)=>{let a=O(()=>ae(r?.(),!1));var s=i(),c=n(s),l=e=>{var r=Le(),s=M(r),c=M(s),l=M(c,!0);S(c);var u=g(c,2),f=e=>{var t=Ce(),n=M(t);S(t),o(e=>A(n,`£${e??``}`),[()=>d(J).amount.toFixed(2)]),m(e,t)};p(u,e=>{!N()&&d(J)&&e(f)}),S(s);var h=g(s,2),_=e=>{var t=Te(),n=M(t),r=M(n,!0);S(n);var i=g(n,2),a=e=>{var t=we(),n=M(t);S(t),o(e=>A(n,`−£${e??``}`),[()=>(d(z).price-d(J).amount).toFixed(2)]),m(e,t)};p(i,e=>{d(z).price!=null&&d(z).price>d(J).amount&&e(a)}),S(t),o(()=>A(r,d(L).memberRateLabel)),m(e,t)};p(h,e=>{!N()&&d(J)?.member&&e(_)});var v=g(h,2),y=e=>{var t=Ee(),n=M(t),r=M(n,!0);S(n);var i=g(n,2),a=M(i,!0);S(i),S(t),o(()=>{A(r,d(L).staffRowLabel),A(a,pt())}),m(e,t)};p(v,e=>{pt()&&e(y)});var b=g(v,2),C=e=>{var t=Oe(),n=M(t),r=M(n,!0);S(n);var i=g(n,2);se(i,()=>d(K),e=>{var t=De(),n=M(t,!0);S(t),o(()=>A(n,d(K))),x(1,t,()=>Se,()=>({duration:200})),m(e,t)}),S(t),o(e=>A(r,e),[()=>me(d(G),F())]),m(e,t)};p(b,e=>{d(G)&&d(K)&&e(C)});var w=g(b,2),T=e=>{var t=ke(),n=M(t),r=M(n,!0);S(n);var i=g(n,2),a=M(i);S(i),S(t),o((e,t)=>{A(r,d(L).bookedAtLabel),A(a,`${e??``}
|
|
207
|
+
${t??``}`)},[()=>d(qt).toLocaleDateString(F(),{day:`numeric`,month:`short`}),()=>d(qt).toLocaleTimeString(F(),{hour:`2-digit`,minute:`2-digit`})]),m(e,t)};p(w,e=>{d(a)&&d(qt)&&e(T)});var D=g(w,2),ee=e=>{var t=Ae(),n=M(t),r=M(n,!0);S(n);var i=g(n,2),a=M(i);S(i),S(t),o(e=>{A(r,d(L).totalLabel),A(a,`£${e??``}`)},[()=>d(J).amount.toFixed(2)]),m(e,t)};p(D,e=>{!N()&&d(J)&&e(ee)});var te=g(D,2),O=e=>{var r=i(),a=n(r),s=e=>{var t=Pe(),r=n(t),i=M(r),a=e=>{var t=je();m(e,t)};p(i,e=>{d(Z)&&e(a)});var s=g(i,2),c=M(s,!0);S(s),S(r);var l=g(r,2),u=e=>{var t=Me(),n=M(t,!0);S(t),o(()=>A(n,d(L).noChangeHint)),m(e,t)};p(l,e=>{d(an)&&e(u)});var f=g(l,2),h=e=>{var t=Ne(),n=M(t,!0);S(t),o(()=>A(n,d(Q))),m(e,t)};p(f,e=>{d(Q)&&e(h)}),o(()=>{r.disabled=!d(K)||d(Z)||d(an),A(c,d(Z)?d(L).confirmingLabel:d(L).confirmRescheduleLabel)}),E(`click`,r,Gn),m(e,t)},c=e=>{var t=Fe(),r=n(t),i=M(r,!0);S(r);var a=g(r,2),s=M(a);S(a),o(()=>{r.disabled=!d(K),A(i,d(L).continueLabel),A(s,`← ${d(L).changeServiceLabel??``}`)}),E(`click`,r,vn),E(`click`,a,bn),m(e,t)},l=e=>{var t=Ie(),r=n(t),i=M(r),a=e=>{var t=je();m(e,t)};p(i,e=>{d(Z)&&e(a)});var s=g(i,2),c=M(s,!0);S(s),S(r);var l=g(r,2),u=e=>{var t=Ne(),n=M(t,!0);S(t),o(()=>A(n,d(Q))),m(e,t)};p(l,e=>{d(Q)&&e(u)});var f=g(l,2),h=M(f);S(f),o(()=>{r.disabled=d(Z)||d(Fn),A(c,d(Z)?d(L).confirmingLabel:d(En)?d(L).confirmPayLabel:d(L).confirmLabel),A(h,`← ${d(L).backLabel??``}`)}),E(`click`,f,yn),m(e,t)};p(a,e=>{t()&&P()?e(s):t()?e(c,1):e(l,-1)}),m(e,r)};p(te,e=>{d(a)||e(O)}),S(r),o(()=>A(l,d(z).name)),m(e,r)};p(c,e=>{d(z)&&e(l)}),m(e,s)},xe={chooseServiceLabel:`Choose a Service`,loadingServices:`Loading services…`,loadServicesError:`Could not load services. Please try again later.`,previousMonth:`Previous month`,nextMonth:`Next month`,morningLabel:`Morning`,afternoonLabel:`Afternoon`,eveningLabel:`Evening`,pickDayHint:`Pick a day to see times.`,noSlotsForDay:`No times available this day.`,noChangeHint:`Pick a different date or time to continue.`,therapistFilterLabel:`Therapist`,anyTherapistLabel:`Any therapist`,staffRowLabel:`Staff`,bookedAtLabel:`Booked`,totalLabel:`Total`,continueLabel:`Continue`,changeServiceLabel:`Change service`,backLabel:`Back`,nameLabel:`Name`,namePlaceholder:`Jane Smith`,emailLabel:`Email`,emailPlaceholder:`jane@email.com`,emailInvalidTitle:`Enter a valid email address, e.g. jane@email.com`,phoneLabel:`Phone (optional)`,phonePlaceholder:`+1 555 123 4567`,notesLabel:`Notes (optional)`,notesPlaceholder:`Anything we should know?`,confirmingLabel:`Booking…`,confirmLabel:`Confirm Booking`,confirmRescheduleLabel:`Confirm change`,notWiredError:`This widget is not wired up to make bookings yet.`,genericSubmitError:`Something went wrong booking that slot. Please try again.`,successMessage:`Booked! Check your email for confirmation.`,memberRateLabel:`Regulars' rate`,membersOnlyLabel:`Regulars only`,membersOnlyHint:`For clients who've visited in the last 4 weeks.`,paymentLabel:`Payment`,paymentDueLabel:`due now`,paymentHint:``,paymentUnavailable:`Payment form unavailable — refresh to try again.`,paymentNotReady:`Payment form is not ready yet — please wait a moment and try again.`,paymentFailed:`Your payment could not be completed. Please try again.`,confirmPayLabel:`Pay & Confirm`},lt=D(r,`heading`,7,`Book a Service`),ut=D(r,`logoUrl`,7),dt=D(r,`tagline`,7,``),ft=D(r,`description`,7,``),pt=D(r,`staffLabel`,7,``),N=D(r,`hidePrice`,7,!1),P=D(r,`skipDetailsStep`,7,!1),mt=D(r,`emailOptional`,7,!1),ht=D(r,`closedWeekdays`,23,()=>[]),F=D(r,`locale`,7),gt=D(r,`initialTreatmentTitle`,7),I=D(r,`initialDate`,7),_t=D(r,`initialTime`,7),vt=D(r,`initialName`,7),yt=D(r,`initialEmail`,7),bt=D(r,`initialPhone`,7),xt=D(r,`memberUntil`,7),St=D(r,`strings`,7),Ct=D(r,`fetchTreatments`,7),wt=D(r,`fetchTherapists`,7),Tt=D(r,`fetchAvailability`,7),Et=D(r,`submitBooking`,7),Dt=D(r,`createPaymentIntent`,7),Ot=D(r,`stripePublishableKey`,7),kt=D(r,`stripeAppearance`,7),L=s(()=>({...xe,...St()})),At=s(()=>ge(F())),jt=s(()=>pe(F())),R=_(`service`),Mt=_(a([])),Nt=_(!0),Pt=_(!1),z=_(null);l(()=>{let e=Ct();if(!e)return;let t=!1;return h(Nt,!0),h(Pt,!1),e().then(e=>{if(!t){if(!e?.length)throw Error(`empty`);h(Mt,e,!0)}}).catch(()=>{t||h(Pt,!0)}).finally(()=>{t||h(Nt,!1)}),()=>{t=!0}});let Ft=_(a([])),B=_(``),V=_(!1),It=_(void 0),Lt=_(void 0);l(()=>{let e=wt();if(!e)return;let t=!1;return e().then(e=>{t||h(Ft,e??[],!0)}).catch(()=>{t||h(Ft,[],!0)}),()=>{t=!0}});let Rt=s(()=>d(Ft).find(e=>e.id===d(B))?.name);function zt(){h(V,!d(V))}function Bt(e){h(B,e,!0),h(V,!1)}l(()=>{if(!d(V)||!d(It)||!d(Lt))return;let e=d(It),t=d(Lt);t.style.minWidth=`${e.getBoundingClientRect().width}px`,t.showPopover();let n=fe(e,t,async()=>{let{x:n,y:r}=await ue(e,t,{strategy:`fixed`,placement:`bottom-start`,middleware:[le(4),de(),ce({padding:12})]});t.style.left=`${n}px`,t.style.top=`${r}px`});function r(e){e.newState===`closed`&&h(V,!1)}return t.addEventListener(`toggle`,r),()=>{n(),t.removeEventListener(`toggle`,r),t.matches(`:popover-open`)&&t.hidePopover()}});let Vt=e=>e.trim().toLowerCase(),Ht;l(()=>{let e=gt();if(!e||e===Ht||!d(Mt).length)return;let t=d(Mt).find(t=>Vt(t.name)===Vt(e));t&&(Ht=e,Wt(t))});let Ut;l(()=>{if(!I()||!d(z)||I()===Ut)return;Ut=I();let[e,t,n]=I().split(`-`).map(Number);h(U,e,!0),h(W,t-1),h(G,new Date(e,t-1,n),!0),h(K,_t()??null,!0)});function Wt(e){h(z,e,!0),h(G,null),h(K,null),Xt=0,h(R,`datetime`)}let Gt,Kt=!1;l(()=>{let e=Tt();if(!Kt){Kt=!0,Gt=e;return}e===Gt||P()||(Gt=e,d(R)!==`service`&&h(R,`service`),h(z,null),h(G,null),h(K,null),Xt=0)});let H=he(new Date),U=_(a(H.getFullYear())),W=_(a(H.getMonth())),G=_(null),K=_(null),qt=_(null),Jt=_(a(new Map)),Yt=_(!1),Xt=0,Zt=_e(H);function Qt(e,t){return e.memberPrice!=null&&!!xt()&&t<=xt()}function $t(e,t){return Qt(e,t)||e.price==null?{amount:e.memberPrice??0,member:!0}:{amount:e.price,member:!1}}function en(e){return e.price!=null||Qt(e,Zt)}let tn=s(()=>ve(d(U),d(W),H,ht()??[])),nn=s(()=>d(U)!==H.getFullYear()||d(W)!==H.getMonth()),q=s(()=>d(G)?_e(d(G)):null),J=s(()=>d(z)?$t(d(z),d(q)??Zt):null),rn=s(()=>d(q)?d(Jt).get(d(q))??[]:[]),an=s(()=>P()&&!!d(K)&&d(q)===I()&&d(K)===_t()),on=s(()=>{let e={morning:[],afternoon:[],evening:[]};for(let t of d(rn)){let n=parseInt(t.slice(0,2),10);n<12?e.morning.push(t):n<17?e.afternoon.push(t):e.evening.push(t)}return e});function sn(e){return d(Jt).get(e)?.length??0}function cn(e){let t=sn(e);return t===0?0:t<=5?1:t<=10?2:3}function ln(){if(d(G))return;let e=d(tn).find(e=>e.inMonth&&!e.isPast&&cn(e.iso)>0);e?(h(G,e.date,!0),h(K,null)):Xt<3&&(Xt++,hn())}function un(){let e=Tt();if(!e||!d(z))return;let t=_e(new Date(d(U),d(W),1)),n=_e(new Date(d(U),d(W)+1,0)),r=d(z).id,i=d(B)||void 0;h(Yt,!0),e(t,n,r,i).then(e=>{if(d(z)?.id!==r||(d(B)||void 0)!==i)return;let t=new Map;for(let n of e??[])t.set(String(n.date).split(`T`)[0],n.slots.map(e=>e.time));h(Jt,t,!0),ln()}).catch(()=>{h(Jt,new Map,!0)}).finally(()=>{h(Yt,!1)})}l(()=>{d(z),d(B),d(U),d(W),xt(),un()});let dn=``;l(()=>{d(B)!==dn&&(dn=d(B),h(G,null),h(K,null))}),l(()=>{!d(q)||d(K)||d(rn).length>0&&h(K,d(rn)[0],!0)});function fn(){d(G)&&(d(G).getFullYear()!==d(U)||d(G).getMonth()!==d(W))&&(h(G,null),h(K,null))}function pn(e){e.classList.remove(`sbw-cal-nav-pulse`),e.offsetWidth,e.classList.add(`sbw-cal-nav-pulse`),e.addEventListener(`animationend`,()=>e.classList.remove(`sbw-cal-nav-pulse`),{once:!0})}function mn(){d(nn)&&(h(W,d(W)-1),d(W)<0&&(h(W,11),h(U,d(U)-1)),fn())}function hn(){h(W,d(W)+1),d(W)>11&&(h(W,0),h(U,d(U)+1)),fn()}function gn(e){!e.inMonth||e.isPast||cn(e.iso)===0||(h(G,e.date,!0),h(K,null))}function _n(e){h(K,e,!0)}function vn(){d(K)&&(h(R,`details`),Bn())}function yn(){h(R,`datetime`)}function bn(){h(R,`service`)}let Y=_(``),X=_(``),xn=_(``),Sn=_(``),Z=_(!1),Q=_(``),Cn=!1,wn=!1,Tn=!1;l(()=>{vt()&&!Cn&&!d(Y)&&(h(Y,vt(),!0),Cn=!0)}),l(()=>{yt()&&!wn&&!d(X)&&(h(X,yt(),!0),wn=!0)}),l(()=>{bt()&&!Tn&&!d(xn)&&(h(xn,bt(),!0),Tn=!0)});let En=s(()=>!!(Ot()&&Dt())&&!P()),Dn=null,On=null,kn=null,An=null,$=null,jn=null,Mn=``,Nn=0,Pn=!1,Fn=_(!1),In=_(``),Ln=_(``);async function Rn(){return Ot()?(On||=be(async()=>{let{loadStripe:e}=await import(`./chunks/lib-Bd4dedte.js`);return{loadStripe:e}},[]).then(({loadStripe:e})=>e(Ot())),Dn=await On,Dn):null}function zn(){An?.destroy(),$?.remove(),An=null,kn=null,$=null,jn=null,Mn=``,h(Ln,``)}l(()=>zn);async function Bn(){if(!d(En)||!Dt()||!d(z)||!d(q)||!d(K))return;let e={treatmentId:d(z).id,date:d(q),time:d(K),therapistId:d(B)||void 0},t=[e.treatmentId,e.date,e.time,e.therapistId??``].join(`|`);await f();let n=r.$$host,i=n?.shadowRoot?.querySelector(`.sbw-payment-slot-anchor`);if(i&&!i.querySelector(`slot[name="payment-mount"]`)){let e=document.createElement(`slot`);e.setAttribute(`name`,`payment-mount`),i.appendChild(e)}if(Pn||kn&&t===Mn)return;zn(),Mn=t;let a=++Nn;h(Fn,!0),h(In,``);try{let t=await Rn();if(!t)throw Error(`Stripe failed to load`);let r=await Dt()(e);if(a!==Nn)return;if(jn=r.paymentIntentId,r.amount!=null&&r.currency){let e=new Intl.NumberFormat(F(),{style:`currency`,currency:r.currency}).format(ye(r.amount,r.currency));h(Ln,`${e} ${d(L).paymentDueLabel}`)}kn=t.elements({clientSecret:r.clientSecret,appearance:kt()}),An=kn.create(`payment`,{layout:{type:`tabs`,defaultCollapsed:!1}}),An.on(`loaderror`,()=>{a===Nn&&h(In,d(L).paymentUnavailable,!0)}),$=document.createElement(`div`),$.slot=`payment-mount`,$.className=`sbw-payment-element`,n.appendChild($),An.mount($)}catch{if(a!==Nn)return;zn(),h(In,d(L).paymentUnavailable,!0)}finally{a===Nn&&h(Fn,!1)}}async function Vn(){if(!Dn||!kn||!jn)return h(Q,d(L).paymentNotReady,!0),!1;h(Q,``),h(Z,!0);try{let{error:e,paymentIntent:t}=await Dn.confirmPayment({elements:kn,confirmParams:{payment_method_data:{billing_details:{name:d(Y),email:d(X)||void 0,phone:d(xn)||void 0}}},redirect:`if_required`});if(e||![`succeeded`,`requires_capture`,`processing`].includes(t?.status))return h(Q,e?.message??d(L).paymentFailed,!0),!1}catch{return h(Q,d(L).paymentFailed,!0),!1}finally{h(Z,!1)}return Pn=!0,!0}function Hn(e,t){r.$$host?.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}async function Un(e){if(!Et()){h(Q,d(L).notWiredError,!0);return}h(Q,``),h(Z,!0);try{let t=await Et()(e);if(!t.ok)throw Error(t.error||`request failed`);h(qt,new Date,!0),h(R,`success`),Hn(`booking-submitted`,e)}catch(e){h(Q,e instanceof Error&&e.message!==`request failed`?e.message:d(L).genericSubmitError,!0),un()}finally{h(Z,!1)}}async function Wn(e){e.preventDefault(),!(!d(z)||!d(q)||!d(K))&&(d(En)&&!Pn&&!await Vn()||await Un({treatmentId:d(z).id,date:d(q),time:d(K),therapistId:d(B)||void 0,name:d(Y),email:d(X),phone:d(xn),notes:d(Sn),stripePaymentIntentId:d(En)?jn??void 0:void 0}))}async function Gn(){!d(z)||!d(q)||!d(K)||await Un({treatmentId:d(z).id,date:d(q),time:d(K),therapistId:d(B)||void 0,name:vt()??``,email:yt()??``,phone:bt()??``,notes:``})}var Kn={get heading(){return lt()},set heading(e=`Book a Service`){lt(e),c()},get logoUrl(){return ut()},set logoUrl(e){ut(e),c()},get tagline(){return dt()},set tagline(e=``){dt(e),c()},get description(){return ft()},set description(e=``){ft(e),c()},get staffLabel(){return pt()},set staffLabel(e=``){pt(e),c()},get hidePrice(){return N()},set hidePrice(e=!1){N(e),c()},get skipDetailsStep(){return P()},set skipDetailsStep(e=!1){P(e),c()},get emailOptional(){return mt()},set emailOptional(e=!1){mt(e),c()},get closedWeekdays(){return ht()},set closedWeekdays(e=[]){ht(e),c()},get locale(){return F()},set locale(e){F(e),c()},get initialTreatmentTitle(){return gt()},set initialTreatmentTitle(e){gt(e),c()},get initialDate(){return I()},set initialDate(e){I(e),c()},get initialTime(){return _t()},set initialTime(e){_t(e),c()},get initialName(){return vt()},set initialName(e){vt(e),c()},get initialEmail(){return yt()},set initialEmail(e){yt(e),c()},get initialPhone(){return bt()},set initialPhone(e){bt(e),c()},get memberUntil(){return xt()},set memberUntil(e){xt(e),c()},get strings(){return St()},set strings(e){St(e),c()},get fetchTreatments(){return Ct()},set fetchTreatments(e){Ct(e),c()},get fetchTherapists(){return wt()},set fetchTherapists(e){wt(e),c()},get fetchAvailability(){return Tt()},set fetchAvailability(e){Tt(e),c()},get submitBooking(){return Et()},set submitBooking(e){Et(e),c()},get createPaymentIntent(){return Dt()},set createPaymentIntent(e){Dt(e),c()},get stripePublishableKey(){return Ot()},set stripePublishableKey(e){Ot(e),c()},get stripeAppearance(){return kt()},set stripeAppearance(e){kt(e),c()}},qn=st(),Jn=M(qn),Yn=t=>{var a=He(),s=M(a),c=e=>{var t=Re();o(()=>k(t,`src`,ut())),m(e,t)};p(s,e=>{ut()&&e(c)});var l=g(s,2);oe(l,r,`heading`,{},t=>{var r=i(),a=n(r),s=t=>{var r=ze(),i=n(r),a=M(i,!0);S(i),e(2),o(()=>A(a,lt())),m(t,r)};p(a,e=>{lt()&&e(s)}),m(t,r)});var u=g(l,2),d=e=>{var t=Be(),n=M(t,!0);S(t),o(()=>A(n,dt())),m(e,t)};p(u,e=>{dt()&&e(d)});var f=g(u,2);oe(f,r,`description`,{},e=>{var t=i(),r=n(t),a=e=>{var t=Ve(),n=M(t,!0);S(t),o(()=>A(n,ft())),m(e,t)};p(r,e=>{ft()&&e(a)}),m(e,t)}),S(a),m(t,a)};p(Jn,e=>{d(R)!==`success`&&e(Yn)});var Xn=g(Jn,2),Zn=e=>{var t=qe(),n=M(t),r=M(n,!0);S(n);var i=g(n,2),a=e=>{var t=Me(),n=M(t,!0);S(t),o(()=>A(n,d(L).loadingServices)),m(e,t)},c=e=>{var t=Ne(),n=M(t,!0);S(t),o(()=>A(n,d(L).loadServicesError)),m(e,t)},l=e=>{var t=Ke();j(t,21,()=>d(Mt),e=>e.id,(e,t)=>{let n=s(()=>en(d(t)));var r=Ge(),i=M(r),a=M(i),c=M(a),l=g(c),u=e=>{var t=Ue(),n=M(t,!0);S(t),o(()=>A(n,d(L).membersOnlyHint)),m(e,t)};p(l,e=>{d(n)||e(u)}),S(a);var f=g(a,2),h=e=>{var n=We(),r=M(n),i=M(r);S(r);var a=g(r,2),s=e=>{var t=Ue(),n=M(t,!0);S(t),o(()=>A(n,d(L).membersOnlyLabel)),m(e,t)},c=e=>{var n=Ue(),r=M(n);S(n),o(e=>A(r,`${d(L).memberRateLabel??``} £${e??``}`),[()=>d(t).memberPrice.toFixed(2)]),m(e,n)};p(a,e=>{d(t).price==null?e(s):d(t).memberPrice!=null&&e(c,1)}),S(n),o(e=>A(i,`£${e??``}`),[()=>(d(t).price??d(t).memberPrice??0).toFixed(2)]),m(e,n)};p(f,e=>{N()||e(h)}),S(i),S(r),o(()=>{i.disabled=!d(n),A(c,`${d(t).name??``} `)}),E(`click`,i,()=>Wt(d(t))),m(e,r)}),S(t),m(e,t)};p(i,e=>{d(Nt)?e(a):d(Pt)?e(c,1):e(l,-1)}),S(t),o(()=>A(r,d(L).chooseServiceLabel)),m(e,t)},Qn=e=>{var t=tt(),r=M(t),a=M(r),c=M(a),l=M(c),u=M(l);S(l);var f=g(l,2),_=e=>{var t=Ye(),n=M(t),r=M(n,!0);S(n);var i=g(n,2),a=M(i),s=M(a,!0);S(a);var c=g(a,2);let l;S(i),ne(i,e=>h(It,e),()=>d(It));var u=g(i,2),f=M(u),p=M(f),_=M(p,!0);S(p),S(f);var v=g(f,2);j(v,17,()=>d(Ft),e=>e.id,(e,t)=>{var n=Je(),r=M(n),i=M(r,!0);S(r),S(n),o(()=>{k(r,`aria-selected`,d(t).id===d(B)),A(i,d(t).name)}),E(`click`,r,()=>Bt(d(t).id)),m(e,n)}),S(u),ne(u,e=>h(Lt,e),()=>d(Lt)),S(t),o(()=>{A(r,d(L).therapistFilterLabel),k(i,`aria-expanded`,d(V)),A(s,d(Rt)??d(L).anyTherapistLabel),l=C(c,0,`sbw-chevron svelte-1dxdgqu`,null,l,{"sbw-chevron-open":d(V)}),k(u,`aria-label`,d(L).therapistFilterLabel),k(p,`aria-selected`,!d(B)),A(_,d(L).anyTherapistLabel)}),E(`click`,i,zt),E(`click`,p,()=>Bt(``)),m(e,t)};p(f,e=>{d(Ft).length&&e(_)});var v=g(f,2),y=M(v),b=g(y,2);S(v),S(c);var x=g(c,2);j(x,20,()=>d(jt),e=>e,(e,t)=>{var n=we(),r=M(n,!0);S(n),o(()=>A(r,t)),m(e,n)}),S(x);var w=g(x,2);j(w,21,()=>d(tn),e=>e.iso,(e,t)=>{let n=s(()=>cn(d(t).iso)),r=s(()=>d(t).inMonth&&!d(t).isPast&&d(n)>0);var i=Ze();let a;var c=M(i),l=M(c,!0);S(c);var u=g(c,2),f=e=>{var t=Xe();o(()=>C(t,1,`sbw-dot sbw-dot-${d(n)??``}`,`svelte-1dxdgqu`)),m(e,t)};p(u,e=>{d(r)&&e(f)}),S(i),o(()=>{a=C(i,1,`sbw-cal-cell svelte-1dxdgqu`,null,a,{"sbw-cal-cell-off":!d(t).inMonth||d(t).isPast,"sbw-cal-cell-selected":d(q)===d(t).iso}),i.disabled=!d(r),A(l,d(t).dayNumber)}),E(`click`,i,()=>gn(d(t))),m(e,i)}),S(w),S(a);var T=g(a,2),D=M(T),ee=e=>{var t=Me(),n=M(t,!0);S(t),o(()=>A(n,d(L).pickDayHint)),m(e,t)},te=e=>{var t=Me(),n=M(t,!0);S(t),o(()=>A(n,d(L).loadingServices)),m(e,t)},O=e=>{var t=Me(),n=M(t,!0);S(t),o(()=>A(n,d(L).noSlotsForDay)),m(e,t)},ae=e=>{var t=et();j(t,21,()=>[[`morning`,d(L).morningLabel],[`afternoon`,d(L).afternoonLabel],[`evening`,d(L).eveningLabel]],([e,t])=>e,(e,t)=>{var r=s(()=>re(d(t),2));let a=()=>d(r)[0],c=()=>d(r)[1],l=s(()=>d(on)[a()]);var u=i(),f=n(u),h=e=>{var t=$e(),n=M(t),r=M(n);S(n);var i=g(n,2);j(i,20,()=>d(l),e=>e,(e,t)=>{var n=Qe();let r;var i=M(n,!0);S(n),o(()=>{r=C(n,1,`sbw-slot-btn svelte-1dxdgqu`,null,r,{"sbw-slot-btn-selected":d(K)===t}),A(i,t)}),E(`click`,n,()=>_n(t)),m(e,n)}),S(i),S(t),o(()=>A(r,`${c()??``} (${d(l).length??``})`)),m(e,t)};p(f,e=>{d(l).length&&e(h)}),m(e,u)}),S(t),m(e,t)};p(D,e=>{d(q)?d(Yt)?e(te,1):d(rn).length?e(ae,-1):e(O,2):e(ee)}),S(T),S(r);var oe=g(r,2);ie(oe,()=>!0),S(t),o(()=>{A(u,`${d(At)[d(W)]??``} ${d(U)??``}`),y.disabled=!d(nn),k(y,`aria-label`,d(L).previousMonth),k(b,`aria-label`,d(L).nextMonth),k(w,`aria-busy`,d(Yt))}),E(`click`,y,e=>{pn(e.currentTarget),mn()}),E(`click`,b,e=>{pn(e.currentTarget),hn()}),m(e,t)},$n=e=>{var t=at(),n=M(t),r=M(n),i=M(r),a=M(i),s=M(a,!0);S(a);var c=g(a,2);te(c),S(i);var l=g(i,2),f=M(l),_=M(f,!0);S(f);var v=g(f,2);te(v),S(l);var b=g(l,2),x=M(b),C=M(x,!0);S(x);var w=g(x,2);te(w),S(b),S(r);var E=g(r,2),D=M(E),ee=M(D,!0);S(D);var O=g(D,2);y(O),S(E);var ne=g(E,2),re=e=>{var t=it(),n=M(t),r=M(n),i=M(r,!0);S(r);var a=g(r,2),s=e=>{var t=nt(),n=M(t,!0);S(t),o(()=>A(n,d(Ln))),m(e,t)};p(a,e=>{d(Ln)&&e(s)}),S(n);var c=g(n,4),l=e=>{var t=Ne(),n=M(t,!0);S(t),o(()=>A(n,d(In))),m(e,t)};p(c,e=>{d(In)&&e(l)});var u=g(c,2),f=e=>{var t=rt(),n=M(t,!0);S(t),o(()=>A(n,d(L).paymentHint)),m(e,t)};p(u,e=>{d(L).paymentHint&&e(f)}),S(t),o(()=>A(i,d(L).paymentLabel)),m(e,t)};p(ne,e=>{d(En)&&e(re)}),S(n);var ae=g(n,2);ie(ae,()=>!1),S(t),o(()=>{A(s,d(L).nameLabel),k(c,`placeholder`,d(L).namePlaceholder),A(_,mt()?`${d(L).emailLabel} (optional)`:d(L).emailLabel),v.required=!mt(),k(v,`title`,d(L).emailInvalidTitle),k(v,`placeholder`,d(L).emailPlaceholder),A(C,d(L).phoneLabel),k(w,`placeholder`,d(L).phonePlaceholder),A(ee,d(L).notesLabel),k(O,`placeholder`,d(L).notesPlaceholder)}),u(`submit`,t,Wn),T(c,()=>d(Y),e=>h(Y,e)),T(v,()=>d(X),e=>h(X,e)),T(w,()=>d(xn),e=>h(xn,e)),T(O,()=>d(Sn),e=>h(Sn,e)),m(e,t)},er=e=>{var t=ot(),n=g(M(t),2),r=M(n,!0);S(n);var i=g(n,2);ie(i,()=>!1,()=>!0),S(t),o(()=>A(r,d(L).successMessage)),m(e,t)};return p(Xn,e=>{d(R)===`service`?e(Zn):d(R)===`datetime`&&d(z)?e(Qn,1):d(R)===`details`&&d(z)?e($n,2):d(R)===`success`&&e(er,3)}),S(qn),m(t,qn),v(Kn)}t([`click`]),customElements.define(`spa-booking-widget`,ie(lt,{heading:{attribute:`heading`,type:`String`},logoUrl:{attribute:`logo-url`,type:`String`},tagline:{attribute:`tagline`,type:`String`},description:{attribute:`description`,type:`String`},staffLabel:{attribute:`staff-label`,type:`String`},hidePrice:{attribute:`hide-price`,type:`Boolean`},skipDetailsStep:{attribute:`skip-details-step`,type:`Boolean`},emailOptional:{attribute:`email-optional`,type:`Boolean`},closedWeekdays:{attribute:`closed-weekdays`,type:`Array`},initialTreatmentTitle:{attribute:`initial-treatment-title`,type:`String`},initialDate:{attribute:`initial-date`,type:`String`},initialTime:{attribute:`initial-time`,type:`String`},initialName:{attribute:`initial-name`,type:`String`},initialEmail:{attribute:`initial-email`,type:`String`},initialPhone:{attribute:`initial-phone`,type:`String`},memberUntil:{attribute:`member-until`,type:`String`},locale:{attribute:`locale`,type:`String`},strings:{type:`Object`},fetchTreatments:{type:`Object`},fetchTherapists:{type:`Object`},fetchAvailability:{type:`Object`},submitBooking:{type:`Object`},createPaymentIntent:{type:`Object`},stripePublishableKey:{attribute:`stripe-publishable-key`,type:`String`},stripeAppearance:{type:`Object`}},[`heading`,`description`],[],{mode:`open`}));
|