@forgebuild/hotal-ui 0.23.152 → 0.23.201

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.
Files changed (47) hide show
  1. package/dist/components/ai-chat-widget.js +75 -0
  2. package/dist/components/availability-calendar.js +7 -0
  3. package/dist/components/booking-card.js +30 -0
  4. package/dist/components/booking-checkout.js +40 -0
  5. package/dist/components/booking-confirmed.js +1 -0
  6. package/dist/components/booking-flow.js +26 -0
  7. package/dist/components/booking-progress-bar.js +1 -0
  8. package/dist/components/booking-summary.js +14 -0
  9. package/dist/components/chunks/ably-5cVT4knS.js +9 -0
  10. package/dist/components/chunks/calendar-B8eNjUm2.js +1 -0
  11. package/dist/components/chunks/client-BDk8LqGN.js +3 -0
  12. package/dist/components/chunks/floating-ui.dom-DY3dGoEq.js +1 -0
  13. package/dist/components/chunks/gsap-DWxn8li7.js +1 -0
  14. package/dist/components/chunks/lib-Bd4dedte.js +1 -0
  15. package/dist/components/chunks/min-DdO-yBwh.js +17 -0
  16. package/dist/components/chunks/preload-helper-Czpn1I53.js +1 -0
  17. package/dist/components/chunks/rolldown-runtime-CbXtAM7H.js +1 -0
  18. package/dist/components/confirmation-card.js +3 -0
  19. package/dist/components/dining-teaser.js +19 -0
  20. package/dist/components/event-contact-form.js +33 -0
  21. package/dist/components/event-inquiries-feed.js +29 -0
  22. package/dist/components/extras-catalogue.js +25 -0
  23. package/dist/components/floor-plan-hero.js +2 -0
  24. package/dist/components/google-reviews.js +31 -0
  25. package/dist/components/instagram-feed.js +16 -0
  26. package/dist/components/island-map.js +1 -0
  27. package/dist/components/live-dining-orders-feed.js +37 -0
  28. package/dist/components/live-golf-bookings-feed.js +18 -0
  29. package/dist/components/live-reservations-feed.js +18 -0
  30. package/dist/components/live-room-bookings-feed.js +18 -0
  31. package/dist/components/live-shop-orders-feed.js +37 -0
  32. package/dist/components/live-spa-bookings-feed.js +55 -0
  33. package/dist/components/menu-section.js +90 -0
  34. package/dist/components/proshop-catalogue.js +20 -0
  35. package/dist/components/reservation-bar.js +5 -0
  36. package/dist/components/reservation-cancel.js +4 -0
  37. package/dist/components/restaurant-order-form.js +9 -0
  38. package/dist/components/room-grid.js +26 -0
  39. package/dist/components/searchable-select.js +20 -0
  40. package/dist/components/service-booking-bar.js +14 -0
  41. package/dist/components/spa-booking-widget.js +179 -0
  42. package/dist/components/stay-search.js +31 -0
  43. package/dist/components/tripadvisor-reviews.js +38 -0
  44. package/dist/components/venue-carousel.js +18 -0
  45. package/dist/hotal-ui.js +5032 -4708
  46. package/dist/index.d.ts +40 -2
  47. package/package.json +6 -2
