@ticketlayer/elements 0.4.0 → 1.0.0
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.
- package/dist/cjs/{index-I9CoYv3k.js → index-DanPUX0s.js} +1 -1
- package/dist/cjs/index.cjs.js +2 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/ticket-selector-BYVL13k_.js +3623 -0
- package/dist/cjs/ticketlayer-elements.cjs.js +2 -2
- package/dist/cjs/tl-buy-modal.cjs.entry.js +3 -3
- package/dist/cjs/tl-buy-tickets-button.cjs.entry.js +89 -74
- package/dist/cjs/tl-buy-tickets-wrapper.cjs.entry.js +61 -30
- package/dist/cjs/tl-cart-badge.cjs.entry.js +74 -61
- package/dist/cjs/tl-cart-drawer.cjs.entry.js +51 -23
- package/dist/cjs/tl-cart.cjs.entry.js +71 -103
- package/dist/cjs/tl-checkout-wrapper.cjs.entry.js +51 -29
- package/dist/cjs/tl-event-card.cjs.entry.js +43 -105
- package/dist/cjs/tl-event-list.cjs.entry.js +72 -35
- package/dist/cjs/tl-login.cjs.entry.js +74 -141
- package/dist/cjs/tl-my-orders.cjs.entry.js +52 -92
- package/dist/cjs/tl-occurrence-selector_2.cjs.entry.js +153 -921
- package/dist/cjs/tl-order-confirmation.cjs.entry.js +71 -107
- package/dist/cjs/tl-order-tickets_2.cjs.entry.js +48 -74
- package/dist/cjs/tl-promo-code.cjs.entry.js +50 -47
- package/dist/cjs/tl-seat-map.cjs.entry.js +3 -3
- package/dist/cjs/web-query-Ce73jB4k.js +16 -0
- package/dist/collection/components/tl-buy-modal/tl-buy-modal.js +2 -2
- package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.css +37 -0
- package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.js +105 -79
- package/dist/collection/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.js +73 -30
- package/dist/collection/components/tl-cart/tl-cart.js +82 -107
- package/dist/collection/components/tl-cart-badge/tl-cart-badge.js +62 -62
- package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.js +56 -24
- package/dist/collection/components/tl-checkout-wrapper/tl-checkout-wrapper.js +61 -29
- package/dist/collection/components/tl-event-card/event-card-adapter.js +11 -23
- package/dist/collection/components/tl-event-card/tl-event-card.js +51 -84
- package/dist/collection/components/tl-event-list/tl-event-list.js +82 -38
- package/dist/collection/components/tl-login/tl-login.js +83 -147
- package/dist/collection/components/tl-my-orders/tl-my-orders.js +58 -96
- package/dist/collection/components/tl-occurrence-selector/tl-occurrence-selector.js +137 -516
- package/dist/collection/components/tl-order-confirmation/tl-order-confirmation.js +81 -115
- package/dist/collection/components/tl-order-tickets/tl-order-tickets.js +57 -92
- package/dist/collection/components/tl-promo-code/tl-promo-code.js +55 -50
- package/dist/collection/components/tl-seat-map/tl-seat-map.js +2 -2
- package/dist/collection/components/tl-ticket-selector/tl-ticket-selector.js +34 -20
- package/dist/collection/utils/order-summary.js +15 -135
- package/dist/collection/utils/testing/deep-text.js +29 -0
- package/dist/collection/utils/testing/fixtures.js +290 -0
- package/dist/collection/utils/testing/mock-sdk.js +13 -2
- package/dist/collection/utils/web-query.js +12 -0
- package/dist/collection/utils/web-storage.js +22 -0
- package/dist/components/ticket-selector.js +1 -0
- package/dist/components/tl-buy-modal.js +1 -1
- package/dist/components/tl-buy-tickets-button.js +1 -1
- package/dist/components/tl-buy-tickets-wrapper2.js +1 -1
- package/dist/components/tl-cart-badge.js +1 -1
- package/dist/components/tl-cart-drawer.js +1 -1
- package/dist/components/tl-cart2.js +1 -1
- package/dist/components/tl-checkout-wrapper2.js +1 -1
- package/dist/components/tl-event-card2.js +1 -1
- package/dist/components/tl-event-list.js +1 -1
- package/dist/components/tl-login2.js +1 -1
- package/dist/components/tl-my-orders.js +1 -1
- package/dist/components/tl-occurrence-selector2.js +1 -1
- package/dist/components/tl-order-confirmation.js +1 -1
- package/dist/components/tl-order-tickets2.js +1 -1
- package/dist/components/tl-promo-code.js +1 -1
- package/dist/components/tl-seat-map.js +1 -1
- package/dist/components/tl-ticket-selector2.js +1 -1
- package/dist/components/web-query.js +1 -0
- package/dist/elements.docs.json +34 -34
- package/dist/esm/{index-OoYV1faY.js → index-imfxp765.js} +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/ticket-selector-BwChnHVC.js +3606 -0
- package/dist/esm/ticketlayer-elements.js +3 -3
- package/dist/esm/tl-buy-modal.entry.js +3 -3
- package/dist/esm/tl-buy-tickets-button.entry.js +90 -75
- package/dist/esm/tl-buy-tickets-wrapper.entry.js +62 -31
- package/dist/esm/tl-cart-badge.entry.js +75 -62
- package/dist/esm/tl-cart-drawer.entry.js +52 -24
- package/dist/esm/tl-cart.entry.js +72 -104
- package/dist/esm/tl-checkout-wrapper.entry.js +52 -30
- package/dist/esm/tl-event-card.entry.js +44 -106
- package/dist/esm/tl-event-list.entry.js +73 -36
- package/dist/esm/tl-login.entry.js +75 -142
- package/dist/esm/tl-my-orders.entry.js +53 -93
- package/dist/esm/tl-occurrence-selector_2.entry.js +152 -920
- package/dist/esm/tl-order-confirmation.entry.js +72 -108
- package/dist/esm/tl-order-tickets_2.entry.js +49 -75
- package/dist/esm/tl-promo-code.entry.js +51 -48
- package/dist/esm/tl-seat-map.entry.js +3 -3
- package/dist/esm/web-query-Bdbb2lk5.js +14 -0
- package/dist/ticketlayer-elements/index.esm.js +1 -1
- package/dist/ticketlayer-elements/p-45923d2c.entry.js +1 -0
- package/dist/ticketlayer-elements/p-492adc77.entry.js +1 -0
- package/dist/ticketlayer-elements/p-4cfc9e53.entry.js +1 -0
- package/dist/ticketlayer-elements/{p-ac264adc.entry.js → p-5135630e.entry.js} +1 -1
- package/dist/ticketlayer-elements/p-5bbce3b5.entry.js +1 -0
- package/dist/ticketlayer-elements/p-7d547721.entry.js +1 -0
- package/dist/ticketlayer-elements/p-7fe7b6ba.entry.js +1 -0
- package/dist/ticketlayer-elements/p-8122f0c1.entry.js +1 -0
- package/dist/ticketlayer-elements/p-98d40869.entry.js +1 -0
- package/dist/ticketlayer-elements/p-Bdbb2lk5.js +1 -0
- package/dist/ticketlayer-elements/p-BwChnHVC.js +1 -0
- package/dist/ticketlayer-elements/p-abec290a.entry.js +1 -0
- package/dist/ticketlayer-elements/p-ac79a3f6.entry.js +1 -0
- package/dist/ticketlayer-elements/p-d01f4429.entry.js +1 -0
- package/dist/ticketlayer-elements/p-d7ffaf46.entry.js +1 -0
- package/dist/ticketlayer-elements/p-e7170f3c.entry.js +1 -0
- package/dist/ticketlayer-elements/p-e787e862.entry.js +1 -0
- package/dist/ticketlayer-elements/p-f1ff931f.entry.js +1 -0
- package/dist/ticketlayer-elements/p-imfxp765.js +3 -0
- package/dist/ticketlayer-elements/ticketlayer-elements.css +1 -1
- package/dist/ticketlayer-elements/ticketlayer-elements.esm.js +1 -1
- package/dist/types/components/tl-buy-tickets-button/tl-buy-tickets-button.d.ts +40 -8
- package/dist/types/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.d.ts +20 -1
- package/dist/types/components/tl-cart/tl-cart.d.ts +40 -42
- package/dist/types/components/tl-cart-badge/tl-cart-badge.d.ts +22 -7
- package/dist/types/components/tl-cart-drawer/tl-cart-drawer.d.ts +28 -5
- package/dist/types/components/tl-checkout-wrapper/tl-checkout-wrapper.d.ts +18 -1
- package/dist/types/components/tl-event-card/event-card-adapter.d.ts +9 -20
- package/dist/types/components/tl-event-card/tl-event-card.d.ts +25 -28
- package/dist/types/components/tl-event-list/tl-event-list.d.ts +46 -6
- package/dist/types/components/tl-login/tl-login.d.ts +68 -22
- package/dist/types/components/tl-my-orders/tl-my-orders.d.ts +30 -12
- package/dist/types/components/tl-occurrence-selector/tl-occurrence-selector.d.ts +73 -161
- package/dist/types/components/tl-order-confirmation/tl-order-confirmation.d.ts +48 -15
- package/dist/types/components/tl-order-tickets/tl-order-tickets.d.ts +29 -31
- package/dist/types/components/tl-promo-code/tl-promo-code.d.ts +28 -10
- package/dist/types/components/tl-ticket/tl-ticket.d.ts +2 -11
- package/dist/types/components/tl-ticket-selector/tl-ticket-selector.d.ts +22 -4
- package/dist/types/components.d.ts +270 -62
- package/dist/types/utils/order-summary.d.ts +14 -97
- package/dist/types/utils/testing/deep-text.d.ts +13 -0
- package/dist/types/utils/testing/fixtures.d.ts +225 -0
- package/dist/types/utils/testing/mock-sdk.d.ts +14 -1
- package/dist/types/utils/web-query.d.ts +18 -0
- package/dist/types/utils/web-storage.d.ts +16 -0
- package/elements.catalogue.json +602 -50
- package/package.json +8 -6
- package/dist/cjs/money-BtmM2gt-.js +0 -118
- package/dist/cjs/order-summary-X3TlZxc2.js +0 -150
- package/dist/components/money.js +0 -1
- package/dist/components/order-summary.js +0 -1
- package/dist/esm/money-4ig0-WB6.js +0 -112
- package/dist/esm/order-summary-DiDtvfZM.js +0 -136
- package/dist/ticketlayer-elements/p-0814420f.entry.js +0 -1
- package/dist/ticketlayer-elements/p-0acabc26.entry.js +0 -1
- package/dist/ticketlayer-elements/p-109a3feb.entry.js +0 -1
- package/dist/ticketlayer-elements/p-1a4ba71c.entry.js +0 -1
- package/dist/ticketlayer-elements/p-318965c1.entry.js +0 -1
- package/dist/ticketlayer-elements/p-347c7fd1.entry.js +0 -1
- package/dist/ticketlayer-elements/p-3649c26d.entry.js +0 -1
- package/dist/ticketlayer-elements/p-40260cc9.entry.js +0 -1
- package/dist/ticketlayer-elements/p-4ig0-WB6.js +0 -1
- package/dist/ticketlayer-elements/p-55fd2f9f.entry.js +0 -1
- package/dist/ticketlayer-elements/p-62ee659b.entry.js +0 -1
- package/dist/ticketlayer-elements/p-7d4ecc2b.entry.js +0 -1
- package/dist/ticketlayer-elements/p-7f0abf95.entry.js +0 -1
- package/dist/ticketlayer-elements/p-BXpVGW51.js +0 -1
- package/dist/ticketlayer-elements/p-OoYV1faY.js +0 -3
- package/dist/ticketlayer-elements/p-a3c1b26c.entry.js +0 -1
- package/dist/ticketlayer-elements/p-aeb4c6fb.entry.js +0 -1
- package/dist/ticketlayer-elements/p-ba62541f.entry.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,c as r,h as e}from"./p-imfxp765.js";import{w as o,g as a}from"./p-CqhvfyKV.js";import{c as s,h as i,t as l}from"./p-BwChnHVC.js";const n=[["primaryColor","--tl-primary"],["primaryForeground","--tl-primary-foreground"],["backgroundColor","--tl-background"],["foregroundColor","--tl-foreground"],["mutedColor","--tl-muted"],["mutedForeground","--tl-muted-foreground"],["borderColor","--tl-border"],["borderRadius","--tl-radius"],["fontFamily","--tl-font-family"]],d=class{constructor(e){t(this,e),this.tlSelect=r(this,"tlSelect"),this.orientation="auto",this.element=s(i,{client:()=>a(),clientReady:()=>o(),emit:(t,r)=>this.forward(t,r)}),this.view=this.element.view}watchSubject(){this.syncProps(),this.teardown?.(),this.teardown=this.element.mount()}syncProps(){this.element.setProps({eventId:this.eventId,displayMode:this.displayMode,orientation:this.orientation,theme:this.theme})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((t=>{this.view=t}))),this.view=this.element.view,this.teardown=this.element.mount()}componentDidLoad(){this.containerRef&&"undefined"!=typeof ResizeObserver&&(this.resizeObserver=new ResizeObserver((t=>{for(const r of t)this.element.actions.resized(r.contentRect.width)})),this.resizeObserver.observe(this.containerRef))}disconnectedCallback(){this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(t,r){"tlSelect"===t&&this.tlSelect.emit(r)}themeStyles(){const t={};if(!this.theme)return t;for(const[r,e]of n){const o=this.theme[r];o&&(t[e]=o)}return t}renderRowStatus(t){const{strings:r}=this.view;return"soldOut"===t.statusKind?e("span",{class:"status-sold-out"},r.soldOut):"available"===t.statusKind?e("span",{class:"status-available"},t.capacityLabel):e("span",{class:"status-arrow"},"→")}renderListView(){return e("div",{class:"list-view"},this.view.derived.rows.map((t=>e("button",{key:t.id,class:"occurrence-item "+(t.soldOut?"sold-out":""),onClick:()=>this.element.actions.select(t.id),disabled:t.soldOut},e("div",{class:"occurrence-info"},e("div",{class:"occurrence-date"},t.dateLabel),e("div",{class:"occurrence-time"},t.timeLabel)),e("div",{class:"occurrence-status"},this.renderRowStatus(t))))))}renderSlotsView(){const{slots:t,slotsDateLabel:r}=this.view.derived;return e("div",{class:"slots-view"},r&&e("div",{class:"slots-date-header"},r),e("div",{class:"time-slots-grid"},t.map((t=>e("button",{key:t.id,class:"time-slot "+(t.soldOut?"sold-out":""),onClick:()=>this.element.actions.select(t.id),disabled:t.soldOut},e("span",{class:"slot-time"},t.startLabel),t.soldOut&&e("span",{class:"slot-sold-out"},this.view.strings.soldOut))))))}renderCalendarHeader(){const{strings:t,derived:r}=this.view;return e("div",{class:"calendar-header"},e("span",{class:"month-label"},r.monthLabel),r.showMonthNav&&e("div",{class:"calendar-nav-buttons"},e("button",{class:"nav-button",onClick:()=>this.element.actions.previousMonth(),disabled:!r.canGoBack,"aria-label":t.previousMonth},e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},e("path",{d:"M15 18l-6-6 6-6"}))),e("button",{class:"nav-button",onClick:()=>this.element.actions.nextMonth(),disabled:!r.canGoForward,"aria-label":t.nextMonth},e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},e("path",{d:"M9 18l6-6-6-6"})))))}renderCalendarDay(t){return e("button",{key:t.key,class:t.className,onClick:()=>this.element.actions.selectDate(t.key),disabled:!t.selectable},e("span",{class:"day-number"},t.dayNumber),t.hasOccurrences&&e("span",{class:"occurrence-dot"}))}renderCalendarGrid(){const{derived:t}=this.view;return e("div",{class:"calendar-grid"},t.weekdayLabels.map((t=>e("div",{class:"weekday-header",key:t},t))),t.days.map((t=>this.renderCalendarDay(t))))}renderSelectedDateSlots(){const{strings:t,derived:r}=this.view;return r.selectedDateLabel?e("div",{class:"selected-date-slots"},e("div",{class:"selected-date-header"},r.selectedDateLabel),e("div",{class:"time-slots-list"},r.selectedSlots.map((t=>e("button",{key:t.id,class:"time-slot-item "+(t.soldOut?"sold-out":""),onClick:()=>this.element.actions.select(t.id),disabled:t.soldOut},e("span",{class:"slot-time"},t.startLabel),e("div",{class:"slot-status"},this.renderRowStatus(t))))))):e("div",{class:"selected-date-slots empty"},e("p",null,t.selectADate))}renderCalendarView(){return e("div",{class:this.view.derived.viewClass},e("div",{class:"calendar-panel"},this.renderCalendarHeader(),this.renderCalendarGrid()),e("div",{class:"slots-panel"},this.renderSelectedDateSlots()))}renderSkeleton(){return e("div",{class:"loading-container"},e("div",{class:"skeleton-calendar"},e("div",{class:"skeleton skeleton-calendar-header"}),e("div",{class:"skeleton-calendar-grid"},Array.from({length:35},((t,r)=>e("div",{key:r,class:"skeleton skeleton-calendar-day"}))))))}render(){const{status:t,strings:r,state:o,derived:a}=this.view;return e("div",{key:"84951fb5171ed6c79604861a171f49f43c8b809c",class:"occurrence-selector",ref:t=>this.containerRef=t,style:this.themeStyles()},"loading"===t&&this.renderSkeleton(),"error"===t&&e("div",{key:"2850712eae277f32f3538426c8a5d36b73ca918e",class:"error-container"},e("svg",{key:"89192cd7cce29781b87c83c8dee71d59f6a685ed",class:"error-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},e("circle",{key:"27a52ecb1228c541202752be84323abe687c1655",cx:"12",cy:"12",r:"10"}),e("path",{key:"f51c2b49de89b9c66cde01e11a2de4c56d4dbad9",d:"M12 8v4m0 4h.01"})),e("p",{key:"3c85d762de430f477d2c9ad4341b23765c93e2e3",class:"error-message"},o.error),e("button",{key:"22fa271a8f0a15e18141cf6d66a25a2bf9299c72",class:"retry-button",onClick:()=>{this.element.actions.load()}},r.retry)),"empty"===t&&e("div",{key:"285403135ccff6cd6c8de6a9c62c9186c67c102c",class:"no-occurrences"},e("p",{key:"98373f0c5793cb1aba1328558fac3210e7c6aeeb"},r.empty)),"ready"===t&&e("div",{key:"a61d2c02538f3339e54770e53a4f807e72182357",class:"selector-content"},"list"===a.mode&&this.renderListView(),"slots"===a.mode&&this.renderSlotsView(),"calendar"===a.mode&&this.renderCalendarView()))}static get watchers(){return{eventId:[{watchSubject:0}],displayMode:[{syncProps:0}],orientation:[{syncProps:0}],theme:[{syncProps:0}]}}};d.style=":host{display:block;font-family:var(--tl-font-family);color:var(--tl-foreground)}*{box-sizing:border-box;margin:0;padding:0}.occurrence-selector{width:100%}.no-occurrences{text-align:center;padding:3rem 1rem;color:var(--tl-muted-foreground)}.list-view{display:flex;flex-direction:column;gap:0.75rem}.occurrence-item{display:flex;justify-content:space-between;align-items:flex-start;width:100%;padding:1rem 1.25rem;background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius);text-align:left;cursor:pointer;transition:all 0.15s ease;font-family:inherit}.occurrence-item:hover:not(:disabled){border-color:var(--tl-primary);background:color-mix(in srgb, var(--tl-primary) 5%, var(--tl-background))}.occurrence-item:focus-visible{outline:2px solid var(--tl-primary);outline-offset:2px}.occurrence-item:disabled{cursor:not-allowed;opacity:0.6;background:var(--tl-muted)}.occurrence-item.sold-out{opacity:0.6;background:var(--tl-muted)}.occurrence-info{flex:1}.occurrence-date{font-weight:600;font-size:0.9375rem;color:var(--tl-foreground);margin-bottom:0.25rem}.occurrence-time{font-size:0.875rem;color:var(--tl-muted-foreground)}.occurrence-status{flex-shrink:0;text-align:right}.status-sold-out{font-size:0.875rem;font-weight:500;color:var(--tl-muted-foreground)}.status-available{font-size:0.875rem;color:var(--tl-muted-foreground)}.status-arrow{font-size:1.25rem;color:var(--tl-primary)}.slots-view{display:flex;flex-direction:column;gap:1rem}.slots-date-header{font-size:1.125rem;font-weight:600;color:var(--tl-foreground);padding-bottom:0.5rem;border-bottom:1px solid var(--tl-border)}.time-slots-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(100px, 1fr));gap:0.5rem}.time-slot{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0.75rem 0.5rem;background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius);cursor:pointer;transition:all 0.15s ease;font-family:inherit;min-height:3.5rem}.time-slot:hover:not(:disabled){border-color:var(--tl-primary);background:color-mix(in srgb, var(--tl-primary) 5%, var(--tl-background))}.time-slot:focus-visible{outline:2px solid var(--tl-primary);outline-offset:2px}.time-slot:disabled{cursor:not-allowed;opacity:0.6;background:var(--tl-muted)}.time-slot.sold-out{opacity:0.6;background:var(--tl-muted)}.slot-time{font-size:0.9375rem;font-weight:600;color:var(--tl-foreground)}.slot-sold-out{font-size:0.6875rem;color:var(--tl-muted-foreground);margin-top:0.125rem}.calendar-view{display:flex;flex-direction:column;gap:1.5rem}.calendar-view.horizontal{flex-direction:row;gap:1.5rem;align-items:flex-start}.calendar-view.horizontal .calendar-panel{flex-shrink:0;width:340px}.calendar-view.horizontal .slots-panel{flex:1;min-width:0}.calendar-view.vertical .calendar-panel{width:100%}.calendar-view.vertical .slots-panel{width:100%}.calendar-panel{border:1px solid var(--tl-border);border-radius:var(--tl-radius);padding:1rem}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:0.75rem}.month-label{font-size:1rem;font-weight:600;color:var(--tl-foreground);flex:1}.calendar-nav-buttons{display:flex;gap:0.375rem}.nav-button{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius);cursor:pointer;transition:all 0.15s ease;color:var(--tl-foreground)}.nav-button:hover:not(:disabled){background:var(--tl-muted)}.nav-button:disabled{cursor:not-allowed;opacity:0.4}.nav-button svg{width:0.875rem;height:0.875rem}.calendar-grid{display:grid;grid-template-columns:repeat(7, 1fr);gap:0.1875rem}.weekday-header{text-align:center;font-size:0.6875rem;font-weight:600;color:var(--tl-muted-foreground);padding:0.375rem 0;text-transform:uppercase;letter-spacing:0.05em}.calendar-day{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1;padding:0.1875rem;background:var(--tl-background);border:1px solid transparent;border-radius:var(--tl-radius);cursor:default;transition:all 0.15s ease;font-family:inherit;font-size:0.9375rem;font-weight:500;color:var(--tl-foreground)}.calendar-day.other-month{color:var(--tl-muted-foreground);opacity:0.5}.calendar-day.has-occurrences{cursor:pointer;background:color-mix(in srgb, var(--tl-primary) 10%, var(--tl-background));border-color:transparent;font-weight:600;color:var(--tl-primary)}.calendar-day.has-occurrences:hover{background:color-mix(in srgb, var(--tl-primary) 18%, var(--tl-background));border-color:transparent}.calendar-day.has-occurrences.sold-out{background:var(--tl-muted);border-color:transparent}.calendar-day.has-occurrences.sold-out:hover{background:color-mix(in srgb, var(--tl-muted) 80%, var(--tl-background));border-color:transparent}.calendar-day.selected{background:var(--tl-primary);border-color:var(--tl-primary);color:var(--tl-primary-foreground)}.calendar-day.selected:hover{background:color-mix(in srgb, var(--tl-primary) 90%, black)}.calendar-day.selected .occurrence-dot{background:var(--tl-primary-foreground)}.calendar-day.today .day-number{font-weight:700;text-decoration:underline;text-underline-offset:2px}.calendar-day.past:not(.has-occurrences){opacity:0.4}.day-number{line-height:1}.occurrence-dot{display:none}.slots-panel{min-height:200px}.selected-date-slots{height:100%}.selected-date-slots.empty{display:flex;align-items:center;justify-content:center;color:var(--tl-muted-foreground);background:var(--tl-muted);border-radius:var(--tl-radius);padding:2rem 1rem;text-align:center;min-height:200px;font-size:0.875rem}.selected-date-header{font-size:0.9375rem;font-weight:600;color:var(--tl-foreground);padding-bottom:0.625rem;margin-bottom:0.625rem}.time-slots-list{display:flex;flex-direction:column;gap:0.5rem}.time-slot-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:0.625rem 0.875rem;background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius);text-align:left;cursor:pointer;transition:all 0.15s ease;font-family:inherit}.time-slot-item:hover:not(:disabled){border-color:var(--tl-primary);background:color-mix(in srgb, var(--tl-primary) 5%, var(--tl-background))}.time-slot-item:focus-visible{outline:2px solid var(--tl-primary);outline-offset:2px}.time-slot-item:disabled{cursor:not-allowed;opacity:0.6;background:var(--tl-muted)}.time-slot-item.sold-out{opacity:0.6;background:var(--tl-muted)}.time-slot-item .slot-time{font-size:0.9375rem;font-weight:600}.slot-status{flex-shrink:0}.slot-status .status-sold-out{font-size:0.75rem}.slot-status .status-available{font-size:0.75rem}.slot-status .status-arrow{font-size:1rem}@media (max-width: 640px){.event-name{font-size:1.25rem}.occurrence-date{font-size:0.875rem}.time-slots-grid{grid-template-columns:repeat(auto-fill, minmax(80px, 1fr))}.time-slot{padding:0.625rem 0.375rem;min-height:3rem}.slot-time{font-size:0.875rem}.calendar-day{font-size:0.75rem}.weekday-header{font-size:0.625rem}.calendar-view.horizontal .calendar-panel{width:100%}}@media (max-width: 767px){.calendar-view.horizontal{flex-direction:column}}.loading-container{padding:1rem 0;min-height:400px}@keyframes skeleton-pulse{0%,100%{opacity:1}50%{opacity:0.5}}.skeleton{background:var(--tl-muted);border-radius:var(--tl-radius);animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-list{display:flex;flex-direction:column;gap:0.75rem}.skeleton-list-item{height:4.5rem;border-radius:var(--tl-radius)}.skeleton-calendar{border:1px solid var(--tl-border);border-radius:var(--tl-radius);padding:1rem;min-height:350px}.skeleton-calendar-header{height:1.75rem;width:50%;margin-bottom:0.75rem;border-radius:var(--tl-radius)}.skeleton-calendar-grid{display:grid;grid-template-columns:repeat(7, 1fr);gap:0.1875rem;margin-top:0.75rem}.skeleton-calendar-day{aspect-ratio:1;border-radius:var(--tl-radius)}.skeleton-slots{display:flex;flex-direction:column;gap:1rem}.skeleton-slots-header{height:1.75rem;width:60%;border-radius:var(--tl-radius);margin-bottom:0.5rem}.skeleton-slots-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(100px, 1fr));gap:0.5rem}.skeleton-slot-item{height:3.5rem;border-radius:var(--tl-radius)}.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1rem;gap:1rem;text-align:center}.error-icon{width:3rem;height:3rem;color:var(--tl-muted-foreground);stroke-width:1.5}.error-message{color:var(--tl-foreground);font-size:0.9375rem;max-width:400px}.retry-button{margin-top:0.5rem;padding:0.625rem 1.25rem;background:var(--tl-primary);color:var(--tl-primary-foreground);border:none;border-radius:var(--tl-radius);font-family:inherit;font-size:0.875rem;font-weight:500;cursor:pointer;transition:all 0.15s ease}.retry-button:hover{background:color-mix(in srgb, var(--tl-primary) 90%, black)}.retry-button:focus-visible{outline:2px solid var(--tl-primary);outline-offset:2px}";const c=class{constructor(e){t(this,e),this.tlAddToCart=r(this,"tlAddToCart"),this.tlQuantityChange=r(this,"tlQuantityChange"),this.tlError=r(this,"tlError"),this.showButton=!0,this.buttonLabel="Add to Cart",this.element=s(l,{client:()=>a(),clientReady:()=>o(),emit:(t,r)=>this.forward(t,r)}),this.view=this.element.view}get feeQuote(){return this.element.state.feeQuote}set feeQuote(t){this.element.actions.setFeeQuote(t)}watchPropsChange(){this.syncProps(),this.remount()}syncProps(){this.element.setProps({eventId:this.eventId,occurrenceId:this.occurrenceId,showButton:this.showButton,buttonLabel:this.buttonLabel})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((t=>{this.view=t}))),this.view=this.element.view,this.teardown=this.element.mount()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}remount(){this.teardown?.(),this.teardown=this.element.mount()}forward(t,r){"tlAddToCart"===t?this.tlAddToCart.emit(r):"tlQuantityChange"===t?this.tlQuantityChange.emit(r):"tlError"===t&&this.tlError.emit(r)}renderSkeleton(){return e("div",{class:"skeleton-container"},e("div",{class:"skeleton-row"}),e("div",{class:"skeleton-row"}),e("div",{class:"skeleton-row"}))}renderError(){return e("div",{class:"error-state"},e("p",{class:"error-message"},this.view.state.error))}renderTicketRow(t){const r=this.view.strings;return e("div",{class:"ticket-row "+(t.soldOut?"sold-out":""),key:t.id},e("div",{class:"ticket-info"},e("div",{class:"ticket-header"},e("span",{class:"ticket-name"},t.name),t.limited&&e("span",{class:"status-badge limited"},r.limited),t.soldOut&&e("span",{class:"status-badge sold-out"},r.soldOut)),t.description&&e("p",{class:"ticket-description"},t.description),e("p",{class:"ticket-price"},t.priceLabel)),e("div",{class:"quantity-controls"},e("button",{class:"qty-btn",onClick:()=>this.element.actions.changeQuantity(t.id,-1),disabled:!t.canDecrease,"aria-label":r.decrease},"−"),e("span",{class:"qty-value"},t.quantity),e("button",{class:"qty-btn",onClick:()=>this.element.actions.changeQuantity(t.id,1),disabled:!t.canIncrease,"aria-label":r.increase},"+")))}render(){const{status:t,state:r,strings:o,derived:a}=this.view;return"loading"===t?this.renderSkeleton():"error"===t?this.renderError():e("div",{class:"ticket-selector"},e("div",{class:"ticket-list"},a.rows.map((t=>this.renderTicketRow(t)))),a.showTotals&&e("div",{class:"selection-totals"},e("div",{class:"total-row"},e("span",null,o.ticketsRow),e("span",null,a.subtotalLabel)),e("div",{class:"total-row fee"},e("span",null,a.totals.feeLabel),e("span",null,a.feeLabel)),e("div",{class:"total-row total"},e("span",null,o.totalRow),e("span",null,a.totalLabel))),r.addSuccess&&e("div",{class:"success-message"},e("svg",{class:"success-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})),o.added),this.showButton&&e("button",{class:"add-to-cart-btn "+(0===a.totalItems?"disabled":""),onClick:()=>this.element.actions.addToCart(),disabled:a.actionDisabled},a.actionLabel))}static get watchers(){return{eventId:[{watchPropsChange:0}],occurrenceId:[{watchPropsChange:0}],showButton:[{syncProps:0}],buttonLabel:[{syncProps:0}]}}};c.style=":host{--tl-color-primary:var(--tl-primary);--tl-color-primary-foreground:var(--tl-primary-foreground);--tl-color-background:var(--tl-background);--tl-color-foreground:var(--tl-foreground);--tl-color-muted:var(--tl-muted);--tl-color-muted-foreground:var(--tl-muted-foreground);--tl-color-border:var(--tl-border);--tl-color-destructive:var(--tl-error);display:block;font-family:var(--tl-font-family)}.ticket-selector{background:var(--tl-color-background)}.skeleton-container{padding:var(--tl-spacing-4)}.skeleton-row{height:60px;background:var(--tl-color-muted);border-radius:var(--tl-radius-md);margin-bottom:var(--tl-spacing-3);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}.error-state{padding:var(--tl-spacing-4);color:var(--tl-color-destructive)}.error-message{margin:0;font-size:14px}.ticket-list{margin-bottom:var(--tl-spacing-4)}.ticket-row{display:flex;align-items:center;justify-content:space-between;padding:var(--tl-spacing-3) 0;border-bottom:1px solid var(--tl-color-border)}.ticket-row.sold-out{opacity:0.5}.ticket-info{flex:1;min-width:0}.ticket-header{display:flex;align-items:center;gap:var(--tl-spacing-2);flex-wrap:wrap}.ticket-name{font-weight:600;color:var(--tl-color-foreground);font-size:15px}.status-badge{font-size:12px;font-weight:500;padding:2px 8px;border-radius:4px}.status-badge.limited{background-color:var(--tl-color-warning-bg);color:var(--tl-color-warning)}.status-badge.sold-out{background-color:var(--tl-color-destructive-bg);color:var(--tl-color-destructive)}.ticket-description{margin:var(--tl-spacing-1) 0 0;font-size:14px;color:var(--tl-color-muted-foreground)}.ticket-price{margin:var(--tl-spacing-1) 0 0;font-size:14px;font-weight:600;color:var(--tl-color-foreground)}.quantity-controls{display:flex;align-items:center;gap:var(--tl-spacing-2);margin-left:var(--tl-spacing-4)}.qty-btn{width:32px;height:32px;border-radius:var(--tl-radius-sm);border:1px solid var(--tl-color-border);background:var(--tl-color-background);color:var(--tl-color-foreground);font-size:18px;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color 0.15s, border-color 0.15s}.qty-btn:hover:not(:disabled){background-color:var(--tl-color-muted);border-color:var(--tl-color-border-hover)}.qty-btn:disabled{cursor:not-allowed;opacity:0.5}.qty-value{width:32px;text-align:center;font-weight:600;font-size:16px;color:var(--tl-color-foreground)}.success-message{display:flex;align-items:center;justify-content:center;gap:var(--tl-spacing-2);padding:var(--tl-spacing-3);background-color:var(--tl-color-success);color:#ffffff;border-radius:var(--tl-radius-md);margin-bottom:var(--tl-spacing-3);font-weight:500;font-size:14px}.success-icon{width:18px;height:18px}.add-to-cart-btn{width:100%;padding:var(--tl-spacing-3) var(--tl-spacing-4);border-radius:var(--tl-radius-md);border:none;background-color:var(--tl-color-primary);color:var(--tl-color-primary-foreground);font-weight:600;font-size:16px;cursor:pointer;transition:opacity 0.15s, transform 0.1s}.add-to-cart-btn:hover:not(:disabled){opacity:0.9}.add-to-cart-btn:active:not(:disabled){transform:scale(0.98)}.add-to-cart-btn.disabled,.add-to-cart-btn:disabled{background-color:var(--tl-color-muted);color:var(--tl-color-muted-foreground);cursor:not-allowed}.selection-totals{padding:var(--tl-spacing-3) 0;border-top:1px solid var(--tl-color-border)}.selection-totals .total-row{display:flex;justify-content:space-between;align-items:center;padding:var(--tl-spacing-1) 0;font-size:14px;color:var(--tl-color-muted-foreground)}.selection-totals .total-row.total{font-size:16px;font-weight:700;color:var(--tl-color-foreground);padding-top:var(--tl-spacing-2);border-top:1px solid var(--tl-color-border);margin-top:var(--tl-spacing-2)}";export{d as tl_occurrence_selector,c as tl_ticket_selector}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r,c as t,h as e}from"./p-imfxp765.js";import{w as s,g as o}from"./p-CqhvfyKV.js";import{c as a,m as i}from"./p-BwChnHVC.js";const n=class{constructor(e){r(this,e),this.tlOrderSelect=t(this,"tlOrderSelect"),this.tlError=t(this,"tlError"),this.emptyMessage="When you buy tickets they'll show up here, ready to view and download.",this.columns=2,this.element=a(i,{client:()=>o(),clientReady:()=>s(),emit:(r,t)=>this.forward(r,t)}),this.view=this.element.view}syncProps(){this.element.setProps({emptyMessage:this.emptyMessage,columns:this.columns})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((r=>{this.view=r}))),this.view=this.element.view,this.teardown=this.element.mount()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(r,t){"tlOrderSelect"===r?this.tlOrderSelect.emit(t):"tlError"===r&&this.tlError.emit(t)}renderRow(r){return e("li",{class:{order:!0,expanded:r.expanded},key:r.id},e("button",{type:"button",class:"order-row","aria-expanded":r.expanded?"true":"false",onClick:()=>this.element.actions.toggle(r.id)},e("span",{class:"order-main"},e("span",{class:"order-number"},r.numberLabel),e("span",{class:"order-event"},r.eventName),e("span",{class:"order-meta"},r.dateLabel&&e("span",null,r.dateLabel),e("span",null,r.countLabel))),e("span",{class:"order-side"},e("span",{class:"order-total"},r.totalLabel),e("span",{class:`status status-${r.statusTone}`},r.statusLabel),e("svg",{class:"chevron",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 18l6-6-6-6"})))),r.expanded&&e("div",{class:"order-tickets"},e("tl-order-tickets",{orderId:r.id,columns:this.columns})))}render(){const{status:r,strings:t,state:s,derived:o}=this.view;return"loading"===r?e("div",{class:"orders"},[0,1,2].map((r=>e("div",{class:"skeleton",key:r})))):"signed-out"===r?e("div",{class:"orders"},e("div",{class:"signin"},e("p",{class:"signin-title"},t.signInTitle),e("p",{class:"signin-text"},t.signInText)),e("tl-login",null)):e("div",{class:"orders"},"error"===r?e("div",{class:"state error"},e("p",{class:"state-title"},t.errorTitle),e("p",{class:"state-text"},s.error)):"empty"===r?e("div",{class:"state empty"},e("svg",{class:"empty-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z"}),e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M13 5v2M13 17v2M13 11v2"})),e("p",{class:"state-title"},t.emptyTitle),e("p",{class:"state-text"},this.emptyMessage)):e("ul",{class:"order-list"},o.rows.map((r=>this.renderRow(r)))))}static get watchers(){return{emptyMessage:[{syncProps:0}],columns:[{syncProps:0}]}}};n.style=":host{display:block;font-family:var(--tl-font-family);color:var(--tl-foreground)}.orders{display:flex;flex-direction:column;gap:var(--tl-spacing-4)}.order-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--tl-spacing-3)}.order{background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius-lg);overflow:hidden;transition:border-color 0.2s ease, box-shadow 0.2s ease}.order:hover,.order.expanded{border-color:var(--tl-primary);box-shadow:0 1px 3px rgba(0, 0, 0, 0.08)}.order-row{display:flex;align-items:center;justify-content:space-between;gap:var(--tl-spacing-4);width:100%;padding:var(--tl-spacing-4);font:inherit;color:inherit;text-align:left;background:none;border:none;cursor:pointer}.order-main{display:flex;flex-direction:column;gap:var(--tl-spacing-1);min-width:0}.order-number{font-size:0.75rem;font-weight:500;text-transform:uppercase;letter-spacing:0.05em;color:var(--tl-muted-foreground)}.order-event{font-size:1rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.order-meta{display:flex;flex-wrap:wrap;gap:var(--tl-spacing-3);font-size:0.8125rem;color:var(--tl-muted-foreground)}.order-side{display:flex;align-items:center;gap:var(--tl-spacing-3);flex-shrink:0}.order-total{font-weight:600}.status{padding:0.125rem 0.5rem;font-size:0.75rem;font-weight:500;border-radius:9999px;background:var(--tl-secondary);color:var(--tl-secondary-foreground)}.status-success{background:var(--tl-success);color:var(--tl-success-foreground)}.status-info{background:var(--tl-primary);color:var(--tl-primary-foreground)}.status-warning{background:var(--tl-warning);color:var(--tl-warning-foreground)}.status-error{background:var(--tl-error);color:var(--tl-error-foreground)}.chevron{width:1.125rem;height:1.125rem;color:var(--tl-muted-foreground);transition:transform 0.2s ease}.expanded .chevron{transform:rotate(90deg)}.order-tickets{padding:0 var(--tl-spacing-4) var(--tl-spacing-4);border-top:1px solid var(--tl-border);padding-top:var(--tl-spacing-4)}@media (max-width: 480px){.order-row{flex-direction:column;align-items:stretch}.order-side{justify-content:space-between}}.signin{text-align:center}.signin-title,.state-title{margin:0;font-size:1.125rem;font-weight:600}.signin-text,.state-text{margin:var(--tl-spacing-1) 0 0;font-size:0.875rem;color:var(--tl-muted-foreground)}.state{padding:var(--tl-spacing-8) var(--tl-spacing-4);text-align:center;background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius-lg)}.state.error .state-title{color:var(--tl-error)}.empty-icon{width:3rem;height:3rem;margin:0 auto var(--tl-spacing-3);color:var(--tl-primary)}.skeleton{height:5rem;background:var(--tl-secondary);border-radius:var(--tl-radius-lg);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}";export{n as tl_my_orders}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e,c as t,h as a,H as r}from"./p-OoYV1faY.js";import{w as i,g as o}from"./p-CqhvfyKV.js";const s=class{constructor(a){e(this,a),this.tlClose=t(this,"tlClose"),this.tlCheckout=t(this,"tlCheckout"),this.tlError=t(this,"tlError"),this.step="loading",this.eventName="",this.imageUrl="",this.venueLabel="",this.dateSummary="",this.selectedOccurrenceId=null,this.occurrenceCount=0,this.occurrenceLabel="",this.error=null,this.handleOccurrenceSelect=e=>{const t=e.detail.occurrence;this.selectedOccurrenceId=t.id,this.occurrenceLabel=this.labelFor(t),this.step="tickets"},this.handleAdded=()=>{this.step="done"},this.backToDates=()=>{this.selectedOccurrenceId=null,this.step="occurrence"},this.close=()=>this.tlClose.emit(),this.goCheckout=()=>this.tlCheckout.emit()}async componentWillLoad(){if(this.eventId)try{await i();const e=await o().getEventsManager().get(this.eventId);this.eventName=e?.name??"Tickets",this.imageUrl=e?.imageUrl||e?.heroImageUrl||"",this.venueLabel=[e?.venueName,e?.venueCity].filter(Boolean).join(", ");const t=e?.occurrences??[];this.occurrenceCount=t.length,this.dateSummary=this.summariseDates(t);const a=this.occurrenceId??(1===t.length?t[0]?.id:null);a?(this.selectedOccurrenceId=a,this.occurrenceLabel=this.labelFor(t.find((e=>e.id===a))),this.step="tickets"):this.step="occurrence"}catch(e){this.fail(e instanceof Error?e.message:"Could not load this event")}else this.fail("No event specified")}fail(e){this.error=e,this.step="error",this.tlError.emit({message:e})}summariseDates(e){const t=e.map((e=>e.startsAt)).filter((e=>!!e)).sort();if(0===t.length)return"";const a=e=>new Date(e).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"});if(1===t.length)return new Date(t[0]).toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",year:"numeric"});const r=a(t[0]),i=a(t[t.length-1]);return`${r===i?r:`${r} - ${i}`} · ${t.length} dates`}labelFor(e){return e?.startsAt?new Date(e.startsAt).toLocaleString("en-GB",{weekday:"short",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"}):""}stepKicker(){switch(this.step){case"occurrence":return"Choose a date";case"tickets":return"Select tickets";case"done":return"Nice one";default:return"Tickets"}}render(){return a(r,{key:"1245e518c2b5232f4d9dba091cf808cd3867fbef"},a("div",{key:"4e770fccdd785444f1cc87df4adab5a5dc1bf58a",class:"overlay",onClick:e=>{e.target===e.currentTarget&&this.close()}},a("div",{key:"57b13dac690028aeebd6a601acfba07f00854c40",class:{panel:!0,"panel--wide":"occurrence"===this.step},role:"dialog","aria-modal":"true","aria-label":this.eventName},a("header",{key:"881e9cc70a0ca25947f272b9ebcb2e6d4b4268f2",class:"panel-header"},this.imageUrl&&a("div",{key:"753f7df1b5118dfacbbc6b89b4e5d7ba114f6cdf",class:"event-thumb",style:{backgroundImage:`url(${this.imageUrl})`}}),a("div",{key:"9aaa32d1add90fabd1b0ea0c100f198962f4e6a5",class:"titles"},a("span",{key:"538032bdf2338206ad763417386852ff97cc472f",class:"kicker"},this.stepKicker()),a("h2",{key:"71429804179e7fbbea1fa90a2937a065517092f5",class:"event-name"},this.eventName),this.venueLabel&&a("p",{key:"dd968b397deab890df3a4fbdff33226e82bd9660",class:"event-meta"},this.venueLabel),this.dateSummary&&a("p",{key:"f40e6049d09b06c9f599e7d14d6fbb43b39b22fd",class:"event-meta"},this.dateSummary)),a("button",{key:"dbe0908f8cd8544654b627921f68cc4961802b77",class:"close-btn","aria-label":"Close",onClick:this.close},a("svg",{key:"23a750830e6e16d28cbcd5025507d25848aaadf7",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},a("path",{key:"e81b8763a5c781f72c1ca8a2113482948e3ba8cc",d:"M6 6l12 12M18 6L6 18","stroke-linecap":"round"})))),a("div",{key:"da71e610f907cf53e78246d2065aaf526d5ceffd",class:"panel-body"},"loading"===this.step&&a("div",{key:"28cbb9a98c7b08fa8dcb9d8d5dfbf3bec93fe38d",class:"state-msg"},a("span",{key:"915c8de87cbdc7da1ccf0622ce6c0f02fccf2cad",class:"spinner"})," Loading…"),"error"===this.step&&a("div",{key:"5785578bfef6f1ee81d938d91ffd3ded975f8c12",class:"state-msg error"},this.error),"occurrence"===this.step&&a("tl-occurrence-selector",{key:"eeb853eab141c3c103015e82d221a140f6a3a109",eventId:this.eventId,onTlSelect:this.handleOccurrenceSelect}),"tickets"===this.step&&this.selectedOccurrenceId&&a("div",{key:"f608f592ba651eb431375433eb4ff9393863ade5",class:"tickets-step"},this.occurrenceCount>1&&a("button",{key:"84adfbdbeaceb2cf4238c6ffd09558b4499ca940",class:"back-link",onClick:this.backToDates},"← Change date"),this.occurrenceLabel&&a("p",{key:"0317e9194049608711e8c622142c3ad2c0a5dc12",class:"occ-label"},this.occurrenceLabel),a("tl-ticket-selector",{key:"27b1e05d9d92fb8d519375e2b27d4b5ea0a4890a",eventId:this.eventId,occurrenceId:this.selectedOccurrenceId,onTlAddToCart:this.handleAdded})),"done"===this.step&&a("div",{key:"0853088206988c66d489f8804df7899821d49e64",class:"done-step"},a("div",{key:"c2955b893c4dffaadcdfd27bee96ef2724a131a6",class:"done-mark"},"🎟️"),a("p",{key:"370c30dfcbc0c25b4794d984dd261a3a5779a9dc",class:"done-title"},"Added to your cart"),a("p",{key:"c462f3c9292740e2fd2c74b173484f80a5dc1a30",class:"done-sub"},"Held for you while you check out."),a("button",{key:"484991f79572e3213ad6413a1af87599880c3643",class:"primary-btn",onClick:this.goCheckout},"Go to checkout"),a("button",{key:"5b4ba5a472b794e8f5af0f131dad1c8c11b869f5",class:"ghost-btn",onClick:this.close},"Keep browsing")))),a("div",{key:"9acdd36744d363f41f0bed7938ecea33322362d1",class:"powered-by"},a("div",{key:"f45545a8fc625336618352f0c0e9e84a1babce96",class:"pb-links"},a("a",{key:"dd929b12419b8353d9a09ad242a9f351dfd699e2",href:"https://ticketlayer.com/privacy",target:"_blank",rel:"noopener noreferrer"},"Privacy Policy"),a("a",{key:"859be221bdc76602defaebdb89a997778cda6a91",href:"https://ticketlayer.com/report-abuse",target:"_blank",rel:"noopener noreferrer"},"Report Abuse")),a("a",{key:"d4e1f44b3b084160d2df8b9d15e075ddc5e05363",class:"pb-brand",href:"https://ticketlayer.com",target:"_blank",rel:"noopener noreferrer"},a("span",{key:"fe7fd86576a4e9772daa2c4c449da060f20fa143",class:"pb-pre"},"Powered by"),a("svg",{key:"19412bd9e5522f0af9f847fe8fda6aa0f0004a3a",width:"14",height:"14",viewBox:"0 0 50 50",fill:"none","aria-hidden":"true"},a("g",{key:"8e82f14ab1e8094a210db95b1310ce6c0feef446",transform:"matrix(0.0129 0 0 -0.0129 25.4752 25.4752)"},a("path",{key:"b50b04cfc07c4e55fcf5ce92967f69b99d34dd34",fill:"currentColor",transform:"translate(-1781.5, -1759.4003)",d:"M 41 2973 c 1 -285 5 -734 9 -998 c 7 -444 9 -488 30 -580 c 81 -364 235 -634 512 -900 c 135 -130 263 -220 423 -299 c 156 -77 249 -109 409 -143 c 110 -23 142 -25 354 -24 c 230 1 310 8 427 37 c 241 60 453 162 640 309 c 82 64 252 234 317 315 c 210 264 340 604 355 926 l 6 121 l -69 6 c -86 8 -706 9 -755 1 l -36 -6 l -21 -125 c -34 -191 -98 -317 -236 -462 c -111 -115 -249 -198 -396 -238 c -98 -27 -356 -24 -463 5 c -100 27 -183 69 -273 137 c -226 173 -353 409 -354 660 c 0 44 -5 120 -10 169 c -6 49 -8 91 -6 94 c 3 3 65 -22 138 -55 c 140 -64 251 -103 358 -127 c 71 -17 295 -46 347 -46 l 33 0 l 0 434 l 0 434 l -67 7 c -147 14 -269 56 -393 133 c -222 139 -378 393 -397 648 l -6 71 l -75 7 c -41 3 -239 6 -439 6 l -363 0 l 1 -517 z"}))),a("span",{key:"2623449abd22f36f5af80d5605d3b274a4c214c4",class:"pb-word"},"ticketlayer")))))}};s.style=":host{--_bg:var(--tl-background);--_fg:var(--tl-foreground);--_muted:var(--tl-muted);--_muted-fg:var(--tl-muted-foreground);--_border:var(--tl-border);--_primary:var(--tl-primary);--_primary-fg:var(--tl-primary-foreground);--_radius:var(--tl-radius-lg);--_font:var(--tl-font-family);font-family:var(--_font)}.overlay{position:fixed;inset:0;z-index:2147483646;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px;background:rgba(8, 8, 16, 0.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:tl-fade 0.18s ease-out}.panel{width:100%;max-width:460px;max-height:86vh;display:flex;flex-direction:column;overflow:hidden;background:var(--_bg);color:var(--_fg);border:1px solid var(--_border);border-radius:var(--_radius);box-shadow:0 24px 64px rgba(0, 0, 0, 0.45);animation:tl-rise 0.22s cubic-bezier(0.16, 1, 0.3, 1);transition:max-width 0.25s cubic-bezier(0.16, 1, 0.3, 1)}.panel--wide{max-width:720px}.powered-by{width:100%;max-width:460px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 4px;font-size:12px;font-weight:500;color:rgba(255, 255, 255, 0.78);animation:tl-fade 0.3s ease-out}.powered-by a{color:inherit;text-decoration:none;opacity:0.85;transition:opacity 0.15s ease}.powered-by a:hover{opacity:1}.powered-by .pb-links{display:flex;gap:16px;align-items:center}.powered-by .pb-brand{display:inline-flex;align-items:center;gap:6px;opacity:0.92}.powered-by .pb-brand svg{display:block}.powered-by .pb-pre{opacity:0.7}.powered-by .pb-word{font-weight:700;letter-spacing:0.01em}.panel-header{display:flex;align-items:center;gap:14px;padding:16px 18px;border-bottom:1px solid var(--_border)}.event-thumb{flex:none;width:56px;height:56px;border-radius:12px;background-size:cover;background-position:center;background-color:var(--_muted);border:1px solid var(--_border)}.titles{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.event-meta{margin:0;font-size:0.8rem;color:var(--_muted-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kicker{font-size:0.72rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--_primary)}.event-name{margin:0;font-size:1.18rem;font-weight:700;line-height:1.25;color:var(--_fg);overflow:hidden;text-overflow:ellipsis}.close-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:999px;background:var(--_muted);color:var(--_muted-fg);cursor:pointer;transition:color 0.15s, background 0.15s}.close-btn:hover{color:var(--_fg)}.close-btn svg{width:16px;height:16px}.panel-body{padding:18px 22px 22px;overflow-y:auto}.state-msg{display:flex;align-items:center;justify-content:center;gap:10px;padding:40px 0;color:var(--_muted-fg)}.state-msg.error{color:#b91c1c}.spinner{width:16px;height:16px;border:2px solid var(--_border);border-top-color:var(--_primary);border-radius:999px;animation:tl-spin 0.7s linear infinite}.tickets-step{display:flex;flex-direction:column;gap:6px}.back-link{align-self:flex-start;padding:0;border:0;background:none;color:var(--_primary);font-size:0.85rem;font-weight:500;cursor:pointer}.back-link:hover{text-decoration:underline}.occ-label{margin:2px 0 8px;font-size:0.9rem;font-weight:600;color:var(--_fg)}.done-step{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:16px 0 4px}.done-mark{font-size:2.4rem;line-height:1;margin-bottom:6px}.done-title{margin:0;font-size:1.1rem;font-weight:700;color:var(--_fg)}.done-sub{margin:0 0 14px;font-size:0.9rem;color:var(--_muted-fg)}.primary-btn{width:100%;padding:13px;border:0;border-radius:var(--tl-radius-md);background:var(--_primary);color:var(--_primary-fg);font-size:0.98rem;font-weight:600;cursor:pointer;transition:opacity 0.15s}.primary-btn:hover{opacity:0.9}.ghost-btn{width:100%;margin-top:8px;padding:12px;border:1px solid var(--_border);border-radius:var(--tl-radius-md);background:transparent;color:var(--_fg);font-size:0.95rem;font-weight:500;cursor:pointer;transition:background 0.15s}.ghost-btn:hover{background:var(--_muted)}@keyframes tl-fade{from{opacity:0}}@keyframes tl-rise{from{opacity:0;transform:translateY(12px) scale(0.98)}}@keyframes tl-spin{to{transform:rotate(360deg)}}";export{s as tl_buy_modal}
|
|
1
|
+
import{r as e,c as t,h as r,H as a}from"./p-imfxp765.js";import{w as i,g as o}from"./p-CqhvfyKV.js";const s=class{constructor(r){e(this,r),this.tlClose=t(this,"tlClose"),this.tlCheckout=t(this,"tlCheckout"),this.tlError=t(this,"tlError"),this.step="loading",this.eventName="",this.imageUrl="",this.venueLabel="",this.dateSummary="",this.selectedOccurrenceId=null,this.occurrenceCount=0,this.occurrenceLabel="",this.error=null,this.handleOccurrenceSelect=e=>{const t=e.detail.occurrence;this.selectedOccurrenceId=t.id,this.occurrenceLabel=this.labelFor(t),this.step="tickets"},this.handleAdded=()=>{this.step="done"},this.backToDates=()=>{this.selectedOccurrenceId=null,this.step="occurrence"},this.close=()=>this.tlClose.emit(),this.goCheckout=()=>this.tlCheckout.emit()}async componentWillLoad(){if(this.eventId)try{await i();const e=await o().getEventsManager().get(this.eventId);this.eventName=e?.name??"Tickets",this.imageUrl=e?.imageUrl||e?.heroImageUrl||"",this.venueLabel=[e?.venueName,e?.venueCity].filter(Boolean).join(", ");const t=e?.occurrences??[];this.occurrenceCount=t.length,this.dateSummary=this.summariseDates(t);const r=this.occurrenceId??(1===t.length?t[0]?.id:null);r?(this.selectedOccurrenceId=r,this.occurrenceLabel=this.labelFor(t.find((e=>e.id===r))),this.step="tickets"):this.step="occurrence"}catch(e){this.fail(e instanceof Error?e.message:"Could not load this event")}else this.fail("No event specified")}fail(e){this.error=e,this.step="error",this.tlError.emit({message:e})}summariseDates(e){const t=e.map((e=>e.startsAt)).filter((e=>!!e)).sort();if(0===t.length)return"";const r=e=>new Date(e).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"});if(1===t.length)return new Date(t[0]).toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",year:"numeric"});const a=r(t[0]),i=r(t[t.length-1]);return`${a===i?a:`${a} - ${i}`} · ${t.length} dates`}labelFor(e){return e?.startsAt?new Date(e.startsAt).toLocaleString("en-GB",{weekday:"short",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"}):""}stepKicker(){switch(this.step){case"occurrence":return"Choose a date";case"tickets":return"Select tickets";case"done":return"Nice one";default:return"Tickets"}}render(){return r(a,{key:"f28be761216b4a84904c1e325dc34d848625db14"},r("div",{key:"0f36708a6b52d19ee987b211588e759aaf82ac03",class:"overlay",onClick:e=>{e.target===e.currentTarget&&this.close()}},r("div",{key:"0b2bc062c89e8b821763e163bdedc44047571390",class:{panel:!0,"panel--wide":"occurrence"===this.step},role:"dialog","aria-modal":"true","aria-label":this.eventName},r("header",{key:"c9e3cc54615dace1842ceed226acff23ed0dc0d3",class:"panel-header"},this.imageUrl&&r("div",{key:"18ffd6168344f65231fa40252361b03ac65ae91a",class:"event-thumb",style:{backgroundImage:`url(${this.imageUrl})`}}),r("div",{key:"4ccbf9a0477948bcb4202310f80cceb1d6e5ad0f",class:"titles"},r("span",{key:"1a72eb71baaf9eff16aabc5d20c22b02e9b5cc99",class:"kicker"},this.stepKicker()),r("h2",{key:"f7dbc184bb016652c1ffe2fe24a551207f226942",class:"event-name"},this.eventName),this.venueLabel&&r("p",{key:"db7ebd34f688b36b5610aa6adf0d8ab766f00ac2",class:"event-meta"},this.venueLabel),this.dateSummary&&r("p",{key:"00812c8b7b9abf85343f3d6bda433251468da1d9",class:"event-meta"},this.dateSummary)),r("button",{key:"e3f7252979794959d6e5070d549010567c0aa349",class:"close-btn","aria-label":"Close",onClick:this.close},r("svg",{key:"d692c47bb8c614b41e19866c5fe4a65b0e083686",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},r("path",{key:"cbb9a7bd3ce4ed2685a781729110bccd36b425a9",d:"M6 6l12 12M18 6L6 18","stroke-linecap":"round"})))),r("div",{key:"c14af096c9e1cfd9bcead143c1b8a106a4b28018",class:"panel-body"},"loading"===this.step&&r("div",{key:"108d1073d572f841f1945147a787b8bdea66cfba",class:"state-msg"},r("span",{key:"27c2b7473c6edb14ade3b7104f728136c0a2b052",class:"spinner"})," Loading…"),"error"===this.step&&r("div",{key:"0e3f927f626d51dffc30bb7da7093b6a7cd90a2a",class:"state-msg error"},this.error),"occurrence"===this.step&&r("tl-occurrence-selector",{key:"bfab02d294de3eb1bce39d3e39c21f450b474c99",eventId:this.eventId,onTlSelect:this.handleOccurrenceSelect}),"tickets"===this.step&&this.selectedOccurrenceId&&r("div",{key:"109be73c93b0b604b435cbbd540d5dd5c48eacfe",class:"tickets-step"},this.occurrenceCount>1&&r("button",{key:"2769d896476487e1412ac37309cd2e162b4bd275",class:"back-link",onClick:this.backToDates},"← Change date"),this.occurrenceLabel&&r("p",{key:"0c709ed8ba75b9e13a141ae755353fc694532935",class:"occ-label"},this.occurrenceLabel),r("tl-ticket-selector",{key:"cdf66533a591e89dc265532a2578c30327fd06c8",eventId:this.eventId,occurrenceId:this.selectedOccurrenceId,onTlAddToCart:this.handleAdded})),"done"===this.step&&r("div",{key:"6c4b294a4b9412e643a230f4064d15a587f79383",class:"done-step"},r("div",{key:"ba0e663e731402192675db509c886c2ce6a2418b",class:"done-mark"},"🎟️"),r("p",{key:"8d0f07758d3978080177a99e580f59fbcfefb611",class:"done-title"},"Added to your cart"),r("p",{key:"bbf4bd073f021a2f516f91528311d494c40faa85",class:"done-sub"},"Held for you while you check out."),r("button",{key:"71c90ad945ced314321d964795beed8301c989ac",class:"primary-btn",onClick:this.goCheckout},"Go to checkout"),r("button",{key:"b37ad6f8adeb1edb7c786b33974b845c31b963f2",class:"ghost-btn",onClick:this.close},"Keep browsing")))),r("div",{key:"5a175094620f6837ae91a5a394f16c79df94c859",class:"powered-by"},r("div",{key:"63c095dc7e954042c5fb36ccd8ca92a33d7b6632",class:"pb-links"},r("a",{key:"875fa14d6218853b96d4d817a243701b228b20f0",href:"https://ticketlayer.com/privacy",target:"_blank",rel:"noopener noreferrer"},"Privacy Policy"),r("a",{key:"7de77189ecd8277acade45437819b4fa9ef2002b",href:"https://ticketlayer.com/report-abuse",target:"_blank",rel:"noopener noreferrer"},"Report Abuse")),r("a",{key:"5f62bbe303398e9ad09703fbd706953502f441a1",class:"pb-brand",href:"https://ticketlayer.com",target:"_blank",rel:"noopener noreferrer"},r("span",{key:"0101948057126320d180a452870eade9f540b119",class:"pb-pre"},"Powered by"),r("svg",{key:"c93e4184b3bd8bbb89b5909ec886b22d22322bb1",width:"14",height:"14",viewBox:"0 0 50 50",fill:"none","aria-hidden":"true"},r("g",{key:"5461e514631e1cb670e974b47ecc144e1a62e7a3",transform:"matrix(0.0129 0 0 -0.0129 25.4752 25.4752)"},r("path",{key:"af6f137d33f09ef4befb9a4b31834d6d2f04ab3d",fill:"currentColor",transform:"translate(-1781.5, -1759.4003)",d:"M 41 2973 c 1 -285 5 -734 9 -998 c 7 -444 9 -488 30 -580 c 81 -364 235 -634 512 -900 c 135 -130 263 -220 423 -299 c 156 -77 249 -109 409 -143 c 110 -23 142 -25 354 -24 c 230 1 310 8 427 37 c 241 60 453 162 640 309 c 82 64 252 234 317 315 c 210 264 340 604 355 926 l 6 121 l -69 6 c -86 8 -706 9 -755 1 l -36 -6 l -21 -125 c -34 -191 -98 -317 -236 -462 c -111 -115 -249 -198 -396 -238 c -98 -27 -356 -24 -463 5 c -100 27 -183 69 -273 137 c -226 173 -353 409 -354 660 c 0 44 -5 120 -10 169 c -6 49 -8 91 -6 94 c 3 3 65 -22 138 -55 c 140 -64 251 -103 358 -127 c 71 -17 295 -46 347 -46 l 33 0 l 0 434 l 0 434 l -67 7 c -147 14 -269 56 -393 133 c -222 139 -378 393 -397 648 l -6 71 l -75 7 c -41 3 -239 6 -439 6 l -363 0 l 1 -517 z"}))),r("span",{key:"d4f15a3fb911e2f78eb203fdd5079d3119ee9803",class:"pb-word"},"ticketlayer")))))}};s.style=":host{--_bg:var(--tl-background);--_fg:var(--tl-foreground);--_muted:var(--tl-muted);--_muted-fg:var(--tl-muted-foreground);--_border:var(--tl-border);--_primary:var(--tl-primary);--_primary-fg:var(--tl-primary-foreground);--_radius:var(--tl-radius-lg);--_font:var(--tl-font-family);font-family:var(--_font)}.overlay{position:fixed;inset:0;z-index:2147483646;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px;background:rgba(8, 8, 16, 0.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:tl-fade 0.18s ease-out}.panel{width:100%;max-width:460px;max-height:86vh;display:flex;flex-direction:column;overflow:hidden;background:var(--_bg);color:var(--_fg);border:1px solid var(--_border);border-radius:var(--_radius);box-shadow:0 24px 64px rgba(0, 0, 0, 0.45);animation:tl-rise 0.22s cubic-bezier(0.16, 1, 0.3, 1);transition:max-width 0.25s cubic-bezier(0.16, 1, 0.3, 1)}.panel--wide{max-width:720px}.powered-by{width:100%;max-width:460px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 4px;font-size:12px;font-weight:500;color:rgba(255, 255, 255, 0.78);animation:tl-fade 0.3s ease-out}.powered-by a{color:inherit;text-decoration:none;opacity:0.85;transition:opacity 0.15s ease}.powered-by a:hover{opacity:1}.powered-by .pb-links{display:flex;gap:16px;align-items:center}.powered-by .pb-brand{display:inline-flex;align-items:center;gap:6px;opacity:0.92}.powered-by .pb-brand svg{display:block}.powered-by .pb-pre{opacity:0.7}.powered-by .pb-word{font-weight:700;letter-spacing:0.01em}.panel-header{display:flex;align-items:center;gap:14px;padding:16px 18px;border-bottom:1px solid var(--_border)}.event-thumb{flex:none;width:56px;height:56px;border-radius:12px;background-size:cover;background-position:center;background-color:var(--_muted);border:1px solid var(--_border)}.titles{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.event-meta{margin:0;font-size:0.8rem;color:var(--_muted-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kicker{font-size:0.72rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--_primary)}.event-name{margin:0;font-size:1.18rem;font-weight:700;line-height:1.25;color:var(--_fg);overflow:hidden;text-overflow:ellipsis}.close-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:999px;background:var(--_muted);color:var(--_muted-fg);cursor:pointer;transition:color 0.15s, background 0.15s}.close-btn:hover{color:var(--_fg)}.close-btn svg{width:16px;height:16px}.panel-body{padding:18px 22px 22px;overflow-y:auto}.state-msg{display:flex;align-items:center;justify-content:center;gap:10px;padding:40px 0;color:var(--_muted-fg)}.state-msg.error{color:#b91c1c}.spinner{width:16px;height:16px;border:2px solid var(--_border);border-top-color:var(--_primary);border-radius:999px;animation:tl-spin 0.7s linear infinite}.tickets-step{display:flex;flex-direction:column;gap:6px}.back-link{align-self:flex-start;padding:0;border:0;background:none;color:var(--_primary);font-size:0.85rem;font-weight:500;cursor:pointer}.back-link:hover{text-decoration:underline}.occ-label{margin:2px 0 8px;font-size:0.9rem;font-weight:600;color:var(--_fg)}.done-step{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:16px 0 4px}.done-mark{font-size:2.4rem;line-height:1;margin-bottom:6px}.done-title{margin:0;font-size:1.1rem;font-weight:700;color:var(--_fg)}.done-sub{margin:0 0 14px;font-size:0.9rem;color:var(--_muted-fg)}.primary-btn{width:100%;padding:13px;border:0;border-radius:var(--tl-radius-md);background:var(--_primary);color:var(--_primary-fg);font-size:0.98rem;font-weight:600;cursor:pointer;transition:opacity 0.15s}.primary-btn:hover{opacity:0.9}.ghost-btn{width:100%;margin-top:8px;padding:12px;border:1px solid var(--_border);border-radius:var(--tl-radius-md);background:transparent;color:var(--_fg);font-size:0.95rem;font-weight:500;cursor:pointer;transition:background 0.15s}.ghost-btn:hover{background:var(--_muted)}@keyframes tl-fade{from{opacity:0}}@keyframes tl-rise{from{opacity:0;transform:translateY(12px) scale(0.98)}}@keyframes tl-spin{to{transform:rotate(360deg)}}";export{s as tl_buy_modal}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,c as s,h as i,H as e}from"./p-imfxp765.js";import{w as r,g as c}from"./p-CqhvfyKV.js";import{c as l,j as a}from"./p-BwChnHVC.js";const o=class{constructor(i){t(this,i),this.tlComplete=s(this,"tlComplete"),this.tlError=s(this,"tlError"),this.tlClose=s(this,"tlClose"),this.disabled=!1,this.element=l(a,{client:()=>c(),clientReady:()=>r(),emit:(t,s)=>this.forward(t,s)}),this.view=this.element.view,this.handleClick=()=>{this.element.actions.activate()},this.handleKeyDown=t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.element.actions.activate())}}syncProps(){this.element.setProps({eventId:this.eventId,occurrenceId:this.occurrenceId,disabled:this.disabled})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((t=>{this.view=t}))),this.view=this.element.view,this.teardown=this.element.mount()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(t,s){"tlComplete"===t?this.tlComplete.emit(s):"tlError"===t?this.tlError.emit(s):"tlClose"===t&&this.tlClose.emit()}render(){const{interactive:t}=this.view.derived;return i(e,{key:"14e91259c1401322f969d43bb16b6d3f20327c65",class:{"tl-buy-tickets-wrapper":!0,"tl-buy-tickets-wrapper--disabled":!t},onClick:this.handleClick,onKeyDown:this.handleKeyDown,role:"button",tabindex:t?0:-1,"aria-disabled":t?null:"true"},i("slot",{key:"3fb33786e09f5ecdf20ff0ea8e7336ccfc43b216"}))}static get watchers(){return{eventId:[{syncProps:0}],occurrenceId:[{syncProps:0}],disabled:[{syncProps:0}]}}};o.style="tl-buy-tickets-wrapper,.tl-buy-tickets-wrapper{display:inline-block;cursor:pointer}tl-buy-tickets-wrapper:focus,.tl-buy-tickets-wrapper:focus{outline:2px solid var(--tl-ring);outline-offset:2px;border-radius:var(--tl-radius-sm)}tl-buy-tickets-wrapper[disabled],tl-buy-tickets-wrapper.tl-buy-tickets-wrapper--disabled,.tl-buy-tickets-wrapper--disabled{cursor:not-allowed;opacity:0.5}";export{o as tl_buy_tickets_wrapper}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,c as t,h as r}from"./p-imfxp765.js";import{w as i,g as s}from"./p-CqhvfyKV.js";import{c as o,f as a}from"./p-BwChnHVC.js";const n=class{constructor(r){e(this,r),this.tlClick=t(this,"tlClick"),this.tlError=t(this,"tlError"),this.element=o(a,{client:()=>s(),clientReady:()=>i(),emit:(e,t)=>this.forward(e,t)}),this.view=this.element.view,this.handleClick=()=>{this.element.actions.click()}}syncProps(){this.element.setProps({event:this.event,eventId:this.eventId})}watchEventId(){this.syncProps(),this.teardown?.(),this.teardown=this.element.mount()}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((e=>{this.view=e}))),this.view=this.element.view,this.teardown=this.element.mount()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(e,t){"tlClick"===e?this.tlClick.emit(t):"tlError"===e&&this.tlError.emit(t)}render(){const{status:e,state:t,derived:i}=this.view;if("loading"===e)return r("div",{class:"event-card card-skeleton","aria-busy":"true"},r("div",{class:"image-container"}),r("div",{class:"content"},r("div",{class:"skeleton-line short"}),r("div",{class:"skeleton-line long"})));if("error"===e)return r("div",{class:"event-card card-error"},t.error);const s=i.event;return s?r("div",{class:"event-card",onClick:this.handleClick},r("div",{class:"image-container"},i.image?r("img",{src:i.image,alt:s.name,class:"event-image"}):r("div",{class:"image-placeholder"},r("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"}))),r("div",{class:"status-container"},r("span",{class:i.statusBadgeClass},i.statusLabel))),r("div",{class:"content"},s.category&&r("span",{class:"category"},s.category),r("h3",{class:"title"},s.name),i.dateLabel&&r("p",{class:"meta"},r("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})),i.dateLabel),i.venueLabel&&r("p",{class:"meta"},r("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"})),i.venueLabel),s.shortDescription&&r("p",{class:"description"},s.shortDescription))):null}static get watchers(){return{event:[{syncProps:0}],eventId:[{watchEventId:0}]}}};n.style=":host{display:block;font-family:var(--tl-font-family)}.event-card{background:var(--tl-secondary);border-radius:var(--tl-radius-lg);overflow:hidden;box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);cursor:pointer;transition:box-shadow 0.2s ease, transform 0.2s ease}.event-card:hover{box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);transform:translateY(-2px)}.image-container{position:relative;aspect-ratio:16 / 9;overflow:hidden;background:var(--tl-muted)}.event-image{width:100%;height:100%;object-fit:cover;transition:transform 0.3s ease}.event-card:hover .event-image{transform:scale(1.05)}.image-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--tl-muted-foreground)}.status-container{position:absolute;top:0.5rem;right:0.5rem}.status-badge{display:inline-block;padding:0.25rem 0.5rem;font-size:0.75rem;font-weight:500;border-radius:var(--tl-radius-sm)}.status-available{background:var(--tl-success);color:var(--tl-success-foreground)}.status-limited{background:var(--tl-warning);color:var(--tl-warning-foreground)}.status-sold-out{background:var(--tl-error);color:var(--tl-error-foreground)}.content{padding:var(--tl-spacing-4)}.category{display:inline-block;font-size:0.75rem;font-weight:500;text-transform:uppercase;letter-spacing:0.05em;color:var(--tl-primary)}.title{margin:0.25rem 0 0;font-size:1.125rem;font-weight:600;color:var(--tl-foreground);line-height:1.3}.event-card:hover .title{color:var(--tl-primary)}.meta{display:flex;align-items:center;gap:0.5rem;margin:0.5rem 0 0;font-size:0.875rem;color:var(--tl-muted-foreground)}.meta:first-of-type{margin-top:0.75rem}.icon{width:1rem;height:1rem;flex-shrink:0}.description{margin:0.75rem 0 0;font-size:0.875rem;color:var(--tl-muted-foreground);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-skeleton{cursor:default;pointer-events:none}.card-skeleton .image-container{animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.skeleton-line{height:0.875rem;margin-top:0.5rem;background:var(--tl-muted);border-radius:var(--tl-radius-sm);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.skeleton-line.short{width:40%}.skeleton-line.long{width:80%}.card-error{padding:var(--tl-spacing-4);font-size:0.875rem;color:var(--tl-error);cursor:default}.card-error:hover{transform:none}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}";export{n as tl_event_card}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,c as s,h as r}from"./p-imfxp765.js";import{w as i,g as e}from"./p-CqhvfyKV.js";import{w as a}from"./p-Bdbb2lk5.js";import{c as l,o}from"./p-BwChnHVC.js";const n=class{constructor(r){t(this,r),this.tlOrderLoaded=s(this,"tlOrderLoaded"),this.tlError=s(this,"tlError"),this.showTickets=!0,this.columns=2,this.element=l(o,{client:()=>e(),clientReady:()=>i(),query:a,emit:(t,s)=>this.forward(t,s)}),this.view=this.element.view}watchOrderId(){this.syncProps(),this.element.actions.orderIdChanged()}syncProps(){this.element.setProps({orderId:this.orderId,customerEmail:this.customerEmail,showTickets:this.showTickets,columns:this.columns})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((t=>{this.view=t}))),this.view=this.element.view,this.teardown=this.element.mount()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(t,s){"tlOrderLoaded"===t?this.tlOrderLoaded.emit(s):"tlError"===t&&this.tlError.emit(s)}renderRows(){return r("dl",{class:"rows"},this.view.derived.rows.map((t=>r("div",{class:"row",key:t.label},r("dt",null,t.label),r("dd",{class:t.reference?"reference":void 0},t.value)))))}renderTotals(){const{strings:t,derived:s}=this.view;return r("div",{class:"totals"},r("div",{class:"total-row"},r("span",null,t.subtotalRow),r("span",null,s.subtotalLabel)),s.totals.showFee&&r("div",{class:"total-row fee"},r("span",null,s.totals.feeLabel),r("span",null,s.feeAmountLabel)),s.showTaxRow&&r("div",{class:"total-row"},r("span",null,t.taxRow),r("span",null,s.taxLabel)),s.showDiscountRow&&r("div",{class:"total-row discount"},r("span",null,t.discountRow),r("span",null,"-",s.discountLabel)),r("div",{class:"total-row total"},r("span",null,t.totalRow),r("span",null,s.totalLabel)))}render(){const{status:t,state:s,strings:i,derived:e}=this.view;return"payment-failed"===t?r("div",{class:"confirmation"},r("h1",{class:"title"},i.paymentFailedTitle),r("p",{class:"lead"},i.paymentFailedLead)):"idle"===t?null:"loading"===t?r("div",{class:"confirmation"},r("div",{class:"skeleton-line short"}),r("div",{class:"skeleton-line long"}),r("div",{class:"skeleton-block"})):r("div",{class:"confirmation"},r("div",{class:"check","aria-hidden":"true"},r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"}))),r("h1",{class:"title"},i.title),r("p",{class:"lead"},e.leadText),e.showError&&r("p",{class:"error"},i.errorPrefix,s.error),e.showSummary&&r("div",{class:"summary"},this.renderRows(),r("ul",{class:"lines"},e.lines.map(((t,s)=>r("li",{class:"line",key:s},r("span",{class:"line-name"},t.label),r("span",{class:"line-price"},t.priceLabel))))),this.renderTotals()),e.showTickets&&r("div",{class:"tickets"},r("h2",{class:"subtitle"},i.ticketsTitle),r("tl-order-tickets",{orderId:e.ticketsOrderId,columns:this.columns}),r("p",{class:"hint"},i.ticketsHint)))}static get watchers(){return{orderId:[{watchOrderId:0}],customerEmail:[{syncProps:0}],showTickets:[{syncProps:0}],columns:[{syncProps:0}]}}};n.style=":host{display:block;font-family:var(--tl-font-family);color:var(--tl-foreground)}.confirmation{text-align:center}.check{width:4rem;height:4rem;margin:0 auto var(--tl-spacing-4);display:flex;align-items:center;justify-content:center;border-radius:9999px;background:var(--tl-success);color:var(--tl-success-foreground)}.check svg{width:2rem;height:2rem}.title{margin:0 0 var(--tl-spacing-2);font-size:1.875rem;font-weight:700;line-height:1.2}.lead{margin:0 0 var(--tl-spacing-6);color:var(--tl-muted-foreground)}.error{margin:0 0 var(--tl-spacing-6);font-size:0.875rem;color:var(--tl-error)}.summary{text-align:left;padding:var(--tl-spacing-6);margin-bottom:var(--tl-spacing-6);background:var(--tl-muted);border:1px solid var(--tl-border);border-radius:var(--tl-radius-lg)}.rows{display:grid;gap:var(--tl-spacing-2);margin:0 0 var(--tl-spacing-4);padding:0 0 var(--tl-spacing-4);border-bottom:1px solid var(--tl-border)}.row{display:flex;justify-content:space-between;gap:var(--tl-spacing-4);font-size:0.875rem}.row dt{color:var(--tl-muted-foreground)}.row dd{margin:0;text-align:right;overflow-wrap:anywhere}.reference{font-family:var(--tl-font-family-mono);font-weight:600}.lines{list-style:none;margin:0;padding:0;display:grid;gap:var(--tl-spacing-2)}.line{display:flex;justify-content:space-between;gap:var(--tl-spacing-4);font-size:0.875rem}.totals{margin-top:var(--tl-spacing-3);padding-top:var(--tl-spacing-3);border-top:1px solid var(--tl-border);display:grid;gap:var(--tl-spacing-1);font-size:0.875rem}.total-row{display:flex;justify-content:space-between;color:var(--tl-muted-foreground)}.total-row.discount{color:var(--tl-success)}.total-row.total{margin-top:var(--tl-spacing-1);font-size:1rem;font-weight:600;color:var(--tl-foreground)}.tickets{text-align:left}.subtitle{margin:0 0 var(--tl-spacing-4);font-size:1.125rem;font-weight:600}.hint{margin:var(--tl-spacing-3) 0 0;font-size:0.75rem;color:var(--tl-muted-foreground)}.skeleton-line,.skeleton-block{background:var(--tl-secondary);border-radius:var(--tl-radius-md);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;margin:0 auto var(--tl-spacing-3)}.skeleton-line{height:1rem}.skeleton-line.short{width:40%;height:1.75rem}.skeleton-line.long{width:70%}.skeleton-block{height:8rem}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}";export{n as tl_order_confirmation}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,h as n}from"./p-imfxp765.js";import{w as r,g as e}from"./p-CqhvfyKV.js";import{c as o,i}from"./p-BwChnHVC.js";const s=class{constructor(n){t(this,n),this.columns=2,this.element=o(i,{client:()=>e(),clientReady:()=>r(),emit:(t,n)=>this.forward(t,n)}),this.view=this.element.view}watchOrder(){this.syncProps(),this.element.actions.orderIdChanged()}syncProps(){this.element.setProps({orderId:this.orderId,columns:this.columns})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((t=>{this.view=t}))),this.view=this.element.view,this.teardown=this.element.mount()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(t,n){}render(){const{status:t,state:r,strings:e,derived:o}=this.view;return"loading"===t?n("div",{class:"state"},e.loading):"error"===t?n("div",{class:"state error"},r.error):"issuing"===t?n("div",{class:"state issuing",role:"status","aria-live":"polite"},n("span",{class:"spinner","aria-hidden":"true"}),e.preparing):"delayed"===t?n("div",{class:"state",role:"status"},e.delayed):n("div",{class:`grid cols-${o.columns}`},o.tickets.map((t=>n("tl-ticket",{key:t.id,ticket:t,orderId:o.orderId}))))}static get watchers(){return{orderId:[{watchOrder:0}],columns:[{syncProps:0}]}}};function u(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}s.style=":host{display:block;font-family:var(--tl-font-family)}.grid{display:grid;gap:var(--tl-spacing-4);grid-template-columns:1fr}@media (min-width: 480px){.grid.cols-2{grid-template-columns:repeat(2, 1fr)}.grid.cols-3{grid-template-columns:repeat(3, 1fr)}}.state{padding:var(--tl-spacing-6);text-align:center;color:var(--tl-muted-foreground);font-size:0.875rem}.state.error{color:var(--tl-error)}.state.issuing{display:flex;align-items:center;justify-content:center;gap:var(--tl-spacing-2)}.spinner{width:0.875rem;height:0.875rem;border:2px solid var(--tl-border);border-top-color:var(--tl-primary);border-radius:50%;animation:tl-spin 0.7s linear infinite;flex:none}@keyframes tl-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation:none;border-top-color:var(--tl-border)}}";var c,a,f={};function l(){return a?c:(a=1,c=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then})}var h,d={},w={};function p(){if(h)return w;let t;h=1;const n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return w.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return 4*t+17},w.getSymbolTotalCodewords=function(t){return n[t]},w.getBCHDigit=function(t){let n=0;for(;0!==t;)n++,t>>>=1;return n},w.setToSJISFunction=function(n){if("function"!=typeof n)throw new Error('"toSJISFunc" is not a valid function.');t=n},w.isKanjiModeEnabled=function(){return void 0!==t},w.toSJIS=function(n){return t(n)},w}var m,g,v,y,b,E={};function k(){return m||(m=1,(t=E).L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2},t.isValid=function(t){return t&&void 0!==t.bit&&t.bit>=0&&t.bit<4},t.from=function(n,r){if(t.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+n)}}(n)}catch(t){return r}}),E;var t}var x,A,M,R,T={},P={},I={},U={};function C(){if(R)return U;R=1;const t=k(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return U.getBlocksCount=function(r,e){switch(e){case t.L:return n[4*(r-1)+0];case t.M:return n[4*(r-1)+1];case t.Q:return n[4*(r-1)+2];case t.H:return n[4*(r-1)+3];default:return}},U.getTotalCodewordsCount=function(n,e){switch(e){case t.L:return r[4*(n-1)+0];case t.M:return r[4*(n-1)+1];case t.Q:return r[4*(n-1)+2];case t.H:return r[4*(n-1)+3];default:return}},U}var F,N,B,_,q={},$={};var L,j={},z={},Q={};function S(){return L||(L=1,Q.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}),Q}var O,D,Z,H={};function V(){if(O)return H;O=1;const t="[0-9]+";let n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";n=n.replace(/u/g,"\\u");const r="(?:(?![A-Z0-9 $%*+\\-./:]|"+n+")(?:.|[\r\n]))+";H.KANJI=new RegExp(n,"g"),H.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),H.BYTE=new RegExp(r,"g"),H.NUMERIC=new RegExp(t,"g"),H.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");const e=new RegExp("^"+n+"$"),o=new RegExp("^"+t+"$"),i=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return H.testKanji=function(t){return e.test(t)},H.testNumeric=function(t){return o.test(t)},H.testAlphanumeric=function(t){return i.test(t)},H}function J(){return D||(D=1,function(t){const n=S(),r=V();t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(t,r){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!n.isValid(r))throw new Error("Invalid version: "+r);return r>=1&&r<10?t.ccBits[0]:r<27?t.ccBits[1]:t.ccBits[2]},t.getBestModeForData=function(n){return r.testNumeric(n)?t.NUMERIC:r.testAlphanumeric(n)?t.ALPHANUMERIC:r.testKanji(n)?t.KANJI:t.BYTE},t.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},t.isValid=function(t){return t&&t.bit&&t.ccBits},t.from=function(n,r){if(t.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw new Error("Unknown mode: "+n)}}(n)}catch(t){return r}}}(z)),z}var K,W,Y,G,X,tt,nt,rt,et,ot,it,st,ut={},ct={},at={exports:{}};function ft(){return ot||(ot=1,function(t){var n={single_source_shortest_paths:function(t,r,e){var o={},i={};i[r]=0;var s,u,c,a,f,l,h=n.PriorityQueue.make();for(h.push(r,0);!h.empty();)for(c in a=(s=h.pop()).cost,f=t[u=s.value]||{})f.hasOwnProperty(c)&&(l=a+f[c],(void 0===i[c]||i[c]>l)&&(i[c]=l,h.push(c,l),o[c]=u));if(void 0!==e&&void 0===i[e]){var d=["Could not find a path from ",r," to ",e,"."].join("");throw new Error(d)}return o},extract_shortest_path_from_predecessor_list:function(t,n){for(var r=[],e=n;e;)r.push(e),e=t[e];return r.reverse(),r},find_path:function(t,r,e){var o=n.single_source_shortest_paths(t,r,e);return n.extract_shortest_path_from_predecessor_list(o,e)},PriorityQueue:{make:function(t){var r,e=n.PriorityQueue,o={};for(r in t=t||{},e)e.hasOwnProperty(r)&&(o[r]=e[r]);return o.queue=[],o.sorter=t.sorter||e.default_sorter,o},default_sorter:function(t,n){return t.cost-n.cost},push:function(t,n){this.queue.push({value:t,cost:n}),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};t.exports=n}(at)),at.exports}function lt(){if(st)return d;st=1;const t=p(),n=k(),r=function(){if(v)return g;function t(){this.buffer=[],this.length=0}return v=1,t.prototype={get:function(t){const n=Math.floor(t/8);return 1==(this.buffer[n]>>>7-t%8&1)},put:function(t,n){for(let r=0;r<n;r++)this.putBit(1==(t>>>n-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),t&&(this.buffer[n]|=128>>>this.length%8),this.length++}},g=t}(),e=function(){if(b)return y;function t(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}return b=1,t.prototype.set=function(t,n,r,e){const o=t*this.size+n;this.data[o]=r,e&&(this.reservedBit[o]=!0)},t.prototype.get=function(t,n){return this.data[t*this.size+n]},t.prototype.xor=function(t,n,r){this.data[t*this.size+n]^=r},t.prototype.isReserved=function(t,n){return this.reservedBit[t*this.size+n]},y=t}(),o=(x||(x=1,function(t){const n=p().getSymbolSize;t.getRowColCoords=function(t){if(1===t)return[];const r=Math.floor(t/7)+2,e=n(t),o=145===e?26:2*Math.ceil((e-13)/(2*r-2)),i=[e-7];for(let t=1;t<r-1;t++)i[t]=i[t-1]-o;return i.push(6),i.reverse()},t.getPositions=function(n){const r=[],e=t.getRowColCoords(n),o=e.length;for(let t=0;t<o;t++)for(let n=0;n<o;n++)0===t&&0===n||0===t&&n===o-1||t===o-1&&0===n||r.push([e[t],e[n]]);return r}}(T)),T),i=function(){if(A)return P;A=1;const t=p().getSymbolSize;return P.getPositions=function(n){const r=t(n);return[[0,0],[r-7,0],[0,r-7]]},P}(),s=(M||(M=1,function(t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};function n(n,r,e){switch(n){case t.Patterns.PATTERN000:return(r+e)%2==0;case t.Patterns.PATTERN001:return r%2==0;case t.Patterns.PATTERN010:return e%3==0;case t.Patterns.PATTERN011:return(r+e)%3==0;case t.Patterns.PATTERN100:return(Math.floor(r/2)+Math.floor(e/3))%2==0;case t.Patterns.PATTERN101:return r*e%2+r*e%3==0;case t.Patterns.PATTERN110:return(r*e%2+r*e%3)%2==0;case t.Patterns.PATTERN111:return(r*e%3+(r+e)%2)%2==0;default:throw new Error("bad maskPattern:"+n)}}t.isValid=function(t){return null!=t&&""!==t&&!isNaN(t)&&t>=0&&t<=7},t.from=function(n){return t.isValid(n)?parseInt(n,10):void 0},t.getPenaltyN1=function(t){const n=t.size;let r=0,e=0,o=0,i=null,s=null;for(let u=0;u<n;u++){e=o=0,i=s=null;for(let c=0;c<n;c++){let n=t.get(u,c);n===i?e++:(e>=5&&(r+=e-5+3),i=n,e=1),n=t.get(c,u),n===s?o++:(o>=5&&(r+=o-5+3),s=n,o=1)}e>=5&&(r+=e-5+3),o>=5&&(r+=o-5+3)}return r},t.getPenaltyN2=function(t){const n=t.size;let r=0;for(let e=0;e<n-1;e++)for(let o=0;o<n-1;o++){const n=t.get(e,o)+t.get(e,o+1)+t.get(e+1,o)+t.get(e+1,o+1);4!==n&&0!==n||r++}return 3*r},t.getPenaltyN3=function(t){const n=t.size;let r=0,e=0,o=0;for(let i=0;i<n;i++){e=o=0;for(let s=0;s<n;s++)e=e<<1&2047|t.get(i,s),s>=10&&(1488===e||93===e)&&r++,o=o<<1&2047|t.get(s,i),s>=10&&(1488===o||93===o)&&r++}return 40*r},t.getPenaltyN4=function(t){let n=0;const r=t.data.length;for(let e=0;e<r;e++)n+=t.data[e];return 10*Math.abs(Math.ceil(100*n/r/5)-10)},t.applyMask=function(t,r){const e=r.size;for(let o=0;o<e;o++)for(let i=0;i<e;i++)r.isReserved(i,o)||r.xor(i,o,n(t,i,o))},t.getBestMask=function(n,r){const e=Object.keys(t.Patterns).length;let o=0,i=1/0;for(let s=0;s<e;s++){r(s),t.applyMask(s,n);const e=t.getPenaltyN1(n)+t.getPenaltyN2(n)+t.getPenaltyN3(n)+t.getPenaltyN4(n);t.applyMask(s,n),e<i&&(i=e,o=s)}return o}}(I)),I),u=C(),c=function(){if(_)return B;_=1;const t=(N||(N=1,function(t){const n=function(){if(F)return $;F=1;const t=new Uint8Array(512),n=new Uint8Array(256);return function(){let r=1;for(let e=0;e<255;e++)t[e]=r,n[r]=e,r<<=1,256&r&&(r^=285);for(let n=255;n<512;n++)t[n]=t[n-255]}(),$.log=function(t){if(t<1)throw new Error("log("+t+")");return n[t]},$.exp=function(n){return t[n]},$.mul=function(r,e){return 0===r||0===e?0:t[n[r]+n[e]]},$}();t.mul=function(t,r){const e=new Uint8Array(t.length+r.length-1);for(let o=0;o<t.length;o++)for(let i=0;i<r.length;i++)e[o+i]^=n.mul(t[o],r[i]);return e},t.mod=function(t,r){let e=new Uint8Array(t);for(;e.length-r.length>=0;){const t=e[0];for(let o=0;o<r.length;o++)e[o]^=n.mul(r[o],t);let o=0;for(;o<e.length&&0===e[o];)o++;e=e.slice(o)}return e},t.generateECPolynomial=function(r){let e=new Uint8Array([1]);for(let o=0;o<r;o++)e=t.mul(e,new Uint8Array([1,n.exp(o)]));return e}}(q)),q);function n(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}return n.prototype.initialize=function(n){this.degree=n,this.genPoly=t.generateECPolynomial(this.degree)},n.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const r=new Uint8Array(n.length+this.degree);r.set(n);const e=t.mod(r,this.genPoly),o=this.degree-e.length;if(o>0){const t=new Uint8Array(this.degree);return t.set(e,o),t}return e},B=n}(),a=(Z||(Z=1,function(t){const n=p(),r=C(),e=k(),o=J(),i=S(),s=n.getBCHDigit(7973);function u(t,n){return o.getCharCountIndicator(t,n)+4}function c(t,n){let r=0;return t.forEach((function(t){const e=u(t.mode,n);r+=e+t.getBitsLength()})),r}t.from=function(t,n){return i.isValid(t)?parseInt(t,10):n},t.getCapacity=function(t,e,s){if(!i.isValid(t))throw new Error("Invalid QR Code version");void 0===s&&(s=o.BYTE);const c=8*(n.getSymbolTotalCodewords(t)-r.getTotalCodewordsCount(t,e));if(s===o.MIXED)return c;const a=c-u(s,t);switch(s){case o.NUMERIC:return Math.floor(a/10*3);case o.ALPHANUMERIC:return Math.floor(a/11*2);case o.KANJI:return Math.floor(a/13);default:return Math.floor(a/8)}},t.getBestVersionForData=function(n,r){let i;const s=e.from(r,e.M);if(Array.isArray(n)){if(n.length>1)return function(n,r){for(let e=1;e<=40;e++)if(c(n,e)<=t.getCapacity(e,r,o.MIXED))return e}(n,s);if(0===n.length)return 1;i=n[0]}else i=n;return function(n,r,e){for(let o=1;o<=40;o++)if(r<=t.getCapacity(o,e,n))return o}(i.mode,i.getLength(),s)},t.getEncodedBits=function(t){if(!i.isValid(t)||t<7)throw new Error("Invalid QR Code version");let r=t<<12;for(;n.getBCHDigit(r)-s>=0;)r^=7973<<n.getBCHDigit(r)-s;return t<<12|r}}(j)),j),f=function(){if(K)return ut;K=1;const t=p(),n=t.getBCHDigit(1335);return ut.getEncodedBits=function(r,e){const o=r.bit<<3|e;let i=o<<10;for(;t.getBCHDigit(i)-n>=0;)i^=1335<<t.getBCHDigit(i)-n;return 21522^(o<<10|i)},ut}(),l=J(),h=(it||(it=1,function(t){const n=J(),r=function(){if(Y)return W;Y=1;const t=J();function n(n){this.mode=t.NUMERIC,this.data=n.toString()}return n.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%3*3+1:0)},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(t){let n,r,e;for(n=0;n+3<=this.data.length;n+=3)r=this.data.substr(n,3),e=parseInt(r,10),t.put(e,10);const o=this.data.length-n;o>0&&(r=this.data.substr(n),e=parseInt(r,10),t.put(e,3*o+1))},W=n}(),e=function(){if(X)return G;X=1;const t=J(),n=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function r(n){this.mode=t.ALPHANUMERIC,this.data=n}return r.getBitsLength=function(t){return 11*Math.floor(t/2)+t%2*6},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(t){let r;for(r=0;r+2<=this.data.length;r+=2){let e=45*n.indexOf(this.data[r]);e+=n.indexOf(this.data[r+1]),t.put(e,11)}this.data.length%2&&t.put(n.indexOf(this.data[r]),6)},G=r}(),o=function(){if(nt)return tt;nt=1;const t=J();function n(n){this.mode=t.BYTE,this.data="string"==typeof n?(new TextEncoder).encode(n):new Uint8Array(n)}return n.getBitsLength=function(t){return 8*t},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(t){for(let n=0,r=this.data.length;n<r;n++)t.put(this.data[n],8)},tt=n}(),i=function(){if(et)return rt;et=1;const t=J(),n=p();function r(n){this.mode=t.KANJI,this.data=n}return r.getBitsLength=function(t){return 13*t},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(t){let r;for(r=0;r<this.data.length;r++){let e=n.toSJIS(this.data[r]);if(e>=33088&&e<=40956)e-=33088;else{if(!(e>=57408&&e<=60351))throw new Error("Invalid SJIS character: "+this.data[r]+"\nMake sure your charset is UTF-8");e-=49472}e=192*(e>>>8&255)+(255&e),t.put(e,13)}},rt=r}(),s=V(),u=p(),c=ft();function a(t){return unescape(encodeURIComponent(t)).length}function f(t,n,r){const e=[];let o;for(;null!==(o=t.exec(r));)e.push({data:o[0],index:o.index,mode:n,length:o[0].length});return e}function l(t){const r=f(s.NUMERIC,n.NUMERIC,t),e=f(s.ALPHANUMERIC,n.ALPHANUMERIC,t);let o,i;return u.isKanjiModeEnabled()?(o=f(s.BYTE,n.BYTE,t),i=f(s.KANJI,n.KANJI,t)):(o=f(s.BYTE_KANJI,n.BYTE,t),i=[]),r.concat(e,o,i).sort((function(t,n){return t.index-n.index})).map((function(t){return{data:t.data,mode:t.mode,length:t.length}}))}function h(t,s){switch(s){case n.NUMERIC:return r.getBitsLength(t);case n.ALPHANUMERIC:return e.getBitsLength(t);case n.KANJI:return i.getBitsLength(t);case n.BYTE:return o.getBitsLength(t)}}function d(t,s){let c;const a=n.getBestModeForData(t);if(c=n.from(s,a),c!==n.BYTE&&c.bit<a.bit)throw new Error('"'+t+'" cannot be encoded with mode '+n.toString(c)+".\n Suggested mode is: "+n.toString(a));switch(c!==n.KANJI||u.isKanjiModeEnabled()||(c=n.BYTE),c){case n.NUMERIC:return new r(t);case n.ALPHANUMERIC:return new e(t);case n.KANJI:return new i(t);case n.BYTE:return new o(t)}}t.fromArray=function(t){return t.reduce((function(t,n){return"string"==typeof n?t.push(d(n,null)):n.data&&t.push(d(n.data,n.mode)),t}),[])},t.fromString=function(r,e){const o=function(t,r){const e={},o={start:{}};let i=["start"];for(let s=0;s<t.length;s++){const u=t[s],c=[];for(let t=0;t<u.length;t++){const a=u[t],f=""+s+t;c.push(f),e[f]={node:a,lastCount:0},o[f]={};for(let t=0;t<i.length;t++){const s=i[t];e[s]&&e[s].node.mode===a.mode?(o[s][f]=h(e[s].lastCount+a.length,a.mode)-h(e[s].lastCount,a.mode),e[s].lastCount+=a.length):(e[s]&&(e[s].lastCount=a.length),o[s][f]=h(a.length,a.mode)+4+n.getCharCountIndicator(a.mode,r))}}i=c}for(let t=0;t<i.length;t++)o[i[t]].end=0;return{map:o,table:e}}(function(t){const r=[];for(let e=0;e<t.length;e++){const o=t[e];switch(o.mode){case n.NUMERIC:r.push([o,{data:o.data,mode:n.ALPHANUMERIC,length:o.length},{data:o.data,mode:n.BYTE,length:o.length}]);break;case n.ALPHANUMERIC:r.push([o,{data:o.data,mode:n.BYTE,length:o.length}]);break;case n.KANJI:r.push([o,{data:o.data,mode:n.BYTE,length:a(o.data)}]);break;case n.BYTE:r.push([{data:o.data,mode:n.BYTE,length:a(o.data)}])}}return r}(l(r,u.isKanjiModeEnabled())),e),i=c.find_path(o.map,"start","end"),s=[];for(let t=1;t<i.length-1;t++)s.push(o.table[i[t]].node);return t.fromArray(s.reduce((function(t,n){const r=t.length-1>=0?t[t.length-1]:null;return r&&r.mode===n.mode?(t[t.length-1].data+=n.data,t):(t.push(n),t)}),[]))},t.rawSplit=function(n){return t.fromArray(l(n,u.isKanjiModeEnabled()))}}(ct)),ct);function w(t,n,r){const e=t.size,o=f.getEncodedBits(n,r);let i,s;for(i=0;i<15;i++)s=1==(o>>i&1),t.set(i<6?i:i<8?i+1:e-15+i,8,s,!0),t.set(8,i<8?e-i-1:i<9?15-i-1+1:15-i-1,s,!0);t.set(e-8,8,1,!0)}function m(n,f,d,p){let m;if(Array.isArray(n))m=h.fromArray(n);else{if("string"!=typeof n)throw new Error("Invalid data");{let t=f;if(!t){const r=h.rawSplit(n);t=a.getBestVersionForData(r,d)}m=h.fromString(n,t||40)}}const g=a.getBestVersionForData(m,d);if(!g)throw new Error("The amount of data is too big to be stored in a QR Code");if(f){if(f<g)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+g+".\n")}else f=g;const v=function(n,e,o){const i=new r;o.forEach((function(t){i.put(t.mode.bit,4),i.put(t.getLength(),l.getCharCountIndicator(t.mode,n)),t.write(i)}));const s=8*(t.getSymbolTotalCodewords(n)-u.getTotalCodewordsCount(n,e));for(i.getLengthInBits()+4<=s&&i.put(0,4);i.getLengthInBits()%8!=0;)i.putBit(0);const a=(s-i.getLengthInBits())/8;for(let t=0;t<a;t++)i.put(t%2?17:236,8);return function(n,r,e){const o=t.getSymbolTotalCodewords(r),i=o-u.getTotalCodewordsCount(r,e),s=u.getBlocksCount(r,e),a=s-o%s,f=Math.floor(o/s),l=Math.floor(i/s),h=l+1,d=f-l,w=new c(d);let p=0;const m=new Array(s),g=new Array(s);let v=0;const y=new Uint8Array(n.buffer);for(let t=0;t<s;t++){const n=t<a?l:h;m[t]=y.slice(p,p+n),g[t]=w.encode(m[t]),p+=n,v=Math.max(v,n)}const b=new Uint8Array(o);let E,k,x=0;for(E=0;E<v;E++)for(k=0;k<s;k++)E<m[k].length&&(b[x++]=m[k][E]);for(E=0;E<d;E++)for(k=0;k<s;k++)b[x++]=g[k][E];return b}(i,n,e)}(f,d,m),y=t.getSymbolSize(f),b=new e(y);return function(t,n){const r=t.size,e=i.getPositions(n);for(let n=0;n<e.length;n++){const o=e[n][0],i=e[n][1];for(let n=-1;n<=7;n++)if(!(o+n<=-1||r<=o+n))for(let e=-1;e<=7;e++)i+e<=-1||r<=i+e||t.set(o+n,i+e,n>=0&&n<=6&&(0===e||6===e)||e>=0&&e<=6&&(0===n||6===n)||n>=2&&n<=4&&e>=2&&e<=4,!0)}}(b,f),function(t){const n=t.size;for(let r=8;r<n-8;r++){const n=r%2==0;t.set(r,6,n,!0),t.set(6,r,n,!0)}}(b),function(t,n){const r=o.getPositions(n);for(let n=0;n<r.length;n++){const e=r[n][0],o=r[n][1];for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)t.set(e+n,o+r,-2===n||2===n||-2===r||2===r||0===n&&0===r,!0)}}(b,f),w(b,d,0),f>=7&&function(t,n){const r=t.size,e=a.getEncodedBits(n);let o,i,s;for(let n=0;n<18;n++)o=Math.floor(n/3),i=n%3+r-8-3,s=1==(e>>n&1),t.set(o,i,s,!0),t.set(i,o,s,!0)}(b,f),function(t,n){const r=t.size;let e=-1,o=r-1,i=7,s=0;for(let u=r-1;u>0;u-=2)for(6===u&&u--;;){for(let r=0;r<2;r++)if(!t.isReserved(o,u-r)){let e=!1;s<n.length&&(e=1==(n[s]>>>i&1)),t.set(o,u-r,e),i--,-1===i&&(s++,i=7)}if(o+=e,o<0||r<=o){o-=e,e=-e;break}}}(b,v),isNaN(p)&&(p=s.getBestMask(b,w.bind(null,b,d))),s.applyMask(p,b),w(b,d,p),{modules:b,version:f,errorCorrectionLevel:d,maskPattern:p,segments:m}}return d.create=function(r,e){if(void 0===r||""===r)throw new Error("No input text");let o,i,u=n.M;return void 0!==e&&(u=n.from(e.errorCorrectionLevel,n.M),o=a.from(e.version),i=s.from(e.maskPattern),e.toSJISFunc&&t.setToSJISFunction(e.toSJISFunc)),m(r,o,u,i)},d}var ht,dt,wt={},pt={};function mt(){return ht||(ht=1,function(t){function n(t){if("number"==typeof t&&(t=t.toString()),"string"!=typeof t)throw new Error("Color should be defined as hex string");let n=t.slice().replace("#","").split("");if(n.length<3||5===n.length||n.length>8)throw new Error("Invalid hex color: "+t);3!==n.length&&4!==n.length||(n=Array.prototype.concat.apply([],n.map((function(t){return[t,t]})))),6===n.length&&n.push("F","F");const r=parseInt(n.join(""),16);return{r:r>>24&255,g:r>>16&255,b:r>>8&255,a:255&r,hex:"#"+n.slice(0,6).join("")}}t.getOptions=function(t){t||(t={}),t.color||(t.color={});const r=t.width&&t.width>=21?t.width:void 0;return{width:r,scale:r?4:t.scale||4,margin:null==t.margin||t.margin<0?4:t.margin,color:{dark:n(t.color.dark||"#000000ff"),light:n(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}},t.getScale=function(t,n){return n.width&&n.width>=t+2*n.margin?n.width/(t+2*n.margin):n.scale},t.getImageWidth=function(n,r){const e=t.getScale(n,r);return Math.floor((n+2*r.margin)*e)},t.qrToImageData=function(n,r,e){const o=r.modules.size,i=r.modules.data,s=t.getScale(o,e),u=Math.floor((o+2*e.margin)*s),c=e.margin*s,a=[e.color.light,e.color.dark];for(let t=0;t<u;t++)for(let r=0;r<u;r++){let f=4*(t*u+r),l=e.color.light;t>=c&&r>=c&&t<u-c&&r<u-c&&(l=a[i[Math.floor((t-c)/s)*o+Math.floor((r-c)/s)]?1:0]),n[f++]=l.r,n[f++]=l.g,n[f++]=l.b,n[f]=l.a}}}(pt)),pt}var gt,vt,yt={};var bt=function(){if(vt)return f;vt=1;const t=l(),n=lt(),r=(dt||(dt=1,function(t){const n=mt();t.render=function(t,r,e){let o=e,i=r;void 0!==o||r&&r.getContext||(o=r,r=void 0),r||(i=function(){try{return document.createElement("canvas")}catch(t){throw new Error("You need to specify a canvas element")}}()),o=n.getOptions(o);const s=n.getImageWidth(t.modules.size,o),u=i.getContext("2d"),c=u.createImageData(s,s);return n.qrToImageData(c.data,t,o),function(t,n,r){t.clearRect(0,0,n.width,n.height),n.style||(n.style={}),n.height=r,n.width=r,n.style.height=r+"px",n.style.width=r+"px"}(u,i,s),u.putImageData(c,0,0),i},t.renderToDataURL=function(n,r,e){let o=e;return void 0!==o||r&&r.getContext||(o=r,r=void 0),o||(o={}),t.render(n,r,o).toDataURL(o.type||"image/png",(o.rendererOpts||{}).quality)}}(wt)),wt),e=function(){if(gt)return yt;gt=1;const t=mt();function n(t,n){const r=t.a/255,e=n+'="'+t.hex+'"';return r<1?e+" "+n+'-opacity="'+r.toFixed(2).slice(1)+'"':e}function r(t,n,r){let e=t+n;return void 0!==r&&(e+=" "+r),e}return yt.render=function(e,o,i){const s=t.getOptions(o),u=e.modules.size,c=e.modules.data,a=u+2*s.margin,f=s.color.light.a?"<path "+n(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",l="<path "+n(s.color.dark,"stroke")+' d="'+function(t,n,e){let o="",i=0,s=!1,u=0;for(let c=0;c<t.length;c++){const a=Math.floor(c%n),f=Math.floor(c/n);a||s||(s=!0),t[c]?(u++,c>0&&a>0&&t[c-1]||(o+=s?r("M",a+e,.5+f+e):r("m",i,0),i=0,s=!1),a+1<n&&t[c+1]||(o+=r("h",u),u=0)):i++}return o}(c,u,s.margin)+'"/>',h='<svg xmlns="http://www.w3.org/2000/svg" '+(s.width?'width="'+s.width+'" height="'+s.width+'" ':"")+'viewBox="0 0 '+a+" "+a+'" shape-rendering="crispEdges">'+f+l+"</svg>\n";return"function"==typeof i&&i(null,h),h},yt}();function o(r,e,o,i,s){const u=[].slice.call(arguments,1),c=u.length,a="function"==typeof u[c-1];if(!a&&!t())throw new Error("Callback required as last argument");if(!a){if(c<1)throw new Error("Too few arguments provided");return 1===c?(o=e,e=i=void 0):2!==c||e.getContext||(i=o,o=e,e=void 0),new Promise((function(t,s){try{const s=n.create(o,i);t(r(s,e,i))}catch(t){s(t)}}))}if(c<2)throw new Error("Too few arguments provided");2===c?(s=o,o=e,e=i=void 0):3===c&&(e.getContext&&void 0===s?(s=i,i=void 0):(s=i,i=o,o=e,e=void 0));try{const t=n.create(o,i);s(null,r(t,e,i))}catch(t){s(t)}}return f.create=n.create,f.toCanvas=o.bind(null,r.render),f.toDataURL=o.bind(null,r.renderToDataURL),f.toString=o.bind(null,(function(t,n,r){return e.render(t,r)})),f}(),Et=u(bt);const kt=class{constructor(n){t(this,n),this.qrSvg="",this.downloading=!1}async generateQr(){this.ticket?.barcode&&(this.qrSvg=await Et.toString(this.ticket.barcode,{type:"svg",margin:0,errorCorrectionLevel:"M"}))}async componentWillLoad(){await this.generateQr()}async download(){try{this.downloading=!0;const t=await r(),n=t.getOrdersManager?.();if(!n)throw new Error("Ticket downloads are not available");const e=await n.ticketPdf(this.orderId,this.ticket.id),o=URL.createObjectURL(e),i=document.createElement("a");i.href=o,i.download=`ticket-${this.ticket.id}.pdf`,document.body.appendChild(i),i.click(),i.remove(),URL.revokeObjectURL(o)}catch(t){console.error("[tl-ticket] download failed",t)}finally{this.downloading=!1}}render(){const t=this.ticket;if(!t)return null;const r="fully_redeemed"===t.admissionStatus,e=["cancelled","expired"].includes(t.status),o=r||e;return n("div",{class:"ticket"},n("div",{class:"qr-wrap"},n("div",{class:{qr:!0,inactive:o},innerHTML:this.qrSvg}),o&&n("span",{class:"stamp"},r?"Used":"Void")),n("p",{class:"name"},t.name),t.seatLabel&&n("p",{class:"meta"},"Seat ",t.seatLabel),t.holderName&&n("p",{class:"meta"},t.holderName),n("p",{class:"barcode"},t.barcode),n("button",{class:"download",disabled:this.downloading,onClick:()=>this.download()},this.downloading?"Preparing…":"Download PDF"))}static get watchers(){return{ticket:[{generateQr:0}]}}};kt.style=":host{display:block;font-family:var(--tl-font-family)}.ticket{border:1px solid var(--tl-border);border-radius:var(--tl-radius-lg);background:var(--tl-card);padding:var(--tl-spacing-5);text-align:center}.qr-wrap{position:relative;width:160px;height:160px;margin:0 auto}.qr{width:160px;height:160px}.qr svg{width:100%;height:100%;display:block}.qr.inactive{opacity:0.3}.stamp{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);padding:0.25rem 0.5rem;border-radius:var(--tl-radius-sm);background:rgba(17, 24, 39, 0.85);color:#ffffff;font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em}.name{margin:1rem 0 0;font-weight:600;color:var(--tl-foreground)}.meta{margin:0.125rem 0 0;font-size:0.875rem;color:var(--tl-muted-foreground)}.barcode{margin:0.25rem 0 0;font-family:ui-monospace, monospace;font-size:0.625rem;color:var(--tl-muted-foreground);word-break:break-all}.download{margin-top:0.75rem;padding:0.375rem 0.75rem;border:1px solid var(--tl-border);border-radius:var(--tl-radius-md);background:transparent;color:var(--tl-foreground);font-size:0.875rem;font-weight:500;cursor:pointer}.download:hover{background:var(--tl-muted)}.download:disabled{opacity:0.5;cursor:default}";export{s as tl_order_tickets,kt as tl_ticket}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,c as i,h as s}from"./p-imfxp765.js";import{w as e,g as n}from"./p-CqhvfyKV.js";import{c as o,g as r}from"./p-BwChnHVC.js";const a={get(t){if("undefined"==typeof window)return null;try{return window.localStorage.getItem(t)}catch{return null}},set(t,i){if("undefined"!=typeof window)try{window.localStorage.setItem(t,i)}catch{}}},l=class{constructor(s){t(this,s),this.tlClick=i(this,"tlClick"),this.showEmpty=!1,this.size="md",this.badgeOnly=!1,this.element=o(r,{client:()=>n(),clientReady:()=>e(),storage:a,emit:(t,i)=>this.forward(t,i)}),this.view=this.element.view,this.handleClick=()=>{this.element.actions.click()}}syncProps(){this.element.setProps({showEmpty:this.showEmpty,icon:this.icon,size:this.size,badgeOnly:this.badgeOnly})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((t=>{this.view=t}))),this.view=this.element.view,this.teardown=this.element.mount()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(t,i){"tlClick"===t&&this.tlClick.emit(i)}renderIcon(){return this.icon?s("span",{class:"icon-text"},this.icon):s("svg",{class:"icon-svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"}))}render(){const{derived:t}=this.view;return this.badgeOnly?t.renderNothing?null:s("span",{class:`badge-only ${t.sizeClass}`},t.displayCount):s("button",{class:`cart-badge ${t.sizeClass}`,onClick:this.handleClick,"aria-label":t.ariaLabel},this.renderIcon(),t.showBadge&&s("span",{class:"badge-count"},t.displayCount))}static get watchers(){return{showEmpty:[{syncProps:0}],icon:[{syncProps:0}],size:[{syncProps:0}],badgeOnly:[{syncProps:0}]}}};l.style=":host{display:inline-block}.cart-badge{position:relative;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;padding:var(--tl-spacing-2);border-radius:var(--tl-radius-md);color:var(--tl-color-foreground);transition:background-color 0.2s, transform 0.15s}.cart-badge:hover{background-color:var(--tl-color-muted)}.cart-badge:active{transform:scale(0.95)}.cart-badge:focus-visible{outline:2px solid var(--tl-color-primary);outline-offset:2px}.size-sm{padding:var(--tl-spacing-1)}.size-sm .icon-svg,.size-sm .icon-text{width:18px;height:18px;font-size:18px}.size-md .icon-svg,.size-md .icon-text{width:24px;height:24px;font-size:24px}.size-lg{padding:var(--tl-spacing-3)}.size-lg .icon-svg,.size-lg .icon-text{width:32px;height:32px;font-size:32px}.icon-svg{width:24px;height:24px;stroke-width:2}.icon-text{line-height:1}.badge-count{position:absolute;top:0;right:0;transform:translate(30%, -30%);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background-color:var(--tl-color-primary);color:var(--tl-color-primary-foreground);font-size:11px;font-weight:600;font-family:var(--tl-font-family);display:flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 1px 3px rgba(0, 0, 0, 0.2)}.size-sm .badge-count{min-width:16px;height:16px;font-size:10px;padding:0 4px}.size-lg .badge-count{min-width:22px;height:22px;font-size:13px;padding:0 6px}.badge-only{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background-color:rgba(255, 255, 255, 0.3);color:inherit;font-size:12px;font-weight:600;font-family:var(--tl-font-family);line-height:1}.badge-only.size-sm{min-width:18px;height:18px;font-size:11px;padding:0 5px}.badge-only.size-lg{min-width:22px;height:22px;font-size:13px;padding:0 7px}";export{l as tl_cart_badge}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const n={get(n){if("undefined"==typeof window||!window.location?.search)return null;try{return new URLSearchParams(window.location.search).get(n)}catch{return null}}};export{n as w}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={get:()=>null,set:()=>{}},t={get:()=>null},r=["discovery","purchase","cart","checkout","account","tickets"],n=["web","native"];function o(e){const t=t=>{throw new Error(`[elements-core] ${e.tag||"<no tag>"}: ${t}`)};/^tl-[a-z0-9]+(-[a-z0-9]+)*$/.test(e.tag)||t("tag must look like tl-something"),r.includes(e.category)||t(`category must be one of ${r.join(", ")}`),e.runtimes.length&&!e.runtimes.some((e=>!n.includes(e)))||t(`runtimes must be a non-empty subset of ${n.join(", ")}`),new Set(e.tokens).size!==e.tokens.length&&t("tokens must not repeat"),e.statuses.length||t("statuses must not be empty");for(const[r,n]of Object.entries(e.events))/^tl[A-Z]/.test(r)||t(`event ${r} must be named tlSomething`),n.detail||t(`event ${r} must state its detail type`);for(const[r,n]of Object.entries(e.props))n.required&&void 0!==n.default&&t(`prop ${r} is required and has a default`);return Object.freeze({...e})}function a(r,n={}){const o={};for(const[e,t]of Object.entries(r.props))void 0!==t.default&&(o[e]=t.default);let a={...o,...n.props??{}};const i={...r.strings,...n.strings??{}},d=n.locale??"en-GB",l=n.currency??"GBP";let c=s(n.client),u=r.state(a),g=!1;const m=new Set,p=new Set,y=(e,t)=>new Intl.NumberFormat(d,{style:"currency",currency:t||l}).format(e/100),f=n.storage??e,h=n.query??t,b=()=>{const e={props:a,state:u,strings:i,formatMoney:y};return{status:r.status(e),props:a,state:u,strings:i,derived:r.derive(e)}},w=()=>{if(g)return;const e=b();for(const t of[...p])t(e)},v={get props(){return a},get state(){return u},strings:i,formatMoney:y,setState(e){if(g)return;const t="function"==typeof e?e(u):e;u={...u,...t},w()},emit(e,t){if(!r.events[e])throw new Error(`[elements-core] ${r.tag}: ${e} is not a declared event`);n.emit?.(e,t)},client(){const e=c();if(!e)throw new Error(`[elements-core] ${r.tag}: no client. A harness hands the core the client the host published.`);return e},optionalClient(){try{return c()}catch{return null}},storage:f,query:h,whenClient:async()=>{n.clientReady&&await n.clientReady();const e=c();if(!e)throw new Error(`[elements-core] ${r.tag}: no client. A harness hands the core the client the host published.`);return e},after(e,t){if(g)return;const r=setTimeout((()=>{m.delete(r),g||t()}),e);m.add(r)}},k=r.actions(v);let E=null,C=[];const T=e=>{if(E!==e)return;E=null;const t=C;C=[];for(const e of t.reverse())e()};return{core:r,get props(){return a},get state(){return u},get view(){return b()},actions:k,setProps(e){g||(a={...a,...e},w())},setClient(e){c=s(e)},subscribe:e=>(p.add(e),()=>{p.delete(e)}),mount:()=>{if(g)return()=>{};E&&T(E);const e={};E=e;const t=()=>E===e&&!g,n=r.mount?.({...v,get props(){return a},get state(){return u},actions:k,active:t,onTeardown(e){t()?C.push(e):e()}});return"function"==typeof n&&(t()?C.push(n):n()),()=>T(e)},get mounted(){return null!==E},destroy(){E&&T(E),g=!0;for(const e of m)clearTimeout(e);m.clear(),p.clear()}}}function s(e){return"function"==typeof e?e:()=>e??null}const i="Booking fee";function d(e){return"number"==typeof e?Number.isInteger(e)?e:null:"string"==typeof e&&/^-?\d+$/.test(e)?Number(e):null}function l(e,t){return null===e?t:e>0||t}const c=e=>e.type||"ticket";function u(e,t="GBP"){if(null==e||""===e)return"";const r=new Intl.NumberFormat("en-GB",{style:"currency",currency:t});if("number"==typeof e)return r.format(e/100);const n=Number(e);return Number.isNaN(n)?String(e):r.format(n)}function g(e){return(e.items??[]).filter((e=>!e.type||"ticket"===e.type))}function m(e){return e.eventName||g(e)[0]?.name||e.items?.[0]?.name||null}function p(e){switch(e){case"confirmed":return"success";case"completed":case"fulfilled":return"info";case"pending":case"processing":return"warning";case"cancelled":case"expired":case"failed":return"error";default:return"muted"}}function y(e,t){return e instanceof Error&&e.message?e.message:t}const f={available:"state-available",soldOut:"state-sold-out",waitlist:"state-waitlist",comingSoon:"state-coming-soon"},h=["soldOut","comingSoon"],b=e=>!e.disabled&&!h.includes(e.state);function w(e,t){const r=e/100,n=r%1!=0;return new Intl.NumberFormat("en-GB",{style:"currency",currency:t,minimumFractionDigits:n?2:0,maximumFractionDigits:n?2:0}).format(r)}const v=o({tag:"tl-buy-tickets-button",docs:"A buy-tickets button in one of four sale states, which opens the purchase modal.",category:"purchase",runtimes:["web"],tokens:["error","error-foreground","font-family","info","info-foreground","primary","primary-foreground","radius-lg","radius-md","radius-sm","warning","warning-foreground"],sdkMethods:["event.openModal"],props:{eventId:{type:"string",attr:"event-id",required:!0,docs:"Event ID to purchase tickets for"},occurrenceId:{type:"string",tsType:"string | undefined",attr:"occurrence-id",docs:"Optional pre-selected occurrence ID"},state:{type:"string",tsType:'"available" | "comingSoon" | "soldOut" | "waitlist"',attr:"state",default:"available",docs:"Button state - determines colour, label, and icon"},label:{type:"string",tsType:"string | undefined",attr:"label",docs:"Button label override (default depends on state)"},variant:{type:"string",tsType:'"outline" | "primary" | "secondary"',attr:"variant",default:"primary",docs:"Button variant"},size:{type:"string",tsType:'"lg" | "md" | "sm"',attr:"size",default:"md",docs:"Button size"},fullWidth:{type:"boolean",attr:"full-width",default:!1,docs:"Full width button"},price:{type:"number",tsType:"number | undefined",attr:"price",docs:"Price to display (in minor units e.g. pence)"},currency:{type:"string",attr:"currency",default:"GBP",docs:"Currency code for price formatting"},pricePrefix:{type:"string",attr:"price-prefix",default:"From",docs:"Show price prefix text"},disabled:{type:"boolean",attr:"disabled",default:!1,docs:"Disabled state"}},events:{tlClick:{detail:"{ eventId: string; occurrenceId?: string | undefined; }",docs:"Emitted when button is clicked (before modal opens)"}},strings:{available:"Buy Tickets",soldOut:"Sold Out",waitlist:"Join Waitlist",comingSoon:"On Sale Soon"},statuses:["ready","disabled"],state:()=>({}),status:({props:e})=>b(e)?"ready":"disabled",derive:({props:e,strings:t})=>({interactive:b(e),buttonLabel:e.label||t[e.state],stateClass:f[e.state],priceLabel:void 0===e.price?null:w(e.price,e.currency)}),actions:e=>({activate(){if(!b(e.props))return;e.emit("tlClick",{eventId:e.props.eventId,occurrenceId:e.props.occurrenceId});const t=e.optionalClient();if(t&&t.event)try{t.event(e.props.eventId).openModal({occurrenceId:e.props.occurrenceId})}catch{}}})}),k=o({tag:"tl-buy-tickets-wrapper",docs:"Wrap any content and open the purchase modal when it is activated.",category:"purchase",runtimes:["web"],tokens:["radius-sm","ring"],sdkMethods:["event.openModal"],props:{eventId:{type:"string",attr:"event-id",required:!0,docs:"The event ID to purchase tickets for"},occurrenceId:{type:"string",tsType:"string | undefined",attr:"occurrence-id",docs:"Optional specific occurrence ID (skips occurrence selector)"},disabled:{type:"boolean",attr:"disabled",default:!1,docs:"Whether the wrapper is disabled"}},events:{tlComplete:{detail:"OrderResult",docs:"Emitted when purchase completes successfully"},tlError:{detail:"{ message: string; }",docs:"Emitted when an error occurs"},tlClose:{detail:"void",docs:"Emitted when the modal closes"}},strings:{noClient:"SDK not initialized",notAvailable:"Tickets are not available"},statuses:["ready","disabled"],state:()=>({}),status:({props:e})=>e.disabled?"disabled":"ready",derive:({props:e})=>({interactive:!e.disabled}),actions:e=>({activate(){if(e.props.disabled)return;const t=e.optionalClient();t?t.event?t.event(e.props.eventId).openModal({occurrenceId:e.props.occurrenceId,onComplete:t=>e.emit("tlComplete",t),onError:t=>e.emit("tlError",{message:t.message}),onClose:()=>e.emit("tlClose",void 0)}):e.emit("tlError",{message:e.strings.notAvailable}):e.emit("tlError",{message:e.strings.noClient})}})}),E=o({tag:"tl-cart",docs:"The buyer's cart: its lines, the money rows the surface reported and a checkout button.",category:"cart",runtimes:["web","native"],tokens:["background","border","error","error-bg","font-family","foreground","muted","muted-foreground","primary","primary-foreground","radius-md","radius-sm","spacing-1","spacing-2","spacing-3","spacing-4","spacing-8"],sdkMethods:["cart.get","cart.on","cart.removeItem"],props:{showCheckoutButton:{type:"boolean",attr:"show-checkout-button",default:!0,docs:"Show checkout button"},checkoutLabel:{type:"string",attr:"checkout-label",default:"Checkout",docs:"Checkout button label"},showRemoveButtons:{type:"boolean",attr:"show-remove-buttons",default:!0,docs:"Show remove item buttons"},compact:{type:"boolean",attr:"compact",default:!1,docs:"Compact mode - hides some details"}},events:{tlCheckout:{detail:"{ cart: TlCartData; }",docs:"Emitted when checkout is clicked"},tlItemRemoved:{detail:"{ itemId: string; }",docs:"Emitted when item is removed"},tlCartUpdated:{detail:"{ cart: TlCartData; }",docs:"Emitted when cart is updated"},tlError:{detail:"{ message: string; }",docs:"Emitted on error"}},strings:{emptyTitle:"Your cart is empty",emptyMessage:"Add tickets to get started",subtotalRow:"Subtotal",discountRow:"Discount",totalRow:"Total",removeItem:"Remove item",quantityPrefix:"Qty: ",loadFailed:"Failed to load cart",removeFailed:"Failed to remove item"},statuses:["loading","empty","ready"],state:()=>({cart:null,loading:!0,error:null,removingItemId:null}),mount:e=>{(async()=>{let t;try{t=await e.whenClient()}catch(t){if(!e.active())return;return void e.actions.connectFailed(t instanceof Error?t.message:e.strings.loadFailed)}if(!e.active())return;const r=t.getCartManager?.(),n=r?.on?.("cart:updated",(t=>{e.actions.cartUpdated(t)}));"function"==typeof n&&e.onTeardown(n),await e.actions.load()})()},status:({state:e})=>e.loading?"loading":e.cart&&0!==e.cart.items.length?"ready":"empty",derive:e=>{const{state:t,strings:r,props:n,formatMoney:o}=e,a=function(e){const t=e||{},r=Array.isArray(t.items)?t.items:[],n=r.filter((e=>"fee"===c(e))),o=r.filter((e=>"discount"===c(e))),a=d(t.itemsSubtotal)??d(t.subtotal)??r.filter((e=>!["fee","tax","discount"].includes(c(e)))).reduce(((e,t)=>e+(d(t.subtotal)??0)),0),s=n.length?n.reduce(((e,t)=>e+(d(t.subtotal)??0)),0):null,u=d(t.totalFees)??d(t.fees)??s,g=o.length?o.reduce(((e,t)=>e+Math.abs(d(t.subtotal)??0)),0):null,m=d(t.totalDiscounts)??d(t.discount)??g,p=d(t.totalTax)??0,y="string"==typeof t.feeLabel&&!!t.feeLabel||n.some((e=>"string"==typeof e.name&&!!e.name)),f="string"==typeof t.feeLabel&&t.feeLabel||n.map((e=>e.name)).find((e=>"string"==typeof e&&!!e))||i;return{currency:t.currency||"GBP",subtotal:a,fees:u??0,discount:m??0,total:d(t.total)??a+(u??0)+p-(m??0),showFee:"boolean"==typeof t.hasFees?t.hasFees:l(u,y),feeLabel:f}}(t.cart),s=a.currency,u=t.cart?.items??[];return{rows:u.map((e=>{return{id:e.id,name:e.ticketTypeName,eventName:e.eventName,dateLabel:e.occurrenceDate?(a=e.occurrenceDate,new Date(a).toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"})):null,quantityLabel:`${r.quantityPrefix}${e.quantity}`,priceLabel:o(e.totalPrice,e.currency),removing:t.removingItemId===e.id,showEvent:!n.compact,showDate:!n.compact&&!!e.occurrenceDate};var a})),totals:a,subtotalLabel:o(a.subtotal,s),feeAmountLabel:o(a.fees,s),discountLabel:o(a.discount,s),totalLabel:o(a.total,s),showSubtotalRow:!n.compact,showFeeRow:a.showFee&&!n.compact,showDiscountRow:a.discount>0&&!n.compact,checkoutDisabled:0===u.length}},actions:e=>({async load(){try{e.setState({loading:!0,error:null});const t=e.optionalClient()?.getCartManager?.();if(t){const r=t.get?.bind(t);if(!r)throw new TypeError("cartManager.get is not a function");e.setState({cart:await r()??null})}}catch(t){const r=t instanceof Error?t.message:e.strings.loadFailed;e.setState({error:r}),e.emit("tlError",{message:r})}finally{e.setState({loading:!1})}},cartUpdated(t){e.setState({cart:t}),e.emit("tlCartUpdated",{cart:t})},async removeItem(t){if(e.optionalClient()){e.setState({removingItemId:t});try{const r=e.client().getCartManager?.();if(r){const n=r.removeItem?.bind(r);if(!n)throw new TypeError("cartManager.removeItem is not a function");await n(t),e.emit("tlItemRemoved",{itemId:t})}}catch(t){const r=t instanceof Error?t.message:e.strings.removeFailed;e.setState({error:r}),e.emit("tlError",{message:r})}finally{e.setState({removingItemId:null})}}},checkout(){const t=e.state.cart;t&&t.items.length>0&&e.emit("tlCheckout",{cart:t})},connectFailed(t){const r=t||e.strings.loadFailed;e.setState({error:r,loading:!1}),e.emit("tlError",{message:r})}})}),C="tl_cart_count",T=e=>{const t=e;return"number"==typeof t?.itemCount?t.itemCount:0},I=o({tag:"tl-cart-badge",docs:"A cart icon carrying the number of items in the cart, kept current from the cart bus.",category:"cart",runtimes:["web"],tokens:["font-family","foreground","muted","primary","primary-foreground","radius-md","spacing-1","spacing-2","spacing-3"],sdkMethods:["cart.get","cart.on"],props:{showEmpty:{type:"boolean",attr:"show-empty",default:!1,docs:"Show the badge even when count is 0"},icon:{type:"string",tsType:"string | undefined",attr:"icon",docs:"Custom icon (emoji or text). If not provided, uses cart SVG"},size:{type:"string",tsType:'"lg" | "md" | "sm"',attr:"size",default:"md",docs:"Size variant"},badgeOnly:{type:"boolean",attr:"badge-only",default:!1,docs:"Badge only mode - only shows the count bubble, no icon or button"}},events:{tlClick:{detail:"{ itemCount: number; }",docs:"Emitted when the badge is clicked"}},strings:{ariaPrefix:"Cart with ",ariaSuffix:" items",overflow:"99+"},statuses:["ready"],state:()=>({itemCount:0}),mount:e=>{e.actions.hydrate(),(async()=>{let t;try{t=await e.whenClient()}catch{return}if(!e.active())return;const r=t.getCartManager?.();if(!r)return;const n=r.on?.("cart:updated",(t=>{e.actions.countChanged(T(t))}));"function"==typeof n&&e.onTeardown(n);try{const t=r.get?.bind(r);if(!t)return;const n=await t();if(!e.active())return;e.actions.countChanged(T(n))}catch{}})()},status:()=>"ready",derive:({state:e,props:t,strings:r})=>({displayCount:e.itemCount>99?r.overflow:e.itemCount.toString(),showBadge:e.itemCount>0,renderNothing:t.badgeOnly&&0===e.itemCount,ariaLabel:`${r.ariaPrefix}${e.itemCount}${r.ariaSuffix}`,sizeClass:`size-${t.size}`}),actions:e=>({countChanged(t){e.setState({itemCount:t}),e.storage.set(C,String(t))},hydrate(){const t=e.storage.get(C);e.setState({itemCount:(t?parseInt(t,10):0)||0})},click(){e.emit("tlClick",{itemCount:e.state.itemCount})}})}),S=o({tag:"tl-cart-drawer",docs:"A slide-in panel holding the cart, opened by the cart intent on the client bus.",category:"cart",runtimes:["web"],tokens:["background","border","font-family","foreground","muted","muted-foreground"],sdkMethods:["client.on"],props:{side:{type:"string",tsType:'"left" | "right"',attr:"side",default:"right",docs:"Edge the panel slides in from."},heading:{type:"string",attr:"heading",default:"Your cart",docs:"Heading shown at the top of the panel."},open:{type:"boolean",attr:"open",default:!1,docs:"Controlled open state (also driven by the `ui:cart-requested` intent)."}},events:{tlOpen:{detail:"void",docs:""},tlClose:{detail:"void",docs:""}},strings:{close:"Close cart",privacy:"Privacy Policy",privacyHref:"https://ticketlayer.com/privacy",reportAbuse:"Report Abuse",reportAbuseHref:"https://ticketlayer.com/report-abuse",poweredBy:"Powered by",brand:"ticketlayer",brandHref:"https://ticketlayer.com"},statuses:["open","closed"],state:e=>({visible:e.open}),mount:e=>{e.actions.openChanged(e.props.open),(async()=>{let t;try{t=await e.whenClient()}catch{return}if(!e.active())return;const r=t.on?.("ui:cart-requested",(()=>e.actions.setOpen(!0)));"function"==typeof r&&e.onTeardown(r);const n=t.on?.("ui:modal-close-requested",(()=>e.actions.setOpen(!1)));"function"==typeof n&&e.onTeardown(n)})()},status:({state:e})=>e.visible?"open":"closed",derive:({state:e,props:t})=>({visible:e.visible,sideClass:`panel--${t.side}`,ariaHidden:e.visible?"false":"true"}),actions:e=>({setOpen(t){e.state.visible!==t&&(e.setState({visible:t}),e.emit(t?"tlOpen":"tlClose",void 0))},openChanged(t){e.state.visible!==t&&e.setState({visible:t})}})}),D=o({tag:"tl-checkout-wrapper",docs:"Wrap any content and open the checkout modal when it is activated.",category:"checkout",runtimes:["web"],tokens:["radius-sm","ring"],sdkMethods:["checkout.openModal"],props:{disabled:{type:"boolean",attr:"disabled",default:!1,docs:"Whether the wrapper is disabled"}},events:{tlComplete:{detail:"OrderResult",docs:"Emitted when checkout completes successfully"},tlError:{detail:"{ message: string; }",docs:"Emitted when an error occurs"},tlClose:{detail:"void",docs:"Emitted when the modal closes"}},strings:{noClient:"SDK not initialized",notAvailable:"Checkout is not available"},statuses:["ready","disabled"],state:()=>({}),status:({props:e})=>e.disabled?"disabled":"ready",derive:({props:e})=>({interactive:!e.disabled}),actions:e=>({activate(){if(e.props.disabled)return;const t=e.optionalClient();t?t.checkout?t.checkout.openModal({onComplete:t=>e.emit("tlComplete",t),onError:t=>e.emit("tlError",{message:t.message}),onClose:()=>e.emit("tlClose",void 0)}):e.emit("tlError",{message:e.strings.notAvailable}):e.emit("tlError",{message:e.strings.noClient})}})});function L(e){const t=e.occurrences??[],r=t.map((e=>e.startsAt)).filter((e=>!!e)).sort(),n=Date.now(),o=r.find((e=>new Date(e).getTime()>=n))??r[0],a="sold_out"===e.status||t.length>0&&t.every((e=>"sold_out"===e.status));return{id:e.id,name:e.name,...e.shortDescription?{shortDescription:e.shortDescription}:{},...e.imageUrl?{imageUrl:e.imageUrl}:{},...e.venueName?{venue:{id:e.venueId??"",name:e.venueName,city:e.venueCity??""}}:{},...o?{nextOccurrence:{startsAt:o}}:{},availabilityStatus:a?"sold_out":"available"}}const O=o({tag:"tl-event-card",docs:"One event as a card: its image, name, next date, venue and how it is selling.",category:"discovery",runtimes:["web","native"],tokens:["error","error-foreground","font-family","foreground","muted","muted-foreground","primary","radius-lg","radius-sm","secondary","spacing-4","success","success-foreground","warning","warning-foreground"],sdkMethods:["events.get"],props:{event:{type:"object",tsType:"TlEventCardEvent | undefined",attr:null,docs:"Event data to display (tl-event-list passes this)"},eventId:{type:"string",tsType:"string | undefined",attr:"event-id",docs:"Load the event from the SDK by id when no `event` is given, so a single\ncard works standalone (e.g. on a Webflow page)."}},events:{tlClick:{detail:"{ eventId: string; }",docs:"Emitted when the card is clicked"},tlError:{detail:"{ message: string; }",docs:"Emitted when the event could not be loaded by id"}},strings:{available:"Available",limited:"Limited",soldOut:"Sold Out",notFound:"Event not found",loadFailed:"Failed to load event"},statuses:["loading","error","empty","ready"],state:()=>({loadedEvent:null,loading:!1,error:null}),mount:e=>{!e.props.event&&e.props.eventId&&(e.setState({loading:!0,error:null}),(async()=>{try{await e.whenClient()}catch(t){if(!e.active())return;return void e.actions.loadFailed(t instanceof Error&&t.message?t.message:e.strings.loadFailed)}e.active()&&await e.actions.load()})())},status:({state:e,props:t})=>e.loading?"loading":e.error?"error":t.event||e.loadedEvent?"ready":"empty",derive:({state:e,props:t,strings:r})=>{const n=t.event??e.loadedEvent,o=e=>`status-badge ${e}`,a=n?.availabilityStatus;return{event:n,image:n&&(n.thumbnailUrl||n.imageUrl)||null,statusBadgeClass:"available"===a?o("status-available"):"limited"===a?o("status-limited"):"sold_out"===a?o("status-sold-out"):"status-badge",statusLabel:"available"===a?r.available:"limited"===a?r.limited:"sold_out"===a?r.soldOut:"",dateLabel:n?.nextOccurrence?(s=n.nextOccurrence.startsAt,new Date(s).toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"})):null,venueLabel:n?.venue?`${n.venue.name}, ${n.venue.city}`:null};var s},actions:e=>({async load(){if(!e.props.event&&e.props.eventId)try{e.setState({loading:!0,error:null});const t=e.client().getEventsManager(),r=t.get?.bind(t);if(!r)throw new TypeError("eventsManager.get is not a function");const n=await r(e.props.eventId);if(!n)throw new Error(e.strings.notFound);e.setState({loadedEvent:L(n)})}catch(t){const r=t instanceof Error&&t.message?t.message:e.strings.loadFailed;e.setState({error:r}),e.emit("tlError",{message:r})}finally{e.setState({loading:!1})}},loadFailed(t){const r=t||e.strings.loadFailed;e.setState({error:r,loading:!1}),e.emit("tlError",{message:r})},click(){const t=e.props.event??e.state.loadedEvent;t&&e.emit("tlClick",{eventId:t.id})}})}),M=o({tag:"tl-event-list",docs:"What the channel is selling, as a grid of event cards, optionally narrowed to one category.",category:"discovery",runtimes:["web","native"],tokens:["error","font-family","foreground","muted","muted-foreground","radius-lg","radius-sm","secondary","spacing-4","spacing-6","spacing-8"],sdkMethods:["events.list"],props:{limit:{type:"number",attr:"limit",default:12,docs:"Maximum number of events to display"},category:{type:"string",tsType:"string | undefined",attr:"category",docs:"Category filter"},columns:{type:"number",attr:"columns",default:3,docs:"Columns for grid layout (1, 2, 3, or 4)"}},events:{tlEventClick:{detail:"{ eventId: string; }",docs:"Emitted when an event card is clicked"}},strings:{errorTitle:"Error loading events",emptyTitle:"No events available",emptyMessage:"Check back later for upcoming events.",loadFailed:"Failed to load events",noListing:"Events are not available"},statuses:["loading","error","empty","ready"],state:()=>({events:[],loading:!0,error:null}),mount:e=>{e.actions.load()},status:({state:e})=>e.loading?"loading":e.error?"error":0===e.events.length?"empty":"ready",derive:({state:e,props:t})=>({events:e.events,columns:Math.min(Math.max(t.columns,1),4)}),actions:e=>({async load(){try{e.setState({loading:!0,error:null});const t=(await e.whenClient()).getEventsManager();if(!t?.list)throw new TypeError(e.strings.noListing);const r=await t.list({limit:e.props.limit,category:e.props.category});e.setState({events:r?.items??[]})}catch(t){e.setState({error:t instanceof Error?t.message:e.strings.loadFailed})}finally{e.setState({loading:!1})}}})}),A=o({tag:"tl-login",docs:"Magic-link sign-in: an email in, a link or a six-digit code back, and a session. No password is ever handled.",category:"account",runtimes:["web","native"],tokens:["background","border","error","font-family","font-family-mono","foreground","muted-foreground","primary","primary-foreground","radius-lg","radius-md","secondary","spacing-3","spacing-4","spacing-6","success"],sdkMethods:["auth.requestMagicLink","auth.exchange","auth.logout","on"],props:{heading:{type:"string",attr:"heading",default:"Sign in",docs:"Heading for the email step."},allowCodeEntry:{type:"boolean",attr:"allow-code-entry",default:!0,docs:'Offer a "enter the code" path alongside the emailed link (default true).'}},events:{tlAuthChanged:{detail:"TlAuthChanged",docs:"signed in or out ({ customer, authenticated })"},tlMagicLinkSent:{detail:"{ email: string; }",docs:"a link was requested for an email"},tlError:{detail:"{ message: string; }",docs:"request or code exchange failed"}},strings:{signedInPrefix:"Signed in as ",fallbackAccount:"your account",signOut:"Sign out",verifyingTitle:"Signing you in…",verifyingLead:"Just a moment.",sentTitle:"Check your inbox",sentLeadBefore:"We've sent a sign-in link to ",sentLeadAfter:". Open it on this device to continue.",sentAgain:"Sent again. Check your inbox.",resendLink:"Resend link",resending:"Sending…",enterCodeInstead:"Enter the code instead",differentEmail:"Use a different email",codeTitle:"Enter your code",codeLeadBefore:"Type the 6-digit code from the email we sent to ",codeLeadAfter:".",codeLabel:"Code",codePlaceholder:"123456",codeSubmit:"Sign in",checking:"Checking…",back:"Back",emailLead:"Enter your email and we'll send you a secure sign-in link. No password needed.",emailLabel:"Email address",emailPlaceholder:"you@example.com",emailSubmit:"Email me a sign-in link",sendingLink:"Sending link…",enterEmail:"Enter your email address",enterCode:"Enter the code from your email",codeRejected:"That code did not work. Check it and try again, or request a new link.",requestFailed:"Could not send your sign-in link",unavailable:"Sign-in is not available right now",unsupported:"Sign-in is not available with this SDK"},statuses:["email","sent","code","verifying","signed-in"],state:()=>({phase:"email",email:"",code:"",busy:!1,error:null,notice:null,customer:null,authAvailable:!1,urlCodeUsed:!1}),mount:e=>{(async()=>{let t;try{t=await e.whenClient()}catch{if(!e.active())return;return void e.actions.connectFailed()}if(!e.active())return;const r=t.getAuthManager?.();if(!r)return void e.actions.unsupported();e.setState({authAvailable:!0}),e.actions.syncFromClient();for(const r of["auth:changed","session:changed"]){const n=t.on?.(r,(()=>e.actions.syncFromClient()));"function"==typeof n&&e.onTeardown(n)}const n=e.state.urlCodeUsed?null:e.query.get("code");n&&(e.setState({urlCodeUsed:!0}),r.authenticated||await e.actions.exchange(n))})()},status:({state:e})=>e.phase,derive:({state:e,strings:t,props:r})=>({signedInEmail:e.customer?.email??t.fallbackAccount,inputsDisabled:e.busy||!e.authAvailable,emailSubmitLabel:e.busy?t.sendingLink:t.emailSubmit,resendLabel:e.busy?t.resending:t.resendLink,codeSubmitLabel:e.busy?t.checking:t.codeSubmit,showCodeEntry:r.allowCodeEntry}),actions:e=>{const t=()=>e.optionalClient()?.getAuthManager?.()??null,r={setEmail(t){e.setState({email:t,error:null})},setCode(t){e.setState({code:t,error:null})},async requestLink(r=!1){const n=e.state.email.trim();if(!n)return void e.setState({error:e.strings.enterEmail});const o=t();if(o){e.setState({busy:!0,error:null,notice:null});try{await o.requestMagicLink({email:n}),e.setState({phase:"sent",notice:r?e.strings.sentAgain:null}),e.emit("tlMagicLinkSent",{email:n})}catch(t){const r=y(t,e.strings.requestFailed);e.setState({error:r}),e.emit("tlError",{message:r})}finally{e.setState({busy:!1})}}},async submitCode(){await r.exchange(e.state.code.trim())},async exchange(r){if(!r)return void e.setState({error:e.strings.enterCode});const n=t();if(!n)return;const o=e.state.phase;e.setState({busy:!0,error:null,phase:"verifying"});try{const t=await n.exchange(r),o=n.customer??t?.customer??null;e.setState({customer:o,phase:"signed-in",code:""}),e.emit("tlAuthChanged",{customer:o,authenticated:!0})}catch{e.setState({phase:"verifying"===o||"email"===o?"email":"code",error:e.strings.codeRejected}),e.emit("tlError",{message:e.strings.codeRejected})}finally{e.setState({busy:!1})}},async signOut(){const r=t();if(r){e.setState({busy:!0});try{await r.logout()}catch{}finally{e.setState({busy:!1,customer:null,phase:"email"}),e.emit("tlAuthChanged",{customer:null,authenticated:!1})}}},goTo(t){e.setState({phase:t})},syncFromClient(){const r=t();r&&(r.authenticated?e.setState({customer:r.customer??null,phase:"signed-in"}):"signed-in"===e.state.phase&&e.setState({customer:null,phase:"email"}))},connectFailed(){e.setState({error:e.strings.unavailable})},unsupported(){e.setState({error:e.strings.unsupported})}};return r}});function F(e){return!(!e||"object"!=typeof e||401!==e.status&&403!==e.status&&"NO_SESSION"!==e.code&&"NOT_AUTHENTICATED"!==e.code)}const x=o({tag:"tl-promo-code",docs:"Redeem a presale or promo code for the current cart.",category:"purchase",runtimes:["web"],tokens:["background","border","error","font-family","font-family-mono","foreground","muted","muted-foreground","primary","primary-foreground","radius-md","spacing-2","spacing-3","spacing-4","success"],sdkMethods:["cart.get","presale.redeem"],props:{placeholder:{type:"string",attr:"placeholder",default:"Promo or presale code",docs:"Input placeholder."},buttonLabel:{type:"string",attr:"button-label",default:"Apply",docs:"Apply button label."}},events:{tlPromoApplied:{detail:"TlPromoApplied",docs:""},tlError:{detail:"{ message: string; }",docs:""}},strings:{applying:"Applying…",codePrefix:"Code ",appliedSuffix:" applied",alreadyHeldSuffix:" was already applied",useDifferent:"Use a different code",enterCode:"Enter a code",notAvailable:"Promo codes are not available",signIn:"Sign in to use this code",rejected:"That code could not be applied"},statuses:["idle","applied"],state:()=>({code:"",applying:!1,applied:null,error:null}),status:({state:e})=>e.applied?"applied":"idle",derive:({state:e,props:t,strings:r})=>({actionLabel:e.applying?r.applying:t.buttonLabel,disabled:e.applying,appliedCode:e.applied?.code??null,appliedSuffix:e.applied?.alreadyHeld?r.alreadyHeldSuffix:r.appliedSuffix}),actions:e=>({setCode(t){e.setState({code:t,error:null})},async apply(){const t=e.state.code.trim();if(t){e.setState({applying:!0,error:null});try{const r=await e.whenClient(),n=r.getPresaleManager?.();if(!n)throw new Error(e.strings.notAvailable);const o=await n.redeem(t),a=await(r.getCartManager?.()?.get?.().catch((()=>null)))??null,s={code:t.toUpperCase(),...o,cart:a};e.setState({applied:s,code:""}),e.emit("tlPromoApplied",s)}catch(t){const r=F(t)?e.strings.signIn:t instanceof Error&&t.message?t.message:e.strings.rejected;e.setState({error:r}),e.emit("tlError",{message:r})}finally{e.setState({applying:!1})}}else e.setState({error:e.strings.enterCode})},reset(){e.setState({applied:null,error:null})}})}),$=o({tag:"tl-my-orders",docs:"The signed-in customer's orders: event, date, ticket count, total and status, each row expanding to its tickets.",category:"account",runtimes:["web","native"],tokens:["background","border","error","error-foreground","font-family","foreground","muted-foreground","primary","primary-foreground","radius-lg","secondary","secondary-foreground","spacing-1","spacing-3","spacing-4","spacing-8","success","success-foreground","warning","warning-foreground"],sdkMethods:["orders.mine","auth.authenticated","on"],props:{emptyMessage:{type:"string",attr:"empty-message",default:"When you buy tickets they'll show up here, ready to view and download.",docs:"Copy for the empty state."},columns:{type:"number",attr:"columns",default:2,docs:"Columns for the expanded ticket grid."}},events:{tlOrderSelect:{detail:"{ orderId: string; }",docs:"a row was expanded ({ orderId })"},tlError:{detail:"{ message: string; }",docs:"the orders could not be loaded"}},strings:{signInTitle:"Sign in to see your orders",signInText:"Your tickets and order history live in your account.",errorTitle:"Could not load your orders",emptyTitle:"No orders yet",orderPrefix:"Order ",unnamedEvent:"Order",ticketSingular:"ticket",ticketPlural:"tickets",unavailable:"Orders are not available right now",noOrdersManager:"Orders are not available",loadFailed:"Failed to load your orders"},statuses:["loading","signed-out","error","empty","ready"],state:()=>({orders:[],authenticated:!1,loading:!0,error:null,expandedId:null}),mount:e=>{(async()=>{let t;try{t=await e.whenClient()}catch{if(!e.active())return;return void e.actions.connectFailed()}if(!e.active())return;const r=t.getAuthManager?.();e.setState({authenticated:!r||r.authenticated});for(const r of["auth:changed","session:changed"]){const n=t.on?.(r,(()=>e.actions.syncAuth()));"function"==typeof n&&e.onTeardown(n)}e.state.authenticated?await e.actions.load():e.setState({loading:!1})})()},status:({state:e})=>e.loading?"loading":e.authenticated?e.error?"error":0===e.orders.length?"empty":"ready":"signed-out",derive:({state:e,strings:t})=>({rows:e.orders.map((r=>{const n=function(e){return g(e).reduce(((e,t)=>e+(Number(t.quantity)||0)),0)||e.tickets?.length||0}(r);return{id:r.id,numberLabel:`${t.orderPrefix}${r.orderNumber}`,eventName:m(r)??t.unnamedEvent,dateLabel:r.createdAt?(a=r.createdAt,new Date(a).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"})):null,countLabel:`${n} ${1===n?t.ticketSingular:t.ticketPlural}`,totalLabel:u(r.total,r.currency),statusLabel:(o=r.status,o?o.replace(/_/g," ").replace(/^\w/,(e=>e.toUpperCase())):""),statusTone:p(r.status),expanded:e.expandedId===r.id};var o,a}))}),actions:e=>{const t={async load(){const t=e.optionalClient();if(t)try{e.setState({loading:!0,error:null});const r=t.getOrdersManager?.();if(!r)throw new Error(e.strings.noOrdersManager);const n=await r.mine();e.setState({orders:n??[],authenticated:!0})}catch(t){if(F(t))e.setState({authenticated:!1,orders:[]});else{const r=y(t,e.strings.loadFailed);e.setState({error:r}),e.emit("tlError",{message:r})}}finally{e.setState({loading:!1})}},syncAuth(){const r=e.optionalClient()?.getAuthManager?.();if(!r)return;const n=e.state.authenticated;e.setState({authenticated:r.authenticated}),r.authenticated&&!n?t.load():!r.authenticated&&n&&e.setState({orders:[],expandedId:null})},toggle(t){const r=e.state.expandedId!==t;e.setState({expandedId:r?t:null}),r&&e.emit("tlOrderSelect",{orderId:t})},connectFailed(){e.setState({loading:!1,error:e.strings.unavailable})}};return t}});function B(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function P(e){return e.toDateString()}function q(e){const t=new Date(e),r=t.getDay();return t.setDate(t.getDate()-(0===r?6:r-1)),t.setHours(0,0,0,0),t}function R(e){return new Date(e.getFullYear(),e.getMonth(),1)}const N=e=>new Date(e.startsAt).getTime(),z=(e,t)=>N(e)-N(t),G=e=>!!e.soldOut||0===e.availableCapacity;function W(e){const t=new Map;for(const r of e){const e=P(B(new Date(r.startsAt))),n=t.get(e);n?n.push(r):t.set(e,[r])}return t}function j(e){if(!e.length)return null;let t=new Date(e[0].startsAt),r=new Date(e[0].startsAt);for(const n of e){const e=new Date(n.startsAt);e<t&&(t=e),e>r&&(r=e)}return{first:t,last:r}}function _(e){const t=j(e);return!!t&&t.first.getMonth()===t.last.getMonth()&&t.first.getFullYear()===t.last.getFullYear()}function U(e){if(!e.length)return null;const t=B(new Date),r=Array.from(W(e).keys()).sort();let n=null;for(const e of r){const r=new Date(e);if(r>=t){n=r;break}}return!n&&r.length&&(n=new Date(r[r.length-1])),n?{selectedDate:n,currentMonth:R(n)}:null}function Y(e){return e.toLocaleDateString("en-GB",{weekday:"long",day:"numeric",month:"long",year:"numeric"})}function H(e){return new Date(e).toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"})}function Q(e){return{id:e.id,startsAt:e.startsAt,endsAt:e.endsAt,status:e.availabilityStatus,availableCapacity:e.availableCapacity,soldOut:"sold_out"===e.availabilityStatus}}const K=o({tag:"tl-occurrence-selector",docs:"A smart occurrence selector component that fetches and displays event occurrences from the Ticketlayer API.",category:"discovery",runtimes:["web"],tokens:["background","border","font-family","foreground","muted","muted-foreground","primary","primary-foreground","radius-md"],sdkMethods:["events.get"],props:{eventId:{type:"string",attr:"event-id",required:!0,docs:"Event ID to fetch occurrences for"},displayMode:{type:"string",tsType:'"calendar" | "list" | "slots" | undefined',attr:"display-mode",docs:"Force a specific display mode (auto-detected if not set)"},orientation:{type:"string",tsType:'"auto" | "horizontal" | "vertical"',attr:"orientation",default:"auto",docs:"Layout orientation (auto = horizontal on desktop, vertical on mobile)"},theme:{type:"object",tsType:"TlOccurrenceSelectorTheme | undefined",attr:null,docs:"Theme configuration"}},events:{tlSelect:{detail:"{ occurrence: TlOccurrence; }",docs:"Emitted when an occurrence is selected"}},strings:{noEventId:"Event ID is required",noClient:"SDK not initialized.",notFound:"Event not found",loadFailed:"Failed to load occurrences",empty:"No dates available for this event.",retry:"Retry",soldOut:"Sold Out",available:"available",selectADate:"Select a date to see available times",previousMonth:"Previous month",nextMonth:"Next month",weekdayMon:"Mon",weekdayTue:"Tue",weekdayWed:"Wed",weekdayThu:"Thu",weekdayFri:"Fri",weekdaySat:"Sat",weekdaySun:"Sun"},statuses:["loading","error","empty","ready"],state:()=>({loading:!0,error:null,occurrences:[],currentMonth:new Date,selectedDate:null,containerWidth:0}),mount:e=>{e.props.eventId?(async()=>{try{await e.whenClient()}catch(t){if(!e.active())return;return void e.actions.loadFailed(t instanceof Error?t.message:e.strings.noClient)}e.active()&&await e.actions.load()})():e.actions.loadFailed(e.strings.noEventId)},status:({state:e})=>e.loading?"loading":e.error?"error":0===e.occurrences.length?"empty":"ready",derive:({state:e,props:t,strings:r})=>{const{occurrences:n,selectedDate:o}=e,a=W(n),s=j(n),i=t.displayMode?t.displayMode:n.length<=5?"list":1===a.size?"slots":"calendar",d="horizontal"===t.orientation||"vertical"!==t.orientation&&e.containerWidth>=768,l=e=>{const t=G(e),n=H(e.startsAt);return{id:e.id,dateLabel:Y(new Date(e.startsAt)),timeLabel:e.endsAt?`${n} - ${H(e.endsAt)}`:n,startLabel:n,soldOut:t,capacityLabel:e.availableCapacity?`${e.availableCapacity} ${r.available}`:null,statusKind:t?"soldOut":e.availableCapacity?"available":"arrow"}},c=[...n].sort(z),u=o?P(o):null,g=u?[...a.get(u)??[]].sort(z):[],m=B(new Date),p=s?R(s.first):null,y=s?R(s.last):null,f=function(e,t){const r=[];if(function(e){const t=j(e);if(!t)return!1;const r=new Date(q(t.first));return r.setDate(r.getDate()+6),r.setHours(23,59,59,999),t.last<=r}(e)){const t=j(e);if(!t)return r;const n=q(t.first);for(let e=0;e<7;e+=1)r.push(new Date(n)),n.setDate(n.getDate()+1);return r}const n=t.getFullYear(),o=t.getMonth(),a=new Date(n,o,1),s=new Date(n,o+1,0),i=a.getDay(),d=new Date(a);d.setDate(d.getDate()-(0===i?6:i-1));const l=s.getDay(),c=new Date(s);c.setDate(c.getDate()+(0===l?0:7-l));const u=new Date(d);for(;u<=c;)r.push(new Date(u)),u.setDate(u.getDate()+1);return r}(n,e.currentMonth).map((t=>{const r=P(t),n=a.get(r),o=!!n,s=o&&n.every(G),i=t.getMonth()!==e.currentMonth.getMonth(),d=u===r,l=r===P(m),c=t<m;return{key:r,dayNumber:String(t.getDate()),otherMonth:i,hasOccurrences:o,soldOut:s,selected:d,today:l,past:c,selectable:o,className:["calendar-day",i?"other-month":"",o?"has-occurrences":"",s?"sold-out":"",d?"selected":"",l?"today":"",c?"past":""].filter(Boolean).join(" ")}}));return{mode:i,horizontal:d,viewClass:"calendar-view "+(d?"horizontal":"vertical"),rows:n.map(l),slots:c.map(l),slotsDateLabel:c.length?Y(new Date(c[0].startsAt)):null,monthLabel:(h=e.currentMonth,h.toLocaleDateString("en-GB",{month:"long",year:"numeric"})),showMonthNav:!_(n),canGoBack:!!p&&e.currentMonth>p,canGoForward:!!y&&e.currentMonth<y,weekdayLabels:[r.weekdayMon,r.weekdayTue,r.weekdayWed,r.weekdayThu,r.weekdayFri,r.weekdaySat,r.weekdaySun],days:f,selectedDateLabel:o&&g.length?Y(o):null,selectedSlots:g.map(l)};var h},actions:e=>({async load(){e.setState({loading:!0,error:null});try{const t=e.client().getEventsManager(),r=t.get?.bind(t);if(!r)throw new TypeError("eventsManager.get is not a function");const n=await r(e.props.eventId);if(!n)throw new Error(e.strings.notFound);const o=(n.occurrences??[]).map(Q);e.setState({occurrences:o,...U(o)??{}})}catch(t){e.setState({error:t instanceof Error?t.message:e.strings.loadFailed,occurrences:[]})}finally{e.setState({loading:!1})}},loadFailed(t){e.setState({error:t,loading:!1})},select(t){const r=e.state.occurrences.find((e=>e.id===t));r&&!G(r)&&e.emit("tlSelect",{occurrence:r})},selectDate(t){if(!W(e.state.occurrences).has(t))return;const r=new Date(t);if(Number.isNaN(r.getTime()))return;const{currentMonth:n}=e.state,o=r.getMonth()!==n.getMonth()||r.getFullYear()!==n.getFullYear();e.setState({selectedDate:r,...o?{currentMonth:R(r)}:{}})},previousMonth(){const t=j(e.state.occurrences);if(!t)return;const r=new Date(e.state.currentMonth);r.setMonth(r.getMonth()-1),r>=R(t.first)&&e.setState({currentMonth:r})},nextMonth(){const t=j(e.state.occurrences);if(!t)return;const r=new Date(e.state.currentMonth);r.setMonth(r.getMonth()+1),r<=R(t.last)&&e.setState({currentMonth:r})},resized(t){t!==e.state.containerWidth&&e.setState({containerWidth:t})}})}),J=o({tag:"tl-order-confirmation",docs:"The thank-you block: order reference, email, event and date, the ticket lines, the money rows and the tickets.",category:"checkout",runtimes:["web","native"],tokens:["border","error","font-family","font-family-mono","foreground","muted","muted-foreground","radius-lg","radius-md","secondary","spacing-1","spacing-2","spacing-3","spacing-4","spacing-6","success","success-foreground"],sdkMethods:["orders.get","events.list","events.get","auth.customer","on"],props:{orderId:{type:"string",tsType:"string | undefined",attr:"order-id",docs:"The order to show. Falls back to `?orderId=` in the page URL."},customerEmail:{type:"string",tsType:"string | undefined",attr:"customer-email",docs:"Email to show when the order view carries none (a host that collected it at checkout)."},showTickets:{type:"boolean",attr:"show-tickets",default:!0,docs:"Mount tl-order-tickets under the summary (default true)."},columns:{type:"number",attr:"columns",default:2,docs:"Columns for the ticket grid."}},events:{tlOrderLoaded:{detail:"{ order: TlOrderData; }",docs:"the order was loaded"},tlError:{detail:"{ message: string; }",docs:"the order could not be loaded"}},strings:{paymentFailedTitle:"Payment not completed",paymentFailedLead:"Your payment wasn't completed. Your cart is still saved, so you can try again.",title:"You're going!",leadPrefix:"Order ",leadSuffix:" is confirmed. Your tickets are on their way to your email.",leadGeneric:"Your order is confirmed. Your tickets are on their way to your email.",errorPrefix:"We couldn't load your order details yet. ",rowReference:"Order reference",rowEmail:"Email",rowEvent:"Event",rowDate:"Date",subtotalRow:"Subtotal",taxRow:"Tax",discountRow:"Discount",totalRow:"Total",ticketsTitle:"Your tickets",ticketsHint:"Show these QR codes at the door for entry. Use Download PDF on a ticket to save it.",noOrdersManager:"Orders are not available",notFound:"Order not found",loadFailed:"Failed to load your order"},statuses:["payment-failed","idle","loading","ready"],state:()=>({order:null,resolvedOrderId:null,loading:!1,error:null,paymentFailed:!1,occurrence:null,signedInCustomer:null}),mount:e=>{(async()=>{const t=e.query.get("redirect_status");e.setState({paymentFailed:!!t&&"succeeded"!==t,resolvedOrderId:e.props.orderId||e.query.get("orderId")||null});const r=e.state.resolvedOrderId&&!e.state.paymentFailed?e.actions.load():Promise.resolve();let n=null;try{n=await e.whenClient()}catch{n=null}if(n&&e.active()){const t=n.on?.("checkout:completed",(t=>{e.actions.checkoutCompleted(t)}));"function"==typeof t&&e.onTeardown(t)}await r})()},status:({state:e})=>e.paymentFailed?"payment-failed":e.resolvedOrderId||e.order?e.loading?"loading":"ready":"idle",derive:({state:e,props:t,strings:r})=>{const n=e.order,o=function(e){const t=e||{},r=Array.isArray(t.items)?t.items:[],n=r.filter((e=>"fee"===e.type)),o=r.filter((e=>"discount"===e.type)),a=g(t),s=n.length?n.reduce(((e,t)=>e+(d(t.subtotal)??0)),0):null,c=s??d(t.totalFees)??0,u=d(t.subtotal),m=a.length?a.reduce(((e,t)=>e+(d(t.subtotal)??0)),0):(u??0)-c,p=o.length?o.reduce(((e,t)=>e+Math.abs(d(t.subtotal)??0)),0):null,y=d(t.totalDiscounts)??p??0,f=d(t.totalTax)??0,h=n.some((e=>"string"==typeof e.name&&!!e.name));return{currency:t.currency||"GBP",subtotal:m,fees:c,feeLabel:n.map((e=>e.name)).find((e=>!!e))||i,showFee:l(s??d(t.totalFees),h),tax:f,discount:y,total:d(t.total)??m+c+f-y}}(n),a=o.currency,s=t.customerEmail||function(e,t){const r=e?.customerEmail||e?.customer?.email;if(r)return r;const n=t;return n?.email||null}(n,e.signedInCustomer),c=e.occurrence?.eventName||(n?m(n):null),p=e.occurrence?.startsAt,y=[];var f;return n&&y.push({label:r.rowReference,value:n.orderNumber,reference:!0}),s&&y.push({label:r.rowEmail,value:s,reference:!1}),c&&y.push({label:r.rowEvent,value:c,reference:!1}),p&&y.push({label:r.rowDate,value:(f=p,new Date(f).toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit"})),reference:!1}),{leadText:n?.orderNumber?`${r.leadPrefix}${n.orderNumber}${r.leadSuffix}`:r.leadGeneric,rows:y,lines:n?g(n).map((e=>({label:`${e.quantity} x ${e.name}`,priceLabel:u(e.subtotal,n.currency)}))):[],totals:o,subtotalLabel:u(o.subtotal,a),feeAmountLabel:u(o.fees,a),taxLabel:u(o.tax,a),discountLabel:u(o.discount,a),totalLabel:u(o.total,a),showTaxRow:o.tax>0,showDiscountRow:o.discount>0,showSummary:!!n&&Array.isArray(n.items),showError:!!e.error&&!n,showTickets:t.showTickets&&!!n,ticketsOrderId:n?.id||e.resolvedOrderId||""}},actions:e=>{const t={async load(){const t=e.state.resolvedOrderId;if(t)try{e.setState({loading:!e.state.order,error:null});const r=await e.whenClient(),n=r.getOrdersManager?.();if(!n)throw new Error(e.strings.noOrdersManager);const o=await n.get(t);if(!o)throw new Error(e.strings.notFound);e.setState({order:o,signedInCustomer:r.getAuthManager?.()?.customer??null}),e.emit("tlOrderLoaded",{order:o}),(async(t,r)=>{const n=r.tickets?.find((e=>e.eventOccurrenceId))?.eventOccurrenceId;if(n)try{const o=await async function(e,t,r=12){const n=e.getEventsManager();if(!n?.list||!n.get)return null;const o=await n.list({limit:r}),a=(o?.items??[]).slice(0,r);for(const e of a){const r=await n.get(e.id).catch((()=>null)),o=r?.occurrences?.find((e=>e.id===t));if(o)return{eventId:r?.id??e.id,eventName:r?.name??e.name??"",startsAt:o.startsAt??null}}return null}(t,n);o&&e.state.order?.id===r.id&&e.setState({occurrence:o})}catch{}})(r,o)}catch(t){const r=y(t,e.strings.loadFailed);e.setState({error:r}),e.emit("tlError",{message:r})}finally{e.setState({loading:!1})}},orderIdChanged(){e.setState({resolvedOrderId:e.props.orderId||e.query.get("orderId")||null}),t.load()},checkoutCompleted(r){r?.id&&(e.setState({paymentFailed:!1,order:r,resolvedOrderId:r.id}),e.emit("tlOrderLoaded",{order:r}),t.load())}};return t}}),V=[1e3,1500,2e3,3e3,4e3,5e3,6e3,8e3,1e4,12e3],Z=o({tag:"tl-order-tickets",docs:"Every ticket in an order as a scannable card, waiting out issuance rather than reporting an empty order as empty.",category:"tickets",runtimes:["web","native"],tokens:["border","error","font-family","muted-foreground","primary","spacing-2","spacing-4","spacing-6"],sdkMethods:["orders.get"],props:{orderId:{type:"string",attr:"order-id",required:!0,docs:"The order whose tickets to show."},columns:{type:"number",attr:"columns",default:2,docs:"Columns in the grid (default 2)."}},events:{},strings:{loading:"Loading tickets…",preparing:"Preparing your tickets…",delayed:"Your tickets are taking longer than usual. They will be emailed to you as soon as they are ready.",notAvailable:"Tickets are not available",loadFailed:"Failed to load tickets"},statuses:["loading","error","issuing","delayed","ready"],state:()=>({tickets:[],loading:!0,error:null,issuing:!1}),mount:e=>{e.onTeardown((()=>e.actions.stopPolling())),e.actions.load()},status:({state:e})=>e.loading?"loading":e.error?"error":e.tickets.length>0?"ready":e.issuing?"issuing":"delayed",derive:({state:e,props:t})=>({tickets:e.tickets,columns:t.columns,orderId:t.orderId}),actions:e=>{let t=0,r=0;const n={async load(){try{e.setState({error:null});const o=await e.whenClient(),a=o.getOrdersManager?.();if(!a)throw new Error(e.strings.notAvailable);const s=await a.get(e.props.orderId),i=s?.tickets??[];if(e.setState({tickets:i}),i.length>0)e.setState({issuing:!1}),n.stopPolling();else{const o=V[r];if(e.setState({issuing:void 0!==o}),void 0!==o){r+=1,n.stopPolling();const a=t;e.after(o,(()=>{a===t&&n.load()}))}}}catch(t){n.stopPolling(),e.setState({issuing:!1,error:t instanceof Error?t.message:e.strings.loadFailed})}finally{e.setState({loading:!1})}},orderIdChanged(){n.stopPolling(),r=0,e.setState({tickets:[],issuing:!1}),n.load()},stopPolling(){t+=1}};return n}}),X=e=>function(e,t=null){const r=(e||[]).reduce(((e,t)=>e+(d(t.price)??0)*(Math.max(0,Math.trunc(t.quantity||0))||0)),0),n=t?d(t.amount):null;return{subtotal:r,fees:n??0,total:r+(n??0),showFee:!!t&&l(n,!!t?.label),feeLabel:t?.label||i}}(e.state.ticketTypes.map((t=>({price:t.price,quantity:e.state.quantities[t.id]||0}))),e.state.feeQuote),ee=o({tag:"tl-ticket-selector",docs:"Pick quantities of the ticket types on sale for one occurrence, and add them to the cart.",category:"purchase",runtimes:["web","native"],tokens:["background","border","border-hover","error","error-bg","font-family","foreground","muted","muted-foreground","primary","primary-foreground","radius-md","radius-sm","spacing-1","spacing-2","spacing-3","spacing-4","success","warning","warning-bg"],sdkMethods:["cart.addItem","events.getTicketTypes"],props:{eventId:{type:"string",attr:"event-id",required:!0,docs:"Event ID"},occurrenceId:{type:"string",attr:"occurrence-id",required:!0,docs:"Occurrence ID"},showButton:{type:"boolean",attr:"show-button",default:!0,docs:"Show add to cart button"},buttonLabel:{type:"string",attr:"button-label",default:"Add to Cart",docs:"Button label"}},events:{tlAddToCart:{detail:"{ items: AddToCartItem[]; }",docs:"Emitted when items are added to cart"},tlQuantityChange:{detail:"{ ticketTypeId: string; quantity: number; total: number; }",docs:"Emitted when quantity changes"},tlError:{detail:"{ message: string; }",docs:"Emitted on error"}},strings:{selectTickets:"Select Tickets",adding:"Adding...",added:"Added to cart!",limited:"Limited",soldOut:"Sold Out",ticketsRow:"Tickets",totalRow:"Total",decrease:"Decrease quantity",increase:"Increase quantity",loadFailed:"Failed to load tickets",addFailed:"Failed to add to cart",noClient:"SDK not initialized."},statuses:["loading","error","ready"],state:()=>({ticketTypes:[],quantities:{},loading:!0,error:null,adding:!1,addSuccess:!1,feeQuote:null}),mount:e=>{e.props.eventId&&e.props.occurrenceId&&(async()=>{try{if(await e.whenClient(),!e.active())return;await e.actions.load()}catch(t){if(!e.active())return;e.actions.connectFailed(t instanceof Error?t.message:e.strings.noClient)}})()},status:({state:e})=>e.loading?"loading":e.error?"error":"ready",derive:e=>{const{state:t,strings:r,props:n,formatMoney:o}=e,a=X(e),s=(e=>Object.values(e.quantities).reduce(((e,t)=>e+t),0))(t),i=t.ticketTypes[0]?.currency;return{rows:t.ticketTypes.map((e=>{const r=t.quantities[e.id]||0,n="sold_out"===e.availabilityStatus;return{id:e.id,name:e.name,description:e.description??null,priceLabel:o(e.price,e.currency),quantity:r,soldOut:n,limited:"limited"===e.availabilityStatus,canDecrease:!n&&r>0,canIncrease:!n&&r<e.maxPerOrder}})),totals:a,totalItems:s,currency:i,subtotalLabel:o(a.subtotal,i),feeLabel:o(a.fees,i),totalLabel:o(a.total,i),showTotals:a.showFee&&s>0,actionLabel:t.adding?r.adding:0===s?r.selectTickets:`${n.buttonLabel} - ${o(a.total)}`,actionDisabled:0===s||t.adding}},actions:e=>({async load(){try{e.setState({loading:!0,error:null});const t=await e.client().getEventsManager().getTicketTypes(e.props.eventId,e.props.occurrenceId),r={};for(const e of t)r[e.id]=0;e.setState({ticketTypes:t,quantities:r})}catch(t){const r=t instanceof Error?t.message:e.strings.loadFailed;e.setState({error:r}),e.emit("tlError",{message:r})}finally{e.setState({loading:!1})}},changeQuantity(t,r){const n=e.state.ticketTypes.find((e=>e.id===t));if(!n)return;const o=Math.max(0,Math.min(n.maxPerOrder,(e.state.quantities[t]||0)+r));e.setState((e=>({quantities:{...e.quantities,[t]:o}}))),e.emit("tlQuantityChange",{ticketTypeId:t,quantity:o,total:X(e).total})},async addToCart(){const t=Object.entries(e.state.quantities).filter((([,e])=>e>0)).map((([e,t])=>({ticketTypeId:e,quantity:t})));if(0!==t.length){e.setState({adding:!0,addSuccess:!1});try{const r=e.optionalClient()?.getCartManager?.();if(r)for(const n of t)await r.addItem(n.ticketTypeId,n.quantity,e.props.occurrenceId);const n={};for(const t of e.state.ticketTypes)n[t.id]=0;e.setState({quantities:n,addSuccess:!0}),e.after(3e3,(()=>e.setState({addSuccess:!1}))),e.emit("tlAddToCart",{items:t})}catch(t){const r=t instanceof Error?t.message:e.strings.addFailed;e.setState({error:r}),e.emit("tlError",{message:r})}finally{e.setState({adding:!1})}}},setFeeQuote(t){e.setState({feeQuote:t})},connectFailed(t){e.setState({error:t||e.strings.noClient,loading:!1})}})});export{S as a,v as b,a as c,E as d,M as e,O as f,I as g,K as h,Z as i,k as j,D as k,A as l,$ as m,J as o,x as p,ee as t}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,c as i,h as s}from"./p-imfxp765.js";import{w as r,g as e}from"./p-CqhvfyKV.js";import{w as o}from"./p-Bdbb2lk5.js";import{c as n,l}from"./p-BwChnHVC.js";const a=class{constructor(s){t(this,s),this.tlAuthChanged=i(this,"tlAuthChanged"),this.tlMagicLinkSent=i(this,"tlMagicLinkSent"),this.tlError=i(this,"tlError"),this.heading="Sign in",this.allowCodeEntry=!0,this.element=n(l,{client:()=>e(),clientReady:()=>r(),query:o,emit:(t,i)=>this.forward(t,i)}),this.view=this.element.view,this.handleEmailInput=t=>{this.element.actions.setEmail(t.target.value)},this.handleCodeInput=t=>{this.element.actions.setCode(t.target.value)},this.handleEmailSubmit=t=>{t.preventDefault(),this.element.actions.requestLink()},this.handleCodeSubmit=t=>{t.preventDefault(),this.element.actions.submitCode()}}syncProps(){this.element.setProps({heading:this.heading,allowCodeEntry:this.allowCodeEntry})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((t=>{this.view=t}))),this.view=this.element.view,this.teardown=this.element.mount()}componentWillLoad(){return r().catch((()=>{}))}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(t,i){"tlAuthChanged"===t?this.tlAuthChanged.emit(i):"tlMagicLinkSent"===t?this.tlMagicLinkSent.emit(i):"tlError"===t&&this.tlError.emit(i)}renderError(){const t=this.view.state.error;return t?s("p",{class:"error",role:"alert"},t):null}render(){const{status:t,state:i,strings:r,derived:e}=this.view;return"signed-in"===t?s("div",{class:"login signed-in"},s("p",{class:"signed-in-text"},r.signedInPrefix,s("strong",null,e.signedInEmail)),s("button",{type:"button",class:"secondary",disabled:i.busy,onClick:()=>this.element.actions.signOut()},r.signOut)):"verifying"===t?s("div",{class:"login"},s("h2",{class:"title"},r.verifyingTitle),s("p",{class:"lead"},r.verifyingLead)):"sent"===t?s("div",{class:"login"},s("h2",{class:"title"},r.sentTitle),s("p",{class:"lead"},r.sentLeadBefore,s("strong",null,i.email),r.sentLeadAfter),i.notice&&s("p",{class:"notice"},i.notice),this.renderError(),s("div",{class:"actions"},s("button",{type:"button",class:"secondary",disabled:i.busy,onClick:()=>this.element.actions.requestLink(!0)},e.resendLabel),e.showCodeEntry&&s("button",{type:"button",class:"link",onClick:()=>this.element.actions.goTo("code")},r.enterCodeInstead),s("button",{type:"button",class:"link",onClick:()=>this.element.actions.goTo("email")},r.differentEmail))):"code"===t?s("form",{class:"login",onSubmit:this.handleCodeSubmit},s("h2",{class:"title"},r.codeTitle),s("p",{class:"lead"},r.codeLeadBefore,s("strong",null,i.email),r.codeLeadAfter),s("label",{class:"label",htmlFor:"tl-login-code"},r.codeLabel),s("input",{id:"tl-login-code",class:"input code-input",type:"text",inputmode:"numeric",autocomplete:"one-time-code",placeholder:r.codePlaceholder,value:i.code,disabled:i.busy,onInput:this.handleCodeInput}),this.renderError(),s("button",{type:"submit",class:"primary",disabled:i.busy},e.codeSubmitLabel),s("div",{class:"actions"},s("button",{type:"button",class:"link",onClick:()=>this.element.actions.requestLink(!0)},r.resendLink),s("button",{type:"button",class:"link",onClick:()=>this.element.actions.goTo("sent")},r.back))):s("form",{class:"login",onSubmit:this.handleEmailSubmit},s("h2",{class:"title"},this.heading),s("p",{class:"lead"},r.emailLead),s("label",{class:"label",htmlFor:"tl-login-email"},r.emailLabel),s("input",{id:"tl-login-email",class:"input",type:"email",autocomplete:"email",placeholder:r.emailPlaceholder,required:!0,value:i.email,disabled:e.inputsDisabled,onInput:this.handleEmailInput}),this.renderError(),s("button",{type:"submit",class:"primary",disabled:e.inputsDisabled},e.emailSubmitLabel))}static get watchers(){return{heading:[{syncProps:0}],allowCodeEntry:[{syncProps:0}]}}};a.style=":host{display:block;font-family:var(--tl-font-family);color:var(--tl-foreground)}.login{display:flex;flex-direction:column;gap:var(--tl-spacing-3);padding:var(--tl-spacing-6);background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius-lg)}.title{margin:0;font-size:1.25rem;font-weight:600}.lead{margin:0;font-size:0.875rem;color:var(--tl-muted-foreground)}.label{font-size:0.875rem;font-weight:500}.input{padding:var(--tl-spacing-3);font:inherit;font-size:0.9375rem;color:var(--tl-foreground);background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius-md)}.input:focus{outline:2px solid var(--tl-primary);outline-offset:1px}.code-input{font-family:var(--tl-font-family-mono);font-size:1.25rem;letter-spacing:0.25em;text-align:center}.primary,.secondary{padding:var(--tl-spacing-3) var(--tl-spacing-4);font:inherit;font-size:0.9375rem;font-weight:600;border-radius:var(--tl-radius-md);cursor:pointer}.primary{color:var(--tl-primary-foreground);background:var(--tl-primary);border:none}.primary:hover:not(:disabled){opacity:0.9}.secondary{color:var(--tl-foreground);background:var(--tl-secondary);border:1px solid var(--tl-border)}.primary:disabled,.secondary:disabled,.input:disabled{opacity:0.6;cursor:not-allowed}.link{padding:0;font:inherit;font-size:0.875rem;color:var(--tl-primary);background:none;border:none;cursor:pointer}.link:hover{text-decoration:underline}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tl-spacing-4)}.error{margin:0;font-size:0.8125rem;color:var(--tl-error)}.notice{margin:0;font-size:0.8125rem;color:var(--tl-success)}.signed-in{flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap}.signed-in-text{margin:0;font-size:0.875rem;overflow-wrap:anywhere}";export{a as tl_login}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,c as s,h as e,H as i}from"./p-imfxp765.js";import{w as r,g as o}from"./p-CqhvfyKV.js";import{c as a,k as c}from"./p-BwChnHVC.js";const h=class{constructor(e){t(this,e),this.tlComplete=s(this,"tlComplete"),this.tlError=s(this,"tlError"),this.tlClose=s(this,"tlClose"),this.disabled=!1,this.element=a(c,{client:()=>o(),clientReady:()=>r(),emit:(t,s)=>this.forward(t,s)}),this.view=this.element.view,this.handleClick=()=>{this.element.actions.activate()},this.handleKeyDown=t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.element.actions.activate())}}syncProps(){this.element.setProps({disabled:this.disabled})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((t=>{this.view=t}))),this.view=this.element.view,this.teardown=this.element.mount()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(t,s){"tlComplete"===t?this.tlComplete.emit(s):"tlError"===t?this.tlError.emit(s):"tlClose"===t&&this.tlClose.emit()}render(){const{interactive:t}=this.view.derived;return e(i,{key:"b261046c2627825258a5905662a79f436d713683",class:{"tl-checkout-wrapper":!0,"tl-checkout-wrapper--disabled":!t},onClick:this.handleClick,onKeyDown:this.handleKeyDown,role:"button",tabindex:t?0:-1,"aria-disabled":t?null:"true"},e("slot",{key:"5be08d5007a755e3d88a06ae89c08e082e4ba052"}))}static get watchers(){return{disabled:[{syncProps:0}]}}};h.style="tl-checkout-wrapper,.tl-checkout-wrapper{display:inline-block;cursor:pointer}tl-checkout-wrapper:focus,.tl-checkout-wrapper:focus{outline:2px solid var(--tl-ring);outline-offset:2px;border-radius:var(--tl-radius-sm)}tl-checkout-wrapper[disabled],tl-checkout-wrapper.tl-checkout-wrapper--disabled,.tl-checkout-wrapper--disabled{cursor:not-allowed;opacity:0.5}";export{h as tl_checkout_wrapper}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,c as e,h as a,a as s}from"./p-imfxp765.js";import{h as i,g as r}from"./p-CqhvfyKV.js";const o=class{constructor(a){t(this,a),this.tlReady=e(this,"tlReady"),this.tlLoad=e(this,"tlLoad"),this.tlError=e(this,"tlError"),this.tlSeatAdded=e(this,"tlSeatAdded"),this.tlSeatRemoved=e(this,"tlSeatRemoved"),this.tlCartChange=e(this,"tlCartChange"),this.hboUrl="https://checkout.ticketlayer.com",this.apiUrl="https://api.ticketlayer.com",this.height="600px",this.width="100%",this.isReady=!1,this.isLoading=!0,this.error=null,this.seatsInCart=[],this.postToIframe=(t,e={})=>{this.iframeRef?.contentWindow&&this.iframeRef.contentWindow.postMessage({type:t,...e},"*")},this.handleMessage=t=>{if(t.data&&t.data.type)switch(t.data.type){case"seatmap:ready":this.isReady=!0,this.isLoading=!1,this.tlReady.emit(),this.postToIframe("seatmap:set-cart-seats",{seatIds:this.seatsInCart});break;case"seatmap:loaded":this.tlLoad.emit({seatMapId:t.data.seatMapId});break;case"seatmap:error":this.error=t.data.error,this.isLoading=!1,this.tlError.emit({error:t.data.error});break;case"seatmap:add-seat":this.handleAddSeat(t.data.seatId,t.data.ticketTypeId);break;case"seatmap:remove-seat":this.handleRemoveSeat(t.data.seatId)}},this.handleAddSeat=async(t,e)=>{if(!i())return console.warn("[tl-seat-map] SDK not available, cannot add seat"),void this.postToIframe("seatmap:add-seat-failed",{seatId:t,error:"SDK not available"});try{const a=r();await a.getCartManager().addSeat(t,e,this.occurrenceId),this.postToIframe("seatmap:add-seat-confirmed",{seatId:t}),this.seatsInCart=[...this.seatsInCart,t],this.tlSeatAdded.emit({seatId:t,ticketTypeId:e}),this.tlCartChange.emit({seatIds:this.seatsInCart})}catch(e){console.error("[tl-seat-map] Failed to add seat:",e),this.postToIframe("seatmap:add-seat-failed",{seatId:t,error:"Failed to add seat"})}},this.handleRemoveSeat=async t=>{if(!i())return console.warn("[tl-seat-map] SDK not available, cannot remove seat"),void this.postToIframe("seatmap:remove-seat-failed",{seatId:t,error:"SDK not available"});try{const e=r();await e.getCartManager().removeSeat(t,this.occurrenceId),this.postToIframe("seatmap:remove-seat-confirmed",{seatId:t}),this.seatsInCart=this.seatsInCart.filter((e=>e!==t)),this.tlSeatRemoved.emit({seatId:t}),this.tlCartChange.emit({seatIds:this.seatsInCart})}catch(e){console.error("[tl-seat-map] Failed to remove seat:",e),this.postToIframe("seatmap:remove-seat-failed",{seatId:t,error:"Failed to remove seat"})}}}componentWillLoad(){window.addEventListener("message",this.handleMessage)}disconnectedCallback(){window.removeEventListener("message",this.handleMessage)}watchOccurrenceId(){this.isReady=!1,this.isLoading=!0,this.error=null}getIframeSrc(){return`${this.hboUrl}/embed/seats?occurrenceId=${encodeURIComponent(this.occurrenceId)}&apiUrl=${encodeURIComponent(this.apiUrl)}`}render(){return a("div",{key:"1c6a23b0aa021c58fa62c106a92a2e970ca7f6d1",class:"seat-map-container",style:{width:this.width,height:this.height}},this.isLoading&&a("div",{key:"4a09ddbdbd38eb68675bb320cf33fd3ead5974a4",class:"loading"},a("div",{key:"c622ba1f996427f0624cfda2c782abd49ec72e19",class:"spinner"}),a("p",{key:"802f42554fc238a1ddc0f8a0f6a6b0de89bdfb60"},"Loading seat map...")),this.error&&a("div",{key:"dde73e2430bad68c0a67306c0aa2b44810007cc5",class:"error"},a("p",{key:"392d51bbc47ab34eab5670aa7a2faf800dabe638",class:"error-title"},"Error"),a("p",{key:"fcf6810f767f34bf3490c1af21320d262bdb961b",class:"error-message"},this.error)),a("iframe",{key:"2333206fa6eb4fe6cdcbb1d30864d56d54583e1f",ref:t=>this.iframeRef=t,src:this.getIframeSrc(),class:{"seat-map-iframe":!0,hidden:this.isLoading||!!this.error},title:"Ticketlayer Seat Map",allow:"fullscreen"}))}get el(){return s(this)}static get watchers(){return{occurrenceId:[{watchOccurrenceId:0}]}}};o.style=":host{display:block;font-family:var(--tl-font-family)}.seat-map-container{position:relative;overflow:hidden;border-radius:var(--tl-radius-md);background:var(--tl-color-background)}.seat-map-iframe{width:100%;height:100%;border:none}.seat-map-iframe.hidden{display:none}.loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--tl-color-background);color:var(--tl-color-foreground);gap:1rem}.loading p{margin:0;font-size:0.875rem;color:var(--tl-color-muted-foreground)}.spinner{width:40px;height:40px;border:3px solid var(--tl-color-border);border-top-color:var(--tl-color-primary);border-radius:50%;animation:tl-seat-map-spin 1s linear infinite}@keyframes tl-seat-map-spin{to{transform:rotate(360deg)}}.error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--tl-color-background);color:var(--tl-color-error);padding:1.5rem;text-align:center}.error-title{margin:0 0 0.5rem;font-size:1.125rem;font-weight:600}.error-message{margin:0;font-size:0.875rem;opacity:0.9}";export{o as tl_seat_map}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,c as r,h as t,H as a}from"./p-imfxp765.js";import{w as o,g as i}from"./p-CqhvfyKV.js";import{c as d,a as s}from"./p-BwChnHVC.js";const n=class{constructor(t){e(this,t),this.tlOpen=r(this,"tlOpen"),this.tlClose=r(this,"tlClose"),this.side="right",this.heading="Your cart",this.open=!1,this.element=d(s,{client:()=>i(),clientReady:()=>o(),emit:(e,r)=>this.forward(e,r)}),this.view=this.element.view,this.onKey=e=>{"Escape"===e.key&&this.element.actions.setOpen(!1)},this.close=()=>this.element.actions.setOpen(!1)}syncProps(){this.element.setProps({side:this.side,heading:this.heading,open:this.open})}onOpenProp(e){this.element.setProps({open:e}),this.element.actions.openChanged(e)}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((e=>{this.view=e,this.open!==e.state.visible&&(this.open=e.state.visible)}))),this.view=this.element.view,this.teardown=this.element.mount(),"undefined"!=typeof document&&document.addEventListener("keydown",this.onKey)}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0,"undefined"!=typeof document&&document.removeEventListener("keydown",this.onKey)}forward(e,r){"tlOpen"===e?this.tlOpen.emit():"tlClose"===e&&this.tlClose.emit()}render(){const{strings:e,derived:r}=this.view;return t(a,{key:"ab41f3557cd8dd2b182bbfc3ed631bca7839d4a9"},t("div",{key:"70bbe63d1f9a2d449cb9ff970631c0c69a2eb757",class:{overlay:!0,"is-open":r.visible},onClick:e=>{e.target===e.currentTarget&&this.close()}},t("aside",{key:"eefe601ef6d2d8fc6bcfe62f1777d139875f875d",class:{panel:!0,[r.sideClass]:!0,"is-open":r.visible},role:"dialog","aria-modal":"true","aria-label":this.heading,"aria-hidden":r.ariaHidden},t("header",{key:"753d616182c3a903111dcaaf9b37f03186e17b48",class:"drawer-header"},t("h2",{key:"3e839ddbc2a2da1f4c8eb0c1e38c421de13426cd",class:"drawer-title"},this.heading),t("button",{key:"0d80fff5f425d6150fb391fd930161167b5f7d27",class:"close-btn",onClick:this.close,"aria-label":e.close},t("svg",{key:"7ffcbfb86f921d13deb5070140f21e4c7ca668f1",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},t("path",{key:"53d690ef2ac8d1d73038c53fa3aa0146bde0fb51",d:"M6 6l12 12M18 6L6 18","stroke-linecap":"round"})))),t("div",{key:"a782b1527cde89656e5f776311f848c446d92d48",class:"drawer-body"},t("tl-cart",{key:"3cd2c09f728cf14f0ea5b6ff4493b3e51e0dda62"})),t("footer",{key:"2df57237bbd548ae4af09098676d7e1315e11d71",class:"drawer-footer"},t("div",{key:"f02f5970181a2d83b70ac44188f00523a188771d",class:"pb-links"},t("a",{key:"d799da3a8c1c33b10a268500b02fda5523cd8bcf",href:e.privacyHref,target:"_blank",rel:"noopener noreferrer"},e.privacy),t("a",{key:"e928acb4c78cef8762d7ae8d258fa705554fd121",href:e.reportAbuseHref,target:"_blank",rel:"noopener noreferrer"},e.reportAbuse)),t("a",{key:"39278516b8da6dd14fe8bf0d0379c32ccfeb1d29",class:"pb-brand",href:e.brandHref,target:"_blank",rel:"noopener noreferrer"},t("span",{key:"96b2cb7ac0a73cd0c60fb7977999a00b4989177e",class:"pb-pre"},e.poweredBy),t("svg",{key:"b3950f83eab4a41e63a7919e6872a9ecdafab38b",width:"13",height:"13",viewBox:"0 0 50 50",fill:"none","aria-hidden":"true"},t("g",{key:"4c0c7ec66952f8a1956b3061f6bf2eb45c438989",transform:"matrix(0.0129 0 0 -0.0129 25.4752 25.4752)"},t("path",{key:"b1c9a143f0b2ad24da843323a4c1c550e9717d1b",fill:"currentColor",transform:"translate(-1781.5, -1759.4003)",d:"M 41 2973 c 1 -285 5 -734 9 -998 c 7 -444 9 -488 30 -580 c 81 -364 235 -634 512 -900 c 135 -130 263 -220 423 -299 c 156 -77 249 -109 409 -143 c 110 -23 142 -25 354 -24 c 230 1 310 8 427 37 c 241 60 453 162 640 309 c 82 64 252 234 317 315 c 210 264 340 604 355 926 l 6 121 l -69 6 c -86 8 -706 9 -755 1 l -36 -6 l -21 -125 c -34 -191 -98 -317 -236 -462 c -111 -115 -249 -198 -396 -238 c -98 -27 -356 -24 -463 5 c -100 27 -183 69 -273 137 c -226 173 -353 409 -354 660 c 0 44 -5 120 -10 169 c -6 49 -8 91 -6 94 c 3 3 65 -22 138 -55 c 140 -64 251 -103 358 -127 c 71 -17 295 -46 347 -46 l 33 0 l 0 434 l 0 434 l -67 7 c -147 14 -269 56 -393 133 c -222 139 -378 393 -397 648 l -6 71 l -75 7 c -41 3 -239 6 -439 6 l -363 0 l 1 -517 z"}))),t("span",{key:"053ca451a9674161799458e731862a93c954be23",class:"pb-word"},e.brand))))))}static get watchers(){return{side:[{syncProps:0}],heading:[{syncProps:0}],open:[{onOpenProp:0}]}}};n.style=":host{--_bg:var(--tl-background);--_fg:var(--tl-foreground);--_muted-fg:var(--tl-muted-foreground);--_muted:var(--tl-muted);--_border:var(--tl-border);--_font:var(--tl-font-family);font-family:var(--_font)}.overlay{position:fixed;inset:0;z-index:2147483640;background:rgba(8, 8, 16, 0.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);opacity:0;pointer-events:none;transition:opacity 0.25s ease}.overlay.is-open{opacity:1;pointer-events:auto}.panel{position:fixed;top:0;bottom:0;width:min(420px, 100%);display:flex;flex-direction:column;background:var(--_bg);color:var(--_fg);box-shadow:0 0 48px rgba(0, 0, 0, 0.5);transition:transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);will-change:transform}.panel--right{right:0;border-left:1px solid var(--_border);transform:translateX(100%)}.panel--left{left:0;border-right:1px solid var(--_border);transform:translateX(-100%)}.panel.is-open{transform:translateX(0)}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--_border)}.drawer-title{margin:0;font-size:1.1rem;font-weight:700}.close-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:999px;background:var(--_muted);color:var(--_muted-fg);cursor:pointer;transition:color 0.15s}.close-btn:hover{color:var(--_fg)}.close-btn svg{width:16px;height:16px}.drawer-body{flex:1;overflow-y:auto;padding:18px 20px}.drawer-footer{flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 20px;border-top:1px solid var(--_border);font-size:11.5px;font-weight:500;color:var(--_muted-fg)}.drawer-footer a{color:inherit;text-decoration:none;opacity:0.9;transition:opacity 0.15s ease}.drawer-footer a:hover{opacity:1}.drawer-footer .pb-links{display:flex;gap:14px}.drawer-footer .pb-brand{display:inline-flex;align-items:center;gap:5px}.drawer-footer .pb-brand svg{display:block}.drawer-footer .pb-pre{opacity:0.7}.drawer-footer .pb-word{font-weight:700}";export{n as tl_cart_drawer}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,c as r,h as i}from"./p-imfxp765.js";import{w as o,g as s}from"./p-CqhvfyKV.js";import{c as e,p as a}from"./p-BwChnHVC.js";const l=class{constructor(i){t(this,i),this.tlPromoApplied=r(this,"tlPromoApplied"),this.tlError=r(this,"tlError"),this.placeholder="Promo or presale code",this.buttonLabel="Apply",this.element=e(a,{client:()=>s(),clientReady:()=>o(),emit:(t,r)=>this.forward(t,r)}),this.view=this.element.view,this.handleInput=t=>{this.element.actions.setCode(t.target.value)},this.handleSubmit=t=>{t.preventDefault(),this.element.actions.apply()},this.reset=()=>this.element.actions.reset()}syncProps(){this.element.setProps({placeholder:this.placeholder,buttonLabel:this.buttonLabel})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((t=>{this.view=t}))),this.view=this.element.view,this.teardown=this.element.mount()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(t,r){"tlPromoApplied"===t?this.tlPromoApplied.emit(r):"tlError"===t&&this.tlError.emit(r)}render(){const{status:t,state:r,strings:o,derived:s}=this.view;return"applied"===t?i("div",{class:"applied",role:"status"},i("span",{class:"applied-text"},i("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},i("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})),o.codePrefix,i("strong",{class:"code"},s.appliedCode),s.appliedSuffix),i("button",{type:"button",class:"link",onClick:this.reset},o.useDifferent)):i("form",{class:"promo",onSubmit:this.handleSubmit},i("div",{class:"field"},i("input",{class:"input",type:"text",autocomplete:"off",autoCapitalize:"characters",spellcheck:!1,"aria-label":this.placeholder,placeholder:this.placeholder,value:r.code,disabled:s.disabled,onInput:this.handleInput}),i("button",{type:"submit",class:"apply",disabled:s.disabled},s.actionLabel)),r.error&&i("p",{class:"error",role:"alert"},r.error))}static get watchers(){return{placeholder:[{syncProps:0}],buttonLabel:[{syncProps:0}]}}};l.style=":host{display:block;font-family:var(--tl-font-family);color:var(--tl-foreground)}.field{display:flex;gap:var(--tl-spacing-2)}.input{flex:1;min-width:0;padding:var(--tl-spacing-3);font:inherit;font-size:0.875rem;color:var(--tl-foreground);background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius-md);text-transform:uppercase}.input::placeholder{text-transform:none;color:var(--tl-muted-foreground)}.input:focus{outline:2px solid var(--tl-primary);outline-offset:1px}.apply{padding:var(--tl-spacing-3) var(--tl-spacing-4);font:inherit;font-size:0.875rem;font-weight:500;color:var(--tl-primary-foreground);background:var(--tl-primary);border:none;border-radius:var(--tl-radius-md);cursor:pointer;white-space:nowrap}.apply:hover:not(:disabled){opacity:0.9}.apply:disabled,.input:disabled{opacity:0.6;cursor:not-allowed}.error{margin:var(--tl-spacing-2) 0 0;font-size:0.8125rem;color:var(--tl-error)}.applied{display:flex;align-items:center;justify-content:space-between;gap:var(--tl-spacing-3);padding:var(--tl-spacing-3);font-size:0.875rem;background:var(--tl-muted);border:1px solid var(--tl-border);border-radius:var(--tl-radius-md)}.applied-text{display:flex;align-items:center;gap:var(--tl-spacing-2)}.icon{width:1rem;height:1rem;flex-shrink:0;color:var(--tl-success)}.code{font-family:var(--tl-font-family-mono)}.link{padding:0;font:inherit;font-size:0.8125rem;color:var(--tl-primary);background:none;border:none;cursor:pointer;white-space:nowrap}.link:hover{text-decoration:underline}";export{l as tl_promo_code}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,c as r,h as o,H as i}from"./p-imfxp765.js";import{w as e,g as n}from"./p-CqhvfyKV.js";import{c as s,b as a}from"./p-BwChnHVC.js";const l=class{constructor(o){t(this,o),this.tlClick=r(this,"tlClick"),this.state="available",this.variant="primary",this.size="md",this.fullWidth=!1,this.currency="GBP",this.pricePrefix="From",this.disabled=!1,this.isHovered=!1,this.element=s(a,{client:()=>n(),clientReady:()=>e(),emit:(t,r)=>this.forward(t,r)}),this.view=this.element.view,this.handleClick=()=>{this.element.actions.activate()}}syncProps(){this.element.setProps({eventId:this.eventId,occurrenceId:this.occurrenceId,state:this.state,label:this.label,variant:this.variant,size:this.size,fullWidth:this.fullWidth,price:this.price,currency:this.currency,pricePrefix:this.pricePrefix,disabled:this.disabled})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((t=>{this.view=t}))),this.view=this.element.view,this.teardown=this.element.mount()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(t,r){"tlClick"===t&&this.tlClick.emit(r)}render(){const{interactive:t,buttonLabel:r,stateClass:e,priceLabel:n}=this.view.derived;return o(i,{key:"6d5dddb3fc486c5a877a3718fecbee80a648b274",class:{"full-width":this.fullWidth}},o("button",{key:"88f7f0688fb42e97eb2ce352f316b2a085c3bab5",type:"button",class:{"buy-button":!0,[e]:!0,[`variant-${this.variant}`]:!0,[`size-${this.size}`]:!0,disabled:!t,hovered:this.isHovered&&t},disabled:!t,onClick:this.handleClick,onMouseEnter:()=>this.isHovered=!0,onMouseLeave:()=>this.isHovered=!1},o("span",{key:"e88c2f05c7bc782d08d78fc8ab53b213ab3c833f",class:"icon"},"soldOut"===this.state&&this.renderSoldOutIcon(),"waitlist"===this.state&&this.renderWaitlistIcon(),"comingSoon"===this.state&&this.renderComingSoonIcon(),"available"===this.state&&this.renderTicketIcon()),o("span",{key:"7290a58779e884886f26e64c405fd319811613a1",class:"label"},r),null!==n&&o("span",{key:"bdf3bcdbfa29d4799f7a64bc0072a4c06c09c393",class:"price"},o("span",{key:"32b075fc6793ef21e9a2cd188058992f95c10680",class:"price-prefix"},this.pricePrefix),o("span",{key:"ff3805b660b2af72a94fabc315507ce063ff02d2",class:"price-value"},n))))}renderTicketIcon(){return o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},o("path",{d:"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z"}),o("path",{d:"M13 5v2"}),o("path",{d:"M13 17v2"}),o("path",{d:"M13 11v2"}))}renderSoldOutIcon(){return o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},o("circle",{cx:"12",cy:"12",r:"10"}),o("path",{d:"m15 9-6 6"}),o("path",{d:"m9 9 6 6"}))}renderWaitlistIcon(){return o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},o("circle",{cx:"12",cy:"12",r:"10"}),o("polyline",{points:"12 6 12 12 16 14"}))}renderComingSoonIcon(){return o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},o("path",{d:"M12 2v4"}),o("path",{d:"m16.2 7.8 2.9-2.9"}),o("path",{d:"M18 12h4"}),o("path",{d:"m16.2 16.2 2.9 2.9"}),o("path",{d:"M12 18v4"}),o("path",{d:"m4.9 19.1 2.9-2.9"}),o("path",{d:"M2 12h4"}),o("path",{d:"m4.9 4.9 2.9 2.9"}))}static get watchers(){return{eventId:[{syncProps:0}],occurrenceId:[{syncProps:0}],state:[{syncProps:0}],label:[{syncProps:0}],variant:[{syncProps:0}],size:[{syncProps:0}],fullWidth:[{syncProps:0}],price:[{syncProps:0}],currency:[{syncProps:0}],pricePrefix:[{syncProps:0}],disabled:[{syncProps:0}]}}};l.style=":host{display:inline-block;font-family:var(--tl-font-family)}:host(.full-width){display:block;width:100%}:host(.full-width) .buy-button{width:100%}.state-available{--button-color:var(--tl-primary);--button-hover-color:color-mix(in srgb, var(--tl-primary) 90%, black);--button-foreground:var(--tl-primary-foreground)}.state-sold-out{--button-color:var(--tl-error);--button-hover-color:color-mix(in srgb, var(--tl-error) 90%, black);--button-foreground:var(--tl-error-foreground)}.state-waitlist{--button-color:var(--tl-info);--button-hover-color:color-mix(in srgb, var(--tl-info) 90%, black);--button-foreground:var(--tl-info-foreground)}.state-coming-soon{--button-color:var(--tl-warning);--button-hover-color:color-mix(in srgb, var(--tl-warning) 90%, black);--button-foreground:var(--tl-warning-foreground)}.buy-button{display:inline-flex;align-items:center;justify-content:center;gap:0.5rem;font-weight:600;border:none;cursor:pointer;text-decoration:none;outline:none;transition:all 0.2s ease;white-space:nowrap}.buy-button.variant-primary{background:var(--button-color);color:var(--button-foreground)}.buy-button.variant-secondary{background:color-mix(in srgb, var(--button-color) 15%, transparent);color:var(--button-color)}.buy-button.variant-outline{background:transparent;color:var(--button-color);border:2px solid var(--button-color)}.buy-button.size-sm{padding:0.5rem 1rem;font-size:0.875rem;border-radius:var(--tl-radius-sm)}.buy-button.size-md{padding:0.75rem 1.5rem;font-size:1rem;border-radius:var(--tl-radius-md)}.buy-button.size-lg{padding:1rem 2rem;font-size:1.125rem;border-radius:var(--tl-radius-lg);min-height:51px}.buy-button.hovered:not(.disabled){opacity:0.9;transform:translateY(-1px)}.buy-button.hovered.variant-primary{background:var(--button-hover-color)}.buy-button.disabled{opacity:0.7;cursor:not-allowed}.icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.icon svg{width:1em;height:1em}.label{flex-shrink:0}.price{display:inline-flex;align-items:center;gap:0.25rem;margin-left:0.5rem;white-space:nowrap;opacity:0.9}.price-prefix{opacity:0.7}.price-value{font-weight:700}";export{l as tl_buy_tickets_button}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,c as e,h as s}from"./p-imfxp765.js";import{w as i,g as r}from"./p-CqhvfyKV.js";import{c as a,e as l}from"./p-BwChnHVC.js";const o=class{constructor(s){t(this,s),this.tlEventClick=e(this,"tlEventClick"),this.limit=12,this.columns=3,this.element=a(l,{client:()=>r(),clientReady:()=>i(),emit:(t,e)=>this.forward(t,e)}),this.view=this.element.view,this.handleEventClick=t=>{this.tlEventClick.emit(t.detail)}}watchFiltersChange(){this.syncProps(),this.element.actions.load()}syncProps(){this.element.setProps({limit:this.limit,category:this.category,columns:this.columns})}connectedCallback(){this.syncProps(),this.unsubscribe??(this.unsubscribe=this.element.subscribe((t=>{this.view=t}))),this.view=this.element.view,this.teardown=this.element.mount()}componentWillLoad(){if("loading"===this.view.status)return new Promise((t=>{const e=this.element.subscribe((s=>{"loading"!==s.status&&(e(),t())}))}))}disconnectedCallback(){this.teardown?.(),this.teardown=void 0,this.unsubscribe?.(),this.unsubscribe=void 0}forward(t,e){"tlEventClick"===t&&this.tlEventClick.emit(e)}render(){const{status:t,state:e,strings:i,derived:r}=this.view,a=`event-grid cols-${r.columns}`;return"loading"===t?s("div",{class:a},Array.from({length:6}).map(((t,e)=>s("div",{class:"skeleton-card",key:e},s("div",{class:"skeleton-image"}),s("div",{class:"skeleton-content"},s("div",{class:"skeleton-line short"}),s("div",{class:"skeleton-line medium"}),s("div",{class:"skeleton-line long"})))))):"error"===t?s("div",{class:"error-state"},s("p",{class:"error-title"},i.errorTitle),s("p",{class:"error-message"},e.error)):"empty"===t?s("div",{class:"empty-state"},s("svg",{class:"empty-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})),s("p",{class:"empty-title"},i.emptyTitle),s("p",{class:"empty-message"},i.emptyMessage)):s("div",{class:a},r.events.map((t=>s("tl-event-card",{key:t.id,event:t,onTlClick:this.handleEventClick}))))}static get watchers(){return{limit:[{watchFiltersChange:0}],category:[{watchFiltersChange:0}],columns:[{syncProps:0}]}}};o.style=":host{display:block;font-family:var(--tl-font-family)}.event-grid{display:grid;gap:var(--tl-spacing-6)}.cols-1{grid-template-columns:1fr}.cols-2{grid-template-columns:repeat(2, 1fr)}.cols-3{grid-template-columns:repeat(3, 1fr)}.cols-4{grid-template-columns:repeat(4, 1fr)}@media (max-width: 1024px){.cols-4,.cols-3{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 640px){.cols-4,.cols-3,.cols-2{grid-template-columns:1fr}}.skeleton-card{background:var(--tl-secondary);border-radius:var(--tl-radius-lg);overflow:hidden}.skeleton-image{aspect-ratio:16 / 9;background:var(--tl-muted);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.skeleton-content{padding:var(--tl-spacing-4);display:flex;flex-direction:column;gap:0.5rem}.skeleton-line{height:1rem;background:var(--tl-muted);border-radius:var(--tl-radius-sm);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.skeleton-line.short{width:4rem;height:0.75rem}.skeleton-line.medium{width:75%}.skeleton-line.long{width:50%}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}.error-state{background:rgba(239, 68, 68, 0.1);border:1px solid var(--tl-error);border-radius:var(--tl-radius-lg);padding:var(--tl-spacing-4)}.error-title{margin:0;font-weight:500;color:var(--tl-error)}.error-message{margin:0.25rem 0 0;font-size:0.875rem;color:var(--tl-error)}.empty-state{text-align:center;padding:var(--tl-spacing-8) var(--tl-spacing-4)}.empty-icon{width:4rem;height:4rem;margin:0 auto 1rem;color:var(--tl-muted-foreground)}.empty-title{margin:0;font-size:1.25rem;font-weight:600;color:var(--tl-foreground)}.empty-message{margin:0.5rem 0 0;color:var(--tl-muted-foreground)}";export{o as tl_event_list}
|