@@ -0,0 +1,18 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["chunks/ably-5cVT4knS.js","chunks/rolldown-runtime-CbXtAM7H.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./chunks/rolldown-runtime-CbXtAM7H.js";import{B as t,D as n,H as r,I as i,J as a,K as o,L as s,N as c,S as l,T as u,U as d,V as f,W as p,X as m,Z as h,b as g,d as ee,et as _,f as v,h as te,k as y,n as b,r as x,s as ne,t as S,w as C,y as w,z as T}from"./chunks/client-BDk8LqGN.js";import{t as E}from"./chunks/preload-helper-Czpn1I53.js";import{t as D}from"./chunks/gsap-DWxn8li7.js";var re=n(`<span><svg class="lrbf-live-icon svelte-wutv4y" aria-hidden="true" viewBox="0 -960 960 960" width="20" height="20" fill="currentColor"><path d="M198-278q-57-57-87.5-129.5T80-560q0-80 30.5-152.5T198-842l48 48q-47 47-72.5 107.5T148-560q0 66 25.5 126.5T246-326l-48 48Zm92-92q-38-38-58-87t-20-103q0-54 20-103t58-87l48 48q-29 29-43.5 65.5T280-560q0 40 14.5 76.5T338-418l-48 48Zm150 250v-348q-27-12-43.5-37T380-560q0-42 29-71t71-29q42 0 71 29t29 71q0 30-16.5 55T520-468v348h-80Zm230-250-48-48q29-29 43.5-65.5T680-560q0-40-14.5-76.5T622-702l48-48q38 38 58 87t20 103q0 54-20 103t-58 87Zm92 92-48-48q47-47 72.5-107.5T812-560q0-66-25.5-126.5T714-794l48-48q57 57 87.5 129.5T880-560q0 80-30.5 152.5T762-278Z" class="svelte-wutv4y"></path></svg></span> <span class="lrbf-visually-hidden svelte-wutv4y"> </span>`,1),O=n(`<div><!></div>`),k=n(`<div class="lrbf-header svelte-wutv4y"><h2 class="lrbf-heading svelte-wutv4y"><svg class="lrbf-heading-icon svelte-wutv4y" aria-hidden="true" viewBox="0 -960 960 960" width="20" height="20" fill="currentColor"><path d="M176-200h-30.3L126-280H80v-214q0-25.9 17-43.95Q114-556 140-556h26v-144q0-24.75 17.63-42.38Q201.25-760 226-760h507q24.75 0 42.38 17.62Q793-724.75 793-700v144h27q24.75 0 42.38 17.62Q880-520.75 880-496v216h-46l-19.78 80h-30.44L764-280H197l-21 80Zm334-356h223v-144H510v144Zm-284 0h224v-144H226v144Zm-86 216h680v-156H140v156Zm680 0H140h680Z" class="svelte-wutv4y"></path></svg> </h2> <!></div>`),A=n(`<li class="lrbf-item lrbf-skeleton-item svelte-wutv4y"><span class="lrbf-item-accent svelte-wutv4y" aria-hidden="true"></span> <div class="lrbf-item-main svelte-wutv4y"><div class="lrbf-item-top svelte-wutv4y"><span class="lrbf-skeleton-bar lrbf-skeleton-bar-name svelte-wutv4y"></span> <span class="lrbf-skeleton-bar lrbf-skeleton-bar-received svelte-wutv4y"></span></div> <span class="lrbf-skeleton-bar lrbf-skeleton-bar-sub svelte-wutv4y"></span> <span class="lrbf-skeleton-bar lrbf-skeleton-bar-status svelte-wutv4y"></span> <div class="lrbf-item-body svelte-wutv4y"><div class="lrbf-item-guests svelte-wutv4y"><span class="lrbf-skeleton-bar lrbf-skeleton-bar-stat svelte-wutv4y"></span> <span class="lrbf-skeleton-bar lrbf-skeleton-bar-stat-label svelte-wutv4y"></span></div> <span class="lrbf-skeleton-bar lrbf-skeleton-bar-meta svelte-wutv4y"></span></div> <div class="lrbf-item-contact svelte-wutv4y"><span class="lrbf-skeleton-bar lrbf-skeleton-bar-contact svelte-wutv4y"></span></div></div></li>`),ie=n(`<ul class="lrbf-list svelte-wutv4y" aria-hidden="true"></ul>`),j=n(`<p class="lrbf-empty svelte-wutv4y"> </p>`),ae=n(`<span class="lrbf-item-nights svelte-wutv4y"> </span>`),oe=n(`<span class="lrbf-item-total svelte-wutv4y"> </span>`),se=n(`<a class="svelte-wutv4y"> </a>`),ce=n(`<span class="svelte-wutv4y"> </span>`),le=n(`<div class="lrbf-item-contact svelte-wutv4y"><!> <!></div>`),ue=n(`<li class="lrbf-item svelte-wutv4y"><span class="lrbf-item-accent svelte-wutv4y" aria-hidden="true"></span> <div class="lrbf-item-main svelte-wutv4y"><div class="lrbf-item-top svelte-wutv4y"><span class="lrbf-item-name svelte-wutv4y"> </span> <span class="lrbf-item-received svelte-wutv4y"> </span></div> <span class="lrbf-item-room svelte-wutv4y"><!> <!> <!> </span> <span class="lrbf-item-status svelte-wutv4y"> </span> <div class="lrbf-item-body svelte-wutv4y"><div class="lrbf-item-guests svelte-wutv4y"><span class="lrbf-item-guests-number svelte-wutv4y"> </span> <span class="lrbf-item-guests-label svelte-wutv4y"> </span></div> <!> <!></div> <!></div></li>`),M=n(`<p class="lrbf-loading-more svelte-wutv4y" aria-live="polite">Loading more…</p>`),N=n(`<div class="lrbf-sentinel svelte-wutv4y" aria-hidden="true"></div>`),de=n(`<ul class="lrbf-list svelte-wutv4y"></ul> <!> <!>`,1),fe=n(`<section class="lrbf-root svelte-wutv4y"><!> <!></section>`),P={hash:`svelte-wutv4y`,code:`.lrbf-root.svelte-wutv4y {display:block;font-family:inherit;color:var(--lrbf-text-color, #1a1a1a);}.lrbf-header.svelte-wutv4y {display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;}.lrbf-heading.svelte-wutv4y {display:flex;align-items:center;gap:0.5rem;margin:0;font-family:var(--lrbf-heading-font-family, inherit);font-size:var(--lrbf-heading-font-size, 1.125rem);font-weight:var(--lrbf-heading-font-weight, 700);}.lrbf-heading-icon.svelte-wutv4y {flex-shrink:0;color:var(--lrbf-heading-icon-color, currentColor);opacity:0.8;}.lrbf-status.svelte-wutv4y {display:flex;justify-content:flex-end;align-items:center;gap:0.375rem;margin-bottom:1rem;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--lrbf-live-color, #1a7d3a);}.lrbf-header.svelte-wutv4y .lrbf-status:where(.svelte-wutv4y) {margin-bottom:0;}.lrbf-status-error.svelte-wutv4y {color:var(--lrbf-error-color, #b3261e);}.lrbf-live-icon-wrap.svelte-wutv4y {position:relative;display:inline-flex;flex-shrink:0;}.lrbf-live-icon-wrap.svelte-wutv4y::before {content:'';position:absolute;inset:0;border-radius:9999px;background:currentColor;opacity:0;\r
3
+ animation: svelte-wutv4y-lrbf-pulse 4s ease-out infinite;}\r
4
+ @media (prefers-reduced-motion: reduce) {.lrbf-live-icon-wrap.svelte-wutv4y::before {\r
5
+ animation: none;}\r
6
+ }.lrbf-live-icon-wrap-connecting.svelte-wutv4y {opacity:0.55;}.lrbf-live-icon-wrap-connecting.svelte-wutv4y::before {\r
7
+ animation: none;}.lrbf-live-icon.svelte-wutv4y {position:relative;display:block;}.lrbf-visually-hidden.svelte-wutv4y {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;}\r
8
+ @keyframes svelte-wutv4y-lrbf-pulse {\r
9
+ 0% {\r
10
+ transform: scale(1);\r
11
+ opacity: 0.6;\r
12
+ }\r
13
+ 40%,
14
+ 100% {\r
15
+ transform: scale(2.5);\r
16
+ opacity: 0;\r
17
+ }\r
18
+ }.lrbf-empty.svelte-wutv4y {opacity:0.6;font-size:0.875rem;}.lrbf-loading-more.svelte-wutv4y {opacity:0.6;font-size:0.8125rem;text-align:center;margin:0.75rem 0 0;}.lrbf-list.svelte-wutv4y {display:flex;flex-direction:column;gap:0.75rem;margin:0;padding:0;list-style:none;}.lrbf-item.svelte-wutv4y {position:relative;display:flex;align-items:flex-start;gap:0.75rem;border:1px solid transparent;border-radius:12px;padding:0.875rem 1rem 0.875rem 1.75rem;background:var(--lrbf-item-bg, #fff);overflow:hidden;transition:border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;}.lrbf-item.svelte-wutv4y:hover {border-color:var(--lrbf-item-hover-border, rgba(0, 0, 0, 0.25));box-shadow:var(--lrbf-item-hover-shadow, 0 4px 16px rgba(0, 0, 0, 0.08));transform:translateY(-1px);cursor:pointer;}.lrbf-item-accent.svelte-wutv4y {position:absolute;left:0;top:0;bottom:0;width:12px;background:var(--lrbf-accent, currentColor);}.lrbf-item-main.svelte-wutv4y {flex:1;min-width:0;display:flex;flex-direction:column;gap:0.25rem;}.lrbf-item-top.svelte-wutv4y {display:flex;align-items:baseline;justify-content:space-between;gap:0.75rem;}.lrbf-item-name.svelte-wutv4y {font-weight:700;}.lrbf-item-room.svelte-wutv4y {font-size:0.8125rem;}.lrbf-item-status.svelte-wutv4y {font-size:0.75rem;font-weight:700;color:var(--lrbf-accent, currentColor);}.lrbf-item-received.svelte-wutv4y {font-size:0.6875rem;white-space:nowrap;flex-shrink:0;opacity:0.55;}.lrbf-item-body.svelte-wutv4y {display:flex;align-items:center;gap:0.875rem;margin-top:0.25rem;}.lrbf-item-guests.svelte-wutv4y {display:flex;flex-direction:column;align-items:center;flex-shrink:0;line-height:1;padding-right:0.875rem;border-right:1px solid var(--lrbf-border-color, rgba(0, 0, 0, 0.1));}.lrbf-item-guests-number.svelte-wutv4y {font-size:1.75rem;font-weight:800;line-height:1;}.lrbf-item-guests-label.svelte-wutv4y {font-size:0.625rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;margin-top:0.1875rem;}.lrbf-item-total.svelte-wutv4y {margin-left:auto;font-size:1.75rem;font-weight:800;line-height:1;}.lrbf-item-nights.svelte-wutv4y {font-size:0.8125rem;}.lrbf-item-contact.svelte-wutv4y {display:flex;flex-wrap:wrap;gap:0.5rem 0.75rem;font-size:0.8125rem;margin-top:0.375rem;}.lrbf-item-contact.svelte-wutv4y a:where(.svelte-wutv4y) {color:inherit;}.lrbf-sentinel.svelte-wutv4y {height:1px;}.lrbf-skeleton-item.svelte-wutv4y {pointer-events:none;}.lrbf-skeleton-item.svelte-wutv4y .lrbf-item-accent:where(.svelte-wutv4y) {opacity:0.15;}.lrbf-skeleton-bar.svelte-wutv4y {display:inline-block;height:0.75rem;border-radius:3px;background:var(--lrbf-skeleton-color, color-mix(in srgb, currentColor 8%, transparent));}.lrbf-skeleton-bar-name.svelte-wutv4y {width:8.5rem;}.lrbf-skeleton-bar-sub.svelte-wutv4y {width:6rem;height:0.625rem;}.lrbf-skeleton-bar-status.svelte-wutv4y {width:4.5rem;}.lrbf-skeleton-bar-received.svelte-wutv4y {width:5.5rem;height:0.5625rem;}.lrbf-skeleton-bar-stat.svelte-wutv4y {width:2.5rem;height:1.75rem;}.lrbf-skeleton-bar-stat-label.svelte-wutv4y {width:2.5rem;height:0.5rem;margin-top:0.25rem;}.lrbf-skeleton-bar-meta.svelte-wutv4y {width:5rem;}.lrbf-skeleton-bar-contact.svelte-wutv4y {width:55%;}`};function F(n,S){h(S,!0),te(n,P);let F=e=>{var n=O();let r;var a=T(n),o=e=>{var t=y(`Live updates unavailable — showing loaded bookings only.`);u(e,t)},s=e=>{var n=re(),r=t(n);let a;var o=f(r,2),s=T(o,!0);_(o),i(()=>{a=v(r,1,`lrbf-live-icon-wrap svelte-wutv4y`,null,a,{"lrbf-live-icon-wrap-connecting":c(q)===`connecting`}),C(s,c(q)===`connecting`?`Connecting…`:`Live`)}),u(e,n)};l(a,e=>{c(q)===`error`?e(o):e(s,-1)}),_(n),i(()=>r=v(n,1,`lrbf-status svelte-wutv4y`,null,r,{"lrbf-status-error":c(q)===`error`})),u(e,n)},I=b(S,`heading`,7),L=b(S,`channelName`,7),R=b(S,`ablyAuthUrl`,7),z=b(S,`fetchBookings`,7),B=b(S,`maxItems`,7,30),V=b(S,`autoLoadMore`,7,!0),H=b(S,`emptyLabel`,7,`No bookings yet.`),U=b(S,`showEmail`,7,!0),W=b(S,`currency`,7,``),G=p(r([])),K=p(void 0),q=p(`connecting`),J=p(!0),Y=p(!1),X=p(!0),Z=p(void 0),Q=p(void 0);function pe(){return typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches}function me(e){let t=[e,...c(G).filter(t=>t.id!==e.id)];d(G,V()?t:t.slice(0,B()),!0)}async function he(){if(!(c(Y)||!c(X)||!z())){d(Y,!0);try{let e=c(G)[c(G).length-1]?.created_at,t=await z()({cursor:e,limit:B()}),n=new Set(c(G).map(e=>e.id)),r=t.filter(e=>!n.has(e.id));d(G,[...c(G),...r],!0),d(X,t.length===B()&&r.length>0,!0)}catch(e){console.error(`live-room-bookings-feed: failed to load more bookings`,e),d(X,!1)}finally{d(Y,!1)}}}function ge(e){try{return new Date(`${e.slice(0,10)}T00:00:00`).toLocaleDateString(void 0,{month:`short`,day:`numeric`,year:`numeric`})}catch{return e}}function _e(e,t){let n=Date.parse(`${e.slice(0,10)}T00:00:00`),r=Date.parse(`${t.slice(0,10)}T00:00:00`);if(Number.isNaN(n)||Number.isNaN(r))return null;let i=Math.round((r-n)/864e5);return i>0?i:null}function ve(e){let t=Number(e);return Number.isNaN(t)?`${W()}${e}`:`${W()}${Number.isInteger(t)?t:t.toFixed(2)}`}function ye(e){try{return new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`})}catch{return e}}function be(e){return e===`confirmed`?`var(--lrbf-status-confirmed-text, #22c55e)`:e===`cancelled`?`var(--lrbf-status-cancelled-text, #ef4444)`:`var(--lrbf-status-neutral-text, currentColor)`}function xe(e){return e===`confirmed`?`Booked`:e.charAt(0).toUpperCase()+e.slice(1)}s(()=>{if(typeof window>`u`||!L()||!R())return;let t,n=!1;return(async()=>{if(z())try{let e=await z()({limit:B()});n||(d(G,e,!0),d(X,e.length===B()))}catch(e){console.error(`live-room-bookings-feed: failed to load existing bookings`,e)}finally{n||d(J,!1)}else d(J,!1);try{let{default:r}=await E(async()=>{let{default:t}=await import(`./chunks/ably-5cVT4knS.js`).then(t=>e(t.default));return{default:t}},__vite__mapDeps([0,1]));if(n)return;t=new r.Realtime({authUrl:R()});let i=t.channels.get(L());t.connection.on(`connected`,()=>{n||d(q,`connected`)}),t.connection.on(`failed`,()=>{n||d(q,`error`)}),await i.subscribe(`new-booking`,e=>{n||me(e.data)}),await i.subscribe(`booking-status-changed`,e=>{n||me(e.data)})}catch(e){console.error(`live-room-bookings-feed: Ably connection failed`,e),n||d(q,`error`)}})(),()=>{n=!0,t?.close()}}),s(()=>{if(!c(J)||!c(Z)||pe())return;let e=c(Z).querySelectorAll(`.lrbf-skeleton-bar`),t=D.to(e,{opacity:.35,duration:.7,ease:`sine.inOut`,repeat:-1,yoyo:!0,stagger:.08});return()=>{t.kill()}});let Se=new Set;s(()=>{if(c(G).length,c(J)||!c(Q))return;let e=Array.from(c(Q).querySelectorAll(`.lrbf-item`)).filter(e=>{let t=e.dataset.id;return t!==void 0&&!Se.has(t)});if(e.length){for(let t of e)t.dataset.id&&Se.add(t.dataset.id);if(pe()){D.set(e,{opacity:1,y:0});return}D.fromTo(e,{opacity:0,y:8},{opacity:1,y:0,duration:.4,ease:`power2.out`,stagger:.06})}}),s(()=>{if(!V()||!c(K))return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&he()},{rootMargin:`200px`});return e.observe(c(K)),()=>e.disconnect()});var Ce={get heading(){return I()},set heading(e){I(e),o()},get channelName(){return L()},set channelName(e){L(e),o()},get ablyAuthUrl(){return R()},set ablyAuthUrl(e){R(e),o()},get fetchBookings(){return z()},set fetchBookings(e){z(e),o()},get maxItems(){return B()},set maxItems(e=30){B(e),o()},get autoLoadMore(){return V()},set autoLoadMore(e=!0){V(e),o()},get emptyLabel(){return H()},set emptyLabel(e=`No bookings yet.`){H(e),o()},get showEmail(){return U()},set showEmail(e=!0){U(e),o()},get currency(){return W()},set currency(e=``){W(e),o()}},$=fe(),we=T($),Te=e=>{var t=k(),n=T(t),r=f(T(n));_(n);var a=f(n,2);F(a),_(t),i(()=>C(r,` ${I()??``}`)),u(e,t)},Ee=e=>{F(e)};l(we,e=>{I()?e(Te):e(Ee,-1)});var De=f(we,2),Oe=e=>{var t=ie();w(t,20,()=>({length:3}),g,(e,t)=>{var n=A();u(e,n)}),_(t),x(t,e=>d(Z,e),()=>c(Z)),u(e,t)},ke=e=>{var t=j(),n=T(t,!0);_(t),i(()=>C(n,H())),u(e,t)},Ae=e=>{var n=de(),r=t(n);w(r,21,()=>c(G),e=>e.id,(e,t)=>{let n=a(()=>_e(c(t).check_in,c(t).check_out));var r=ue(),o=f(T(r),2),s=T(o),d=T(s),p=T(d);_(d);var m=f(d,2),h=T(m,!0);_(m),_(s);var g=f(s,2),v=T(g),te=e=>{var n=y();i(()=>C(n,`Room ${c(t).room_number??``}`)),u(e,n)};l(v,e=>{c(t).room_number&&e(te)});var b=f(v,2),x=e=>{var t=y(`\xA0·\xA0`);u(e,t)};l(b,e=>{c(t).room_number&&c(t).room_type_name&&e(x)});var S=f(b,2),w=e=>{var n=y();i(()=>C(n,`${c(t).room_type_name??``} · `)),u(e,n)};l(S,e=>{c(t).room_type_name&&e(w)});var E=f(S);_(g);var D=f(g,2),re=T(D,!0);_(D);var O=f(D,2),k=T(O),A=T(k),ie=T(A,!0);_(A);var j=f(A,2),M=T(j);_(j),_(k);var N=f(k,2),de=e=>{var t=ae(),r=T(t);_(t),i(()=>C(r,`${c(n)??``} night${c(n)===1?``:`s`}`)),u(e,t)};l(N,e=>{c(n)&&e(de)});var fe=f(N,2),P=e=>{var n=oe(),r=T(n,!0);_(n),i(e=>C(r,e),[()=>ve(c(t).total_price)]),u(e,n)};l(fe,e=>{c(t).total_price!=null&&e(P)}),_(O);var F=f(O,2),I=e=>{var n=le(),r=T(n),a=e=>{var n=se(),r=T(n,!0);_(n),i(()=>{ne(n,`href`,`mailto:${c(t).email}`),C(r,c(t).email)}),u(e,n)};l(r,e=>{U()&&c(t).email&&e(a)});var o=f(r,2),s=e=>{var n=ce(),r=T(n,!0);_(n),i(()=>C(r,c(t).phone)),u(e,n)};l(o,e=>{c(t).phone&&e(s)}),_(n),u(e,n)};l(F,e=>{(U()&&c(t).email||c(t).phone)&&e(I)}),_(o),_(r),i((e,n,i,a,o)=>{ne(r,`data-id`,c(t).id),ee(r,e),C(p,`${c(t).first_name??``} ${c(t).last_name??``}`),C(h,n),C(E,` ${i??``} → ${a??``}`),C(re,o),C(ie,c(t).guests),C(M,`guest${c(t).guests===1?``:`s`}`)},[()=>`--lrbf-accent: ${be(c(t).status)}`,()=>ye(c(t).created_at),()=>ge(c(t).check_in),()=>ge(c(t).check_out),()=>xe(c(t).status)]),u(e,r)}),_(r),x(r,e=>d(Q,e),()=>c(Q));var o=f(r,2),s=e=>{var t=M();u(e,t)};l(o,e=>{c(Y)&&e(s)});var p=f(o,2),m=e=>{var t=N();x(t,e=>d(K,e),()=>c(K)),u(e,t)};l(p,e=>{V()&&c(X)&&e(m)}),u(e,n)};return l(De,e=>{c(J)?e(Oe):c(G).length===0?e(ke,1):e(Ae,-1)}),_($),u(n,$),m(Ce)}customElements.define(`live-room-bookings-feed`,S(F,{heading:{attribute:`heading`,type:`String`},channelName:{attribute:`channel-name`,type:`String`},ablyAuthUrl:{attribute:`ably-auth-url`,type:`String`},maxItems:{attribute:`max-items`,type:`Number`},autoLoadMore:{attribute:`auto-load-more`,type:`Boolean`},emptyLabel:{attribute:`empty-label`,type:`String`},showEmail:{attribute:`show-email`,type:`Boolean`},currency:{attribute:`currency`,type:`String`},fetchBookings:{}},[],[],{mode:`open`}));
@@ -0,0 +1,37 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["chunks/ably-5cVT4knS.js","chunks/rolldown-runtime-CbXtAM7H.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./chunks/rolldown-runtime-CbXtAM7H.js";import{B as t,D as n,H as r,I as i,J as a,K as o,L as s,N as c,S as l,T as u,U as d,V as f,W as p,X as m,Z as h,b as g,d as ee,et as _,f as v,h as y,k as te,n as b,r as x,s as S,t as C,w,y as T,z as E}from"./chunks/client-BDk8LqGN.js";import{t as D}from"./chunks/preload-helper-Czpn1I53.js";import{t as O}from"./chunks/gsap-DWxn8li7.js";var k=n(`<span><svg class="lsof-live-icon svelte-uc2k28" aria-hidden="true" viewBox="0 -960 960 960" width="20" height="20" fill="currentColor"><path d="M198-278q-57-57-87.5-129.5T80-560q0-80 30.5-152.5T198-842l48 48q-47 47-72.5 107.5T148-560q0 66 25.5 126.5T246-326l-48 48Zm92-92q-38-38-58-87t-20-103q0-54 20-103t58-87l48 48q-29 29-43.5 65.5T280-560q0 40 14.5 76.5T338-418l-48 48Zm150 250v-348q-27-12-43.5-37T380-560q0-42 29-71t71-29q42 0 71 29t29 71q0 30-16.5 55T520-468v348h-80Zm230-250-48-48q29-29 43.5-65.5T680-560q0-40-14.5-76.5T622-702l48-48q38 38 58 87t20 103q0 54-20 103t-58 87Zm92 92-48-48q47-47 72.5-107.5T812-560q0-66-25.5-126.5T714-794l48-48q57 57 87.5 129.5T880-560q0 80-30.5 152.5T762-278Z" class="svelte-uc2k28"></path></svg></span> <span class="lsof-visually-hidden svelte-uc2k28"> </span>`,1),A=n(`<div><!></div>`),j=n(`<div class="lsof-header svelte-uc2k28"><h2 class="lsof-heading svelte-uc2k28"><svg class="lsof-heading-icon svelte-uc2k28" aria-hidden="true" viewBox="0 -960 960 960" width="20" height="20" fill="currentColor"><path d="M220-80q-24 0-42-18t-18-42v-520q0-24 18-42t42-18h110v-10q0-63 43.5-106.5T480-880q63 0 106.5 43.5T630-730v10h110q24 0 42 18t18 42v520q0 24-18 42t-42 18H220Zm0-60h520v-520H630v90q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37v-90H390v90q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37v-90H220v520Zm170-580h180v-10q0-38-26-64t-64-26q-38 0-64 26t-26 64v10ZM220-140v-520 520Z" class="svelte-uc2k28"></path></svg> </h2> <!></div>`),M=n(`<li class="lsof-item lsof-skeleton-item svelte-uc2k28"><span class="lsof-item-accent svelte-uc2k28" aria-hidden="true"></span> <div class="lsof-item-main svelte-uc2k28"><div class="lsof-item-top svelte-uc2k28"><span class="lsof-skeleton-bar lsof-skeleton-bar-name svelte-uc2k28"></span> <div class="lsof-item-top-right svelte-uc2k28"><span class="lsof-skeleton-bar lsof-skeleton-bar-received svelte-uc2k28"></span> <span class="lsof-skeleton-bar lsof-skeleton-bar-status svelte-uc2k28"></span></div></div> <span class="lsof-skeleton-bar lsof-skeleton-bar-sub svelte-uc2k28"></span> <div class="lsof-item-body svelte-uc2k28"><span class="lsof-skeleton-bar lsof-skeleton-bar-meta svelte-uc2k28"></span></div> <div class="lsof-item-lines svelte-uc2k28"><span class="lsof-skeleton-bar lsof-skeleton-bar-line svelte-uc2k28"></span> <span class="lsof-skeleton-bar lsof-skeleton-bar-line svelte-uc2k28"></span></div></div></li>`),ne=n(`<ul class="lsof-list svelte-uc2k28" aria-hidden="true"></ul>`),re=n(`<p class="lsof-empty svelte-uc2k28"> </p>`),ie=n(`<span class="lsof-status-dot svelte-uc2k28" tabindex="0" role="status" aria-label="Cancelled" data-tooltip="Cancelled"></span>`),ae=n(`<span></span>`),oe=n(`<div class="lsof-stepper svelte-uc2k28" tabindex="0" role="status"></div>`),se=n(`<span class="lsof-line-variant svelte-uc2k28"> </span>`),ce=n(`<li class="lsof-line svelte-uc2k28"><span class="lsof-line-qty svelte-uc2k28"> </span> <span class="lsof-line-name svelte-uc2k28"> <!></span> <span class="lsof-line-price svelte-uc2k28"> </span></li>`),le=n(`<div class="lsof-notes svelte-uc2k28"> </div>`),ue=n(`<li class="lsof-item svelte-uc2k28"><span class="lsof-item-accent svelte-uc2k28" aria-hidden="true"></span> <div class="lsof-item-main svelte-uc2k28"><div class="lsof-item-top svelte-uc2k28"><span class="lsof-item-name svelte-uc2k28"> </span> <div class="lsof-item-top-right svelte-uc2k28"><span class="lsof-item-received svelte-uc2k28"> </span> <!></div></div> <span class="lsof-item-treatment svelte-uc2k28"> </span> <div class="lsof-item-body svelte-uc2k28"><span class="lsof-item-total svelte-uc2k28"> </span></div> <ul class="lsof-item-lines svelte-uc2k28"></ul> <!></div></li>`),de=n(`<p class="lsof-loading-more svelte-uc2k28" aria-live="polite">Loading more…</p>`),fe=n(`<div class="lsof-sentinel svelte-uc2k28" aria-hidden="true"></div>`),pe=n(`<ul class="lsof-list svelte-uc2k28"></ul> <!> <!>`,1),me=n(`<section class="lsof-root svelte-uc2k28"><!> <!></section>`),he={hash:`svelte-uc2k28`,code:`.lsof-root.svelte-uc2k28 {display:block;font-family:inherit;color:var(--lsof-text-color, #1a1a1a);}.lsof-header.svelte-uc2k28 {display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;}.lsof-heading.svelte-uc2k28 {display:flex;align-items:center;gap:0.5rem;margin:0;font-family:var(--lsof-heading-font-family, inherit);font-size:var(--lsof-heading-font-size, 1.125rem);font-weight:var(--lsof-heading-font-weight, 700);}.lsof-heading-icon.svelte-uc2k28 {flex-shrink:0;color:var(--lsof-heading-icon-color, currentColor);opacity:0.8;}.lsof-status.svelte-uc2k28 {display:flex;justify-content:flex-end;align-items:center;gap:0.375rem;margin-bottom:1rem;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--lsof-live-color, #1a7d3a);}.lsof-header.svelte-uc2k28 .lsof-status:where(.svelte-uc2k28) {margin-bottom:0;}.lsof-status-error.svelte-uc2k28 {color:var(--lsof-error-color, #b3261e);}.lsof-live-icon-wrap.svelte-uc2k28 {position:relative;display:inline-flex;flex-shrink:0;}.lsof-live-icon-wrap.svelte-uc2k28::before {content:'';position:absolute;inset:0;border-radius:9999px;background:currentColor;opacity:0;
3
+ animation: svelte-uc2k28-lsof-live-pulse 4s ease-out infinite;}
4
+ @media (prefers-reduced-motion: reduce) {.lsof-live-icon-wrap.svelte-uc2k28::before {
5
+ animation: none;}
6
+ }.lsof-live-icon-wrap-connecting.svelte-uc2k28 {opacity:0.55;}.lsof-live-icon-wrap-connecting.svelte-uc2k28::before {
7
+ animation: none;}.lsof-live-icon.svelte-uc2k28 {position:relative;display:block;}.lsof-visually-hidden.svelte-uc2k28 {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;}
8
+ @keyframes svelte-uc2k28-lsof-live-pulse {
9
+ 0% {
10
+ transform: scale(1);
11
+ opacity: 0.6;
12
+ }
13
+ 40%,
14
+ 100% {
15
+ transform: scale(2.5);
16
+ opacity: 0;
17
+ }
18
+ }.lsof-empty.svelte-uc2k28 {opacity:0.6;font-size:0.875rem;}.lsof-loading-more.svelte-uc2k28 {opacity:0.6;font-size:0.8125rem;text-align:center;margin:0.75rem 0 0;}.lsof-list.svelte-uc2k28 {display:flex;flex-direction:column;gap:0.75rem;margin:0;padding:0;list-style:none;}.lsof-item.svelte-uc2k28 {position:relative;display:flex;align-items:flex-start;gap:0.75rem;border:1px solid transparent;border-radius:12px;padding:0.875rem 1rem 0.875rem 1.75rem;background:var(--lsof-item-bg, #fff);overflow:hidden;transition:border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;}.lsof-item.svelte-uc2k28:hover {border-color:var(--lsof-item-hover-border, rgba(0, 0, 0, 0.25));box-shadow:var(--lsof-item-hover-shadow, 0 4px 16px rgba(0, 0, 0, 0.08));transform:translateY(-1px);cursor:pointer;}.lsof-item-accent.svelte-uc2k28 {position:absolute;left:0;top:0;bottom:0;width:12px;background:var(--lsof-accent, currentColor);}.lsof-item-main.svelte-uc2k28 {flex:1;min-width:0;display:flex;flex-direction:column;gap:0.25rem;}.lsof-item-top.svelte-uc2k28 {display:flex;align-items:flex-start;justify-content:space-between;gap:0.75rem;}.lsof-item-name.svelte-uc2k28 {font-weight:700;}.lsof-item-treatment.svelte-uc2k28 {font-size:0.8125rem;}.lsof-item-top-right.svelte-uc2k28 {display:flex;flex-direction:column;align-items:flex-end;gap:0.3125rem;flex-shrink:0;}.lsof-stepper.svelte-uc2k28,
19
+ .lsof-status-dot.svelte-uc2k28 {position:relative;cursor:default;}.lsof-stepper.svelte-uc2k28::after,
20
+ .lsof-status-dot.svelte-uc2k28::after {content:attr(data-tooltip);position:absolute;top:100%;right:0;margin-top:0.375rem;padding:0.25rem 0.5rem;border-radius:4px;background:var(--lsof-tooltip-bg, #1a1a1a);color:var(--lsof-tooltip-text, #fff);font-size:0.6875rem;font-weight:600;white-space:nowrap;opacity:0;transform:translateY(-2px);pointer-events:none;transition:opacity 0.12s ease, transform 0.12s ease;z-index:1;}.lsof-stepper.svelte-uc2k28:hover::after,
21
+ .lsof-stepper.svelte-uc2k28:focus-visible::after,
22
+ .lsof-status-dot.svelte-uc2k28:hover::after,
23
+ .lsof-status-dot.svelte-uc2k28:focus-visible::after {opacity:1;transform:translateY(0);}.lsof-status-dot.svelte-uc2k28 {display:inline-block;width:0.5rem;height:0.5rem;border-radius:9999px;background:var(--lsof-accent, currentColor);}.lsof-stepper.svelte-uc2k28 {display:inline-flex;align-items:center;gap:0.25rem;}.lsof-step.svelte-uc2k28 {width:0.4375rem;height:0.4375rem;border-radius:9999px;background:var(--lsof-step-bg, rgba(0, 0, 0, 0.15));flex-shrink:0;}.lsof-step-done.svelte-uc2k28 {background:var(--lsof-step-done-bg, rgb(0, 143, 190));}.lsof-step-current.svelte-uc2k28 {position:relative;background:var(--lsof-step-current-bg, rgb(0, 143, 190));}.lsof-step-current.svelte-uc2k28::before {content:'';position:absolute;inset:-3px;border-radius:9999px;background:currentColor;color:var(--lsof-step-current-bg, rgb(0, 143, 190));opacity:0.35;
24
+ animation: svelte-uc2k28-lsof-step-pulse 1.8s ease-out infinite;}
25
+ @media (prefers-reduced-motion: reduce) {.lsof-step-current.svelte-uc2k28::before {
26
+ animation: none;}
27
+ }
28
+ @keyframes svelte-uc2k28-lsof-step-pulse {
29
+ 0% {
30
+ transform: scale(1);
31
+ opacity: 0.35;
32
+ }
33
+ 100% {
34
+ transform: scale(2);
35
+ opacity: 0;
36
+ }
37
+ }.lsof-item-received.svelte-uc2k28 {font-size:0.6875rem;white-space:nowrap;flex-shrink:0;opacity:0.55;}.lsof-item-body.svelte-uc2k28 {display:flex;align-items:center;gap:0.875rem;margin-top:0.25rem;}.lsof-item-total.svelte-uc2k28 {margin-left:auto;font-size:1.75rem;font-weight:800;line-height:1;}.lsof-item-lines.svelte-uc2k28 {display:flex;flex-direction:column;gap:0.25rem;list-style:none;margin:0.625rem 0 0;padding:0.625rem 0 0;border-top:1px solid var(--lsof-border-color, rgba(0, 0, 0, 0.1));}.lsof-line.svelte-uc2k28 {display:flex;align-items:baseline;gap:0.4375rem;font-size:0.8125rem;}.lsof-line-qty.svelte-uc2k28 {flex-shrink:0;font-variant-numeric:tabular-nums;}.lsof-line-name.svelte-uc2k28 {flex:1;min-width:0;}.lsof-line-variant.svelte-uc2k28 {font-size:0.75rem;}.lsof-line-price.svelte-uc2k28 {flex-shrink:0;font-variant-numeric:tabular-nums;}.lsof-notes.svelte-uc2k28 {margin-top:0.5rem;font-size:0.8125rem;font-style:italic;}.lsof-sentinel.svelte-uc2k28 {height:1px;}.lsof-skeleton-item.svelte-uc2k28 {pointer-events:none;}.lsof-skeleton-item.svelte-uc2k28 .lsof-item-accent:where(.svelte-uc2k28) {opacity:0.15;}.lsof-skeleton-bar.svelte-uc2k28 {display:inline-block;height:0.75rem;border-radius:3px;background:var(--lsof-skeleton-color, color-mix(in srgb, currentColor 8%, transparent));}.lsof-skeleton-bar-name.svelte-uc2k28 {width:8.5rem;}.lsof-skeleton-bar-sub.svelte-uc2k28 {width:6rem;height:0.625rem;}.lsof-skeleton-bar-status.svelte-uc2k28 {width:4.5rem;}.lsof-skeleton-bar-received.svelte-uc2k28 {width:5.5rem;height:0.5625rem;}.lsof-skeleton-bar-meta.svelte-uc2k28 {width:5rem;}.lsof-skeleton-bar-line.svelte-uc2k28 {width:65%;}.lsof-skeleton-bar-line.svelte-uc2k28 + .lsof-skeleton-bar-line:where(.svelte-uc2k28) {width:45%;}`};function N(n,C){h(C,!0),y(n,he);let N=e=>{var n=A();let r;var a=E(n),o=e=>{var t=te(`Live updates unavailable — showing loaded orders only.`);u(e,t)},s=e=>{var n=k(),r=t(n);let a;var o=f(r,2),s=E(o,!0);_(o),i(()=>{a=v(r,1,`lsof-live-icon-wrap svelte-uc2k28`,null,a,{"lsof-live-icon-wrap-connecting":c(q)===`connecting`}),w(s,c(q)===`connecting`?`Connecting…`:`Live`)}),u(e,n)};l(a,e=>{c(q)===`error`?e(o):e(s,-1)}),_(n),i(()=>r=v(n,1,`lsof-status svelte-uc2k28`,null,r,{"lsof-status-error":c(q)===`error`})),u(e,n)},P=b(C,`heading`,7),F=b(C,`channelName`,7),I=b(C,`ablyAuthUrl`,7),L=b(C,`fetchOrders`,7),R=b(C,`bookings`,7),z=b(C,`maxItems`,7,30),B=b(C,`autoLoadMore`,7,!0),V=b(C,`emptyLabel`,7,`No orders yet.`),H=b(C,`currency`,7,``),U=b(C,`filterBookingId`,7),W=[`pending`,`confirmed`,`ready`,`fulfilled`],G=p(r([])),K=p(void 0),q=p(`connecting`),J=p(!0),Y=p(!1),X=p(!0),Z=p(void 0),Q=p(void 0);function ge(){return typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches}let _e=a(()=>new Map((R()??[]).map(e=>[e.id,e])));function ve(e){if(e.booking_id){let t=c(_e).get(e.booking_id);return t?.guest_name&&t?.room_number?`${t.guest_name} · Room ${t.room_number}`:t?.guest_name?t.guest_name:t?.room_number?`Room ${t.room_number}`:`Booking ${e.booking_id.slice(0,8)}`}return e.guest_id?`Guest ${e.guest_id.slice(0,8)}`:`Order`}function ye(e){return W.indexOf(e)}function be(e){let t=[e,...c(G).filter(t=>t.id!==e.id)];d(G,B()?t:t.slice(0,z()),!0)}async function xe(){if(!(c(Y)||!c(X)||!L())){d(Y,!0);try{let e=c(G)[c(G).length-1]?.created_at,t=await L()({cursor:e,limit:z()}),n=new Set(c(G).map(e=>e.id)),r=t.filter(e=>!n.has(e.id));d(G,[...c(G),...r],!0),d(X,t.length===z()&&r.length>0,!0)}catch(e){console.error(`live-shop-orders-feed: failed to load more orders`,e),d(X,!1)}finally{d(Y,!1)}}}function Se(e){let t=Number(e);return Number.isNaN(t)?`${H()}${e}`:`${H()}${Number.isInteger(t)?t:t.toFixed(2)}`}function Ce(e){try{return new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`})}catch{return e}}function we(e){return e.total==null?Number(e.unit_price??0)*e.quantity:e.total}function Te(e){return e===`cancelled`?`var(--lsof-status-cancelled-text, #ef4444)`:e===`fulfilled`?`var(--lsof-status-fulfilled-color, #22c55e)`:e===`ready`?`var(--lsof-status-ready-color, #b4650a)`:`var(--lsof-status-neutral-text, currentColor)`}function Ee(e){return e.charAt(0).toUpperCase()+e.slice(1)}s(()=>{if(typeof window>`u`||!F()||!I())return;let t,n=!1;return(async()=>{if(L())try{let e=await L()({limit:z()});n||(d(G,e,!0),d(X,e.length===z()))}catch(e){console.error(`live-shop-orders-feed: failed to load existing orders`,e)}finally{n||d(J,!1)}else d(J,!1);try{let{default:r}=await D(async()=>{let{default:t}=await import(`./chunks/ably-5cVT4knS.js`).then(t=>e(t.default));return{default:t}},__vite__mapDeps([0,1]));if(n)return;t=new r.Realtime({authUrl:I()});let i=t.channels.get(F());t.connection.on(`connected`,()=>{n||d(q,`connected`)}),t.connection.on(`failed`,()=>{n||d(q,`error`)}),await i.subscribe(`new-order`,e=>{if(n)return;let t=e.data;(!U()||t.booking_id===U())&&be(t)}),await i.subscribe(`order-status-changed`,e=>{if(!n){let t=e.data,n=c(G).find(e=>e.id===t.id);n&&be({...n,...t})}})}catch(e){console.error(`live-shop-orders-feed: Ably connection failed`,e),n||d(q,`error`)}})(),()=>{n=!0,t?.close()}}),s(()=>{if(!c(J)||!c(Z)||ge())return;let e=c(Z).querySelectorAll(`.lsof-skeleton-bar`),t=O.to(e,{opacity:.35,duration:.7,ease:`sine.inOut`,repeat:-1,yoyo:!0,stagger:.08});return()=>{t.kill()}});let De=new Set;s(()=>{if(c(G).length,c(J)||!c(Q))return;let e=Array.from(c(Q).querySelectorAll(`.lsof-item`)).filter(e=>{let t=e.dataset.id;return t!==void 0&&!De.has(t)});if(e.length){for(let t of e)t.dataset.id&&De.add(t.dataset.id);if(ge()){O.set(e,{opacity:1,y:0});return}O.fromTo(e,{opacity:0,y:8},{opacity:1,y:0,duration:.4,ease:`power2.out`,stagger:.06})}}),s(()=>{if(!B()||!c(K))return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&xe()},{rootMargin:`200px`});return e.observe(c(K)),()=>e.disconnect()});var Oe={get heading(){return P()},set heading(e){P(e),o()},get channelName(){return F()},set channelName(e){F(e),o()},get ablyAuthUrl(){return I()},set ablyAuthUrl(e){I(e),o()},get fetchOrders(){return L()},set fetchOrders(e){L(e),o()},get bookings(){return R()},set bookings(e){R(e),o()},get maxItems(){return z()},set maxItems(e=30){z(e),o()},get autoLoadMore(){return B()},set autoLoadMore(e=!0){B(e),o()},get emptyLabel(){return V()},set emptyLabel(e=`No orders yet.`){V(e),o()},get currency(){return H()},set currency(e=``){H(e),o()},get filterBookingId(){return U()},set filterBookingId(e){U(e),o()}},$=me(),ke=E($),Ae=e=>{var t=j(),n=E(t),r=f(E(n));_(n);var a=f(n,2);N(a),_(t),i(()=>w(r,` ${P()??``}`)),u(e,t)},je=e=>{N(e)};l(ke,e=>{P()?e(Ae):e(je,-1)});var Me=f(ke,2),Ne=e=>{var t=ne();T(t,20,()=>({length:3}),g,(e,t)=>{var n=M();u(e,n)}),_(t),x(t,e=>d(Z,e),()=>c(Z)),u(e,t)},Pe=e=>{var t=re(),n=E(t,!0);_(t),i(()=>w(n,V())),u(e,t)},Fe=e=>{var n=pe(),r=t(n);T(r,21,()=>c(G),e=>e.id,(e,t)=>{let n=a(()=>ye(c(t).status)),r=a(()=>c(t).items.reduce((e,t)=>e+(t.quantity??0),0));var o=ue(),s=f(E(o),2),d=E(s),p=E(d),m=E(p,!0);_(p);var h=f(p,2),y=E(h),te=E(y,!0);_(y);var b=f(y,2),x=e=>{var t=ie();u(e,t)},C=e=>{var r=oe();T(r,21,()=>W,g,(e,r,a)=>{var o=ae();let s;i(()=>s=v(o,1,`lsof-step svelte-uc2k28`,null,s,{"lsof-step-done":a<=c(n),"lsof-step-current":a===c(n)&&c(t).status!==`fulfilled`})),u(e,o)}),_(r),i((e,t)=>{S(r,`aria-label`,e),S(r,`data-tooltip`,t)},[()=>Ee(c(t).status),()=>Ee(c(t).status)]),u(e,r)};l(b,e=>{c(t).status===`cancelled`?e(x):e(C,-1)}),_(h),_(d);var D=f(d,2),O=E(D);_(D);var k=f(D,2),A=E(k),j=E(A,!0);_(A),_(k);var M=f(k,2);T(M,21,()=>c(t).items,g,(e,t)=>{var n=ce(),r=E(n),a=E(r);_(r);var o=f(r,2),s=E(o),d=f(s),p=e=>{var n=se(),r=E(n);_(n),i(()=>w(r,`(${c(t).variant??``})`)),u(e,n)};l(d,e=>{c(t).variant&&e(p)}),_(o);var m=f(o,2),h=E(m,!0);_(m),_(n),i(e=>{w(a,`${c(t).quantity??``}×`),w(s,`${c(t).item_name??``} `),w(h,e)},[()=>Se(we(c(t)))]),u(e,n)}),_(M);var ne=f(M,2),re=e=>{var n=le(),r=E(n);_(n),i(()=>w(r,`"${c(t).notes??``}"`)),u(e,n)};l(ne,e=>{c(t).notes&&e(re)}),_(s),_(o),i((e,n,i,a)=>{S(o,`data-id`,c(t).id),ee(o,e),w(m,n),w(te,i),w(O,`${c(r)??``} item${c(r)===1?``:`s`} · ${c(t).fulfillment_method===`shipping`?`Ships to guest`:`Pickup at pro shop`}`),w(j,a)},[()=>`--lsof-accent: ${Te(c(t).status)}`,()=>ve(c(t)),()=>Ce(c(t).created_at),()=>Se(c(t).total_price)]),u(e,o)}),_(r),x(r,e=>d(Q,e),()=>c(Q));var o=f(r,2),s=e=>{var t=de();u(e,t)};l(o,e=>{c(Y)&&e(s)});var p=f(o,2),m=e=>{var t=fe();x(t,e=>d(K,e),()=>c(K)),u(e,t)};l(p,e=>{B()&&c(X)&&e(m)}),u(e,n)};return l(Me,e=>{c(J)?e(Ne):c(G).length===0?e(Pe,1):e(Fe,-1)}),_($),u(n,$),m(Oe)}customElements.define(`live-shop-orders-feed`,C(N,{heading:{attribute:`heading`,type:`String`},channelName:{attribute:`channel-name`,type:`String`},ablyAuthUrl:{attribute:`ably-auth-url`,type:`String`},maxItems:{attribute:`max-items`,type:`Number`},autoLoadMore:{attribute:`auto-load-more`,type:`Boolean`},emptyLabel:{attribute:`empty-label`,type:`String`},currency:{attribute:`currency`,type:`String`},filterBookingId:{attribute:`filter-booking-id`,type:`String`},fetchOrders:{},bookings:{}},[],[],{mode:`open`}));
@@ -0,0 +1,55 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["chunks/ably-5cVT4knS.js","chunks/rolldown-runtime-CbXtAM7H.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./chunks/rolldown-runtime-CbXtAM7H.js";import{$ as t,A as n,B as r,D as i,H as a,I as o,J as s,K as c,L as l,N as u,S as d,T as f,U as p,V as m,W as h,X as ee,Z as te,b as ne,d as re,et as g,f as _,h as ie,j as v,k as y,l as b,n as x,r as S,s as C,t as w,w as T,y as ae,z as E}from"./chunks/client-BDk8LqGN.js";import{t as oe}from"./chunks/preload-helper-Czpn1I53.js";import{t as D}from"./chunks/gsap-DWxn8li7.js";var O=i(`<span><svg class="lsbf-live-icon svelte-wxeez" aria-hidden="true" viewBox="0 -960 960 960" width="20" height="20" fill="currentColor"><path d="M198-278q-57-57-87.5-129.5T80-560q0-80 30.5-152.5T198-842l48 48q-47 47-72.5 107.5T148-560q0 66 25.5 126.5T246-326l-48 48Zm92-92q-38-38-58-87t-20-103q0-54 20-103t58-87l48 48q-29 29-43.5 65.5T280-560q0 40 14.5 76.5T338-418l-48 48Zm150 250v-348q-27-12-43.5-37T380-560q0-42 29-71t71-29q42 0 71 29t29 71q0 30-16.5 55T520-468v348h-80Zm230-250-48-48q29-29 43.5-65.5T680-560q0-40-14.5-76.5T622-702l48-48q38 38 58 87t20 103q0 54-20 103t-58 87Zm92 92-48-48q47-47 72.5-107.5T812-560q0-66-25.5-126.5T714-794l48-48q57 57 87.5 129.5T880-560q0 80-30.5 152.5T762-278Z" class="svelte-wxeez"></path></svg></span> <span class="lsbf-visually-hidden svelte-wxeez"> </span>`,1),se=i(`<div><!></div>`),ce=i(`<div class="lsbf-header svelte-wxeez"><h2 class="lsbf-heading svelte-wxeez"><svg class="lsbf-heading-icon svelte-wxeez" aria-hidden="true" viewBox="0 -960 960 960" width="20" height="20" fill="currentColor"><path d="M782-114 481-415 364-298q11 17 13.5 33t2.5 35q0 64-43 107T230-80q-64 0-107-43T80-230q0-64 43-107t107-43q18 0 35.5 5t36.5 15l116-116-118-118q-17 8-34.5 11t-35.5 3q-64 0-107-43T80-730q0-64 43-107t107-43q64 0 107 43t43 107q0 19-2.5 36T367-662l514 514v34h-99ZM599-527l-66-66 249-249h99v33L599-527ZM294-666q26-26 26-64t-26-64q-26-26-64-26t-64 26q-26 26-26 64t26 64q26 26 64 26t64-26Zm202.5 203.5Q502-468 502-476t-5.5-13.5Q491-495 483-495t-13.5 5.5Q464-484 464-476t5.5 13.5Q475-457 483-457t13.5-5.5ZM294-166q26-26 26-64t-26-64q-26-26-64-26t-64 26q-26 26-26 64t26 64q26 26 64 26t64-26Z" class="svelte-wxeez"></path></svg> </h2> <!></div>`),le=i(`<li class="lsbf-item lsbf-skeleton-item svelte-wxeez"><span class="lsbf-item-accent svelte-wxeez" aria-hidden="true"></span> <div class="lsbf-item-main svelte-wxeez"><div class="lsbf-item-top svelte-wxeez"><span class="lsbf-skeleton-bar lsbf-skeleton-bar-name svelte-wxeez"></span> <span class="lsbf-skeleton-bar lsbf-skeleton-bar-received svelte-wxeez"></span></div> <span class="lsbf-skeleton-bar lsbf-skeleton-bar-sub svelte-wxeez"></span> <span class="lsbf-skeleton-bar lsbf-skeleton-bar-status svelte-wxeez"></span> <div class="lsbf-item-body svelte-wxeez"><div class="lsbf-item-duration svelte-wxeez"><span class="lsbf-skeleton-bar lsbf-skeleton-bar-stat svelte-wxeez"></span> <span class="lsbf-skeleton-bar lsbf-skeleton-bar-stat-label svelte-wxeez"></span></div> <span class="lsbf-skeleton-bar lsbf-skeleton-bar-meta svelte-wxeez"></span></div> <div class="lsbf-item-contact svelte-wxeez"><span class="lsbf-skeleton-bar lsbf-skeleton-bar-contact svelte-wxeez"></span></div></div></li>`),ue=i(`<ul class="lsbf-list svelte-wxeez" aria-hidden="true"></ul>`),de=i(`<p class="lsbf-empty svelte-wxeez"> </p>`),fe=i(`<span class="lsbf-item-status svelte-wxeez"> </span>`),pe=i(`<button type="button" class="lsbf-item-status lsbf-item-status-btn svelte-wxeez" aria-haspopup="dialog"> </button>`),me=i(`<span class="lsbf-item-total svelte-wxeez"> </span>`),he=i(`<a class="svelte-wxeez"> </a>`),ge=i(`<span class="svelte-wxeez"> </span>`),_e=i(`<div class="lsbf-item-contact svelte-wxeez"><!> <!></div>`),ve=i(`<li class="lsbf-item svelte-wxeez"><span class="lsbf-item-accent svelte-wxeez" aria-hidden="true"></span> <div class="lsbf-item-main svelte-wxeez"><div class="lsbf-item-top svelte-wxeez"><span class="lsbf-item-name svelte-wxeez"> </span> <span class="lsbf-item-received svelte-wxeez"> </span></div> <span class="lsbf-item-treatment svelte-wxeez"><!> <!> <!></span> <!> <div class="lsbf-item-body svelte-wxeez"><button type="button" class="lsbf-item-datetime-btn svelte-wxeez"> </button> <div class="lsbf-item-duration svelte-wxeez"><span class="lsbf-item-duration-number svelte-wxeez"> </span> <span class="lsbf-item-duration-label svelte-wxeez">min</span></div> <!></div> <!></div></li>`),ye=i(`<p class="lsbf-loading-more svelte-wxeez" aria-live="polite">Loading more…</p>`),be=i(`<div class="lsbf-sentinel svelte-wxeez" aria-hidden="true"></div>`),xe=i(`<ul class="lsbf-list svelte-wxeez"></ul> <!> <!>`,1),Se=i(`<button type="button" class="lsbf-cancel-popover-dismiss lsbf-cancel-popover-checkin svelte-wxeez">Check in</button>`),Ce=i(`<div class="lsbf-cancel-popover svelte-wxeez" role="dialog"><p class="lsbf-cancel-popover-text svelte-wxeez"> </p> <div class="lsbf-cancel-popover-actions svelte-wxeez"><!> <button type="button" class="lsbf-cancel-popover-dismiss lsbf-cancel-popover-complete svelte-wxeez">Mark completed</button> <button type="button" class="lsbf-cancel-popover-dismiss lsbf-cancel-popover-noshow svelte-wxeez">No show</button> <button type="button" class="lsbf-cancel-popover-confirm svelte-wxeez">Cancel booking</button></div></div>`),we=i(`<spa-booking-widget></spa-booking-widget>`,2),Te=i(`<section class="lsbf-root svelte-wxeez"><!> <!> <!> <dialog><div class="lsbf-sheet-inner svelte-wxeez"><div class="lsbf-sheet-header svelte-wxeez"><h3 class="lsbf-sheet-title svelte-wxeez"> </h3> <button type="button" class="lsbf-sheet-close svelte-wxeez" aria-label="Close">✕</button></div> <div class="lsbf-sheet-body svelte-wxeez"><!></div></div></dialog></section>`),Ee={hash:`svelte-wxeez`,code:`.lsbf-root.svelte-wxeez {position:relative;display:block;font-family:inherit;color:var(--lsbf-text-color, #1a1a1a);}.lsbf-header.svelte-wxeez {display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;}.lsbf-heading.svelte-wxeez {display:flex;align-items:center;gap:0.5rem;margin:0;font-family:var(--lsbf-heading-font-family, inherit);font-size:var(--lsbf-heading-font-size, 1.125rem);font-weight:var(--lsbf-heading-font-weight, 700);}.lsbf-heading-icon.svelte-wxeez {flex-shrink:0;color:var(--lsbf-heading-icon-color, currentColor);opacity:0.8;}.lsbf-status.svelte-wxeez {display:flex;justify-content:flex-end;align-items:center;gap:0.375rem;margin-bottom:1rem;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--lsbf-live-color, #1a7d3a);}.lsbf-header.svelte-wxeez .lsbf-status:where(.svelte-wxeez) {margin-bottom:0;}.lsbf-status-error.svelte-wxeez {color:var(--lsbf-error-color, #b3261e);}.lsbf-live-icon-wrap.svelte-wxeez {position:relative;display:inline-flex;flex-shrink:0;}.lsbf-live-icon-wrap.svelte-wxeez::before {content:'';position:absolute;inset:0;border-radius:9999px;background:currentColor;opacity:0;\r
3
+ animation: svelte-wxeez-lsbf-pulse 4s ease-out infinite;}\r
4
+ @media (prefers-reduced-motion: reduce) {.lsbf-live-icon-wrap.svelte-wxeez::before {\r
5
+ animation: none;}\r
6
+ }.lsbf-live-icon-wrap-connecting.svelte-wxeez {opacity:0.55;}.lsbf-live-icon-wrap-connecting.svelte-wxeez::before {\r
7
+ animation: none;}.lsbf-live-icon.svelte-wxeez {position:relative;display:block;}.lsbf-visually-hidden.svelte-wxeez {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;}\r
8
+ @keyframes svelte-wxeez-lsbf-pulse {\r
9
+ 0% {\r
10
+ transform: scale(1);\r
11
+ opacity: 0.6;\r
12
+ }\r
13
+ 40%,
14
+ 100% {\r
15
+ transform: scale(2.5);\r
16
+ opacity: 0;\r
17
+ }\r
18
+ }.lsbf-empty.svelte-wxeez {opacity:0.6;font-size:0.875rem;}.lsbf-loading-more.svelte-wxeez {opacity:0.6;font-size:0.8125rem;text-align:center;margin:0.75rem 0 0;}.lsbf-list.svelte-wxeez {display:flex;flex-direction:column;gap:0.75rem;margin:0;padding:0;list-style:none;}.lsbf-item.svelte-wxeez {position:relative;display:flex;align-items:flex-start;gap:0.75rem;border:1px solid transparent;border-radius:12px;padding:0.875rem 1rem 0.875rem 1.75rem;background:var(--lsbf-item-bg, #fff);overflow:hidden;transition:border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;}.lsbf-item.svelte-wxeez:hover {border-color:var(--lsbf-item-hover-border, rgba(0, 0, 0, 0.25));box-shadow:var(--lsbf-item-hover-shadow, 0 4px 16px rgba(0, 0, 0, 0.08));transform:translateY(-1px);cursor:pointer;}.lsbf-item-accent.svelte-wxeez {position:absolute;left:0;top:0;bottom:0;width:12px;background:var(--lsbf-accent, currentColor);}.lsbf-item-main.svelte-wxeez {flex:1;min-width:0;display:flex;flex-direction:column;gap:0.25rem;}.lsbf-item-top.svelte-wxeez {display:flex;align-items:baseline;justify-content:space-between;gap:0.75rem;}.lsbf-item-name.svelte-wxeez {font-weight:700;}.lsbf-item-treatment.svelte-wxeez {font-size:0.8125rem;}.lsbf-item-datetime-btn.svelte-wxeez {border:none;background:transparent;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px;}.lsbf-item-datetime-btn.svelte-wxeez:focus-visible {outline:2px solid var(--lsbf-accent, currentColor);outline-offset:2px;border-radius:2px;}.lsbf-item-status.svelte-wxeez {font-size:0.75rem;font-weight:700;color:var(--lsbf-accent, currentColor);}.lsbf-item-status-btn.svelte-wxeez {align-self:flex-start;border:none;background:transparent;padding:0;font:inherit;cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px;}.lsbf-item-status-btn.svelte-wxeez:focus-visible {outline:2px solid var(--lsbf-accent, currentColor);outline-offset:2px;border-radius:2px;}.lsbf-item-received.svelte-wxeez {font-size:0.6875rem;white-space:nowrap;flex-shrink:0;opacity:0.55;}.lsbf-item-body.svelte-wxeez {display:flex;align-items:center;gap:0.5rem;margin-top:0.25rem;}.lsbf-item-duration.svelte-wxeez {display:flex;align-items:baseline;gap:0.25rem;flex-shrink:0;}.lsbf-item-duration-number.svelte-wxeez {font-size:1.75rem;font-weight:800;line-height:1;}.lsbf-item-duration-label.svelte-wxeez {font-size:0.8125rem;font-weight:600;}.lsbf-item-body.svelte-wxeez .lsbf-item-datetime-btn:where(.svelte-wxeez) {font-size:1.75rem;font-weight:800;line-height:1;white-space:nowrap;padding-right:0.625rem;border-right:1px solid var(--lsbf-border-color, rgba(0, 0, 0, 0.1));}.lsbf-item-total.svelte-wxeez {font-size:1.75rem;font-weight:800;line-height:1;margin-left:auto;}.lsbf-cancel-popover.svelte-wxeez {position:absolute;z-index:20;width:14rem;padding:0.75rem;border-radius:10px;background:var(--lsbf-popover-bg, #1a1a1a);color:var(--lsbf-popover-text, #fff);\r
19
+ /* Floating panel over other content -- Forge canon calls for an\r
20
+ accent-coloured border + matching glow here, not a neutral edge.\r
21
+ Accent is the booking's own current status color (statusAccent),\r
22
+ set as --lsbf-popover-accent on the element itself. */border:1px solid color-mix(in srgb, var(--lsbf-popover-accent, currentColor) 30%, transparent);box-shadow:0 8px 24px rgba(0, 0, 0, 0.25),\r
23
+ 0 0 16px color-mix(in srgb, var(--lsbf-popover-accent, currentColor) 25%, transparent);}.lsbf-cancel-popover-text.svelte-wxeez {margin:0 0 0.625rem;font-size:0.8125rem;line-height:1.4;}.lsbf-cancel-popover-actions.svelte-wxeez {display:flex;flex-direction:column;gap:0.375rem;}.lsbf-cancel-popover-dismiss.svelte-wxeez,\r
24
+ .lsbf-cancel-popover-confirm.svelte-wxeez {border:none;border-radius:6px;padding:0.375rem 0.625rem;font:inherit;font-size:0.75rem;font-weight:600;cursor:pointer;width:100%;}.lsbf-cancel-popover-dismiss.svelte-wxeez {background:color-mix(in srgb, currentColor 12%, transparent);color:inherit;}\r
25
+ /* Each action tinted with the status it would move the booking into --\r
26
+ same palette as statusAccent, so the popover previews the color the\r
27
+ card's own accent bar/badge will pick up next. */.lsbf-cancel-popover-checkin.svelte-wxeez {background:var(--lsbf-status-checked-in-text, #f59e0b);color:#fff;}.lsbf-cancel-popover-complete.svelte-wxeez {background:var(--lsbf-status-completed-text, #14b8a6);color:#fff;}.lsbf-cancel-popover-noshow.svelte-wxeez {background:var(--lsbf-status-no-show-text, #ec4899);color:#fff;}.lsbf-cancel-popover-confirm.svelte-wxeez {background:var(--lsbf-status-cancelled-text, #ef4444);color:#fff;}.lsbf-item-contact.svelte-wxeez {display:flex;flex-wrap:wrap;gap:0.5rem 0.75rem;font-size:0.8125rem;margin-top:0.375rem;}.lsbf-item-contact.svelte-wxeez a:where(.svelte-wxeez) {color:inherit;}.lsbf-sentinel.svelte-wxeez {height:1px;}.lsbf-skeleton-item.svelte-wxeez {pointer-events:none;}.lsbf-skeleton-item.svelte-wxeez .lsbf-item-accent:where(.svelte-wxeez) {opacity:0.15;}.lsbf-skeleton-bar.svelte-wxeez {display:inline-block;height:0.75rem;border-radius:3px;background:var(--lsbf-skeleton-color, color-mix(in srgb, currentColor 8%, transparent));}.lsbf-skeleton-bar-name.svelte-wxeez {width:8.5rem;}.lsbf-skeleton-bar-sub.svelte-wxeez {width:6rem;height:0.625rem;}.lsbf-skeleton-bar-status.svelte-wxeez {width:4.5rem;}.lsbf-skeleton-bar-received.svelte-wxeez {width:5.5rem;height:0.5625rem;}.lsbf-skeleton-bar-meta.svelte-wxeez {width:5rem;}.lsbf-skeleton-bar-contact.svelte-wxeez {width:55%;}.lsbf-sheet.svelte-wxeez {position:fixed;inset:auto 0 0 0;margin:0;width:100vw;max-width:100vw;max-height:none;border:none;border-radius:16px 16px 0 0;padding:0;box-shadow:0 -8px 32px rgba(0, 0, 0, 0.3);opacity:0;transform:translateY(100%);transition:opacity 0.25s ease, transform 0.25s ease;}.lsbf-sheet.svelte-wxeez::backdrop {background:rgba(0, 0, 0, 0.5);}.lsbf-sheet-visible.svelte-wxeez {opacity:1;transform:translateY(0);}.lsbf-sheet-inner.svelte-wxeez {display:flex;flex-direction:column;max-height:88vh;border-radius:16px 16px 0 0;background:var(--lsbf-sheet-bg, #fff);color:var(--lsbf-sheet-text-color, #1a1a1a);}.lsbf-sheet-header.svelte-wxeez {display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;flex-shrink:0;}.lsbf-sheet-title.svelte-wxeez {margin:0;font-size:1rem;font-weight:700;}.lsbf-sheet-close.svelte-wxeez {border:none;background:transparent;color:inherit;font-size:1rem;line-height:1;cursor:pointer;padding:0.25rem;border-radius:6px;}.lsbf-sheet-close.svelte-wxeez:hover,\r
28
+ .lsbf-sheet-close.svelte-wxeez:focus-visible {background:color-mix(in srgb, currentColor 10%, transparent);}.lsbf-sheet-body.svelte-wxeez {overflow-y:auto;padding:1.5rem 2rem 2rem;}\r
29
+ /* The widget caps its own inner content via these custom properties --\r
30
+ widened to 100% (full sheet width) across every step, datetime\r
31
+ included. The datetime step no longer needs its own cap now that\r
32
+ .sbw-calendar-col gives the calendar a fixed width and only the\r
33
+ slots column grows -- extra sheet width just becomes more time-chip\r
34
+ columns instead of dead space. Colors/gradient match the same\r
35
+ brand tokens the dashboard's own dark theme uses (--bg-rgb/--text-rgb\r
36
+ are the same 05040f/f0eeff pair the public booking widget themes\r
37
+ with) instead of the widget's light default, which clashed with the\r
38
+ rest of this dark dashboard. */.lsbf-sheet-body.svelte-wxeez spa-booking-widget:where(.svelte-wxeez) {--sbw-intro-max-width: 100%;--sbw-form-max-width: 100%;--sbw-datetime-max-width: 100%;--sbw-padding: 0 1.5rem 2rem;--sbw-body-margin-top: 0;--sbw-summary-total-border-color: transparent;\r
39
+ /* Morning/Afternoon/Evening are the slot list's own section\r
40
+ headers, not meta text (a timestamp, a footnote) -- the base\r
41
+ widget's default 0.5 dim was the same "chrome" muting applied to\r
42
+ everything uppercase, with no actual reason to de-emphasize a\r
43
+ label people are scanning to find the right group of times. */--sbw-slot-label-opacity: 1;--sbw-bg: rgb(var(--bg-rgb, 5, 4, 15));--sbw-text-color: var(--lsbf-sheet-text-color, #f0eeff);--sbw-border-color: rgba(255, 255, 255, 0.08);--sbw-input-bg: rgba(255, 255, 255, 0.04);--sbw-cal-hover-bg: rgba(255, 255, 255, 0.06);\r
44
+ /* No fill on the prev/next nav buttons' hover -- border-color\r
45
+ (--sbw-cal-nav-hover-border-color below) is the only hover\r
46
+ treatment they get. Separate hook from --sbw-cal-hover-bg above\r
47
+ on purpose (see that variable's own doc comment in\r
48
+ SpaBookingWidget); day cells keep their neutral fill. */--sbw-cal-nav-hover-bg: transparent;\r
49
+ /* Invisible at rest (matches --sbw-bg above), revealed on hover --\r
50
+ same "discovered, not seen" treatment as the page-level calendar\r
51
+ nav buttons (.availability-month-nav .icon-btn in ota-table-\r
52
+ bookings' global.css). No --sbw-cal-nav-hover-border-color\r
53
+ override here on purpose -- it falls back to --sbw-accent-color\r
54
+ below, the same green already used for the selected day/time in\r
55
+ this same sheet, rather than a second, slightly different green. */--sbw-cal-nav-border-color: var(--sbw-bg);--sbw-service-hover-bg: rgba(255, 255, 255, 0.04);--sbw-accent-color: rgb(16, 185, 129);--sbw-accent-contrast: #fff;--sbw-accent-bg: linear-gradient(167deg, rgb(5, 150, 105) 0%, rgb(16, 185, 129) 50%, rgb(52, 211, 153) 100%);--sbw-accent-hover-bg: linear-gradient(167deg, rgb(16, 185, 129) 0%, rgb(52, 211, 153) 50%, rgb(110, 231, 183) 100%);--sbw-success-bg: linear-gradient(167deg, rgb(5, 150, 105) 0%, rgb(16, 185, 129) 50%, rgb(52, 211, 153) 100%);--sbw-danger-color: rgb(247, 37, 133);--sbw-heading-font-family: 'Unbounded', sans-serif;}`};function k(n,i){te(i,!0),ie(n,Ee);let w=e=>{var t=se();let n;var i=E(t),a=e=>{var t=y(`Live updates unavailable — showing loaded bookings only.`);f(e,t)},s=e=>{var t=O(),n=r(t);let i;var a=m(n,2),s=E(a,!0);g(a),o(()=>{i=_(n,1,`lsbf-live-icon-wrap svelte-wxeez`,null,i,{"lsbf-live-icon-wrap-connecting":u(U)===`connecting`}),T(s,u(U)===`connecting`?`Connecting…`:`Live`)}),f(e,t)};d(i,e=>{u(U)===`error`?e(a):e(s,-1)}),g(t),o(()=>n=_(t,1,`lsbf-status svelte-wxeez`,null,n,{"lsbf-status-error":u(U)===`error`})),f(e,t)},k=x(i,`heading`,7),A=x(i,`channelName`,7),j=x(i,`ablyAuthUrl`,7),M=x(i,`fetchBookings`,7),N=x(i,`maxItems`,7,30),P=x(i,`autoLoadMore`,7,!0),De=x(i,`emptyLabel`,7,`No spa bookings yet.`),F=x(i,`showEmail`,7,!0),I=x(i,`currency`,7,``),L=x(i,`fetchTreatments`,7),R=x(i,`fetchTherapists`,7),z=x(i,`fetchAvailability`,7),B=x(i,`submitBooking`,7),Oe=x(i,`createBooking`,7),V=x(i,`openNewBooking`,7),ke=x(i,`newBookingDate`,7),H=h(a([])),Ae=h(void 0),U=h(`connecting`),W=h(!0),je=h(!1),G=h(!0),K=h(void 0),Me=h(void 0);function Ne(){return typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches}function Pe(e){let t=[e,...u(H).filter(t=>t.id!==e.id)];p(H,P()?t:t.slice(0,N()),!0),q(`booking-updated`,e)}async function Fe(){if(!(u(je)||!u(G)||!M())){p(je,!0);try{let e=u(H)[u(H).length-1]?.created_at,t=await M()({cursor:e,limit:N()}),n=new Set(u(H).map(e=>e.id)),r=t.filter(e=>!n.has(e.id));p(H,[...u(H),...r],!0),p(G,t.length===N()&&r.length>0,!0)}catch(e){console.error(`live-spa-bookings-feed: failed to load more bookings`,e),p(G,!1)}finally{p(je,!1)}}}function Ie(e){try{return new Date(e).toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`})}catch{return e}}function Le(e){let t=Number(e);return Number.isNaN(t)?`${I()}${e}`:`${I()}${Number.isInteger(t)?t:t.toFixed(2)}`}function Re(e){try{return new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`})}catch{return e}}function ze(e){return e===`confirmed`?`var(--lsbf-status-confirmed-text, #3b82f6)`:e===`cancelled`?`var(--lsbf-status-cancelled-text, #ef4444)`:e===`checked_in`?`var(--lsbf-status-checked-in-text, #f59e0b)`:e===`completed`?`var(--lsbf-status-completed-text, #14b8a6)`:e===`no_show`?`var(--lsbf-status-no-show-text, #ec4899)`:`var(--lsbf-status-neutral-text, currentColor)`}function Be(e){return e===`confirmed`?`Booked`:e===`checked_in`?`Checked in`:e===`no_show`?`No show`:e.charAt(0).toUpperCase()+e.slice(1)}function Ve(e){return e===`cancelled`||e===`completed`||e===`no_show`}function q(e,t){i.$$host?.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}let J=h(null),He=h(a({top:0,left:0})),Ue=h(void 0);function We(e,t){if(u(J)?.id===e.id){p(J,null);return}let n=u(Ue).getBoundingClientRect(),r=t.getBoundingClientRect();p(He,{top:r.bottom-n.top+6,left:r.left-n.left},!0),p(J,e,!0)}function Y(){p(J,null)}function Ge(){u(J)&&(q(`cancel-booking`,{id:u(J).id,booking:u(J)}),Y())}function Ke(){u(J)&&(q(`mark-checked-in`,{id:u(J).id,booking:u(J)}),Y())}function qe(){u(J)&&(q(`mark-completed`,{id:u(J).id,booking:u(J)}),Y())}function Je(){u(J)&&(q(`mark-no-show`,{id:u(J).id,booking:u(J)}),Y())}l(()=>{if(!u(J)||typeof window>`u`)return;function e(e){e.composedPath().some(e=>e instanceof HTMLElement&&(e.classList.contains(`lsbf-cancel-popover`)||e.classList.contains(`lsbf-item-status-btn`)))||Y()}function t(e){e.key===`Escape`&&Y()}return window.addEventListener(`pointerdown`,e,!0),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`pointerdown`,e,!0),window.removeEventListener(`keydown`,t)}});let X=h(null),Ye=h(!1),Z=h(void 0),Xe=h(!1),Q=h(void 0);function Ze(e){p(X,e,!0),u(Z)?.showModal(),requestAnimationFrame(()=>requestAnimationFrame(()=>p(Xe,!0)))}function Qe(){p(Ye,!0),u(Z)?.showModal(),requestAnimationFrame(()=>requestAnimationFrame(()=>p(Xe,!0)))}function $e(){p(Xe,!1),setTimeout(()=>{u(Z)?.close(),p(X,null),p(Ye,!1)},250)}let et;l(()=>{V()!=null&&V()!==et&&(et=V(),Qe())}),l(()=>{if(!u(Q))return;let e=()=>$e();return u(Q).addEventListener(`booking-submitted`,e),()=>u(Q)?.removeEventListener(`booking-submitted`,e)}),l(()=>{if(!u(Q)||!u(X))return;let e=u(Q),t=u(X);e.fetchTreatments=L()&&(()=>L()(t)),e.fetchTherapists=R()&&(()=>R()(t)),e.fetchAvailability=z()&&((e,n,r,i)=>z()(e,n,r,i,t)),e.submitBooking=B()&&(e=>B()({...e,appointmentId:t.id,spaId:t.spa_id}))}),l(()=>{if(!u(Q)||!u(Ye))return;let e=u(Q);e.fetchTreatments=L()&&(()=>L()()),e.fetchTherapists=R()&&(()=>R()()),e.fetchAvailability=z()&&((e,t,n,r)=>z()(e,t,n,r)),e.submitBooking=Oe()}),l(()=>{if(typeof window>`u`||!A()||!j())return;let t,n=!1;return(async()=>{if(M())try{let e=await M()({limit:N()});n||(p(H,e,!0),p(G,e.length===N()))}catch(e){console.error(`live-spa-bookings-feed: failed to load existing bookings`,e)}finally{n||p(W,!1)}else p(W,!1);try{let{default:r}=await oe(async()=>{let{default:t}=await import(`./chunks/ably-5cVT4knS.js`).then(t=>e(t.default));return{default:t}},__vite__mapDeps([0,1]));if(n)return;t=new r.Realtime({authUrl:j()});let i=t.channels.get(A());t.connection.on(`connected`,()=>{n||p(U,`connected`)}),t.connection.on(`failed`,()=>{n||p(U,`error`)}),await i.subscribe(`new-booking`,e=>{n||Pe(e.data)}),await i.subscribe(`booking-status-changed`,e=>{n||Pe(e.data)})}catch(e){console.error(`live-spa-bookings-feed: Ably connection failed`,e),n||p(U,`error`)}})(),()=>{n=!0,t?.close()}}),l(()=>{if(!u(W)||!u(K)||Ne())return;let e=u(K).querySelectorAll(`.lsbf-skeleton-bar`),t=D.to(e,{opacity:.35,duration:.7,ease:`sine.inOut`,repeat:-1,yoyo:!0,stagger:.08});return()=>{t.kill()}});let tt=new Set;l(()=>{if(u(H).length,u(W)||!u(Me))return;let e=Array.from(u(Me).querySelectorAll(`.lsbf-item`)).filter(e=>{let t=e.dataset.id;return t!==void 0&&!tt.has(t)});if(e.length){for(let t of e)t.dataset.id&&tt.add(t.dataset.id);if(Ne()){D.set(e,{opacity:1,y:0});return}D.fromTo(e,{opacity:0,y:8},{opacity:1,y:0,duration:.4,ease:`power2.out`,stagger:.06})}}),l(()=>{if(!P()||!u(Ae))return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&Fe()},{rootMargin:`200px`});return e.observe(u(Ae)),()=>e.disconnect()});var nt={get heading(){return k()},set heading(e){k(e),c()},get channelName(){return A()},set channelName(e){A(e),c()},get ablyAuthUrl(){return j()},set ablyAuthUrl(e){j(e),c()},get fetchBookings(){return M()},set fetchBookings(e){M(e),c()},get maxItems(){return N()},set maxItems(e=30){N(e),c()},get autoLoadMore(){return P()},set autoLoadMore(e=!0){P(e),c()},get emptyLabel(){return De()},set emptyLabel(e=`No spa bookings yet.`){De(e),c()},get showEmail(){return F()},set showEmail(e=!0){F(e),c()},get currency(){return I()},set currency(e=``){I(e),c()},get fetchTreatments(){return L()},set fetchTreatments(e){L(e),c()},get fetchTherapists(){return R()},set fetchTherapists(e){R(e),c()},get fetchAvailability(){return z()},set fetchAvailability(e){z(e),c()},get submitBooking(){return B()},set submitBooking(e){B(e),c()},get createBooking(){return Oe()},set createBooking(e){Oe(e),c()},get openNewBooking(){return V()},set openNewBooking(e){V(e),c()},get newBookingDate(){return ke()},set newBookingDate(e){ke(e),c()}},rt=Te(),it=E(rt),at=e=>{var t=ce(),n=E(t),r=m(E(n));g(n);var i=m(n,2);w(i),g(t),o(()=>T(r,` ${k()??``}`)),f(e,t)},ot=e=>{w(e)};d(it,e=>{k()?e(at):e(ot,-1)});var st=m(it,2),ct=e=>{var t=ue();ae(t,20,()=>({length:3}),ne,(e,t)=>{var n=le();f(e,n)}),g(t),S(t,e=>p(K,e),()=>u(K)),f(e,t)},lt=e=>{var t=de(),n=E(t,!0);g(t),o(()=>T(n,De())),f(e,t)},ut=e=>{var n=xe(),i=r(n);ae(i,21,()=>u(H),e=>e.id,(e,n)=>{var r=ve(),i=m(E(r),2),a=E(i),c=E(a),l=E(c);g(c);var p=m(c,2),h=E(p,!0);g(p),g(a);var ee=m(a,2),te=E(ee),ne=e=>{var t=y();o(()=>T(t,u(n).treatment_name)),f(e,t)};d(te,e=>{u(n).treatment_name&&e(ne)});var _=m(te,2),ie=e=>{var t=y(`\xA0·\xA0`);f(e,t)};d(_,e=>{u(n).treatment_name&&u(n).therapist_name&&e(ie)});var b=m(_,2),x=e=>{var t=y();o(()=>T(t,`with ${u(n).therapist_name??``}`)),f(e,t)};d(b,e=>{u(n).therapist_name&&e(x)}),g(ee);var S=m(ee,2),w=e=>{var t=fe(),r=E(t,!0);g(t),o(e=>T(r,e),[()=>Be(u(n).status)]),f(e,t)},ae=s(()=>Ve(u(n).status)),oe=e=>{var t=pe(),r=E(t,!0);g(t),o(e=>{C(t,`aria-expanded`,u(J)?.id===u(n).id),T(r,e)},[()=>Be(u(n).status)]),v(`click`,t,e=>We(u(n),e.currentTarget)),f(e,t)};d(S,e=>{u(ae)?e(w):e(oe,-1)});var D=m(S,2),O=E(D),se=E(O,!0);g(O);var ce=m(O,2),le=E(ce),ue=E(le,!0);g(le),t(2),g(ce);var de=m(ce,2),ye=e=>{var t=me(),r=E(t,!0);g(t),o(e=>T(r,e),[()=>Le(u(n).price)]),f(e,t)};d(de,e=>{u(n).price!=null&&e(ye)}),g(D);var be=m(D,2),xe=e=>{var t=_e(),r=E(t),i=e=>{var t=he(),r=E(t,!0);g(t),o(()=>{C(t,`href`,`mailto:${u(n).email}`),T(r,u(n).email)}),f(e,t)};d(r,e=>{F()&&u(n).email&&e(i)});var a=m(r,2),s=e=>{var t=ge(),r=E(t,!0);g(t),o(()=>T(r,u(n).phone)),f(e,t)};d(a,e=>{u(n).phone&&e(s)}),g(t),f(e,t)};d(be,e=>{(F()&&u(n).email||u(n).phone)&&e(xe)}),g(i),g(r),o((e,t,i)=>{C(r,`data-id`,u(n).id),re(r,e),T(l,`${u(n).first_name??``} ${u(n).last_name??``}`),T(h,t),T(se,i),T(ue,u(n).duration_minutes)},[()=>`--lsbf-accent: ${ze(u(n).status)}`,()=>Re(u(n).created_at),()=>Ie(u(n).start_time)]),v(`click`,O,()=>Ze(u(n))),f(e,r)}),g(i),S(i,e=>p(Me,e),()=>u(Me));var a=m(i,2),c=e=>{var t=ye();f(e,t)};d(a,e=>{u(je)&&e(c)});var l=m(a,2),h=e=>{var t=be();S(t,e=>p(Ae,e),()=>u(Ae)),f(e,t)};d(l,e=>{P()&&u(G)&&e(h)}),f(e,n)};d(st,e=>{u(W)?e(ct):u(H).length===0?e(lt,1):e(ut,-1)});var dt=m(st,2),ft=e=>{var t=Ce(),n=E(t),r=E(n);g(n);var i=m(n,2),a=E(i),s=e=>{var t=Se();v(`click`,t,Ke),f(e,t)};d(a,e=>{u(J).status===`confirmed`&&e(s)});var c=m(a,2),l=m(c,2),p=m(l,2);g(i),g(t),o(e=>{C(t,`aria-label`,`${u(J).first_name}'s booking`),re(t,e),T(r,`${u(J).first_name??``}'s booking`)},[()=>`top:${u(He).top}px; left:${u(He).left}px; --lsbf-popover-accent: ${ze(u(J).status)};`]),v(`click`,c,qe),v(`click`,l,Je),v(`click`,p,Ge),f(e,t)};d(dt,e=>{u(J)&&e(ft)});var $=m(dt,2);let pt;var mt=E($),ht=E(mt),gt=E(ht),_t=E(gt,!0);g(gt);var vt=m(gt,2);g(ht);var yt=m(ht,2),bt=E(yt),xt=e=>{var t=we();b(t,`heading`,``),b(t,`skip-details-step`,!0),o(()=>b(t,`initial-treatment-title`,u(X).treatment_name??``)),o(()=>b(t,`initial-date`,u(X).start_time.slice(0,10))),o(()=>b(t,`initial-time`,u(X).start_time.slice(11,16))),o(()=>b(t,`initial-name`,`${u(X).first_name} ${u(X).last_name}`.trim())),o(()=>b(t,`initial-email`,u(X).email??``)),o(()=>b(t,`initial-phone`,u(X).phone??``)),_(t,1,`svelte-wxeez`),S(t,e=>p(Q,e),()=>u(Q)),f(e,t)},St=e=>{var t=we();b(t,`heading`,``),b(t,`email-optional`,!0),o(()=>b(t,`initial-date`,ke()??``)),_(t,1,`svelte-wxeez`),S(t,e=>p(Q,e),()=>u(Q)),f(e,t)};return d(bt,e=>{u(X)?e(xt):u(Ye)&&e(St,1)}),g(yt),g(mt),g($),S($,e=>p(Z,e),()=>u(Z)),g(rt),S(rt,e=>p(Ue,e),()=>u(Ue)),o(()=>{pt=_($,1,`lsbf-sheet svelte-wxeez`,null,pt,{"lsbf-sheet-visible":u(Xe)}),C($,`aria-label`,u(X)?`Change booking`:`New booking`),T(_t,u(X)?`Change booking`:`New booking`)}),v(`click`,$,e=>e.target===u(Z)&&$e()),v(`click`,vt,$e),f(n,rt),ee(nt)}n([`click`]),customElements.define(`live-spa-bookings-feed`,w(k,{heading:{attribute:`heading`,type:`String`},channelName:{attribute:`channel-name`,type:`String`},ablyAuthUrl:{attribute:`ably-auth-url`,type:`String`},maxItems:{attribute:`max-items`,type:`Number`},autoLoadMore:{attribute:`auto-load-more`,type:`Boolean`},emptyLabel:{attribute:`empty-label`,type:`String`},showEmail:{attribute:`show-email`,type:`Boolean`},currency:{attribute:`currency`,type:`String`},fetchTreatments:{type:`Object`},fetchTherapists:{type:`Object`},fetchAvailability:{type:`Object`},submitBooking:{type:`Object`},createBooking:{type:`Object`},openNewBooking:{type:`Number`},newBookingDate:{attribute:`new-booking-date`,type:`String`},fetchBookings:{}},[],[],{mode:`open`}));
@@ -0,0 +1,90 @@
1
+ import{$ as e,A as t,B as n,C as r,D as i,E as a,H as o,I as s,J as c,K as l,L as u,M as d,N as f,S as p,T as m,U as h,V as g,W as _,X as v,Z as y,b,d as x,et as S,f as C,h as w,j as T,n as E,r as D,s as O,t as k,v as A,w as j,x as ee,y as M,z as N}from"./chunks/client-BDk8LqGN.js";import{t as P}from"./chunks/gsap-DWxn8li7.js";var te=i(`<div class="msp-eyebrow svelte-5fgoxp"><span class="msp-eyebrow-line svelte-5fgoxp"></span> <span class="msp-eyebrow-text svelte-5fgoxp"> </span></div>`),ne=i(`<button type="button"> </button>`),re=i(`<div class="msp-tabs svelte-5fgoxp"><span class="msp-tab-indicator svelte-5fgoxp"></span> <!></div>`),ie=i(`<div class="msp-info-item svelte-5fgoxp"><span class="msp-info-label svelte-5fgoxp"> </span> <span class="msp-info-value svelte-5fgoxp"> </span></div>`),ae=i(`<div class="msp-info svelte-5fgoxp"><!></div>`),oe=i(`<button type="button" class="ms-allergen svelte-5fgoxp"><img class="ms-allergen-icon svelte-5fgoxp" loading="lazy"/> <span class="ms-allergen-tip svelte-5fgoxp" role="tooltip"> </span></button>`),se=i(`<div class="ms-allergens svelte-5fgoxp"></div>`),ce=i(`<div class="msp-item svelte-5fgoxp" part="item"><div class="msp-item-name svelte-5fgoxp"> </div> <div class="msp-item-desc svelte-5fgoxp"> </div> <div class="msp-item-footer svelte-5fgoxp"><div class="msp-item-price svelte-5fgoxp" part="item-price"> </div> <!></div></div>`),le=i(`<div></div>`),ue=i(`<section class="msp-root svelte-5fgoxp"><div class="msp-header svelte-5fgoxp"><div class="svelte-5fgoxp"><!> <h2 class="msp-heading svelte-5fgoxp"> </h2></div> <!></div> <!> <!></section>`),de=i(`<div class="ms-heading-circle svelte-5fgoxp"></div>`),fe=i(`<img alt="" class="ms-flourish svelte-5fgoxp"/>`),pe=i(`<span class="ms-heading-title svelte-5fgoxp"> </span>`),me=i(`<span class="ms-heading-eyebrow svelte-5fgoxp"> </span>`),he=i(`<img alt="" class="ms-flourish ms-flourish-tail svelte-5fgoxp"/>`),ge=i(`<button type="button" class="ms-pdf-trigger svelte-5fgoxp"> <span aria-hidden="true" class="svelte-5fgoxp">→</span></button>`),_e=i(`<div class="ms-filters svelte-5fgoxp" part="filters"><button type="button"> </button> <!></div>`),ve=i(`<button type="button"> </button> <!>`,1),ye=i(`<div part="filters"><!></div>`),be=i(`<!> <!>`,1),xe=i(`<div class="ms-info-item svelte-5fgoxp"><span class="ms-info-label svelte-5fgoxp"> </span> <span class="ms-info-value svelte-5fgoxp"> </span></div>`),Se=i(`<div class="ms-info-bar svelte-5fgoxp"><!></div>`),Ce=i(`<div class="ms-item-group svelte-5fgoxp"> </div>`),we=i(`<div class="ms-item-meta svelte-5fgoxp"> </div>`),Te=i(`<div class="ms-item-description svelte-5fgoxp"> </div>`),Ee=i(`<div class="ms-item-price svelte-5fgoxp" part="item-price"> </div>`),De=i(`<div class="ms-qty svelte-5fgoxp" part="qty"><button type="button" class="ms-qty-btn svelte-5fgoxp"><span class="svelte-5fgoxp">−</span></button> <span> </span> <button type="button" class="ms-qty-btn svelte-5fgoxp"><span class="svelte-5fgoxp">+</span></button></div>`),Oe=i(`<div class="ms-item svelte-5fgoxp" part="item"><div class="ms-item-name svelte-5fgoxp"> </div> <!> <!> <!> <div class="ms-item-footer svelte-5fgoxp"><!> <!> <!></div></div>`),ke=i(`<section><div class="ms-container svelte-5fgoxp"><div class="ms-header svelte-5fgoxp"><div class="ms-heading-col svelte-5fgoxp"><div class="ms-heading-block svelte-5fgoxp"><!> <!> <h1 class="ms-heading svelte-5fgoxp"><!> <div class="ms-heading-rule svelte-5fgoxp"></div> <!></h1> <!></div> <!></div> <div class="ms-controls svelte-5fgoxp"><div class="ms-tabs svelte-5fgoxp"><!> <span class="ms-tab-indicator svelte-5fgoxp"></span></div> <!> <!></div></div> <!></div></section>`),F=i(`<dialog class="ms-pdf-dialog svelte-5fgoxp"><div class="ms-pdf-dialog-header svelte-5fgoxp"><span class="ms-pdf-dialog-title svelte-5fgoxp"> </span> <div class="ms-pdf-dialog-actions svelte-5fgoxp"><a target="_blank" rel="noreferrer noopener" class="ms-pdf-open-link svelte-5fgoxp"> </a> <button type="button" class="ms-pdf-close svelte-5fgoxp"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-5fgoxp"><path d="M6 6l12 12M18 6L6 18" stroke-linecap="round" class="svelte-5fgoxp"></path></svg></button></div></div> <iframe class="ms-pdf-frame svelte-5fgoxp"></iframe></dialog>`),Ae={hash:`svelte-5fgoxp`,code:`.ms-root.svelte-5fgoxp {display:block;\r
2
+ /* The panel/tab breakpoints below are about how much room this\r
3
+ component has been given, not how wide the window is -- a shadow-DOM\r
4
+ @media matches the viewport, so a host that drops this into a narrow\r
5
+ column (a sidebar, or a grid column next to a photo) still got the\r
6
+ full desktop 2/3-column panel and overflowed. Naming the container\r
7
+ keeps those queries pointed here even if a host nests another\r
8
+ container around it. Inline-size containment also stops this\r
9
+ element handing its contents' min-content width up to the host,\r
10
+ which is what made it wider than its column in the first place. */container:ms / inline-size;font-family:inherit;color:var(--ms-text-color, #1a1a1a);background:var(--ms-bg, #faf6ec);padding:var(--ms-padding, 7rem 1.5rem 4rem);}.ms-container.svelte-5fgoxp {max-width:72rem;margin:0 auto;}.ms-header.svelte-5fgoxp {display:flex;flex-direction:column;gap:1.5rem;}.ms-heading-col.svelte-5fgoxp {display:flex;flex-direction:column;align-items:center;gap:1rem;}.ms-align-left.svelte-5fgoxp .ms-heading-col:where(.svelte-5fgoxp) {align-items:flex-start;}.ms-heading-block.svelte-5fgoxp {position:relative;text-align:center;line-height:1.6;}.ms-align-left.svelte-5fgoxp .ms-heading-block:where(.svelte-5fgoxp) {width:fit-content;text-align:left;}.ms-heading-circle.svelte-5fgoxp {position:absolute;top:50%;left:50%;width:16rem;height:16rem;transform:translate(-50%, -50%);border-radius:50%;pointer-events:none;}.ms-flourish.svelte-5fgoxp {position:relative;display:block;margin:0 auto 0.5rem;max-width:11rem;}.ms-flourish-tail.svelte-5fgoxp {max-width:7.5rem;}.ms-heading.svelte-5fgoxp {position:relative;margin:0;font-size:1rem;line-height:1.625;}.ms-heading-title.svelte-5fgoxp {font-size:3rem;font-weight:600;line-height:1;color:var(--ms-heading-color, #1a1a1a);}\r
11
+ /* Matches .ms-heading-title above so a host that slots its own title\r
12
+ element (instead of the title attribute) gets the same base size/line-\r
13
+ height for free -- targeted by the slot attribute, not a class, so it\r
14
+ works no matter what element or class the host uses. font-weight is\r
15
+ deliberately omitted (see SpaBookingWidget's heading slot precedent):\r
16
+ it's part of a host's own typographic identity, not a layout default,\r
17
+ and including it here would out-specificity a host class trying to\r
18
+ set its own weight. */::slotted([slot='heading-title']) {font-size:3rem;line-height:1;}.ms-heading-rule.svelte-5fgoxp {margin:0.25rem auto;height:1px;width:4rem;background:var(--ms-rule-color, rgba(196, 158, 90, 0.5));}.ms-align-left.svelte-5fgoxp .ms-heading-rule:where(.svelte-5fgoxp) {margin-left:0;}.ms-heading-eyebrow.svelte-5fgoxp {font-size:0.875rem;font-weight:100;line-height:1.25rem;color:var(--ms-heading-color, #1a1a1a);}\r
19
+ /* Matches .ms-heading-eyebrow above so a host that slots its own eyebrow\r
20
+ element gets the same base size/line-height for free -- see the\r
21
+ heading-title ::slotted rule for why font-weight/color are left to\r
22
+ the host instead of duplicated here. */::slotted([slot='eyebrow']) {font-size:0.875rem;line-height:1.25rem;}.ms-pdf-trigger.svelte-5fgoxp {display:inline-flex;align-items:center;gap:0.375rem;cursor:pointer;border:none;background:none;padding:0;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;text-decoration:underline;text-underline-offset:4px;color:var(--ms-heading-color, inherit);opacity:0.9;}.ms-pdf-trigger.svelte-5fgoxp:hover {opacity:1;}.ms-controls.svelte-5fgoxp {display:flex;flex-direction:column;gap:1rem;align-items:center;}.ms-tabs.svelte-5fgoxp {position:relative;display:inline-flex;\r
23
+ /* Six category pills don't fit a narrow container, and this row can't\r
24
+ wrap: .ms-tab-indicator is placed from the active button's\r
25
+ offsetLeft only, so a wrapped row would strand it on the wrong\r
26
+ line. Scrolling keeps the strip one row and the indicator correct\r
27
+ (it's absolutely positioned inside this box, so it scrolls with\r
28
+ the pills). Scrollbar hidden -- the pills are the affordance. */\r
29
+ /* border-box so the max-width counts this strip's own border and\r
30
+ padding -- as content-box it sat 10px wider than the space it was\r
31
+ given and hung over the edge. */box-sizing:border-box;max-width:100%;overflow-x:auto;scrollbar-width:none;gap:0.25rem;border-radius:2px;border:1px solid var(--ms-border-color, rgba(0, 0, 0, 0.1));background:var(--ms-group-bg, rgba(0, 0, 0, 0.03));padding:0.25rem;}.ms-filters.svelte-5fgoxp {display:flex;flex-wrap:wrap;justify-content:flex-end;gap:0.375rem;margin-top:0.5rem;}.ms-filters-secondary.svelte-5fgoxp {margin-top:0.375rem;}.ms-filters-hidden.svelte-5fgoxp {display:none;}.ms-filter.svelte-5fgoxp {cursor:pointer;border:1px solid var(--ms-border-color, rgba(0, 0, 0, 0.15));border-radius:999px;background:transparent;color:inherit;padding:0.25rem 0.75rem;font:inherit;font-size:0.7rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;transition:background 150ms ease, color 150ms ease;}.ms-filter-active.svelte-5fgoxp {background:var(--ms-accent-bg, #1a1a1a);color:var(--ms-accent-text, #fff);border-color:transparent;}.ms-tabs.svelte-5fgoxp::-webkit-scrollbar {display:none;}.ms-tab.svelte-5fgoxp {position:relative;z-index:1;\r
32
+ /* Hold each pill at its natural width so a narrow strip scrolls (see\r
33
+ .ms-tabs) instead of the default flex shrink squeezing the pills\r
34
+ until their labels wrap -- a two-line "Wine Specials" mid-row was\r
35
+ the visible symptom of that. */flex:0 0 auto;white-space:nowrap;cursor:pointer;border:none;border-radius:2px;background:transparent;color:inherit;padding:0.5rem 1.25rem;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;transition:color 150ms ease;}.ms-tab-active.svelte-5fgoxp {color:var(--ms-accent-text, #fff);}.ms-tab-indicator.svelte-5fgoxp {position:absolute;top:4px;bottom:4px;z-index:0;border-radius:2px;background:var(--ms-accent-bg, #1a1a1a);transition:left 300ms cubic-bezier(0.4, 0, 0.2, 1), width 300ms cubic-bezier(0.4, 0, 0.2, 1);}.ms-info-bar.svelte-5fgoxp {display:grid;grid-template-columns:repeat(2, 1fr);gap:1px;overflow:hidden;border-radius:2px;border:1px solid var(--ms-border-color, rgba(0, 0, 0, 0.1));background:var(--ms-info-gap-bg, var(--ms-border-color, rgba(0, 0, 0, 0.1)));}.ms-info-item.svelte-5fgoxp {display:flex;flex-direction:column;gap:0.25rem;background:var(--ms-panel-bg, #fff);padding:1rem;}.ms-info-label.svelte-5fgoxp {font-size:0.75rem;font-weight:100;text-transform:uppercase;letter-spacing:0.05em;}.ms-info-value.svelte-5fgoxp {font-size:0.875rem;font-weight:600;}.ms-panel.svelte-5fgoxp {display:grid;grid-template-columns:1fr;gap:1px;margin-top:3rem;overflow:hidden;border-radius:2px;border:1px solid var(--ms-border-color, rgba(0, 0, 0, 0.1));background:var(--ms-panel-gap-bg, var(--ms-border-color, rgba(0, 0, 0, 0.1)));}\r
36
+ /* Same 640/1024 steps as before, but measured against .ms-root's own\r
37
+ content box instead of the viewport. An .ms-item needs ~330px before\r
38
+ its name/description/price/stepper row stops being cramped, so these\r
39
+ thresholds keep the previous behaviour wherever the component is\r
40
+ full-width, and correctly fall back to fewer columns when a host gives\r
41
+ it less room than the window suggests. */\r
42
+ @container ms (min-width: 640px) {.ms-panel.svelte-5fgoxp {grid-template-columns:repeat(2, 1fr);}\r
43
+ }\r
44
+ @container ms (min-width: 1024px) {.ms-panel.svelte-5fgoxp {grid-template-columns:repeat(3, 1fr);}.ms-columns-2.svelte-5fgoxp .ms-panel:where(.svelte-5fgoxp) {grid-template-columns:repeat(2, 1fr);}\r
45
+ }.ms-panel-hidden.svelte-5fgoxp {display:none;}.ms-item-group.svelte-5fgoxp {grid-column:1 / -1;background:var(--ms-group-bg, rgba(0, 0, 0, 0.03));padding:0.75rem 1.75rem;font-weight:300;text-transform:uppercase;letter-spacing:0.05em;}.ms-item.svelte-5fgoxp {display:flex;flex-direction:column;gap:0.5rem;background:var(--ms-panel-bg, #fff);padding:1.75rem;}.ms-item-name.svelte-5fgoxp {font-size:1.125rem;font-weight:700;letter-spacing:-0.01em;}.ms-item-meta.svelte-5fgoxp {font-size:0.9375rem;font-style:italic;opacity:0.8;}.ms-item-description.svelte-5fgoxp {flex:1;line-height:1.6;\r
46
+ /* color-mix, not opacity: an opacity multiplier stacks with whatever\r
47
+ textColor a host already set, silently ending up low-contrast\r
48
+ against a dark theme.textColor/panelBg pairing no matter how\r
49
+ readable the item name right above it is. mutedTextColor lets a\r
50
+ host override this directly instead of fighting the multiply. */color:var(--ms-muted-text-color, color-mix(in srgb, var(--ms-text-color, #1a1a1a) 70%, transparent));}.ms-item-footer.svelte-5fgoxp {display:flex;align-items:center;justify-content:space-between;gap:0.5rem;margin-top:0.5rem;}.ms-item-price.svelte-5fgoxp {font-size:0.875rem;font-weight:600;color:var(--ms-price-color, inherit);}.ms-qty.svelte-5fgoxp {display:flex;align-items:center;gap:0.5rem;margin-left:auto;}.ms-qty-btn.svelte-5fgoxp {position:relative;display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;flex-shrink:0;overflow:hidden;border-radius:50%;border:1.5px solid var(--ms-border-color, rgba(0, 0, 0, 0.18));background:none;font:inherit;font-size:0.875rem;color:inherit;cursor:pointer;transition:color 250ms ease, border-color 250ms ease;}\r
51
+ /* Expanding-circle fill, same trick as <proshop-catalogue>'s own qty\r
52
+ buttons (ProshopCatalogue.svelte) -- an instant background swap read as\r
53
+ flat next to that component's motion, so this matches it exactly\r
54
+ rather than reinventing a cheaper hover. */.ms-qty-btn.svelte-5fgoxp::before {content:'';position:absolute;inset:0;z-index:0;border-radius:50%;background:var(--ms-accent-bg, #1a1a1a);transform:scale(0);transition:transform 350ms cubic-bezier(0.4, 0, 0.2, 1);}.ms-qty-btn.svelte-5fgoxp:hover::before {transform:scale(1);}.ms-qty-btn.svelte-5fgoxp:hover {color:var(--ms-accent-text, #fff);border-color:var(--ms-accent-bg, #1a1a1a);}.ms-qty-btn.svelte-5fgoxp span:where(.svelte-5fgoxp) {position:relative;z-index:1;}.ms-qty-val.svelte-5fgoxp {min-width:1rem;text-align:center;font-size:0.8125rem;font-weight:600;}.ms-qty-pop.svelte-5fgoxp {\r
55
+ animation: svelte-5fgoxp-ms-qty-pop 300ms cubic-bezier(0.34, 1.56, 0.64, 1);}\r
56
+ @keyframes svelte-5fgoxp-ms-qty-pop {\r
57
+ 0% {\r
58
+ transform: scale(1);\r
59
+ }\r
60
+ 40% {\r
61
+ transform: scale(1.5);\r
62
+ }\r
63
+ 100% {\r
64
+ transform: scale(1);\r
65
+ }\r
66
+ }\r
67
+ @media (prefers-reduced-motion: reduce) {.ms-qty-btn.svelte-5fgoxp,\r
68
+ .ms-qty-btn.svelte-5fgoxp::before,\r
69
+ .ms-qty-val.svelte-5fgoxp {transition:none;\r
70
+ animation: none;}\r
71
+ }.ms-allergens.svelte-5fgoxp {display:flex;align-items:center;gap:0.375rem;}.ms-allergen.svelte-5fgoxp {position:relative;display:inline-flex;cursor:default;border:none;background:none;padding:0;margin:0;font:inherit;color:inherit;}.ms-allergen-icon.svelte-5fgoxp {width:1rem;height:1rem;opacity:0.7;}.ms-allergen.svelte-5fgoxp:hover .ms-allergen-icon:where(.svelte-5fgoxp),\r
72
+ .ms-allergen.svelte-5fgoxp:focus-within .ms-allergen-icon:where(.svelte-5fgoxp) {opacity:1;}.ms-allergen-tip.svelte-5fgoxp {pointer-events:none;position:absolute;bottom:100%;left:50%;z-index:20;margin-bottom:0.5rem;width:max-content;max-width:10rem;transform:translateX(-50%);border-radius:2px;background:#1a1a1a;padding:0.25rem 0.5rem;text-align:center;font-size:0.625rem;font-weight:600;text-transform:uppercase;letter-spacing:0.03em;color:#fff;opacity:0;box-shadow:0 4px 12px rgba(0, 0, 0, 0.2);transition:opacity 150ms ease;}.ms-allergen.svelte-5fgoxp:hover .ms-allergen-tip:where(.svelte-5fgoxp),\r
73
+ .ms-allergen.svelte-5fgoxp:focus-within .ms-allergen-tip:where(.svelte-5fgoxp) {opacity:1;}.ms-pdf-dialog.svelte-5fgoxp {display:flex;flex-direction:column;margin:auto;width:92vw;max-width:72rem;height:85vh;border:none;border-radius:2px;background:#fff;padding:0;overflow:hidden;}.ms-pdf-dialog.svelte-5fgoxp::backdrop {background:rgba(0, 0, 0, 0.7);}.ms-pdf-dialog.svelte-5fgoxp:not([open]) {display:none;}.ms-pdf-dialog-header.svelte-5fgoxp {display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(0, 0, 0, 0.1);padding:0.75rem 1.25rem;}.ms-pdf-dialog-title.svelte-5fgoxp {font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;opacity:0.7;}.ms-pdf-dialog-actions.svelte-5fgoxp {display:flex;align-items:center;gap:1.25rem;}.ms-pdf-open-link.svelte-5fgoxp {font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;text-decoration:underline;text-underline-offset:4px;color:inherit;opacity:0.6;}.ms-pdf-open-link.svelte-5fgoxp:hover {opacity:1;}.ms-pdf-close.svelte-5fgoxp {display:inline-flex;cursor:pointer;border:none;background:none;padding:0;color:inherit;opacity:0.6;}.ms-pdf-close.svelte-5fgoxp:hover {opacity:1;}.ms-pdf-close.svelte-5fgoxp svg:where(.svelte-5fgoxp) {width:1.25rem;height:1.25rem;}.ms-pdf-frame.svelte-5fgoxp {flex:1;width:100%;border:0;}\r
74
+ \r
75
+ /* Split layout: heading beside tabs/info instead of above them, desktop only. */\r
76
+ @media (min-width: 1024px) {.ms-layout-split.svelte-5fgoxp .ms-header:where(.svelte-5fgoxp) {flex-direction:row;align-items:flex-end;justify-content:space-between;}.ms-layout-split.svelte-5fgoxp .ms-heading-col:where(.svelte-5fgoxp) {flex-shrink:0;margin-top:1rem;margin-left:5rem;}.ms-layout-split.ms-align-left.svelte-5fgoxp .ms-heading-col:where(.svelte-5fgoxp) {margin-top:0;margin-left:0;}.ms-layout-split.svelte-5fgoxp .ms-controls:where(.svelte-5fgoxp) {margin-top:2rem;align-items:flex-end;}\r
77
+ /* Circle badges are designed to peek up behind the header bar. */.ms-layout-split.ms-has-circle.svelte-5fgoxp .ms-heading-col:where(.svelte-5fgoxp) {transform:translateY(-6rem);}\r
78
+ }\r
79
+ \r
80
+ /* ── Panel variant ─────────────────────────────────────────────────────\r
81
+ Eyebrow-above-heading header row, tabs right, full-width boxed info\r
82
+ grid, bordered item-card grid. Light-surface design; host page supplies\r
83
+ the background and horizontal padding. */.msp-root.svelte-5fgoxp {display:block;border-top:1px solid rgba(26, 26, 24, 0.1);padding-bottom:4rem;font-family:'Inter', sans-serif;color:#1a1a18;}.msp-header.svelte-5fgoxp {display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem;}.msp-eyebrow.svelte-5fgoxp {display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;}.msp-eyebrow-line.svelte-5fgoxp {width:2rem;height:1px;background:rgba(26, 26, 24, 0.15);}.msp-eyebrow-text.svelte-5fgoxp {font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:rgba(26, 26, 24, 0.65);}.msp-heading.svelte-5fgoxp {margin:0;font-family:'Syne', sans-serif;font-size:32px;font-weight:800;line-height:0.95;letter-spacing:-1px;color:#1a1a18;}.msp-tabs.svelte-5fgoxp {position:relative;display:flex;gap:0.25rem;background:rgba(26, 26, 24, 0.04);border:1px solid rgba(26, 26, 24, 0.08);padding:0.25rem;}.msp-tab.svelte-5fgoxp {position:relative;z-index:1;cursor:pointer;border:none;background:transparent;padding:0.5rem 1.25rem;font-family:'Inter', sans-serif;font-size:13px;font-weight:600;color:rgba(26, 26, 24, 0.7);transition:color 200ms ease;}.msp-tab-active.svelte-5fgoxp {color:#f5f2ec;}.msp-tab-indicator.svelte-5fgoxp {position:absolute;top:0.25rem;bottom:0.25rem;z-index:0;background:#1a1a18;pointer-events:none;transition:left 300ms cubic-bezier(0.645, 0.045, 0.355, 1),\r
84
+ width 300ms cubic-bezier(0.645, 0.045, 0.355, 1);}.msp-info.svelte-5fgoxp {display:grid;grid-template-columns:repeat(2, 1fr);gap:2px;margin-bottom:3rem;}.msp-info-item.svelte-5fgoxp {display:flex;flex-direction:column;gap:0.25rem;padding:1rem;background:rgba(26, 26, 24, 0.02);border:1px solid rgba(26, 26, 24, 0.06);}.msp-info-label.svelte-5fgoxp {font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;color:rgba(26, 26, 24, 0.65);}.msp-info-value.svelte-5fgoxp {font-size:14px;font-weight:500;color:#1a1a18;}.msp-grid.svelte-5fgoxp {display:grid;grid-template-columns:1fr;gap:2px;}.msp-hidden.svelte-5fgoxp {display:none;}.msp-item.svelte-5fgoxp {display:flex;flex-direction:column;gap:0.5rem;padding:1.75rem;border:1px solid rgba(26, 26, 24, 0.08);background:transparent;transition:background-color 150ms ease;}.msp-item.svelte-5fgoxp:hover {background:rgba(26, 26, 24, 0.02);}.msp-item-name.svelte-5fgoxp {font-family:'Syne', sans-serif;font-size:18px;font-weight:800;letter-spacing:-0.3px;color:#1a1a18;}.msp-item-desc.svelte-5fgoxp {flex:1;font-size:14px;line-height:1.6;color:rgba(26, 26, 24, 0.72);}.msp-item-footer.svelte-5fgoxp {display:flex;align-items:center;justify-content:space-between;gap:0.5rem;margin-top:0.5rem;}.msp-item-price.svelte-5fgoxp {font-size:15px;font-weight:600;color:#1a1a18;}\r
85
+ /* Panel items are ink-on-light; the shared .ms-allergen-icon rule sizes the\r
86
+ glyphs at 1rem and fades them to 70% until hovered. */\r
87
+ @media (min-width: 640px) {.msp-grid.svelte-5fgoxp {grid-template-columns:repeat(2, 1fr);}\r
88
+ }\r
89
+ @media (min-width: 1024px) {.msp-root.svelte-5fgoxp {padding-bottom:150px;}.msp-header.svelte-5fgoxp {flex-direction:row;align-items:flex-end;justify-content:space-between;}.msp-heading.svelte-5fgoxp {font-size:44px;letter-spacing:-1.32px;}.msp-grid.svelte-5fgoxp {grid-template-columns:repeat(3, 1fr);}\r
90
+ }`};function I(t,i){y(i,!0),w(t,Ae);let k={textColor:`--ms-text-color`,headingColor:`--ms-heading-color`,accentBg:`--ms-accent-bg`,accentText:`--ms-accent-text`,priceColor:`--ms-price-color`,ruleColor:`--ms-rule-color`,panelBg:`--ms-panel-bg`,borderColor:`--ms-border-color`,groupBg:`--ms-group-bg`,panelGapBg:`--ms-panel-gap-bg`,infoGapBg:`--ms-info-gap-bg`,bg:`--ms-bg`,padding:`--ms-padding`,mutedTextColor:`--ms-muted-text-color`},I=E(i,`title`,7,`MENU`),L=E(i,`eyebrow`,7,``),R=E(i,`categories`,23,()=>[]),z=E(i,`info`,23,()=>[]),je=E(i,`allergens`,23,()=>[]),B=E(i,`pdfUrl`,7),V=E(i,`pdfLabel`,7,`View PDF Menu`),Me=E(i,`topFlourishSrc`,7),Ne=E(i,`tailFlourishSrc`,7),H=E(i,`headingCircleColor`,7),Pe=E(i,`headingAlign`,7,`center`),Fe=E(i,`layout`,7,`stacked`),U=E(i,`variant`,7,`default`),Ie=E(i,`disableHeadingMotion`,7,!1),Le=E(i,`itemColumns`,7,3),Re=E(i,`theme`,23,()=>({})),ze=E(i,`openInNewTabLabel`,7,`Open in New Tab`),Be=E(i,`closeAriaLabel`,7,`Close`),W=E(i,`groupFilter`,7,!1),Ve=E(i,`countryFilter`,7,!1),He=E(i,`groupFilterAllLabel`,7,`All`),Ue=E(i,`countryFilterAllLabel`,7,`All`),We=E(i,`cartEnabled`,7,!1),Ge=E(i,`initial`,23,()=>[]);function Ke(e,t){i.$$host?.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}let G=_(o({}));u(()=>{h(G,Object.fromEntries(Ge().filter(e=>e.quantity>0).map(e=>[String(e.id),e.quantity])),!0)});function qe(e,t){f(G)[e]=Math.max(0,Math.min(t,99))}function Je(e){e.animate([{transform:`scale(1)`,offset:0},{transform:`scale(0.82)`,offset:.15},{transform:`scale(1.1)`,offset:.55},{transform:`scale(1)`,offset:1}],{duration:420,easing:`ease`})}let Ye=_(null);function Xe(e){h(Ye,null),queueMicrotask(()=>h(Ye,e,!0))}let Ze=c(()=>R().flatMap(e=>e.items).filter(e=>e.id!=null&&e.priceValue!=null&&(f(G)[e.id]??0)>0).map(e=>({id:e.id,name:e.name,price:e.priceValue,quantity:f(G)[e.id]}))),Qe=c(()=>f(Ze).reduce((e,t)=>e+t.price*t.quantity,0));u(()=>{We()&&Ke(`cart-change`,{items:f(Ze),total:f(Qe)})}),u(()=>{let e=i.$$host;if(e)for(let t of Object.keys(k)){let n=Re()[t],r=k[t];n?e.style.setProperty(r,n):e.style.removeProperty(r)}});let K=_(0),q=_(o({})),J=c(()=>f(q)[f(K)]?.g??null),$e=c(()=>f(q)[f(K)]?.c??null);function et(e){h(q,{...f(q),[f(K)]:{g:e,c:null}},!0)}function tt(e){h(q,{...f(q),[f(K)]:{g:f(J),c:e}},!0)}function nt(e){let t=f(q)[e];return`${t?.g??``}|${t?.c??``}`}function rt(e){return[...new Set(e.filter(e=>!!e))]}function it(e){return rt(e.items.map(e=>e.group))}function at(e){return rt(e.items.filter(e=>!f(J)||e.group===f(J)).map(e=>e.country))}let ot=c(()=>R().map((e,t)=>{let n=f(q)[t]?.g??null,r=f(q)[t]?.c??null;return e.items.filter(e=>(!n||e.group===n)&&(!r||e.country===r))})),st=c(()=>f(ot).map(e=>{let t=[],n;return e.forEach((e,r)=>{e.group&&e.group!==n&&t.push({key:`g:${e.group}`,group:e.group}),n=e.group,t.push({key:`i:${r}:${e.name}`,item:e})}),t})),Y=_(!1),X=_(void 0);u(()=>{f(X)&&(f(Y)?f(X).showModal():f(X).close())});function ct(e){return je().find(t=>t.id===e)}let Z=_(0),Q=_(void 0),lt=_(o([])),ut=_(``);function dt(){let e=f(lt)[f(Z)];!e||!f(Q)||h(ut,`left: ${e.offsetLeft}px; width: ${e.offsetWidth}px;`)}u(()=>{f(Z),R(),dt()}),u(()=>{if(!(typeof window>`u`))return window.addEventListener(`resize`,dt),document.fonts?.ready.then(dt),()=>window.removeEventListener(`resize`,dt)}),u(()=>{if(typeof ResizeObserver>`u`||!f(Q))return;let e=new ResizeObserver(dt);return e.observe(f(Q)),()=>e.disconnect()});let $=_(o([])),ft=_(void 0),pt=_(void 0);r(()=>{if(typeof window>`u`||U()===`panel`||window.matchMedia(`(prefers-reduced-motion: reduce)`).matches)return;f(ft)&&!Ie()&&H()&&P.from(f(ft).children,{opacity:0,x:-200,duration:.7,ease:`power2.out`,stagger:.22}),f(Q)&&P.from(f(Q),{opacity:0,y:-30,duration:.6,ease:`power2.out`,delay:.2}),f(pt)&&P.from(f(pt).children,{opacity:0,y:20,duration:.6,ease:`power2.out`,stagger:.1,delay:.4});let e=f($)[f(K)];e&&P.from(e.children,{opacity:0,y:24,duration:.5,ease:`power2.out`,stagger:.04,delay:.6})});function mt(e,t){t||P.fromTo(e.children,{opacity:0,y:16},{opacity:1,y:0,duration:.4,ease:`power2.out`,stagger:Math.min(.03,.45/Math.max(e.children.length,1))})}function ht(e){if(e===f(K))return;let t=U()===`panel`||typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,n=f($)[f(K)],r=e;if(h(Z,r,!0),t||!n){h(K,r,!0);return}P.killTweensOf(n.children),P.to(n.children,{opacity:0,y:-12,duration:.2,ease:`power1.in`,stagger:Math.min(.015,.25/Math.max(n.children.length,1)),onComplete:()=>{h(K,r,!0);let e=f($)[r];e&&mt(e,!1)}})}var gt={get title(){return I()},set title(e=`MENU`){I(e),l()},get eyebrow(){return L()},set eyebrow(e=``){L(e),l()},get categories(){return R()},set categories(e=[]){R(e),l()},get info(){return z()},set info(e=[]){z(e),l()},get allergens(){return je()},set allergens(e=[]){je(e),l()},get pdfUrl(){return B()},set pdfUrl(e){B(e),l()},get pdfLabel(){return V()},set pdfLabel(e=`View PDF Menu`){V(e),l()},get topFlourishSrc(){return Me()},set topFlourishSrc(e){Me(e),l()},get tailFlourishSrc(){return Ne()},set tailFlourishSrc(e){Ne(e),l()},get headingCircleColor(){return H()},set headingCircleColor(e){H(e),l()},get headingAlign(){return Pe()},set headingAlign(e=`center`){Pe(e),l()},get layout(){return Fe()},set layout(e=`stacked`){Fe(e),l()},get variant(){return U()},set variant(e=`default`){U(e),l()},get disableHeadingMotion(){return Ie()},set disableHeadingMotion(e=!1){Ie(e),l()},get itemColumns(){return Le()},set itemColumns(e=3){Le(e),l()},get theme(){return Re()},set theme(e={}){Re(e),l()},get openInNewTabLabel(){return ze()},set openInNewTabLabel(e=`Open in New Tab`){ze(e),l()},get closeAriaLabel(){return Be()},set closeAriaLabel(e=`Close`){Be(e),l()},get groupFilter(){return W()},set groupFilter(e=!1){W(e),l()},get countryFilter(){return Ve()},set countryFilter(e=!1){Ve(e),l()},get groupFilterAllLabel(){return He()},set groupFilterAllLabel(e=`All`){He(e),l()},get countryFilterAllLabel(){return Ue()},set countryFilterAllLabel(e=`All`){Ue(e),l()},get cartEnabled(){return We()},set cartEnabled(e=!1){We(e),l()},get initial(){return Ge()},set initial(e=[]){Ge(e),l()}},_t=be(),vt=n(_t),yt=e=>{var t=ue(),r=N(t),o=N(r),l=N(o),u=e=>{var t=te(),n=g(N(t),2),r=N(n,!0);S(n),S(t),s(()=>j(r,L())),m(e,t)};p(l,e=>{L()&&e(u)});var d=g(l,2),_=N(d,!0);S(d),S(o);var v=g(o,2),y=e=>{var t=re(),n=N(t),r=g(n,2);M(r,17,R,b,(e,t,n)=>{var r=ne();let i;var a=N(r,!0);S(r),D(r,(e,t)=>f(lt)[t]=e,e=>f(lt)?.[e],()=>[n]),s(()=>{i=C(r,1,`msp-tab svelte-5fgoxp`,null,i,{"msp-tab-active":n===f(Z)}),O(r,`part`,n===f(Z)?`tab tab-active`:`tab`),j(a,f(t).label)}),T(`click`,r,()=>ht(n)),m(e,r)}),S(t),D(t,e=>h(Q,e),()=>f(Q)),s(()=>x(n,f(ut))),m(e,t)};p(v,e=>{R().length>1&&e(y)}),S(r);var w=g(r,2),E=e=>{var t=ae(),r=N(t);A(r,i,`info`,{},e=>{var t=a(),r=n(t);M(r,17,z,b,(e,t)=>{var n=ie(),r=N(n),i=N(r,!0);S(r);var a=g(r,2),o=N(a,!0);S(a),S(n),s(()=>{j(i,f(t).label),j(o,f(t).value)}),m(e,n)}),m(e,t)}),S(t),m(e,t)};p(w,e=>{z().length&&e(E)});var k=g(w,2);M(k,19,R,(e,t)=>`${t}:${nt(t)}`,(e,t,r)=>{var i=le();let o;M(i,21,()=>f(st)[f(r)],b,(e,t)=>{var r=a(),i=n(r),o=e=>{var r=ce(),i=N(r),o=N(i,!0);S(i);var l=g(i,2),u=N(l,!0);S(l);var d=g(l,2),h=N(d),_=N(h,!0);S(h);var v=g(h,2),y=e=>{var r=se();M(r,21,()=>f(t).item.allergens,b,(e,t)=>{let r=c(()=>ct(f(t)));var i=a(),o=n(i),l=e=>{var t=oe(),n=N(t),i=g(n,2),a=N(i,!0);S(i),S(t),s(()=>{O(n,`src`,f(r).icon),O(n,`alt`,f(r).label),j(a,f(r).label)}),m(e,t)};p(o,e=>{f(r)&&e(l)}),m(e,i)}),S(r),m(e,r)};p(v,e=>{f(t).item.allergens&&f(t).item.allergens.length&&e(y)}),S(d),S(r),s(()=>{j(o,f(t).item.name),j(u,f(t).item.description),j(_,f(t).item.price)}),m(e,r)};p(i,e=>{f(t).item&&e(o)}),m(e,r)}),S(i),D(i,(e,t)=>f($)[t]=e,e=>f($)?.[e],()=>[f(r)]),s(()=>o=C(i,1,`msp-grid svelte-5fgoxp`,null,o,{"msp-hidden":f(r)!==f(K)})),m(e,i)}),S(t),s(()=>j(_,I())),m(e,t)},bt=t=>{var r=ke();let o;var l=N(r),u=N(l),d=N(u),_=N(d),v=N(_),y=e=>{var t=de();s(()=>x(t,`background-color: ${H()}`)),m(e,t)};p(v,e=>{H()&&e(y)});var w=g(v,2),E=e=>{var t=fe();s(()=>O(t,`src`,Me())),m(e,t)};p(w,e=>{Me()&&e(E)});var k=g(w,2),P=N(k);A(P,i,`heading-title`,{},e=>{var t=pe(),n=N(t,!0);S(t),s(()=>j(n,I())),m(e,t)});var te=g(P,4);A(te,i,`eyebrow`,{},e=>{var t=me(),n=N(t,!0);S(t),s(()=>j(n,L())),m(e,t)}),S(k);var re=g(k,2),ie=e=>{var t=he();s(()=>O(t,`src`,Ne())),m(e,t)};p(re,e=>{Ne()&&e(ie)}),S(_);var ae=g(_,2),ce=t=>{var n=ge(),r=N(n);e(),S(n),s(()=>j(r,`${V()??``} `)),T(`click`,n,()=>h(Y,!0)),m(t,n)};p(ae,e=>{B()&&e(ce)}),S(d),D(d,e=>h(ft,e),()=>f(ft));var ue=g(d,2),F=N(ue),Ae=N(F);M(Ae,17,R,b,(e,t,n)=>{var r=ne();let i;var a=N(r,!0);S(r),D(r,(e,t)=>f(lt)[t]=e,e=>f(lt)?.[e],()=>[n]),s(()=>{i=C(r,1,`ms-tab svelte-5fgoxp`,null,i,{"ms-tab-active":n===f(Z)}),O(r,`part`,n===f(Z)?`tab tab-active`:`tab`),j(a,f(t).label)}),T(`click`,r,()=>ht(n)),m(e,r)});var je=g(Ae,2);S(F),D(F,e=>h(Q,e),()=>f(Q));var U=g(F,2),Ie=e=>{let t=c(()=>R()[f(K)]);var r=be(),i=n(r),a=e=>{var n=_e(),r=N(n);let i;var a=N(r,!0);S(r);var o=g(r,2);M(o,16,()=>it(f(t)),e=>e,(e,t)=>{var n=ne();let r;var i=N(n,!0);S(n),s(()=>{r=C(n,1,`ms-filter svelte-5fgoxp`,null,r,{"ms-filter-active":f(J)===t}),j(i,t)}),T(`click`,n,()=>et(t)),m(e,n)}),S(n),s(()=>{i=C(r,1,`ms-filter svelte-5fgoxp`,null,i,{"ms-filter-active":f(J)===null}),j(a,He())}),T(`click`,r,()=>et(null)),m(e,n)},o=c(()=>W()&&it(f(t)).length>1);p(i,e=>{f(o)&&e(a)});var l=g(i,2),u=e=>{var r=ye();let i;var a=N(r);ee(a,()=>f(J),e=>{var r=ve(),i=n(r);let a;var o=N(i,!0);S(i);var c=g(i,2);M(c,16,()=>at(f(t)),e=>e,(e,t)=>{var n=ne();let r;var i=N(n,!0);S(n),s(()=>{r=C(n,1,`ms-filter svelte-5fgoxp`,null,r,{"ms-filter-active":f($e)===t}),j(i,t)}),T(`click`,n,()=>tt(t)),m(e,n)}),s(()=>{a=C(i,1,`ms-filter svelte-5fgoxp`,null,a,{"ms-filter-active":f($e)===null}),j(o,Ue())}),T(`click`,i,()=>tt(null)),m(e,r)}),S(r),s(e=>i=C(r,1,`ms-filters ms-filters-secondary svelte-5fgoxp`,null,i,e),[()=>({"ms-filters-hidden":W()&&f(J)===null||at(f(t)).length<=1})]),m(e,r)};p(l,e=>{Ve()&&e(u)}),m(e,r)};p(U,e=>{(W()||Ve())&&R()[f(K)]&&e(Ie)});var Re=g(U,2),ze=e=>{var t=Se(),r=N(t);A(r,i,`info`,{},e=>{var t=a(),r=n(t);M(r,17,z,b,(e,t)=>{var n=xe(),r=N(n),i=N(r,!0);S(r);var a=g(r,2),o=N(a,!0);S(a),S(n),s(()=>{j(i,f(t).label),j(o,f(t).value)}),m(e,n)}),m(e,t)}),S(t),D(t,e=>h(pt,e),()=>f(pt)),m(e,t)};p(Re,e=>{z().length&&e(ze)}),S(ue),S(u);var Be=g(u,2);M(Be,19,R,(e,t)=>`${t}:${nt(t)}`,(e,t,r)=>{var i=le();let o;M(i,21,()=>f(st)[f(r)],b,(e,t)=>{var r=a(),i=n(r),o=e=>{var n=Ce(),r=N(n,!0);S(n),s(()=>j(r,f(t).group)),m(e,n)},l=e=>{var r=Oe(),i=N(r),o=N(i,!0);S(i);var l=g(i,2),u=e=>{var n=we(),r=N(n,!0);S(n),s(()=>j(r,f(t).item.tagline)),m(e,n)};p(l,e=>{f(t).item.tagline&&e(u)});var d=g(l,2),h=e=>{var n=we(),r=N(n,!0);S(n),s(()=>j(r,f(t).item.country)),m(e,n)};p(d,e=>{f(t).item.country&&e(h)});var _=g(d,2),v=e=>{var n=Te(),r=N(n,!0);S(n),s(()=>j(r,f(t).item.description)),m(e,n)};p(_,e=>{f(t).item.description&&e(v)});var y=g(_,2),x=N(y),w=e=>{var n=Ee(),r=N(n,!0);S(n),s(()=>j(r,f(t).item.price)),m(e,n)};p(x,e=>{f(t).item.price&&e(w)});var E=g(x,2),D=e=>{let n=c(()=>f(t).item.id),r=c(()=>f(t).item.name);var i=De(),a=N(i),o=g(a,2);let l;var u=N(o,!0);S(o);var d=g(o,2);S(i),s(()=>{O(a,`aria-label`,`Remove one ${f(r)}`),l=C(o,1,`ms-qty-val svelte-5fgoxp`,null,l,{"ms-qty-pop":f(Ye)===f(n)}),j(u,f(G)[f(n)]??0),O(d,`aria-label`,`Add one ${f(r)}`)}),T(`click`,a,e=>{Je(e.currentTarget),qe(f(n),(f(G)[f(n)]??0)-1)}),T(`click`,d,e=>{Je(e.currentTarget),qe(f(n),(f(G)[f(n)]??0)+1),Xe(f(n))}),m(e,i)};p(E,e=>{We()&&f(t).item.id!=null&&f(t).item.priceValue!=null&&e(D)});var k=g(E,2),A=e=>{var r=se();M(r,21,()=>f(t).item.allergens,b,(e,t)=>{let r=c(()=>ct(f(t)));var i=a(),o=n(i),l=e=>{var t=oe(),n=N(t),i=g(n,2),a=N(i,!0);S(i),S(t),s(()=>{O(n,`src`,f(r).icon),O(n,`alt`,f(r).label),j(a,f(r).label)}),m(e,t)};p(o,e=>{f(r)&&e(l)}),m(e,i)}),S(r),m(e,r)};p(k,e=>{f(t).item.allergens&&f(t).item.allergens.length&&e(A)}),S(y),S(r),s(()=>j(o,f(t).item.name)),m(e,r)};p(i,e=>{f(t).group?e(o):f(t).item&&e(l,1)}),m(e,r)}),S(i),D(i,(e,t)=>f($)[t]=e,e=>f($)?.[e],()=>[f(r)]),s(()=>o=C(i,1,`ms-panel svelte-5fgoxp`,null,o,{"ms-panel-hidden":f(r)!==f(K)})),m(e,i)}),S(l),S(r),s(()=>{o=C(r,1,`ms-root svelte-5fgoxp`,null,o,{"ms-align-left":Pe()===`left`,"ms-layout-split":Fe()===`split`,"ms-has-circle":!!H(),"ms-columns-2":Le()===2}),x(je,f(ut))}),m(t,r)};p(vt,e=>{U()===`panel`?e(yt):e(bt,-1)});var xt=g(vt,2),St=e=>{var t=F(),n=N(t),r=N(n),i=N(r,!0);S(r);var a=g(r,2),o=N(a),c=N(o,!0);S(o);var l=g(o,2);S(a),S(n);var u=g(n,2);S(t),D(t,e=>h(X,e),()=>f(X)),s(()=>{j(i,V()),O(o,`href`,B()),j(c,ze()),O(l,`aria-label`,Be()),O(u,`src`,B()),O(u,`title`,V())}),T(`click`,t,e=>{e.target===f(X)&&h(Y,!1)}),d(`close`,t,()=>h(Y,!1)),T(`click`,l,()=>h(Y,!1)),m(e,t)};return p(xt,e=>{B()&&e(St)}),m(t,_t),v(gt)}t([`click`]),customElements.define(`menu-section`,k(I,{title:{attribute:`title`,type:`String`},eyebrow:{attribute:`eyebrow`,type:`String`},categories:{attribute:`categories`,type:`Object`},info:{attribute:`info`,type:`Object`},allergens:{attribute:`allergens`,type:`Object`},pdfUrl:{attribute:`pdf-url`,type:`String`},pdfLabel:{attribute:`pdf-label`,type:`String`},topFlourishSrc:{attribute:`top-flourish-src`,type:`String`},tailFlourishSrc:{attribute:`tail-flourish-src`,type:`String`},headingCircleColor:{attribute:`heading-circle-color`,type:`String`},headingAlign:{attribute:`heading-align`,type:`String`},layout:{attribute:`layout`,type:`String`},variant:{attribute:`variant`,type:`String`},disableHeadingMotion:{attribute:`disable-heading-motion`,type:`Boolean`},itemColumns:{attribute:`item-columns`,type:`Number`},theme:{attribute:`theme`,type:`Object`},openInNewTabLabel:{attribute:`open-in-new-tab-label`,type:`String`},closeAriaLabel:{attribute:`close-aria-label`,type:`String`},groupFilter:{attribute:`group-filter`,type:`Boolean`},countryFilter:{attribute:`country-filter`,type:`Boolean`},groupFilterAllLabel:{attribute:`group-filter-all-label`,type:`String`},countryFilterAllLabel:{attribute:`country-filter-all-label`,type:`String`},cartEnabled:{attribute:`cart-enabled`,type:`Boolean`},initial:{attribute:`initial`,type:`Object`}},[`info`,`heading-title`,`eyebrow`],[],{mode:`open`}));
@@ -0,0 +1,20 @@
1
+ import{A as e,B as t,D as n,H as r,I as i,J as a,K as o,L as s,N as c,P as l,S as u,T as d,U as f,V as p,W as m,X as h,Z as g,a as _,b as v,et as y,f as b,g as x,h as S,j as C,n as w,r as T,s as E,t as D,w as O,y as k,z as A}from"./chunks/client-BDk8LqGN.js";import{t as j}from"./chunks/gsap-DWxn8li7.js";var ee=n(`<span class="pc-cat-count svelte-1ir684j"> </span>`),te=n(`<button type="button"> <!></button>`),ne=n(`<div class="pc-card-img svelte-1ir684j"><img loading="lazy" class="svelte-1ir684j"/></div>`),re=n(`<div class="pc-card-desc svelte-1ir684j"> </div>`),ie=n(`<span class="pc-variant-axis-label svelte-1ir684j"> </span>`),ae=n(`<button type="button"> </button>`),oe=n(`<div class="pc-variant-axis svelte-1ir684j" role="group"><!> <div class="pc-variants svelte-1ir684j"></div></div>`),se=n(`<div class="pc-variant-axis svelte-1ir684j" role="group"><!> <div class="pc-variants svelte-1ir684j"></div></div> <!>`,1),ce=n(`<!> <div class="pc-card-body svelte-1ir684j"><div class="pc-card-name svelte-1ir684j"> </div> <!> <!></div>`,1),le=n(`<div><!> <div class="pc-card-footer svelte-1ir684j"><div class="pc-card-price svelte-1ir684j"> </div> <div class="pc-qty svelte-1ir684j"><button type="button" class="pc-qty-btn svelte-1ir684j"><span class="svelte-1ir684j">−</span></button> <div> </div> <button type="button" class="pc-qty-btn svelte-1ir684j"><span class="svelte-1ir684j">+</span></button></div></div></div>`),ue=n(`<div class="pc-cart-bar svelte-1ir684j"><span class="svelte-1ir684j"> </span> <strong class="svelte-1ir684j"> </strong></div>`),de=n(`<div class="pc-root svelte-1ir684j"><div class="pc-cat-tabs svelte-1ir684j"></div> <div class="pc-grid svelte-1ir684j"></div> <!></div>`),fe={hash:`svelte-1ir684j`,code:`:host {display:block;}:host,
2
+ :host .svelte-1ir684j {box-sizing:border-box;}.pc-root.svelte-1ir684j {font-family:inherit;color:var(--pc-text-color, #05040f);}.pc-cat-tabs.svelte-1ir684j {display:flex;gap:0.25rem;flex-wrap:wrap;margin-bottom:1.5rem;}.pc-cat-tab.svelte-1ir684j {height:32px;padding:0 16px;border-radius:9999px;border:1px solid var(--pc-tab-border, rgba(5, 4, 15, 0.12));background:transparent;font-family:inherit;font-size:12px;font-weight:600;letter-spacing:0.3px;color:var(--pc-muted-text, rgba(5, 4, 15, 0.55));cursor:pointer;transition:background 0.15s, color 0.15s, border-color 0.15s;white-space:nowrap;}.pc-cat-tab.svelte-1ir684j:hover {border-color:var(--pc-border-hover-color, rgba(5, 4, 15, 0.25));}.pc-cat-tab.active.svelte-1ir684j {background:var(--pc-accent-bg, #05040f);color:var(--pc-accent-text, #f5f2ec);border-color:var(--pc-accent-bg, #05040f);}.pc-cat-count.svelte-1ir684j {display:inline-flex;align-items:center;justify-content:center;min-width:1rem;height:1rem;padding:0 0.25rem;border-radius:9999px;background:var(--pc-count-bg, rgba(5, 4, 15, 0.12));font-size:10px;font-weight:700;margin-left:6px;vertical-align:middle;}.pc-cat-tab.active.svelte-1ir684j .pc-cat-count:where(.svelte-1ir684j) {background:rgba(245, 242, 236, 0.25);}.pc-grid.svelte-1ir684j {display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:16px;}.pc-card.svelte-1ir684j {border:1.5px solid var(--pc-border-color, rgba(5, 4, 15, 0.08));background:var(--pc-card-bg, #fff);display:flex;flex-direction:column;transition:border-color 0.2s, box-shadow 0.2s;}.pc-card.svelte-1ir684j:hover {border-color:var(--pc-border-hover-color, rgba(5, 4, 15, 0.2));}.pc-card.selected.svelte-1ir684j {border-color:var(--pc-accent-bg, #05040f);}.pc-card-media.svelte-1ir684j {display:flex;flex-direction:column;flex:1;color:inherit;text-decoration:none;}a.pc-card-media.svelte-1ir684j:hover .pc-card-name:where(.svelte-1ir684j) {text-decoration:underline;}.pc-card-img.svelte-1ir684j {width:100%;aspect-ratio:4/3;overflow:hidden;background:var(--pc-subtle-bg, rgba(5, 4, 15, 0.04));}.pc-card-img.svelte-1ir684j img:where(.svelte-1ir684j) {width:100%;height:100%;object-fit:cover;display:block;}.pc-card-body.svelte-1ir684j {padding:16px 16px 0;flex:1;display:flex;flex-direction:column;gap:6px;}.pc-card-name.svelte-1ir684j {font-size:15px;font-weight:700;letter-spacing:-0.2px;color:var(--pc-text-color, #05040f);line-height:1.25;}.pc-card-desc.svelte-1ir684j {font-size:12px;color:var(--pc-muted-text, rgba(5, 4, 15, 0.5));line-height:1.5;}.pc-variant-axis.svelte-1ir684j {display:flex;flex-direction:column;gap:4px;}.pc-variant-axis-label.svelte-1ir684j {font-size:10px;font-weight:700;letter-spacing:0.4px;text-transform:uppercase;color:var(--pc-muted-text, rgba(5, 4, 15, 0.5));}.pc-variants.svelte-1ir684j {display:flex;flex-wrap:wrap;gap:6px;}.pc-variant-pill.svelte-1ir684j {height:28px;padding:0 12px;border-radius:9999px;border:1px solid var(--pc-border-color, rgba(5, 4, 15, 0.18));background:transparent;font-family:inherit;font-size:11px;font-weight:600;letter-spacing:0.2px;color:var(--pc-text-color, #05040f);cursor:pointer;transition:background 0.15s, color 0.15s, border-color 0.15s;}.pc-variant-pill.svelte-1ir684j:hover {border-color:var(--pc-border-hover-color, rgba(5, 4, 15, 0.35));}.pc-variant-pill.active.svelte-1ir684j {background:var(--pc-accent-bg, #05040f);color:var(--pc-accent-text, #f5f2ec);border-color:var(--pc-accent-bg, #05040f);}.pc-card-footer.svelte-1ir684j {display:flex;align-items:center;justify-content:space-between;padding:12px 16px 16px;margin-top:auto;}.pc-card-price.svelte-1ir684j {font-size:14px;font-weight:600;color:var(--pc-text-color, #05040f);}.pc-qty.svelte-1ir684j {display:flex;align-items:center;gap:8px;}.pc-qty-btn.svelte-1ir684j {width:28px;height:28px;border:1.5px solid var(--pc-border-color, rgba(5, 4, 15, 0.18));border-radius:50%;background:none;font-family:inherit;font-size:14px;color:var(--pc-text-color, #05040f);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;overflow:hidden;transition:color 0.25s, border-color 0.25s;}.pc-qty-btn.svelte-1ir684j::before {content:'';position:absolute;inset:0;border-radius:50%;background:var(--pc-accent-hover-bg, #1a1a18);transform:scale(0);transition:transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);z-index:0;}.pc-qty-btn.svelte-1ir684j:hover::before {transform:scale(1);}.pc-qty-btn.svelte-1ir684j:hover {color:var(--pc-accent-text, #f5f2ec);border-color:var(--pc-accent-hover-bg, #1a1a18);}.pc-qty-btn.svelte-1ir684j span:where(.svelte-1ir684j) {position:relative;z-index:2;}.pc-qty-val.svelte-1ir684j {width:16px;text-align:center;font-size:13px;font-weight:600;color:var(--pc-text-color, #05040f);user-select:none;}.pc-qty-val.pop.svelte-1ir684j {
3
+ animation: svelte-1ir684j-pc-qty-pop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);}
4
+ @keyframes svelte-1ir684j-pc-qty-pop {
5
+ 0% {
6
+ transform: scale(1);
7
+ }
8
+ 40% {
9
+ transform: scale(1.5);
10
+ }
11
+ 100% {
12
+ transform: scale(1);
13
+ }
14
+ }.pc-cart-bar.svelte-1ir684j {display:flex;align-items:center;justify-content:space-between;background:var(--pc-cart-bg, #05040f);color:var(--pc-cart-text, #f5f2ec);padding:1rem 1.5rem;margin-top:1.5rem;position:var(--pc-cart-position, sticky);bottom:1.5rem;font-size:14px;}.pc-cart-bar.svelte-1ir684j strong:where(.svelte-1ir684j) {font-size:16px;}
15
+
16
+ @media (prefers-reduced-motion: reduce) {.pc-qty-btn.svelte-1ir684j,
17
+ .pc-qty-val.svelte-1ir684j,
18
+ .pc-card.svelte-1ir684j {transition:none;
19
+ animation: none;}
20
+ }`};function M(e,n){g(n,!0),S(e,fe);let D=w(n,`items`,23,()=>[]),M=w(n,`currency`,7,`USD`),N=w(n,`categoryOrder`,7),P=w(n,`categoryLabels`,7),F=w(n,`initial`,23,()=>[]),I=w(n,`showAllTab`,7,!1),L=w(n,`allTabLabel`,7,`All`),R=`__pc_all__`;function pe(e,t){n.$$host?.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}let z=m(r({}));s(()=>{f(z,Object.fromEntries(F().filter(e=>e.quantity>0).map(e=>[String(e.id),e.quantity])),!0)});let B=`More`,V=a(()=>{let e=new Set,t=[];for(let n of D()){let r=n.category||B;e.has(r)||(e.add(r),t.push(r))}let n=N()?.length?[...N().filter(t=>e.has(t)),...t.filter(e=>!N().includes(e))]:t;return I()?[R,...n]:n});function me(e){return e===R?L():P()?.[e]??e}let H=m(!1),U=m(``),W=m(``);s(()=>{!c(H)&&c(V).length&&(f(U,c(V)[0],!0),f(W,c(V)[0],!0))});let he=a(()=>{let e={};for(let t of D())(e[t.category||B]??=[]).push(t);return e}),ge=a(()=>{let e=c(U)||c(V)[0]||``;return e===R?D():c(he)[e]??[]}),G=m(void 0);function _e(e){e||!c(G)||j.fromTo(c(G).children,{opacity:0,y:16},{opacity:1,y:0,duration:.4,ease:`power2.out`,stagger:Math.min(.03,.45/Math.max(c(G).children.length,1))})}let ve=!1;s(()=>{if(ve||!c(G)||!c(ge).length)return;ve=!0;let e=typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;l().then(()=>_e(e))});function ye(e){if(f(H,!0),e===c(W))return;if(f(W,e,!0),typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches||!c(G)){f(U,e,!0);return}let t=c(G).children;j.killTweensOf(t),j.to(t,{opacity:0,y:-12,duration:.2,ease:`power1.in`,stagger:Math.min(.015,.25/Math.max(t.length,1)),onComplete:async()=>{f(U,e,!0),await l(),_e(!1)}})}let K=a(()=>{let e=[];for(let t of D())if(t.variants?.length)for(let n of t.variants){let r=n.option2?`${n.option1} — ${n.option2}`:n.option1;e.push({id:n.id,name:`${t.name} — ${r}`,price:n.price,category:t.category})}else e.push({id:t.id,name:t.name,price:t.price,category:t.category});return e}),be=m(r({}));function q(e){if(!e.variants?.length)return;let t=c(be)[e.id];return e.variants.find(e=>e.id===t)??e.variants[0]}function xe(e){return q(e)?.id??e.id}function Se(e){let t=q(e);return t?t.price:e.price}function Ce(e){return q(e)?.image??e.image}function we(e,t){let n=new Set,r=[];for(let i of e){let e=i[t];e&&!n.has(e)&&(n.add(e),r.push(e))}return r}function Te(e,t,n){if(!e.variants?.length)return;let r=q(e),i=t===`option1`?r?.option2:r?.option1,a=e.variants.find(e=>t===`option1`?e.option1===n&&e.option2===i:e.option2===n&&e.option1===i),o=e.variants.find(e=>e[t]===n),s=a??o;s&&(c(be)[e.id]=s.id)}let J=a(()=>c(K).filter(e=>(c(z)[e.id]??0)>0).map(e=>({id:e.id,name:e.name,price:e.price??0,quantity:c(z)[e.id]}))),Y=a(()=>c(J).reduce((e,t)=>e+t.quantity,0)),Ee=a(()=>c(J).reduce((e,t)=>e+t.price*t.quantity,0));s(()=>{pe(`cart-change`,{items:c(J),total:c(Ee)})});function De(e){return(e===R?c(K):c(K).filter(t=>(t.category||B)===e)).reduce((e,t)=>e+(c(z)[t.id]??0),0)}function Oe(e,t){c(z)[e]=Math.max(0,Math.min(t,99))}function ke(e){e.animate([{transform:`scale(1)`,offset:0},{transform:`scale(0.82)`,offset:.15},{transform:`scale(1.1)`,offset:.55},{transform:`scale(1)`,offset:1}],{duration:420,easing:`ease`})}let X=m(null);function Ae(e){f(X,null),queueMicrotask(()=>f(X,e,!0))}function je(e){return e.toLocaleString(`en-US`,{style:`currency`,currency:M(),minimumFractionDigits:0,currencyDisplay:`code`})}var Me={get items(){return D()},set items(e=[]){D(e),o()},get currency(){return M()},set currency(e=`USD`){M(e),o()},get categoryOrder(){return N()},set categoryOrder(e){N(e),o()},get categoryLabels(){return P()},set categoryLabels(e){P(e),o()},get initial(){return F()},set initial(e=[]){F(e),o()},get showAllTab(){return I()},set showAllTab(e=!1){I(e),o()},get allTabLabel(){return L()},set allTabLabel(e=`All`){L(e),o()}},Z=de(),Q=A(Z);k(Q,21,()=>c(V),v,(e,t)=>{var n=te();let r;var o=A(n),s=p(o),l=e=>{var n=ee(),r=A(n,!0);y(n),i(e=>O(r,e),[()=>De(c(t))]),d(e,n)},f=a(()=>De(c(t)));u(s,e=>{c(f)&&e(l)}),y(n),i(e=>{r=b(n,1,`pc-cat-tab svelte-1ir684j`,null,r,{active:c(t)===c(W)}),O(o,`${e??``} `)},[()=>me(c(t))]),C(`click`,n,()=>ye(c(t))),d(e,n)}),y(Q);var $=p(Q,2);k($,21,()=>c(ge),e=>e.id,(e,n)=>{let r=a(()=>xe(c(n)));var o=le();let s;var l=A(o);x(l,()=>c(n).href?`a`:`div`,!1,(e,r)=>{_(e,()=>({class:`pc-card-media`,...c(n).href?{href:c(n).href}:{}}),void 0,void 0,void 0,`svelte-1ir684j`);var o=ce(),s=t(o),l=e=>{var t=ne(),r=A(t);y(t),i(e=>{E(r,`src`,e),E(r,`alt`,c(n).name)},[()=>Ce(c(n))]),d(e,t)},f=a(()=>Ce(c(n)));u(s,e=>{c(f)&&e(l)});var m=p(s,2),h=A(m),g=A(h,!0);y(h);var x=p(h,2),S=e=>{var t=re(),r=A(t,!0);y(t),i(()=>O(r,c(n).description)),d(e,t)};u(x,e=>{c(n).description&&e(S)});var w=p(x,2),T=e=>{let r=a(()=>c(n).variants),o=a(()=>q(c(n))),s=a(()=>we(c(r),`option1`)),l=a(()=>we(c(r),`option2`));var f=se(),m=t(f),h=A(m),g=e=>{var t=ie(),r=A(t,!0);y(t),i(()=>O(r,c(n).variantAxisLabels[0])),d(e,t)};u(h,e=>{c(n).variantAxisLabels?.[0]&&e(g)});var _=p(h,2);k(_,21,()=>c(s),v,(e,t)=>{var r=ae();let a;var s=A(r,!0);y(r),i(()=>{a=b(r,1,`pc-variant-pill svelte-1ir684j`,null,a,{active:c(o)?.option1===c(t)}),O(s,c(t))}),C(`click`,r,e=>{e.preventDefault(),Te(c(n),`option1`,c(t))}),d(e,r)}),y(_),y(m);var x=p(m,2),S=e=>{var t=oe(),r=A(t),a=e=>{var t=ie(),r=A(t,!0);y(t),i(()=>O(r,c(n).variantAxisLabels[1])),d(e,t)};u(r,e=>{c(n).variantAxisLabels?.[1]&&e(a)});var s=p(r,2);k(s,21,()=>c(l),v,(e,t)=>{var r=ae();let a;var s=A(r,!0);y(r),i(()=>{a=b(r,1,`pc-variant-pill svelte-1ir684j`,null,a,{active:c(o)?.option2===c(t)}),O(s,c(t))}),C(`click`,r,e=>{e.preventDefault(),Te(c(n),`option2`,c(t))}),d(e,r)}),y(s),y(t),i(()=>E(t,`aria-label`,c(n).variantAxisLabels?.[1]??`${c(n).name} options, second axis`)),d(e,t)};u(x,e=>{c(l).length&&e(S)}),i(()=>E(m,`aria-label`,c(n).variantAxisLabels?.[0]??`${c(n).name} options`)),d(e,f)};u(w,e=>{c(n).variants?.length&&e(T)}),y(m),i(()=>O(g,c(n).name)),d(r,o)});var f=p(l,2),m=A(f),h=A(m,!0);y(m);var g=p(m,2),S=A(g),w=p(S,2);let T;var D=A(w,!0);y(w);var j=p(w,2);y(g),y(f),y(o),i(e=>{s=b(o,1,`pc-card svelte-1ir684j`,null,s,{selected:(c(z)[c(r)]??0)>0}),O(h,e),E(S,`aria-label`,`Remove one ${c(n).name}`),T=b(w,1,`pc-qty-val svelte-1ir684j`,null,T,{pop:c(X)===c(r)}),O(D,c(z)[c(r)]??0),E(j,`aria-label`,`Add one ${c(n).name}`)},[()=>Se(c(n))===null?`—`:je(Se(c(n)))]),C(`click`,S,e=>{ke(e.currentTarget),Oe(c(r),(c(z)[c(r)]??0)-1)}),C(`click`,j,e=>{ke(e.currentTarget),Oe(c(r),(c(z)[c(r)]??0)+1),Ae(c(r))}),d(e,o)}),y($),T($,e=>f(G,e),()=>c(G));var Ne=p($,2),Pe=e=>{var t=ue(),n=A(t),r=A(n);y(n);var a=p(n,2),o=A(a,!0);y(a),y(t),i(e=>{O(r,`${c(Y)??``} item${c(Y)===1?``:`s`}`),O(o,e)},[()=>je(c(Ee))]),d(e,t)};return u(Ne,e=>{c(Y)>0&&e(Pe)}),y(Z),d(e,Z),h(Me)}e([`click`]),customElements.define(`proshop-catalogue`,D(M,{items:{attribute:`items`,type:`Object`},currency:{attribute:`currency`,type:`String`},categoryOrder:{attribute:`category-order`,type:`Object`},categoryLabels:{attribute:`category-labels`,type:`Object`},initial:{attribute:`initial`,type:`Object`},showAllTab:{attribute:`show-all-tab`,type:`Boolean`},allTabLabel:{attribute:`all-tab-label`,type:`String`}},[],[],{mode:`open`}));
@@ -0,0 +1,5 @@
1
+ import{A as e,B as t,D as n,H as r,I as i,J as a,K as o,L as s,N as c,S as ee,T as l,U as u,V as d,W as f,X as te,Z as ne,et as p,f as re,h as ie,j as m,n as h,r as g,s as _,t as ae,w as v,y,z as b}from"./chunks/client-BDk8LqGN.js";import{a as oe,i as se,n as ce,r as le,t as ue}from"./chunks/floating-ui.dom-DY3dGoEq.js";import{a as de,i as fe,n as pe,o as me,r as he,s as ge,t as _e}from"./chunks/calendar-B8eNjUm2.js";var ve=n(`<a class="rb-reserve svelte-gp9ujg"> </a>`),ye=n(`<span> </span>`),be=n(`<button type="button"> </button>`),xe=n(`<li role="presentation" class="svelte-gp9ujg"><button type="button" role="option" class="svelte-gp9ujg"> </button></li>`),Se=n(`<div class="rb-bar svelte-gp9ujg"><button type="button" class="rb-trigger svelte-gp9ujg" aria-haspopup="true"><span class="rb-trigger-label svelte-gp9ujg"> </span> <span class="rb-trigger-value svelte-gp9ujg"> </span></button> <button type="button" class="rb-trigger svelte-gp9ujg" aria-haspopup="true"><span class="rb-trigger-label svelte-gp9ujg"> </span> <span class="rb-trigger-value svelte-gp9ujg"> </span></button> <button type="button" class="rb-trigger svelte-gp9ujg" aria-haspopup="true"><span class="rb-trigger-label svelte-gp9ujg"> </span> <span class="rb-trigger-value svelte-gp9ujg"> </span></button> <!></div> <div popover="" class="rb-panel rb-panel-date svelte-gp9ujg"><div class="rb-cal-header svelte-gp9ujg"><p class="rb-cal-month svelte-gp9ujg"> </p> <div class="rb-cal-nav svelte-gp9ujg"><button type="button" class="svelte-gp9ujg">‹</button> <button type="button" class="svelte-gp9ujg">›</button></div></div> <div class="rb-cal-weekdays svelte-gp9ujg"></div> <div class="rb-cal-grid svelte-gp9ujg"></div></div> <ul popover="" data-match-trigger-width="" data-lenis-prevent="" role="listbox" class="rb-panel rb-panel-list svelte-gp9ujg"></ul> <ul popover="" data-match-trigger-width="" data-lenis-prevent="" role="listbox" class="rb-panel rb-panel-list svelte-gp9ujg"></ul>`,1),Ce={hash:`svelte-gp9ujg`,code:`.rb-bar.svelte-gp9ujg {display:flex;width:100%;flex-direction:column;align-items:stretch;overflow:hidden;border-radius:var(--rb-radius, 2px);border:1px solid var(--rb-bar-border, rgba(255, 255, 255, 0.25));background:var(--rb-bar-bg, rgba(0, 0, 0, 0.3));backdrop-filter:blur(12px);box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);}\r
2
+ @media (min-width: 640px) {.rb-bar.svelte-gp9ujg {flex-direction:row;}\r
3
+ }.rb-trigger.svelte-gp9ujg {display:flex;flex:1;cursor:pointer;flex-direction:column;align-items:center;gap:2px;padding:0.75rem 1.5rem;text-align:left;background:transparent;border:none;border-top:1px solid var(--rb-bar-border, rgba(255, 255, 255, 0.2));color:var(--rb-text-color, #fff);transition:background-color 150ms ease;}.rb-trigger.svelte-gp9ujg:first-child {border-top:none;}\r
4
+ @media (min-width: 640px) {.rb-trigger.svelte-gp9ujg {border-top:none;border-right:1px solid var(--rb-bar-border, rgba(255, 255, 255, 0.2));}\r
5
+ }.rb-trigger.svelte-gp9ujg:hover {background:var(--rb-trigger-hover-bg, rgba(255, 255, 255, 0.1));}.rb-trigger-label.svelte-gp9ujg {font-size:10px;font-weight:300;text-transform:uppercase;letter-spacing:0.1em;}.rb-trigger-value.svelte-gp9ujg {font-size:0.875rem;font-weight:600;white-space:nowrap;}.rb-reserve.svelte-gp9ujg {display:flex;align-items:center;justify-content:center;padding:1rem 2rem;font-size:1rem;font-weight:600;text-transform:uppercase;letter-spacing:0.1em;color:#fff;text-decoration:none;background:var(--rb-accent-bg, #1c3f60);transition:background-color 150ms ease;}.rb-reserve.svelte-gp9ujg:hover {background:var(--rb-accent-hover-bg, #2a557f);}.rb-panel.svelte-gp9ujg {position:fixed;inset:auto;margin:0;border-radius:var(--rb-radius, 2px);border:1px solid var(--rb-bar-border, rgba(255, 255, 255, 0.2));background:var(--rb-panel-bg, rgba(10, 10, 12, 0.92));backdrop-filter:blur(12px);box-shadow:0 8px 24px rgba(0, 0, 0, 0.25);color:var(--rb-text-color, #fff);}.rb-panel-date.svelte-gp9ujg {width:288px;padding:1rem;}.rb-cal-header.svelte-gp9ujg {display:flex;align-items:center;justify-content:space-between;}.rb-cal-month.svelte-gp9ujg {margin:0;font-size:0.875rem;font-weight:600;}.rb-cal-nav.svelte-gp9ujg {display:flex;gap:0.25rem;}.rb-cal-nav.svelte-gp9ujg button:where(.svelte-gp9ujg) {display:flex;height:28px;width:28px;align-items:center;justify-content:center;border-radius:9999px;border:none;background:transparent;color:inherit;cursor:pointer;}.rb-cal-nav.svelte-gp9ujg button:where(.svelte-gp9ujg):hover:not(:disabled) {background:var(--rb-trigger-hover-bg, rgba(255, 255, 255, 0.1));}.rb-cal-nav.svelte-gp9ujg button:where(.svelte-gp9ujg):disabled {cursor:default;opacity:0.3;}.rb-cal-weekdays.svelte-gp9ujg {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;}.rb-cal-grid.svelte-gp9ujg {display:grid;grid-template-columns:repeat(7, 1fr);row-gap:0.25rem;justify-items:center;margin-top:0.25rem;}.rb-cal-cell.svelte-gp9ujg {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;}.rb-cal-cell.svelte-gp9ujg:hover:not(:disabled) {background:var(--rb-trigger-hover-bg, rgba(255, 255, 255, 0.1));}.rb-cal-cell.svelte-gp9ujg:disabled {cursor:default;opacity:0.25;}.rb-cal-cell-selected.svelte-gp9ujg {background:var(--rb-text-color, #fff);color:var(--rb-bar-bg, #111);}.rb-panel-list.svelte-gp9ujg {max-height:16rem;width:10rem;list-style:none;overflow:auto;padding:0.25rem 0;scrollbar-width:thin;scrollbar-color:rgba(255, 255, 255, 0.3) transparent;}.rb-panel-list.svelte-gp9ujg li:where(.svelte-gp9ujg) {display:block;}.rb-panel-list.svelte-gp9ujg button:where(.svelte-gp9ujg) {display:block;width:100%;cursor:pointer;white-space:nowrap;border:none;background:transparent;color:inherit;padding:0.5rem 1rem;text-align:left;font-size:0.875rem;}.rb-panel-list.svelte-gp9ujg button:where(.svelte-gp9ujg):hover {background:var(--rb-trigger-hover-bg, rgba(255, 255, 255, 0.1));}.rb-panel-list.svelte-gp9ujg button[aria-selected='true']:where(.svelte-gp9ujg) {background:rgba(255, 255, 255, 0.15);font-weight:600;}`};function x(e,n){ne(n,!0),ie(e,Ce);let ae={dateLabel:`Date`,guestsLabel:`Guests`,timeLabel:`Time`,guestSingular:`Guest`,guestPlural:`Guests`,reserveLabel:`Reserve`,previousMonth:`Previous month`,nextMonth:`Next month`,selectGuestsAriaLabel:`Select number of guests`,selectTimeAriaLabel:`Select a time`},x=h(n,`minGuests`,7,1),S=h(n,`maxGuests`,7,20),C=h(n,`defaultGuests`,7,2),w=h(n,`timeSlots`,23,()=>[`7:00 PM`,`7:30 PM`,`8:00 PM`,`8:30 PM`,`9:00 PM`,`9:30 PM`,`10:00 PM`,`10:30 PM`,`11:00 PM`]),T=h(n,`defaultTime`,7,`7:00 PM`),E=h(n,`showReserveButton`,7,!0),D=h(n,`reserveHref`,7,`/reservations`),O=h(n,`applyOnSelect`,7),k=h(n,`syncWithUrl`,7,!1),A=h(n,`closedWeekdays`,23,()=>[]),j=h(n,`locale`,7),M=h(n,`strings`,7),N=h(n,`fetchAvailableDates`,7),P=a(()=>({...ae,...M()})),F=me(new Date),I=k()&&typeof window<`u`?new URLSearchParams(window.location.search):null,L=de(F,A(),I?.get(`date`)??null),R=f(r(L.getFullYear())),z=f(r(L.getMonth())),B=f(r(L)),V=I?Number(I.get(`guests`)):NaN,H=f(r(!Number.isNaN(V)&&V>0?V:C())),we=I?.get(`time`),U=f(r(we||T())),W=f(null),G=f(null);async function Te(e){if(N())try{let t=await N()(e);u(G,new Set(t),!0)}catch{u(G,new Set,!0)}}s(()=>{Te(c(H))});let Ee=f(void 0),De=f(void 0),Oe=f(void 0),ke=f(void 0),Ae=f(void 0),je=f(void 0),Me=a(()=>pe(c(B),j())),Ne=a(()=>ge(c(B))),Pe=a(()=>_e(c(R),c(z),F,A())),Fe=a(()=>c(R)!==F.getFullYear()||c(z)!==F.getMonth()),Ie=a(()=>he(j())),Le=a(()=>fe(j())),Re=a(()=>Array.from({length:S()-x()+1},(e,t)=>x()+t)),ze=a(()=>{let e=new URLSearchParams;return e.set(`date`,c(Ne)),e.set(`guests`,String(c(H))),e.set(`time`,c(U)),`${D()}?${e.toString()}`});function Be(e,t){n.$$host?.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}s(()=>{Be(`reservationchange`,{date:c(Ne),guests:c(H),time:c(U)})});function Ve(e){return!!(!e.inMonth||e.isPast||e.isClosedWeekday||N()&&c(G)!==null&&!c(G).has(e.iso))}function He(){(O()??!E())&&typeof window<`u`&&(window.location.href=c(ze))}function Ue(e){Ve(e)||(u(B,e.date,!0),Je(),He())}function We(){c(Fe)&&(u(z,c(z)-1),c(z)<0&&(u(z,11),u(R,c(R)-1)))}function Ge(){u(z,c(z)+1),c(z)>11&&(u(z,0),u(R,c(R)+1))}function Ke(e){u(H,e,!0),Je(),He()}function qe(e){u(U,e,!0),Je(),He()}function Je(){u(W,null)}function Ye(e){u(W,c(W)===e?null:e,!0)}function Xe(e){return c(e===`date`?Ee:e===`guests`?De:Oe)}function Ze(e){return c(e===`date`?ke:e===`guests`?Ae:je)}s(()=>{let e=c(W);if(!e)return;let t=Xe(e),n=Ze(e);if(!t||!n)return;n.hasAttribute(`data-match-trigger-width`)&&(n.style.width=`${t.getBoundingClientRect().width}px`),n.showPopover();let r=ue(t,n,async()=>{let{x:e,y:r}=await ce(t,n,{strategy:`fixed`,placement:`bottom-start`,middleware:[se(8),le(),oe({padding:12})]});n.style.left=`${e}px`,n.style.top=`${r}px`});function i(t){t.newState===`closed`&&c(W)===e&&u(W,null)}return n.addEventListener(`toggle`,i),()=>{r(),n.removeEventListener(`toggle`,i),n.matches(`:popover-open`)&&n.hidePopover()}});var Qe={get minGuests(){return x()},set minGuests(e=1){x(e),o()},get maxGuests(){return S()},set maxGuests(e=20){S(e),o()},get defaultGuests(){return C()},set defaultGuests(e=2){C(e),o()},get timeSlots(){return w()},set timeSlots(e=[`7:00 PM`,`7:30 PM`,`8:00 PM`,`8:30 PM`,`9:00 PM`,`9:30 PM`,`10:00 PM`,`10:30 PM`,`11:00 PM`]){w(e),o()},get defaultTime(){return T()},set defaultTime(e=`7:00 PM`){T(e),o()},get showReserveButton(){return E()},set showReserveButton(e=!0){E(e),o()},get reserveHref(){return D()},set reserveHref(e=`/reservations`){D(e),o()},get applyOnSelect(){return O()},set applyOnSelect(e){O(e),o()},get syncWithUrl(){return k()},set syncWithUrl(e=!1){k(e),o()},get closedWeekdays(){return A()},set closedWeekdays(e=[]){A(e),o()},get locale(){return j()},set locale(e){j(e),o()},get strings(){return M()},set strings(e){M(e),o()},get fetchAvailableDates(){return N()},set fetchAvailableDates(e){N(e),o()}},$e=Se(),et=t($e),K=b(et),tt=b(K),nt=b(tt,!0);p(tt);var rt=d(tt,2),it=b(rt,!0);p(rt),p(K),g(K,e=>u(Ee,e),()=>c(Ee));var q=d(K,2),at=b(q),ot=b(at,!0);p(at);var st=d(at,2),ct=b(st);p(st),p(q),g(q,e=>u(De,e),()=>c(De));var J=d(q,2),Y=b(J),lt=b(Y,!0);p(Y);var ut=d(Y,2),dt=b(ut,!0);p(ut),p(J),g(J,e=>u(Oe,e),()=>c(Oe));var ft=d(J,2),pt=e=>{var t=ve(),n=b(t,!0);p(t),i(()=>{_(t,`href`,c(ze)),v(n,c(P).reserveLabel)}),l(e,t)};ee(ft,e=>{E()&&e(pt)}),p(et);var X=d(et,2),mt=b(X),ht=b(mt),gt=b(ht);p(ht);var _t=d(ht,2),Z=b(_t),vt=d(Z,2);p(_t),p(mt);var yt=d(mt,2);y(yt,20,()=>c(Le),e=>e,(e,t)=>{var n=ye(),r=b(n,!0);p(n),i(()=>v(r,t)),l(e,n)}),p(yt);var bt=d(yt,2);y(bt,21,()=>c(Pe),e=>e.iso,(e,t)=>{var n=be();let r;var a=b(n,!0);p(n),i(e=>{r=re(n,1,`rb-cal-cell svelte-gp9ujg`,null,r,{"rb-cal-cell-selected":c(Ne)===c(t).iso}),n.disabled=e,v(a,c(t).dayNumber)},[()=>Ve(c(t))]),m(`click`,n,()=>Ue(c(t))),l(e,n)}),p(bt),p(X),g(X,e=>u(ke,e),()=>c(ke));var Q=d(X,2);y(Q,20,()=>c(Re),e=>e,(e,t)=>{var n=xe(),r=b(n),a=b(r);p(r),p(n),i(()=>{_(r,`aria-selected`,t===c(H)),v(a,`${t??``} ${(t===1?c(P).guestSingular:c(P).guestPlural)??``}`)}),m(`click`,r,()=>Ke(t)),l(e,n)}),p(Q),g(Q,e=>u(Ae,e),()=>c(Ae));var $=d(Q,2);return y($,20,w,e=>e,(e,t)=>{var n=xe(),r=b(n),a=b(r,!0);p(r),p(n),i(()=>{_(r,`aria-selected`,t===c(U)),v(a,t)}),m(`click`,r,()=>qe(t)),l(e,n)}),p($),g($,e=>u(je,e),()=>c(je)),i(()=>{_(K,`aria-expanded`,c(W)===`date`),v(nt,c(P).dateLabel),v(it,c(Me)),_(q,`aria-expanded`,c(W)===`guests`),v(ot,c(P).guestsLabel),v(ct,`${c(H)??``} ${(c(H)===1?c(P).guestSingular:c(P).guestPlural)??``}`),_(J,`aria-expanded`,c(W)===`time`),v(lt,c(P).timeLabel),v(dt,c(U)),v(gt,`${c(Ie)[c(z)]??``} ${c(R)??``}`),Z.disabled=!c(Fe),_(Z,`aria-label`,c(P).previousMonth),_(vt,`aria-label`,c(P).nextMonth),_(Q,`aria-label`,c(P).selectGuestsAriaLabel),_($,`aria-label`,c(P).selectTimeAriaLabel)}),m(`click`,K,()=>Ye(`date`)),m(`click`,q,()=>Ye(`guests`)),m(`click`,J,()=>Ye(`time`)),m(`click`,Z,We),m(`click`,vt,Ge),l(e,$e),te(Qe)}e([`click`]),customElements.define(`reservation-bar`,ae(x,{minGuests:{attribute:`min-guests`,type:`Number`},maxGuests:{attribute:`max-guests`,type:`Number`},defaultGuests:{attribute:`default-guests`,type:`Number`},timeSlots:{attribute:`time-slots`,type:`Array`},defaultTime:{attribute:`default-time`,type:`String`},showReserveButton:{attribute:`show-reserve-button`,type:`Boolean`},reserveHref:{attribute:`reserve-href`,type:`String`},applyOnSelect:{attribute:`apply-on-select`,type:`Boolean`},syncWithUrl:{attribute:`sync-with-url`,type:`Boolean`},closedWeekdays:{attribute:`closed-weekdays`,type:`Array`},locale:{attribute:`locale`,type:`String`},strings:{type:`Object`},fetchAvailableDates:{type:`Object`}},[],[],{mode:`open`}));
@@ -0,0 +1,4 @@
1
+ import{A as e,B as t,D as n,E as r,H as i,I as a,J as o,K as s,L as c,N as l,S as u,T as d,U as f,V as p,W as m,X as h,Z as g,et as _,f as ee,h as v,j as y,n as b,r as te,t as x,w as S,z as C}from"./chunks/client-BDk8LqGN.js";var ne=n(`<button type="button" class="rc-link-btn svelte-195t3l3"> </button>`),w=n(`<p class="rc-message svelte-195t3l3"> </p>`),T=n(`<p class="rc-message rc-message-error svelte-195t3l3"> </p>`),re=n(`<div class="rc-root svelte-195t3l3"><!></div> <dialog><div class="rc-dialog-inner svelte-195t3l3"><p class="rc-dialog-eyebrow svelte-195t3l3"> </p> <div class="rc-dialog-rule svelte-195t3l3"></div> <p class="rc-dialog-body svelte-195t3l3"> </p> <div class="rc-dialog-actions svelte-195t3l3"><button type="button" class="rc-btn-secondary svelte-195t3l3"> </button> <button type="button" class="rc-btn-danger svelte-195t3l3"> </button></div></div></dialog>`,1),E=n(`<p class="rc-countdown svelte-195t3l3"> <span class="svelte-195t3l3"> </span></p>`),D=n(`<div class="rc-alarm svelte-195t3l3" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-195t3l3"><circle cx="12" cy="13" r="8"></circle><path d="M12 9v4l2.5 2.5M5 3 3 5M19 3l2 2" stroke-linecap="round"></path></svg></div> <!> <button type="button" class="rc-btn-danger rc-btn-full svelte-195t3l3"> </button> <!>`,1),O=n(`<div class="rc-alarm rc-alarm-expired svelte-195t3l3" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-195t3l3"><circle cx="12" cy="13" r="8"></circle><path d="M12 9v4l2.5 2.5M5 3 3 5M19 3l2 2" stroke-linecap="round"></path></svg></div> <p class="rc-countdown svelte-195t3l3"> </p> <button type="button" class="rc-btn-primary rc-btn-full svelte-195t3l3"><svg class="rc-mail-icon svelte-195t3l3" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="5" width="18" height="14" rx="2"></rect><path d="m3 7 9 6 9-6"></path></svg> </button> <!>`,1),k=n(`<div class="rc-root svelte-195t3l3"><!></div>`),A={hash:`svelte-195t3l3`,code:`.rc-root.svelte-195t3l3 {display:block;font-family:inherit;color:var(--rc-text-color, #1a1a1a);text-align:center;}.rc-link-btn.svelte-195t3l3 {cursor:pointer;border:none;background:none;padding:0;font:inherit;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--rc-danger-color, #dc2626);text-decoration:underline;text-decoration-color:color-mix(in oklab, var(--rc-danger-color, #dc2626) 30%, transparent);text-underline-offset:4px;}.rc-link-btn.svelte-195t3l3:hover:not(:disabled) {color:var(--rc-danger-hover-color, #b91c1c);}.rc-link-btn.svelte-195t3l3:disabled {opacity:0.5;cursor:default;}.rc-message.svelte-195t3l3 {margin:0.5rem 0 0;font-size:0.875rem;color:color-mix(in oklab, var(--rc-text-color, #1a1a1a) 70%, transparent);}.rc-message-error.svelte-195t3l3 {color:var(--rc-danger-color, #dc2626);}.rc-dialog.svelte-195t3l3 {position:fixed;inset:0;margin:auto;height:fit-content;width:fit-content;border:1px solid var(--rc-border-color, rgba(0, 0, 0, 0.1));border-radius:2px;padding:0;box-shadow:0 20px 40px rgba(0, 0, 0, 0.2);opacity:0;transform:translateY(24px);transition:opacity 0.25s ease, transform 0.25s ease;}.rc-dialog.svelte-195t3l3::backdrop {background:color-mix(in oklab, var(--rc-text-color, #1a1a1a) 40%, transparent);backdrop-filter:blur(4px);}.rc-dialog-visible.svelte-195t3l3 {opacity:1;transform:translateY(0);}.rc-dialog-inner.svelte-195t3l3 {width:20rem;max-width:90vw;padding:1.5rem;text-align:center;color:var(--rc-text-color, #1a1a1a);}.rc-dialog-eyebrow.svelte-195t3l3 {margin:0;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--rc-danger-color, #b91c1c);}.rc-dialog-rule.svelte-195t3l3 {width:3rem;height:1px;margin:0.75rem auto 0;background:var(--rc-danger-color, #b91c1c);}.rc-dialog-body.svelte-195t3l3 {margin:1rem 0 0;font-size:0.875rem;color:color-mix(in oklab, var(--rc-text-color, #1a1a1a) 80%, transparent);}.rc-dialog-actions.svelte-195t3l3 {display:flex;justify-content:center;gap:0.75rem;margin-top:1.5rem;}.rc-btn-secondary.svelte-195t3l3,
2
+ .rc-btn-danger.svelte-195t3l3,
3
+ .rc-btn-primary.svelte-195t3l3 {cursor:pointer;border-radius:2px;padding:0.5rem 1.25rem;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;font-family:inherit;}.rc-btn-secondary.svelte-195t3l3 {border:1px solid color-mix(in oklab, var(--rc-text-color, #1a1a1a) 15%, transparent);background:transparent;color:var(--rc-text-color, #1a1a1a);}.rc-btn-secondary.svelte-195t3l3:hover {background:color-mix(in oklab, var(--rc-text-color, #1a1a1a) 5%, transparent);}.rc-btn-danger.svelte-195t3l3 {border:none;background:var(--rc-danger-color, #dc2626);color:#fff;}.rc-btn-danger.svelte-195t3l3:hover:not(:disabled) {background:var(--rc-danger-hover-color, #b91c1c);}.rc-btn-danger.svelte-195t3l3:disabled,
4
+ .rc-btn-primary.svelte-195t3l3:disabled {opacity:0.6;cursor:default;}.rc-btn-primary.svelte-195t3l3 {display:inline-flex;align-items:center;gap:0.75rem;border:none;background:var(--rc-accent-bg, #1a1a1a);color:#fff;}.rc-btn-primary.svelte-195t3l3:hover:not(:disabled) {background:var(--rc-accent-hover-bg, #333);}.rc-btn-full.svelte-195t3l3 {width:100%;justify-content:center;margin-top:1rem;padding:0.75rem 2rem;font-size:0.75rem;}.rc-mail-icon.svelte-195t3l3 {width:1.25rem;height:1.25rem;}.rc-alarm.svelte-195t3l3 {display:flex;align-items:center;justify-content:center;width:3.5rem;height:3.5rem;margin:0 auto;border:3px solid var(--rc-text-color, #1a1a1a);border-radius:9999px;padding:0.75rem;color:var(--rc-text-color, #1a1a1a);}.rc-alarm-expired.svelte-195t3l3 {border-color:var(--rc-danger-color, #dc2626);color:var(--rc-danger-color, #dc2626);}.rc-alarm.svelte-195t3l3 svg:where(.svelte-195t3l3) {width:100%;height:100%;}.rc-countdown.svelte-195t3l3 {margin:0.75rem 0 0;font-size:0.75rem;color:var(--rc-text-color, #1a1a1a);}.rc-countdown.svelte-195t3l3 span:where(.svelte-195t3l3) {font-size:1rem;font-weight:700;}`};function j(e,n){g(n,!0),v(e,A);let x={cancelReservation:`Cancel Reservation`,requestSuccess:`Check your email to confirm the cancellation.`,noEmailOnFile:`We don't have an email on file for this reservation. Please call us to cancel.`,requestError:`Could not start the cancellation. Please try again or call us directly.`,dialogEyebrow:`Cancel Reservation`,dialogBody:`We'll email you a link to confirm the cancellation.`,nevermind:`Nevermind`,continueLabel:`Continue`,confirmSuccess:`Your reservation has been cancelled.`,expiresIn:`This link expires in`,confirmButton:`Yes, Cancel My Reservation`,confirmError:`Could not confirm the cancellation. Please try again or call us directly.`,resendSuccess:`Check your email for a new cancellation link.`,linkExpired:`This confirmation link has expired.`,resendButton:`Resend Cancellation Email`,resendError:`Could not resend the email. Please try again or call us directly.`},j=b(n,`mode`,7),M=b(n,`reservationId`,7),N=b(n,`restaurantSlug`,7),P=b(n,`token`,7),F=b(n,`expiresAt`,7),I=b(n,`initiallyExpired`,7,!1),L=b(n,`requestCancel`,7),R=b(n,`confirmCancel`,7),z=b(n,`strings`,7),B=o(()=>({...x,...z()}));function V(e,t){n.$$host?.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}let H=m(void 0),U=m(!1),W=m(!1),G=m(`idle`);function ie(){l(H)?.showModal(),requestAnimationFrame(()=>requestAnimationFrame(()=>f(U,!0)))}function K(){f(U,!1),setTimeout(()=>l(H)?.close(),250)}async function ae(){if(!(!M()||!L())){K(),f(W,!0);try{let e=await L()({reservationId:M(),restaurantSlug:N()});if(!e.ok&&e.status===422)f(G,`no-email`);else if(e.ok)f(G,`success`),V(`cancel-requested`,{reservationId:M(),restaurantSlug:N()});else throw Error(`request failed`)}catch{f(G,`error`)}finally{f(W,!1)}}}let q=m(i(I())),J=m(``),Y=m(!1),X=m(`idle`),Z=m(!1),Q=m(`idle`);c(()=>{if(j()!==`confirm`||I()||!F())return;let e;function t(){let t=F()-Date.now();if(t<=0){f(q,!0),f(J,``),e&&clearInterval(e);return}let n=Math.floor(t/1e3),r=Math.floor(n/60),i=n%60;f(J,`${r}:${String(i).padStart(2,`0`)}`)}return t(),e=setInterval(t,1e3),()=>{e&&clearInterval(e)}});async function oe(){if(!(!P()||!R())){f(Y,!0);try{if(!(await R()({token:P()})).ok)throw Error(`confirm failed`);f(X,`success`),V(`cancel-confirmed`,{token:P()})}catch{f(X,`error`)}finally{f(Y,!1)}}}async function se(){if(!(!M()||!L())){f(Z,!0);try{if(!(await L()({reservationId:M(),restaurantSlug:N()})).ok)throw Error(`resend failed`);f(Q,`success`),V(`cancel-requested`,{reservationId:M(),restaurantSlug:N()})}catch{f(Q,`error`)}finally{f(Z,!1)}}}var ce={get mode(){return j()},set mode(e){j(e),s()},get reservationId(){return M()},set reservationId(e){M(e),s()},get restaurantSlug(){return N()},set restaurantSlug(e){N(e),s()},get token(){return P()},set token(e){P(e),s()},get expiresAt(){return F()},set expiresAt(e){F(e),s()},get initiallyExpired(){return I()},set initiallyExpired(e=!1){I(e),s()},get requestCancel(){return L()},set requestCancel(e){L(e),s()},get confirmCancel(){return R()},set confirmCancel(e){R(e),s()},get strings(){return z()},set strings(e){z(e),s()}},$=r(),le=t($),ue=e=>{var n=re(),r=t(n),i=C(r),o=e=>{var t=ne(),n=C(t,!0);_(t),a(()=>{t.disabled=l(W),S(n,l(B).cancelReservation)}),y(`click`,t,ie),d(e,t)},s=e=>{var t=w(),n=C(t,!0);_(t),a(()=>S(n,l(B).requestSuccess)),d(e,t)},c=e=>{var t=w(),n=C(t,!0);_(t),a(()=>S(n,l(B).noEmailOnFile)),d(e,t)},m=e=>{var t=T(),n=C(t,!0);_(t),a(()=>S(n,l(B).requestError)),d(e,t)};u(i,e=>{l(G)===`idle`?e(o):l(G)===`success`?e(s,1):l(G)===`no-email`?e(c,2):e(m,-1)}),_(r);var h=p(r,2);let g;var v=C(h),b=C(v),x=C(b,!0);_(b);var E=p(b,4),D=C(E,!0);_(E);var O=p(E,2),k=C(O),A=C(k,!0);_(k);var j=p(k,2),M=C(j,!0);_(j),_(O),_(v),_(h),te(h,e=>f(H,e),()=>l(H)),a(()=>{g=ee(h,1,`rc-dialog svelte-195t3l3`,null,g,{"rc-dialog-visible":l(U)}),S(x,l(B).dialogEyebrow),S(D,l(B).dialogBody),S(A,l(B).nevermind),S(M,l(B).continueLabel)}),y(`click`,h,e=>e.target===l(H)&&K()),y(`click`,k,K),y(`click`,j,ae),d(e,n)},de=e=>{var n=k(),r=C(n),i=e=>{var t=w(),n=C(t,!0);_(t),a(()=>S(n,l(B).confirmSuccess)),d(e,t)},o=e=>{var n=D(),r=p(t(n),2),i=e=>{var t=E(),n=C(t),r=p(n),i=C(r,!0);_(r),_(t),a(()=>{S(n,`${l(B).expiresIn??``} `),S(i,l(J))}),d(e,t)};u(r,e=>{l(J)&&e(i)});var o=p(r,2),s=C(o,!0);_(o);var c=p(o,2),f=e=>{var t=T(),n=C(t,!0);_(t),a(()=>S(n,l(B).confirmError)),d(e,t)};u(c,e=>{l(X)===`error`&&e(f)}),a(()=>{o.disabled=l(Y),S(s,l(B).confirmButton)}),y(`click`,o,oe),d(e,n)},s=e=>{var t=w(),n=C(t,!0);_(t),a(()=>S(n,l(B).resendSuccess)),d(e,t)},c=e=>{var n=O(),r=p(t(n),2),i=C(r,!0);_(r);var o=p(r,2),s=p(C(o));_(o);var c=p(o,2),f=e=>{var t=T(),n=C(t,!0);_(t),a(()=>S(n,l(B).resendError)),d(e,t)};u(c,e=>{l(Q)===`error`&&e(f)}),a(()=>{S(i,l(B).linkExpired),o.disabled=l(Z),S(s,` ${l(B).resendButton??``}`)}),y(`click`,o,se),d(e,n)};u(r,e=>{l(X)===`success`?e(i):l(q)?l(Q)===`success`?e(s,2):e(c,-1):e(o,1)}),_(n),d(e,n)};return u(le,e=>{j()===`request`?e(ue):e(de,-1)}),d(e,$),h(ce)}e([`click`]),customElements.define(`reservation-cancel`,x(j,{mode:{attribute:`mode`,type:`String`},reservationId:{attribute:`reservation-id`,type:`String`},restaurantSlug:{attribute:`restaurant-slug`,type:`String`},token:{attribute:`token`,type:`String`},expiresAt:{attribute:`expires-at`,type:`Number`},initiallyExpired:{attribute:`initially-expired`,type:`Boolean`},requestCancel:{type:`Object`},confirmCancel:{type:`Object`},strings:{type:`Object`}},[],[],{mode:`open`}));