@ticketlayer/elements 0.3.3 → 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.
Files changed (179) hide show
  1. package/README.md +3 -2
  2. package/dist/cjs/{index-BpfoKd9Q.js → index-DanPUX0s.js} +1 -1
  3. package/dist/cjs/index.cjs.js +2 -1
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/ticket-selector-BYVL13k_.js +3623 -0
  6. package/dist/cjs/ticketlayer-elements.cjs.js +2 -2
  7. package/dist/cjs/tl-buy-modal.cjs.entry.js +4 -4
  8. package/dist/cjs/tl-buy-tickets-button.cjs.entry.js +89 -71
  9. package/dist/cjs/tl-buy-tickets-wrapper.cjs.entry.js +62 -31
  10. package/dist/cjs/tl-cart-badge.cjs.entry.js +75 -62
  11. package/dist/cjs/tl-cart-drawer.cjs.entry.js +52 -24
  12. package/dist/cjs/tl-cart.cjs.entry.js +72 -98
  13. package/dist/cjs/tl-checkout-wrapper.cjs.entry.js +52 -30
  14. package/dist/cjs/tl-event-card.cjs.entry.js +44 -105
  15. package/dist/cjs/tl-event-list.cjs.entry.js +73 -36
  16. package/dist/cjs/tl-login.cjs.entry.js +75 -141
  17. package/dist/cjs/tl-my-orders.cjs.entry.js +53 -92
  18. package/dist/cjs/tl-occurrence-selector_2.cjs.entry.js +205 -641
  19. package/dist/cjs/tl-order-confirmation.cjs.entry.js +72 -105
  20. package/dist/cjs/tl-order-tickets_2.cjs.entry.js +50 -76
  21. package/dist/cjs/tl-promo-code.cjs.entry.js +51 -47
  22. package/dist/cjs/tl-seat-map.cjs.entry.js +4 -4
  23. package/dist/cjs/web-query-Ce73jB4k.js +16 -0
  24. package/dist/collection/components/tl-buy-modal/tl-buy-modal.css +12 -19
  25. package/dist/collection/components/tl-buy-modal/tl-buy-modal.js +2 -2
  26. package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.css +41 -4
  27. package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.js +105 -76
  28. package/dist/collection/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.css +2 -2
  29. package/dist/collection/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.js +73 -30
  30. package/dist/collection/components/tl-cart/tl-cart.css +52 -51
  31. package/dist/collection/components/tl-cart/tl-cart.js +82 -101
  32. package/dist/collection/components/tl-cart-badge/tl-cart-badge.css +11 -11
  33. package/dist/collection/components/tl-cart-badge/tl-cart-badge.js +62 -62
  34. package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.css +6 -6
  35. package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.js +56 -24
  36. package/dist/collection/components/tl-checkout-wrapper/tl-checkout-wrapper.css +2 -2
  37. package/dist/collection/components/tl-checkout-wrapper/tl-checkout-wrapper.js +61 -29
  38. package/dist/collection/components/tl-event-card/event-card-adapter.js +11 -23
  39. package/dist/collection/components/tl-event-card/tl-event-card.css +22 -22
  40. package/dist/collection/components/tl-event-card/tl-event-card.js +51 -84
  41. package/dist/collection/components/tl-event-list/tl-event-list.css +17 -17
  42. package/dist/collection/components/tl-event-list/tl-event-list.js +82 -38
  43. package/dist/collection/components/tl-login/tl-login.css +26 -26
  44. package/dist/collection/components/tl-login/tl-login.js +83 -147
  45. package/dist/collection/components/tl-my-orders/tl-my-orders.css +40 -40
  46. package/dist/collection/components/tl-my-orders/tl-my-orders.js +58 -96
  47. package/dist/collection/components/tl-occurrence-selector/tl-occurrence-selector.css +54 -65
  48. package/dist/collection/components/tl-occurrence-selector/tl-occurrence-selector.js +137 -516
  49. package/dist/collection/components/tl-order-confirmation/tl-order-confirmation.css +38 -38
  50. package/dist/collection/components/tl-order-confirmation/tl-order-confirmation.js +81 -113
  51. package/dist/collection/components/tl-order-tickets/tl-order-tickets.css +9 -9
  52. package/dist/collection/components/tl-order-tickets/tl-order-tickets.js +57 -92
  53. package/dist/collection/components/tl-promo-code/tl-promo-code.css +25 -25
  54. package/dist/collection/components/tl-promo-code/tl-promo-code.js +55 -50
  55. package/dist/collection/components/tl-seat-map/tl-seat-map.css +10 -10
  56. package/dist/collection/components/tl-seat-map/tl-seat-map.js +2 -2
  57. package/dist/collection/components/tl-ticket/tl-ticket.css +13 -13
  58. package/dist/collection/components/tl-ticket-selector/tl-ticket-selector.css +74 -49
  59. package/dist/collection/components/tl-ticket-selector/tl-ticket-selector.js +95 -135
  60. package/dist/collection/utils/cart-totals.js +9 -0
  61. package/dist/collection/utils/order-summary.js +15 -99
  62. package/dist/collection/utils/testing/deep-text.js +29 -0
  63. package/dist/collection/utils/testing/fixtures.js +290 -0
  64. package/dist/collection/utils/testing/mock-sdk.js +13 -2
  65. package/dist/collection/utils/web-query.js +12 -0
  66. package/dist/collection/utils/web-storage.js +22 -0
  67. package/dist/components/ticket-selector.js +1 -0
  68. package/dist/components/tl-buy-modal.js +1 -1
  69. package/dist/components/tl-buy-tickets-button.js +1 -1
  70. package/dist/components/tl-buy-tickets-wrapper2.js +1 -1
  71. package/dist/components/tl-cart-badge.js +1 -1
  72. package/dist/components/tl-cart-drawer.js +1 -1
  73. package/dist/components/tl-cart2.js +1 -1
  74. package/dist/components/tl-checkout-wrapper2.js +1 -1
  75. package/dist/components/tl-event-card2.js +1 -1
  76. package/dist/components/tl-event-list.js +1 -1
  77. package/dist/components/tl-login2.js +1 -1
  78. package/dist/components/tl-my-orders.js +1 -1
  79. package/dist/components/tl-occurrence-selector2.js +1 -1
  80. package/dist/components/tl-order-confirmation.js +1 -1
  81. package/dist/components/tl-order-tickets2.js +1 -1
  82. package/dist/components/tl-promo-code.js +1 -1
  83. package/dist/components/tl-seat-map.js +1 -1
  84. package/dist/components/tl-ticket-selector2.js +1 -1
  85. package/dist/components/tl-ticket2.js +1 -1
  86. package/dist/components/web-query.js +1 -0
  87. package/dist/elements.docs.json +36 -36
  88. package/dist/esm/{index-CNX8hZa8.js → index-imfxp765.js} +1 -1
  89. package/dist/esm/index.js +2 -1
  90. package/dist/esm/loader.js +3 -3
  91. package/dist/esm/ticket-selector-BwChnHVC.js +3606 -0
  92. package/dist/esm/ticketlayer-elements.js +3 -3
  93. package/dist/esm/tl-buy-modal.entry.js +4 -4
  94. package/dist/esm/tl-buy-tickets-button.entry.js +90 -72
  95. package/dist/esm/tl-buy-tickets-wrapper.entry.js +63 -32
  96. package/dist/esm/tl-cart-badge.entry.js +76 -63
  97. package/dist/esm/tl-cart-drawer.entry.js +53 -25
  98. package/dist/esm/tl-cart.entry.js +73 -99
  99. package/dist/esm/tl-checkout-wrapper.entry.js +53 -31
  100. package/dist/esm/tl-event-card.entry.js +45 -106
  101. package/dist/esm/tl-event-list.entry.js +74 -37
  102. package/dist/esm/tl-login.entry.js +76 -142
  103. package/dist/esm/tl-my-orders.entry.js +54 -93
  104. package/dist/esm/tl-occurrence-selector_2.entry.js +206 -642
  105. package/dist/esm/tl-order-confirmation.entry.js +73 -106
  106. package/dist/esm/tl-order-tickets_2.entry.js +51 -77
  107. package/dist/esm/tl-promo-code.entry.js +52 -48
  108. package/dist/esm/tl-seat-map.entry.js +4 -4
  109. package/dist/esm/web-query-Bdbb2lk5.js +14 -0
  110. package/dist/ticketlayer-elements/index.esm.js +1 -1
  111. package/dist/ticketlayer-elements/p-45923d2c.entry.js +1 -0
  112. package/dist/ticketlayer-elements/p-492adc77.entry.js +1 -0
  113. package/dist/ticketlayer-elements/p-4cfc9e53.entry.js +1 -0
  114. package/dist/ticketlayer-elements/p-5135630e.entry.js +1 -0
  115. package/dist/ticketlayer-elements/p-5bbce3b5.entry.js +1 -0
  116. package/dist/ticketlayer-elements/p-7d547721.entry.js +1 -0
  117. package/dist/ticketlayer-elements/p-7fe7b6ba.entry.js +1 -0
  118. package/dist/ticketlayer-elements/p-8122f0c1.entry.js +1 -0
  119. package/dist/ticketlayer-elements/p-98d40869.entry.js +1 -0
  120. package/dist/ticketlayer-elements/p-Bdbb2lk5.js +1 -0
  121. package/dist/ticketlayer-elements/p-BwChnHVC.js +1 -0
  122. package/dist/ticketlayer-elements/p-abec290a.entry.js +1 -0
  123. package/dist/ticketlayer-elements/p-ac79a3f6.entry.js +1 -0
  124. package/dist/ticketlayer-elements/p-d01f4429.entry.js +1 -0
  125. package/dist/ticketlayer-elements/p-d7ffaf46.entry.js +1 -0
  126. package/dist/ticketlayer-elements/p-e7170f3c.entry.js +1 -0
  127. package/dist/ticketlayer-elements/p-e787e862.entry.js +1 -0
  128. package/dist/ticketlayer-elements/p-f1ff931f.entry.js +1 -0
  129. package/dist/ticketlayer-elements/p-imfxp765.js +3 -0
  130. package/dist/ticketlayer-elements/ticketlayer-elements.css +1 -1
  131. package/dist/ticketlayer-elements/ticketlayer-elements.esm.js +1 -1
  132. package/dist/types/components/tl-buy-tickets-button/tl-buy-tickets-button.d.ts +40 -8
  133. package/dist/types/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.d.ts +20 -1
  134. package/dist/types/components/tl-cart/tl-cart.d.ts +40 -32
  135. package/dist/types/components/tl-cart-badge/tl-cart-badge.d.ts +22 -7
  136. package/dist/types/components/tl-cart-drawer/tl-cart-drawer.d.ts +28 -5
  137. package/dist/types/components/tl-checkout-wrapper/tl-checkout-wrapper.d.ts +18 -1
  138. package/dist/types/components/tl-event-card/event-card-adapter.d.ts +9 -20
  139. package/dist/types/components/tl-event-card/tl-event-card.d.ts +25 -28
  140. package/dist/types/components/tl-event-list/tl-event-list.d.ts +46 -6
  141. package/dist/types/components/tl-login/tl-login.d.ts +68 -22
  142. package/dist/types/components/tl-my-orders/tl-my-orders.d.ts +30 -12
  143. package/dist/types/components/tl-occurrence-selector/tl-occurrence-selector.d.ts +73 -161
  144. package/dist/types/components/tl-order-confirmation/tl-order-confirmation.d.ts +48 -15
  145. package/dist/types/components/tl-order-tickets/tl-order-tickets.d.ts +29 -31
  146. package/dist/types/components/tl-promo-code/tl-promo-code.d.ts +28 -10
  147. package/dist/types/components/tl-ticket/tl-ticket.d.ts +2 -11
  148. package/dist/types/components/tl-ticket-selector/tl-ticket-selector.d.ts +61 -32
  149. package/dist/types/components.d.ts +302 -62
  150. package/dist/types/utils/cart-totals.d.ts +10 -0
  151. package/dist/types/utils/order-summary.d.ts +16 -65
  152. package/dist/types/utils/testing/deep-text.d.ts +13 -0
  153. package/dist/types/utils/testing/fixtures.d.ts +225 -0
  154. package/dist/types/utils/testing/mock-sdk.d.ts +14 -1
  155. package/dist/types/utils/web-query.d.ts +18 -0
  156. package/dist/types/utils/web-storage.d.ts +16 -0
  157. package/elements.catalogue.json +676 -55
  158. package/package.json +14 -6
  159. package/dist/cjs/order-summary-ZMkJ5bez.js +0 -116
  160. package/dist/components/order-summary.js +0 -1
  161. package/dist/esm/order-summary-BGekdjN9.js +0 -103
  162. package/dist/ticketlayer-elements/p-0b1d16f8.entry.js +0 -1
  163. package/dist/ticketlayer-elements/p-1471f6d8.entry.js +0 -1
  164. package/dist/ticketlayer-elements/p-1c51cbc1.entry.js +0 -1
  165. package/dist/ticketlayer-elements/p-5169f68b.entry.js +0 -1
  166. package/dist/ticketlayer-elements/p-895ba1f3.entry.js +0 -1
  167. package/dist/ticketlayer-elements/p-8d5722e1.entry.js +0 -1
  168. package/dist/ticketlayer-elements/p-917d8e09.entry.js +0 -1
  169. package/dist/ticketlayer-elements/p-9629029a.entry.js +0 -1
  170. package/dist/ticketlayer-elements/p-BGekdjN9.js +0 -1
  171. package/dist/ticketlayer-elements/p-CNX8hZa8.js +0 -3
  172. package/dist/ticketlayer-elements/p-a22714d0.entry.js +0 -1
  173. package/dist/ticketlayer-elements/p-bf73044b.entry.js +0 -1
  174. package/dist/ticketlayer-elements/p-e02079fa.entry.js +0 -1
  175. package/dist/ticketlayer-elements/p-e04ace15.entry.js +0 -1
  176. package/dist/ticketlayer-elements/p-e6fab1d5.entry.js +0 -1
  177. package/dist/ticketlayer-elements/p-f826b753.entry.js +0 -1
  178. package/dist/ticketlayer-elements/p-fa639d88.entry.js +0 -1
  179. package/dist/ticketlayer-elements/p-fbaca948.entry.js +0 -1
@@ -1 +1 @@
1
- import{proxyCustomElement as t,HTMLElement as e,createEvent as s,h as i,Host as r,transformTag as l}from"@stencil/core/internal/client";import{h as a,g as o}from"./sdk-connector.js";const c=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.tlComplete=s(this,"tl-complete",7),this.tlError=s(this,"tl-error",7),this.tlClose=s(this,"tl-close",7),this.disabled=!1,this.handleClick=()=>{if(!this.disabled)return a()?void o().event(this.eventId).openModal({occurrenceId:this.occurrenceId,onComplete:t=>{this.tlComplete.emit(t)},onError:t=>{this.tlError.emit({message:t.message})},onClose:()=>{this.tlClose.emit()}}):(console.error("[tl-buy-tickets-wrapper] SDK not initialized. Call setSDK(ticketlayer) first."),void this.tlError.emit({message:"SDK not initialized"}))},this.handleKeyDown=t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.handleClick())}}render(){return i(r,{key:"d6ef81ac9bc1a1194eda1603cbb2a75b355a212e",class:{"tl-buy-tickets-wrapper":!0,"tl-buy-tickets-wrapper--disabled":this.disabled},onClick:this.handleClick,onKeyDown:this.handleKeyDown,role:"button",tabindex:this.disabled?-1:0,"aria-disabled":this.disabled?"true":null},i("slot",{key:"faef5aaad20deaf5e442d688c69105e45f9ee26f"}))}get el(){return this}static get style(){return"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, #3b82f6);outline-offset:2px;border-radius:var(--tl-radius-sm, 0.25rem)}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}"}},[260,"tl-buy-tickets-wrapper",{eventId:[1,"event-id"],occurrenceId:[1,"occurrence-id"],disabled:[4]}]);function n(){"undefined"!=typeof customElements&&["tl-buy-tickets-wrapper"].forEach((t=>{"tl-buy-tickets-wrapper"===t&&(customElements.get(l(t))||customElements.define(l(t),c))}))}export{c as T,n as d}
1
+ import{proxyCustomElement as t,HTMLElement as e,createEvent as s,h as i,Host as r,transformTag as c}from"@stencil/core/internal/client";import{w as o,g as l}from"./sdk-connector.js";import{c as n,b as a}from"./ticket-selector.js";const d=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.tlComplete=s(this,"tlComplete",7),this.tlError=s(this,"tlError",7),this.tlClose=s(this,"tlClose",7),this.disabled=!1,this.element=n(a,{client:()=>l(),clientReady:()=>o(),emit:(t,e)=>this.forward(t,e)}),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,e){"tlComplete"===t?this.tlComplete.emit(e):"tlError"===t?this.tlError.emit(e):"tlClose"===t&&this.tlClose.emit()}render(){const{interactive:t}=this.view.derived;return i(r,{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}]}}static get style(){return"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}"}},[260,"tl-buy-tickets-wrapper",{eventId:[1,"event-id"],occurrenceId:[1,"occurrence-id"],disabled:[4],view:[32]},void 0,{eventId:[{syncProps:0}],occurrenceId:[{syncProps:0}],disabled:[{syncProps:0}]}]);function p(){"undefined"!=typeof customElements&&["tl-buy-tickets-wrapper"].forEach((t=>{"tl-buy-tickets-wrapper"===t&&(customElements.get(c(t))||customElements.define(c(t),d))}))}export{d as T,p as d}
@@ -1 +1 @@
1
- import{proxyCustomElement as t,HTMLElement as i,createEvent as e,h as s,transformTag as n}from"@stencil/core/internal/client";import{w as o}from"./sdk-connector.js";const r="tl_cart_count",a=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.tlClick=e(this,"tlClick",7),this.showEmpty=!1,this.size="md",this.badgeOnly=!1,this.itemCount=0,this.handleClick=()=>{this.tlClick.emit({itemCount:this.itemCount})}}componentWillLoad(){this.itemCount=this.getPersistedCartCount()}componentDidLoad(){this.subscribeToCartUpdates()}disconnectedCallback(){this.unsubscribe&&this.unsubscribe()}getPersistedCartCount(){if("undefined"==typeof window)return 0;try{const t=localStorage.getItem(r);return t&&parseInt(t,10)||0}catch{return 0}}persistCartCount(t){if("undefined"!=typeof window)try{localStorage.setItem(r,""+t)}catch{}}async subscribeToCartUpdates(){const t=await o().catch((()=>null));if(!t)return;const i=t.getCartManager?.();i&&(this.unsubscribe=i.on?.("cart:updated",(t=>{const i=t?.itemCount||0;console.log("[tl-cart-badge] Cart updated:",i),this.itemCount=i,this.persistCartCount(i)})),i.get?.().then((t=>{const i=t?.itemCount||0;this.itemCount=i,this.persistCartCount(i)})).catch((()=>{})))}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 t=this.itemCount>0||this.showEmpty,i=this.itemCount>99?"99+":""+this.itemCount;return this.badgeOnly?0===this.itemCount?null:s("span",{class:"badge-only size-"+this.size},i):s("button",{class:"cart-badge size-"+this.size,onClick:this.handleClick,"aria-label":`Cart with ${this.itemCount} items`},this.renderIcon(),t&&this.itemCount>0&&s("span",{class:"badge-count"},i))}static get style(){return":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, 0.5rem);border-radius:var(--tl-radius-md, 0.5rem);color:var(--tl-color-foreground, #111827);transition:background-color 0.2s, transform 0.15s}.cart-badge:hover{background-color:var(--tl-color-muted, #f3f4f6)}.cart-badge:active{transform:scale(0.95)}.cart-badge:focus-visible{outline:2px solid var(--tl-color-primary, #6366f1);outline-offset:2px}.size-sm{padding:var(--tl-spacing-1, 0.25rem)}.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, 0.75rem)}.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, #6366f1);color:var(--tl-color-primary-foreground, #ffffff);font-size:11px;font-weight:600;font-family:var(--tl-font-family, system-ui, sans-serif);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, system-ui, sans-serif);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}"}},[1,"tl-cart-badge",{showEmpty:[4,"show-empty"],icon:[1],size:[1],badgeOnly:[4,"badge-only"],itemCount:[32]}]),l=a,c=function(){"undefined"!=typeof customElements&&["tl-cart-badge"].forEach((t=>{"tl-cart-badge"===t&&(customElements.get(n(t))||customElements.define(n(t),a))}))};export{l as TlCartBadge,c as defineCustomElement}
1
+ import{proxyCustomElement as t,HTMLElement as i,createEvent as e,h as s,transformTag as n}from"@stencil/core/internal/client";import{w as o,g as r}from"./sdk-connector.js";import{c as a,k as c}from"./ticket-selector.js";const l={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{}}},d=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.tlClick=e(this,"tlClick",7),this.showEmpty=!1,this.size="md",this.badgeOnly=!1,this.element=a(c,{client:()=>r(),clientReady:()=>o(),storage:l,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}]}}static get style(){return":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}"}},[1,"tl-cart-badge",{showEmpty:[4,"show-empty"],icon:[1],size:[1],badgeOnly:[4,"badge-only"],view:[32]},void 0,{showEmpty:[{syncProps:0}],icon:[{syncProps:0}],size:[{syncProps:0}],badgeOnly:[{syncProps:0}]}]),h=d,p=function(){"undefined"!=typeof customElements&&["tl-cart-badge"].forEach((t=>{"tl-cart-badge"===t&&(customElements.get(n(t))||customElements.define(n(t),d))}))};export{h as TlCartBadge,p as defineCustomElement}
@@ -1 +1 @@
1
- import{proxyCustomElement as e,HTMLElement as t,createEvent as r,h as a,Host as o,transformTag as d}from"@stencil/core/internal/client";import{o as i}from"./sdk-connector.js";import{d as s}from"./tl-cart2.js";const n=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.tlOpen=r(this,"tlOpen",7),this.tlClose=r(this,"tlClose",7),this.side="right",this.heading="Your cart",this.open=!1,this.visible=!1,this.onKey=e=>{"Escape"===e.key&&this.visible&&this.setOpen(!1)},this.close=()=>this.setOpen(!1)}connectedCallback(){this.visible=this.open,this.offCart=i("ui:cart-requested",(()=>this.setOpen(!0))),this.offClose=i("ui:modal-close-requested",(()=>this.setOpen(!1))),"undefined"!=typeof document&&document.addEventListener("keydown",this.onKey)}disconnectedCallback(){this.offCart?.(),this.offClose?.(),"undefined"!=typeof document&&document.removeEventListener("keydown",this.onKey)}onOpenProp(e){this.visible=e}setOpen(e){this.visible!==e&&(this.open=e,this.visible=e,e?this.tlOpen.emit():this.tlClose.emit())}render(){return a(o,{key:"022314d9fb612e930da52ece34f2ab8ae8ce44da"},a("div",{key:"985b4001145d72ba91ef7d466adba8ab939e9cc4",class:{overlay:!0,"is-open":this.visible},onClick:e=>{e.target===e.currentTarget&&this.close()}},a("aside",{key:"3ac3588ae8feacd4f8bb96bdae8ef71e80ecb4b3",class:{panel:!0,["panel--"+this.side]:!0,"is-open":this.visible},role:"dialog","aria-modal":"true","aria-label":this.heading,"aria-hidden":this.visible?"false":"true"},a("header",{key:"e0126d634e952ebf56b73e54545f6c3981210827",class:"drawer-header"},a("h2",{key:"a72b23114aa836076ec59cd4a5d1438d228179d9",class:"drawer-title"},this.heading),a("button",{key:"92fb5b159490440352a6c23d65aa6e8c956ae3d8",class:"close-btn",onClick:this.close,"aria-label":"Close cart"},a("svg",{key:"138f4dc7669e62fb667091da0ba26dfbe94327c6",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},a("path",{key:"21fedd9dc89937a92f9c1124d4fa834b55908f1e",d:"M6 6l12 12M18 6L6 18","stroke-linecap":"round"})))),a("div",{key:"ebee87cb6a3c98dbf813d0a903a9cb4da2c696f3",class:"drawer-body"},a("tl-cart",{key:"323db3a160837b68ffaa767e647ec67b06fa53b0"})),a("footer",{key:"d35543373eb13ad1acc46ae50aefcb5a04f305a1",class:"drawer-footer"},a("div",{key:"52229c74d39471bf186c965b6a53b38f79ce8d61",class:"pb-links"},a("a",{key:"d0430bf93d920c57fc42043faed7e8fd895855aa",href:"https://ticketlayer.com/privacy",target:"_blank",rel:"noopener noreferrer"},"Privacy Policy"),a("a",{key:"2a75dc8dcdc9ec3010fe83f97d903cdc32767e49",href:"https://ticketlayer.com/report-abuse",target:"_blank",rel:"noopener noreferrer"},"Report Abuse")),a("a",{key:"40642c5c4c003a454dd7ab2b66ebe5948a03df7d",class:"pb-brand",href:"https://ticketlayer.com",target:"_blank",rel:"noopener noreferrer"},a("span",{key:"a5d9b5c023381d25b6aaddf61e56dbdb21580975",class:"pb-pre"},"Powered by"),a("svg",{key:"35bc23af9a35272d7ada24fd66d5f12f1d951ae8",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},a("path",{key:"90139e79acd8920bcd494cc6579dbcb8278b0aef",d:"M4 7.5A1.5 1.5 0 0 1 5.5 6h13A1.5 1.5 0 0 1 20 7.5v2a2 2 0 0 0 0 5v2a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 16.5v-2a2 2 0 0 0 0-5v-2Z",fill:"currentColor"}),a("path",{key:"ba3aa34471395e33752e72f87f93a85381f7caad",d:"M13 7v10",stroke:"var(--tl-pb-perforation, var(--tl-background, #fff))","stroke-width":"1.2","stroke-dasharray":"1.5 1.8","stroke-linecap":"round"})),a("span",{key:"429154bd6c38febe4da8871a7e614bf272a18854",class:"pb-word"},"Ticketlayer"))))))}static get watchers(){return{open:[{onOpenProp:0}]}}static get style(){return":host{--_bg:var(--tl-background, #ffffff);--_fg:var(--tl-foreground, #111827);--_muted-fg:var(--tl-muted-foreground, #6b7280);--_muted:var(--tl-muted, #f3f4f6);--_border:var(--tl-border, #e5e7eb);--_font:var(--tl-font-family, system-ui, -apple-system, sans-serif);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}"}},[1,"tl-cart-drawer",{side:[1],heading:[1],open:[1028],visible:[32]},void 0,{open:[{onOpenProp:0}]}]),c=n,l=function(){"undefined"!=typeof customElements&&["tl-cart-drawer","tl-cart"].forEach((e=>{switch(e){case"tl-cart-drawer":customElements.get(d(e))||customElements.define(d(e),n);break;case"tl-cart":customElements.get(d(e))||s()}}))};export{c as TlCartDrawer,l as defineCustomElement}
1
+ import{proxyCustomElement as e,HTMLElement as t,createEvent as r,h as a,Host as o,transformTag as i}from"@stencil/core/internal/client";import{w as s,g as d}from"./sdk-connector.js";import{d as n}from"./tl-cart2.js";import{c,h as l}from"./ticket-selector.js";const f=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.tlOpen=r(this,"tlOpen",7),this.tlClose=r(this,"tlClose",7),this.side="right",this.heading="Your cart",this.open=!1,this.element=c(l,{client:()=>d(),clientReady:()=>s(),emit:(e,t)=>this.forward(e,t)}),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,t){"tlOpen"===e?this.tlOpen.emit():"tlClose"===e&&this.tlClose.emit()}render(){const{strings:e,derived:t}=this.view;return a(o,{key:"ab41f3557cd8dd2b182bbfc3ed631bca7839d4a9"},a("div",{key:"70bbe63d1f9a2d449cb9ff970631c0c69a2eb757",class:{overlay:!0,"is-open":t.visible},onClick:e=>{e.target===e.currentTarget&&this.close()}},a("aside",{key:"eefe601ef6d2d8fc6bcfe62f1777d139875f875d",class:{panel:!0,[t.sideClass]:!0,"is-open":t.visible},role:"dialog","aria-modal":"true","aria-label":this.heading,"aria-hidden":t.ariaHidden},a("header",{key:"753d616182c3a903111dcaaf9b37f03186e17b48",class:"drawer-header"},a("h2",{key:"3e839ddbc2a2da1f4c8eb0c1e38c421de13426cd",class:"drawer-title"},this.heading),a("button",{key:"0d80fff5f425d6150fb391fd930161167b5f7d27",class:"close-btn",onClick:this.close,"aria-label":e.close},a("svg",{key:"7ffcbfb86f921d13deb5070140f21e4c7ca668f1",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},a("path",{key:"53d690ef2ac8d1d73038c53fa3aa0146bde0fb51",d:"M6 6l12 12M18 6L6 18","stroke-linecap":"round"})))),a("div",{key:"a782b1527cde89656e5f776311f848c446d92d48",class:"drawer-body"},a("tl-cart",{key:"3cd2c09f728cf14f0ea5b6ff4493b3e51e0dda62"})),a("footer",{key:"2df57237bbd548ae4af09098676d7e1315e11d71",class:"drawer-footer"},a("div",{key:"f02f5970181a2d83b70ac44188f00523a188771d",class:"pb-links"},a("a",{key:"d799da3a8c1c33b10a268500b02fda5523cd8bcf",href:e.privacyHref,target:"_blank",rel:"noopener noreferrer"},e.privacy),a("a",{key:"e928acb4c78cef8762d7ae8d258fa705554fd121",href:e.reportAbuseHref,target:"_blank",rel:"noopener noreferrer"},e.reportAbuse)),a("a",{key:"39278516b8da6dd14fe8bf0d0379c32ccfeb1d29",class:"pb-brand",href:e.brandHref,target:"_blank",rel:"noopener noreferrer"},a("span",{key:"96b2cb7ac0a73cd0c60fb7977999a00b4989177e",class:"pb-pre"},e.poweredBy),a("svg",{key:"b3950f83eab4a41e63a7919e6872a9ecdafab38b",width:"13",height:"13",viewBox:"0 0 50 50",fill:"none","aria-hidden":"true"},a("g",{key:"4c0c7ec66952f8a1956b3061f6bf2eb45c438989",transform:"matrix(0.0129 0 0 -0.0129 25.4752 25.4752)"},a("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"}))),a("span",{key:"053ca451a9674161799458e731862a93c954be23",class:"pb-word"},e.brand))))))}static get watchers(){return{side:[{syncProps:0}],heading:[{syncProps:0}],open:[{onOpenProp:0}]}}static get style(){return":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}"}},[1,"tl-cart-drawer",{side:[1],heading:[1],open:[1028],view:[32]},void 0,{side:[{syncProps:0}],heading:[{syncProps:0}],open:[{onOpenProp:0}]}]),p=f,b=function(){"undefined"!=typeof customElements&&["tl-cart-drawer","tl-cart"].forEach((e=>{switch(e){case"tl-cart-drawer":customElements.get(i(e))||customElements.define(i(e),f);break;case"tl-cart":customElements.get(i(e))||n()}}))};export{p as TlCartDrawer,b as defineCustomElement}
@@ -1 +1 @@
1
- import{proxyCustomElement as t,HTMLElement as e,createEvent as r,h as o,transformTag as a}from"@stencil/core/internal/client";import{w as i,h as s,g as n}from"./sdk-connector.js";const l=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.tlCheckout=r(this,"tlCheckout",7),this.tlItemRemoved=r(this,"tlItemRemoved",7),this.tlCartUpdated=r(this,"tlCartUpdated",7),this.tlError=r(this,"tlError",7),this.showCheckoutButton=!0,this.checkoutLabel="Checkout",this.showRemoveButtons=!0,this.compact=!1,this.cart=null,this.loading=!0,this.error=null,this.removingItemId=null,this.handleCheckout=()=>{this.cart&&this.cart.items.length>0&&this.tlCheckout.emit({cart:this.cart})}}componentWillLoad(){this.loadCart()}componentDidLoad(){this.subscribeToCartUpdates()}disconnectedCallback(){this.unsubscribe&&this.unsubscribe()}async loadCart(){try{console.log("[tl-cart] Loading cart..."),this.loading=!0,this.error=null;const t=await i(),e=t.getCartManager?.();if(e){const t=await e.get();console.log("[tl-cart] Cart loaded:",t),this.cart=t}}catch(t){console.error("[tl-cart] Failed to load cart:",t),this.error=t instanceof Error?t.message:"Failed to load cart",this.tlError.emit({message:this.error})}finally{this.loading=!1}}async subscribeToCartUpdates(){const t=await i().catch((()=>null));if(!t)return;const e=t.getCartManager?.();e&&(this.unsubscribe=e.on?.("cart:updated",(t=>{console.log("[tl-cart] Cart updated:",t),this.cart=t,this.tlCartUpdated.emit({cart:t})})))}async handleRemoveItem(t){if(s()){this.removingItemId=t;try{const e=n(),r=e.getCartManager?.();r&&(await r.removeItem(t),console.log("[tl-cart] Item removed:",t),this.tlItemRemoved.emit({itemId:t}))}catch(t){console.error("[tl-cart] Failed to remove item:",t),this.error=t instanceof Error?t.message:"Failed to remove item",this.tlError.emit({message:this.error})}finally{this.removingItemId=null}}}formatPrice(t,e="GBP"){return new Intl.NumberFormat("en-GB",{style:"currency",currency:e}).format(t/100)}formatDate(t){return new Date(t).toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"})}renderSkeleton(){return o("div",{class:"skeleton-container"},o("div",{class:"skeleton-item"}),o("div",{class:"skeleton-item"}),o("div",{class:"skeleton-totals"}))}renderEmptyCart(){return o("div",{class:"empty-cart"},o("svg",{class:"empty-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",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"})),o("p",{class:"empty-title"},"Your cart is empty"),o("p",{class:"empty-message"},"Add tickets to get started"))}renderCartItem(t){const e=this.removingItemId===t.id;return o("div",{class:"cart-item "+(e?"removing":""),key:t.id},o("div",{class:"item-info"},o("p",{class:"item-name"},t.ticketTypeName),!this.compact&&o("p",{class:"item-event"},t.eventName),!this.compact&&t.occurrenceDate&&o("p",{class:"item-date"},this.formatDate(t.occurrenceDate)),o("p",{class:"item-quantity"},"Qty: ",t.quantity)),o("div",{class:"item-actions"},o("p",{class:"item-price"},this.formatPrice(t.totalPrice,t.currency)),this.showRemoveButtons&&o("button",{class:"remove-btn",onClick:()=>this.handleRemoveItem(t.id),disabled:e,"aria-label":"Remove item"},e?o("span",{class:"spinner"}):o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})))))}render(){if(this.loading)return this.renderSkeleton();if(!this.cart||0===this.cart.items.length)return this.renderEmptyCart();const{items:t,subtotal:e,fees:r,total:a,currency:i}=this.cart;return o("div",{class:"cart "+(this.compact?"compact":"")},o("div",{class:"cart-items"},t.map((t=>this.renderCartItem(t)))),o("div",{class:"cart-totals"},!this.compact&&o("div",{class:"total-row subtotal"},o("span",null,"Subtotal"),o("span",null,this.formatPrice(e,i))),r>0&&!this.compact&&o("div",{class:"total-row fees"},o("span",null,"Fees"),o("span",null,this.formatPrice(r,i))),o("div",{class:"total-row total"},o("span",null,"Total"),o("span",null,this.formatPrice(a,i)))),this.showCheckoutButton&&o("button",{class:"checkout-btn",onClick:this.handleCheckout,disabled:0===t.length},this.checkoutLabel))}static get style(){return":host{display:block;font-family:var(--tl-font-family, system-ui, sans-serif)}.skeleton-container{padding:var(--tl-spacing-4, 1rem)}.skeleton-item{height:70px;background:var(--tl-color-muted, #f3f4f6);border-radius:var(--tl-radius-md, 0.5rem);margin-bottom:var(--tl-spacing-3, 0.75rem);animation:pulse 1.5s ease-in-out infinite}.skeleton-totals{height:100px;background:var(--tl-color-muted, #f3f4f6);border-radius:var(--tl-radius-md, 0.5rem);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}.empty-cart{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--tl-spacing-8, 2rem);text-align:center}.empty-icon{width:48px;height:48px;color:var(--tl-color-muted-foreground, #9ca3af);margin-bottom:var(--tl-spacing-4, 1rem)}.empty-title{margin:0 0 var(--tl-spacing-2, 0.5rem);font-size:16px;font-weight:600;color:var(--tl-color-foreground, #111827)}.empty-message{margin:0;font-size:14px;color:var(--tl-color-muted-foreground, #6b7280)}.cart{background:var(--tl-color-background, #ffffff)}.cart.compact .cart-items{margin-bottom:var(--tl-spacing-2, 0.5rem)}.cart-items{margin-bottom:var(--tl-spacing-4, 1rem)}.cart-item{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--tl-spacing-3, 0.75rem) 0;border-bottom:1px solid var(--tl-color-border, #e5e7eb);transition:opacity 0.2s}.cart-item:last-child{border-bottom:none}.cart-item.removing{opacity:0.5}.item-info{flex:1;min-width:0}.item-name{margin:0;font-weight:600;font-size:15px;color:var(--tl-color-foreground, #111827)}.item-event{margin:var(--tl-spacing-1, 0.25rem) 0 0;font-size:14px;color:var(--tl-color-muted-foreground, #6b7280)}.item-date{margin:var(--tl-spacing-1, 0.25rem) 0 0;font-size:13px;color:var(--tl-color-muted-foreground, #9ca3af)}.item-quantity{margin:var(--tl-spacing-1, 0.25rem) 0 0;font-size:13px;color:var(--tl-color-muted-foreground, #6b7280)}.item-actions{display:flex;align-items:center;gap:var(--tl-spacing-3, 0.75rem);margin-left:var(--tl-spacing-4, 1rem)}.item-price{margin:0;font-weight:600;font-size:15px;color:var(--tl-color-foreground, #111827);white-space:nowrap}.remove-btn{width:28px;height:28px;padding:0;border:none;background:transparent;border-radius:var(--tl-radius-sm, 0.25rem);color:var(--tl-color-muted-foreground, #9ca3af);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color 0.15s, color 0.15s}.remove-btn:hover:not(:disabled){background-color:var(--tl-color-destructive-bg, #fee2e2);color:var(--tl-color-destructive, #ef4444)}.remove-btn:disabled{cursor:not-allowed;opacity:0.5}.remove-btn svg{width:16px;height:16px}.spinner{width:14px;height:14px;border:2px solid var(--tl-color-border, #e5e7eb);border-top-color:var(--tl-color-primary, #6366f1);border-radius:50%;animation:spin 0.6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.cart-totals{padding:var(--tl-spacing-3, 0.75rem) 0;border-top:1px solid var(--tl-color-border, #e5e7eb)}.total-row{display:flex;justify-content:space-between;align-items:center;padding:var(--tl-spacing-1, 0.25rem) 0}.total-row.subtotal,.total-row.fees{font-size:14px;color:var(--tl-color-muted-foreground, #6b7280)}.total-row.total{font-size:16px;font-weight:700;color:var(--tl-color-foreground, #111827);padding-top:var(--tl-spacing-2, 0.5rem);border-top:1px solid var(--tl-color-border, #e5e7eb);margin-top:var(--tl-spacing-2, 0.5rem)}.checkout-btn{width:100%;margin-top:var(--tl-spacing-4, 1rem);padding:var(--tl-spacing-3, 0.75rem) var(--tl-spacing-4, 1rem);border-radius:var(--tl-radius-md, 0.5rem);border:none;background-color:var(--tl-color-primary, #6366f1);color:var(--tl-color-primary-foreground, #ffffff);font-weight:600;font-size:16px;cursor:pointer;transition:opacity 0.15s, transform 0.1s}.checkout-btn:hover:not(:disabled){opacity:0.9}.checkout-btn:active:not(:disabled){transform:scale(0.98)}.checkout-btn:disabled{background-color:var(--tl-color-muted, #d1d5db);color:var(--tl-color-muted-foreground, #6b7280);cursor:not-allowed}.cart.compact .item-info{flex-direction:row;align-items:center}.cart.compact .cart-totals{padding:var(--tl-spacing-2, 0.5rem) 0}.cart.compact .total-row.total{margin-top:0;border-top:none;padding-top:0}"}},[1,"tl-cart",{showCheckoutButton:[4,"show-checkout-button"],checkoutLabel:[1,"checkout-label"],showRemoveButtons:[4,"show-remove-buttons"],compact:[4],cart:[32],loading:[32],error:[32],removingItemId:[32]}]);function c(){"undefined"!=typeof customElements&&["tl-cart"].forEach((t=>{"tl-cart"===t&&(customElements.get(a(t))||customElements.define(a(t),l))}))}export{l as T,c as d}
1
+ import{proxyCustomElement as t,HTMLElement as o,createEvent as r,h as e,transformTag as s}from"@stencil/core/internal/client";import{w as i,g as a}from"./sdk-connector.js";import{c as n,a as l}from"./ticket-selector.js";const c=t(class extends o{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.tlCheckout=r(this,"tlCheckout",7),this.tlItemRemoved=r(this,"tlItemRemoved",7),this.tlCartUpdated=r(this,"tlCartUpdated",7),this.tlError=r(this,"tlError",7),this.showCheckoutButton=!0,this.checkoutLabel="Checkout",this.showRemoveButtons=!0,this.compact=!1,this.element=n(l,{client:()=>a(),clientReady:()=>i(),emit:(t,o)=>this.forward(t,o)}),this.view=this.element.view}syncProps(){this.element.setProps({showCheckoutButton:this.showCheckoutButton,checkoutLabel:this.checkoutLabel,showRemoveButtons:this.showRemoveButtons,compact:this.compact})}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,o){"tlCheckout"===t?this.tlCheckout.emit(o):"tlItemRemoved"===t?this.tlItemRemoved.emit(o):"tlCartUpdated"===t?this.tlCartUpdated.emit(o):"tlError"===t&&this.tlError.emit(o)}renderSkeleton(){return e("div",{class:"skeleton-container"},e("div",{class:"skeleton-item"}),e("div",{class:"skeleton-item"}),e("div",{class:"skeleton-totals"}))}renderEmptyCart(){const t=this.view.strings;return e("div",{class:"empty-cart"},e("svg",{class:"empty-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",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"})),e("p",{class:"empty-title"},t.emptyTitle),e("p",{class:"empty-message"},t.emptyMessage))}renderCartItem(t){return e("div",{class:"cart-item "+(t.removing?"removing":""),key:t.id},e("div",{class:"item-info"},e("p",{class:"item-name"},t.name),t.showEvent&&e("p",{class:"item-event"},t.eventName),t.showDate&&e("p",{class:"item-date"},t.dateLabel),e("p",{class:"item-quantity"},t.quantityLabel)),e("div",{class:"item-actions"},e("p",{class:"item-price"},t.priceLabel),this.showRemoveButtons&&e("button",{class:"remove-btn",onClick:()=>this.element.actions.removeItem(t.id),disabled:t.removing,"aria-label":this.view.strings.removeItem},t.removing?e("span",{class:"spinner"}):e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})))))}render(){const{status:t,strings:o,derived:r}=this.view;return"loading"===t?this.renderSkeleton():"empty"===t?this.renderEmptyCart():e("div",{class:"cart "+(this.compact?"compact":"")},e("div",{class:"cart-items"},r.rows.map((t=>this.renderCartItem(t)))),e("div",{class:"cart-totals"},r.showSubtotalRow&&e("div",{class:"total-row subtotal"},e("span",null,o.subtotalRow),e("span",null,r.subtotalLabel)),r.showFeeRow&&e("div",{class:"total-row fees"},e("span",null,r.totals.feeLabel),e("span",null,r.feeAmountLabel)),r.showDiscountRow&&e("div",{class:"total-row discount"},e("span",null,o.discountRow),e("span",null,"-",r.discountLabel)),e("div",{class:"total-row total"},e("span",null,o.totalRow),e("span",null,r.totalLabel))),this.showCheckoutButton&&e("button",{class:"checkout-btn",onClick:()=>this.element.actions.checkout(),disabled:r.checkoutDisabled},this.checkoutLabel))}static get watchers(){return{showCheckoutButton:[{syncProps:0}],checkoutLabel:[{syncProps:0}],showRemoveButtons:[{syncProps:0}],compact:[{syncProps:0}]}}static get style(){return":host{display:block;font-family:var(--tl-font-family)}.skeleton-container{padding:var(--tl-spacing-4)}.skeleton-item{height:70px;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}.skeleton-totals{height:100px;background:var(--tl-color-muted);border-radius:var(--tl-radius-md);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}.empty-cart{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--tl-spacing-8);text-align:center}.empty-icon{width:48px;height:48px;color:var(--tl-color-muted-foreground);margin-bottom:var(--tl-spacing-4)}.empty-title{margin:0 0 var(--tl-spacing-2);font-size:16px;font-weight:600;color:var(--tl-color-foreground)}.empty-message{margin:0;font-size:14px;color:var(--tl-color-muted-foreground)}.cart{background:var(--tl-color-background)}.cart.compact .cart-items{margin-bottom:var(--tl-spacing-2)}.cart-items{margin-bottom:var(--tl-spacing-4)}.cart-item{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--tl-spacing-3) 0;border-bottom:1px solid var(--tl-color-border);transition:opacity 0.2s}.cart-item:last-child{border-bottom:none}.cart-item.removing{opacity:0.5}.item-info{flex:1;min-width:0}.item-name{margin:0;font-weight:600;font-size:15px;color:var(--tl-color-foreground)}.item-event{margin:var(--tl-spacing-1) 0 0;font-size:14px;color:var(--tl-color-muted-foreground)}.item-date{margin:var(--tl-spacing-1) 0 0;font-size:13px;color:var(--tl-color-muted-foreground)}.item-quantity{margin:var(--tl-spacing-1) 0 0;font-size:13px;color:var(--tl-color-muted-foreground)}.item-actions{display:flex;align-items:center;gap:var(--tl-spacing-3);margin-left:var(--tl-spacing-4)}.item-price{margin:0;font-weight:600;font-size:15px;color:var(--tl-color-foreground);white-space:nowrap}.remove-btn{width:28px;height:28px;padding:0;border:none;background:transparent;border-radius:var(--tl-radius-sm);color:var(--tl-color-muted-foreground);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color 0.15s, color 0.15s}.remove-btn:hover:not(:disabled){background-color:var(--tl-color-destructive-bg);color:var(--tl-color-destructive)}.remove-btn:disabled{cursor:not-allowed;opacity:0.5}.remove-btn svg{width:16px;height:16px}.spinner{width:14px;height:14px;border:2px solid var(--tl-color-border);border-top-color:var(--tl-color-primary);border-radius:50%;animation:spin 0.6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.cart-totals{padding:var(--tl-spacing-3) 0;border-top:1px solid var(--tl-color-border)}.total-row{display:flex;justify-content:space-between;align-items:center;padding:var(--tl-spacing-1) 0}.total-row.subtotal,.total-row.fees,.total-row.discount{font-size:14px;color:var(--tl-color-muted-foreground)}.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)}.checkout-btn{width:100%;margin-top:var(--tl-spacing-4);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}.checkout-btn:hover:not(:disabled){opacity:0.9}.checkout-btn:active:not(:disabled){transform:scale(0.98)}.checkout-btn:disabled{background-color:var(--tl-color-muted);color:var(--tl-color-muted-foreground);cursor:not-allowed}.cart.compact .item-info{flex-direction:row;align-items:center}.cart.compact .cart-totals{padding:var(--tl-spacing-2) 0}.cart.compact .total-row.total{margin-top:0;border-top:none;padding-top:0}"}},[1,"tl-cart",{showCheckoutButton:[4,"show-checkout-button"],checkoutLabel:[1,"checkout-label"],showRemoveButtons:[4,"show-remove-buttons"],compact:[4],view:[32]},void 0,{showCheckoutButton:[{syncProps:0}],checkoutLabel:[{syncProps:0}],showRemoveButtons:[{syncProps:0}],compact:[{syncProps:0}]}]);function d(){"undefined"!=typeof customElements&&["tl-cart"].forEach((t=>{"tl-cart"===t&&(customElements.get(s(t))||customElements.define(s(t),c))}))}export{c as T,d}
@@ -1 +1 @@
1
- import{proxyCustomElement as t,HTMLElement as e,createEvent as r,h as s,Host as o,transformTag as i}from"@stencil/core/internal/client";import{h as c,g as l}from"./sdk-connector.js";const a=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.tlComplete=r(this,"tl-complete",7),this.tlError=r(this,"tl-error",7),this.tlClose=r(this,"tl-close",7),this.disabled=!1,this.handleClick=()=>{if(!this.disabled)return c()?void l().checkout.openModal({onComplete:t=>{this.tlComplete.emit(t)},onError:t=>{this.tlError.emit({message:t.message})},onClose:()=>{this.tlClose.emit()}}):(console.error("[tl-checkout-wrapper] SDK not initialized. Call setSDK(ticketlayer) first."),void this.tlError.emit({message:"SDK not initialized"}))},this.handleKeyDown=t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.handleClick())}}render(){return s(o,{key:"ebaae5dd6710ffc5353ece4327012df0332fdbb7",class:{"tl-checkout-wrapper":!0,"tl-checkout-wrapper--disabled":this.disabled},onClick:this.handleClick,onKeyDown:this.handleKeyDown,role:"button",tabindex:this.disabled?-1:0,"aria-disabled":this.disabled?"true":null},s("slot",{key:"0118d9921df5af1ae2376fd4135bac487aac7ebd"}))}get el(){return this}static get style(){return"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, #3b82f6);outline-offset:2px;border-radius:var(--tl-radius-sm, 0.25rem)}tl-checkout-wrapper[disabled],tl-checkout-wrapper.tl-checkout-wrapper--disabled,.tl-checkout-wrapper--disabled{cursor:not-allowed;opacity:0.5}"}},[260,"tl-checkout-wrapper",{disabled:[4]}]);function n(){"undefined"!=typeof customElements&&["tl-checkout-wrapper"].forEach((t=>{"tl-checkout-wrapper"===t&&(customElements.get(i(t))||customElements.define(i(t),a))}))}export{a as T,n as d}
1
+ import{proxyCustomElement as t,HTMLElement as e,createEvent as s,h as i,Host as r,transformTag as c}from"@stencil/core/internal/client";import{w as o,g as l}from"./sdk-connector.js";import{c as a,d as h}from"./ticket-selector.js";const n=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.tlComplete=s(this,"tlComplete",7),this.tlError=s(this,"tlError",7),this.tlClose=s(this,"tlClose",7),this.disabled=!1,this.element=a(h,{client:()=>l(),clientReady:()=>o(),emit:(t,e)=>this.forward(t,e)}),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,e){"tlComplete"===t?this.tlComplete.emit(e):"tlError"===t?this.tlError.emit(e):"tlClose"===t&&this.tlClose.emit()}render(){const{interactive:t}=this.view.derived;return i(r,{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"},i("slot",{key:"5be08d5007a755e3d88a06ae89c08e082e4ba052"}))}static get watchers(){return{disabled:[{syncProps:0}]}}static get style(){return"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}"}},[260,"tl-checkout-wrapper",{disabled:[4],view:[32]},void 0,{disabled:[{syncProps:0}]}]);function d(){"undefined"!=typeof customElements&&["tl-checkout-wrapper"].forEach((t=>{"tl-checkout-wrapper"===t&&(customElements.get(c(t))||customElements.define(c(t),n))}))}export{n as T,d}
@@ -1 +1 @@
1
- import{proxyCustomElement as e,HTMLElement as t,createEvent as r,h as a,transformTag as i}from"@stencil/core/internal/client";import{w as s}from"./sdk-connector.js";import{e as n}from"./order-summary.js";const o=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.tlClick=r(this,"tlClick",7),this.tlError=r(this,"tlError",7),this.loadedEvent=null,this.loading=!1,this.error=null,this.handleClick=()=>{const e=this.current;e&&(console.log("[tl-event-card] Clicked:",e.id),this.tlClick.emit({eventId:e.id}))}}watchEventId(){this.loadEvent()}async componentWillLoad(){!this.event&&this.eventId&&await this.loadEvent()}async loadEvent(){if(!this.event&&this.eventId)try{this.loading=!0,this.error=null;const e=await s(),t=await e.getEventsManager().get(this.eventId);if(!t)throw new Error("Event not found");this.loadedEvent=function(e){const t=e.occurrences??[],r=t.map((e=>e.startsAt)).filter((e=>!!e)).sort(),a=Date.now(),i=r.find((e=>new Date(e).getTime()>=a))??r[0],s="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??""}}:{},...i?{nextOccurrence:{startsAt:i}}:{},availabilityStatus:s?"sold_out":"available"}}(t)}catch(e){console.error("[tl-event-card] Failed to load event:",e),this.error=n(e,"Failed to load event"),this.tlError.emit({message:this.error})}finally{this.loading=!1}}get current(){return this.event??this.loadedEvent}formatDate(e){return new Date(e).toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"})}getStatusBadgeClass(){const e="status-badge";switch(this.current?.availabilityStatus){case"available":return`${e} status-available`;case"limited":return`${e} status-limited`;case"sold_out":return`${e} status-sold-out`;default:return e}}getStatusLabel(){switch(this.current?.availabilityStatus){case"available":return"Available";case"limited":return"Limited";case"sold_out":return"Sold Out";default:return""}}render(){if(this.loading)return a("div",{class:"event-card card-skeleton","aria-busy":"true"},a("div",{class:"image-container"}),a("div",{class:"content"},a("div",{class:"skeleton-line short"}),a("div",{class:"skeleton-line long"})));if(this.error)return a("div",{class:"event-card card-error"},this.error);const e=this.current;if(!e)return null;const t=e.thumbnailUrl||e.imageUrl;return a("div",{class:"event-card",onClick:this.handleClick},a("div",{class:"image-container"},t?a("img",{src:t,alt:e.name,class:"event-image"}):a("div",{class:"image-placeholder"},a("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},a("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"}))),a("div",{class:"status-container"},a("span",{class:this.getStatusBadgeClass()},this.getStatusLabel()))),a("div",{class:"content"},e.category&&a("span",{class:"category"},e.category),a("h3",{class:"title"},e.name),e.nextOccurrence&&a("p",{class:"meta"},a("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},a("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"})),this.formatDate(e.nextOccurrence.startsAt)),e.venue&&a("p",{class:"meta"},a("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},a("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"}),a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"})),e.venue.name,", ",e.venue.city),e.shortDescription&&a("p",{class:"description"},e.shortDescription)))}static get watchers(){return{eventId:[{watchEventId:0}]}}static get style(){return":host{display:block;font-family:var(--tl-font-family, system-ui, sans-serif)}.event-card{background:var(--tl-secondary, #f3f4f6);border-radius:var(--tl-radius-lg, 0.75rem);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, #f9fafb)}.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, #6b7280)}.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, 0.25rem)}.status-available{background:var(--tl-success, #10b981);color:var(--tl-success-foreground, #ffffff)}.status-limited{background:var(--tl-warning, #f59e0b);color:var(--tl-warning-foreground, #ffffff)}.status-sold-out{background:var(--tl-error, #ef4444);color:var(--tl-error-foreground, #ffffff)}.content{padding:var(--tl-spacing-4, 1rem)}.category{display:inline-block;font-size:0.75rem;font-weight:500;text-transform:uppercase;letter-spacing:0.05em;color:var(--tl-primary, #6366f1)}.title{margin:0.25rem 0 0;font-size:1.125rem;font-weight:600;color:var(--tl-foreground, #111827);line-height:1.3}.event-card:hover .title{color:var(--tl-primary, #6366f1)}.meta{display:flex;align-items:center;gap:0.5rem;margin:0.5rem 0 0;font-size:0.875rem;color:var(--tl-muted-foreground, #6b7280)}.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, #6b7280);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, #f9fafb);border-radius:var(--tl-radius-sm, 0.25rem);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, 1rem);font-size:0.875rem;color:var(--tl-error, #ef4444);cursor:default}.card-error:hover{transform:none}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}"}},[1,"tl-event-card",{event:[16],eventId:[1,"event-id"],loadedEvent:[32],loading:[32],error:[32]},void 0,{eventId:[{watchEventId:0}]}]);function l(){"undefined"!=typeof customElements&&["tl-event-card"].forEach((e=>{"tl-event-card"===e&&(customElements.get(i(e))||customElements.define(i(e),o))}))}export{o as T,l as d}
1
+ import{proxyCustomElement as e,HTMLElement as t,createEvent as r,h as i,transformTag as s}from"@stencil/core/internal/client";import{w as o,g as n}from"./sdk-connector.js";import{c as a,e as l}from"./ticket-selector.js";const c=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.tlClick=r(this,"tlClick",7),this.tlError=r(this,"tlError",7),this.element=a(l,{client:()=>n(),clientReady:()=>o(),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:r}=this.view;if("loading"===e)return i("div",{class:"event-card card-skeleton","aria-busy":"true"},i("div",{class:"image-container"}),i("div",{class:"content"},i("div",{class:"skeleton-line short"}),i("div",{class:"skeleton-line long"})));if("error"===e)return i("div",{class:"event-card card-error"},t.error);const s=r.event;return s?i("div",{class:"event-card",onClick:this.handleClick},i("div",{class:"image-container"},r.image?i("img",{src:r.image,alt:s.name,class:"event-image"}):i("div",{class:"image-placeholder"},i("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},i("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"}))),i("div",{class:"status-container"},i("span",{class:r.statusBadgeClass},r.statusLabel))),i("div",{class:"content"},s.category&&i("span",{class:"category"},s.category),i("h3",{class:"title"},s.name),r.dateLabel&&i("p",{class:"meta"},i("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},i("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"})),r.dateLabel),r.venueLabel&&i("p",{class:"meta"},i("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},i("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"}),i("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"})),r.venueLabel),s.shortDescription&&i("p",{class:"description"},s.shortDescription))):null}static get watchers(){return{event:[{syncProps:0}],eventId:[{watchEventId:0}]}}static get style(){return":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}}"}},[1,"tl-event-card",{event:[16],eventId:[1,"event-id"],view:[32]},void 0,{event:[{syncProps:0}],eventId:[{watchEventId:0}]}]);function d(){"undefined"!=typeof customElements&&["tl-event-card"].forEach((e=>{"tl-event-card"===e&&(customElements.get(s(e))||customElements.define(s(e),c))}))}export{c as T,d}
@@ -1 +1 @@
1
- import{proxyCustomElement as e,HTMLElement as t,createEvent as s,h as r,transformTag as i}from"@stencil/core/internal/client";import{w as l}from"./sdk-connector.js";import{d as a}from"./tl-event-card2.js";const o=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.tlEventClick=s(this,"tlEventClick",7),this.limit=12,this.columns=3,this.events=[],this.loading=!0,this.error=null,this.handleEventClick=e=>{console.log("[tl-event-list] Event clicked:",e.detail.eventId),this.tlEventClick.emit(e.detail)}}watchFiltersChange(){this.loadEvents()}async componentWillLoad(){await this.loadEvents()}async loadEvents(){try{console.log("[tl-event-list] Loading events via SDK...",{limit:this.limit,category:this.category}),this.loading=!0,this.error=null;const e=(await l()).getEventsManager(),t=await e.list({limit:this.limit,category:this.category});console.log("[tl-event-list] Events loaded:",t.items.length),this.events=t.items}catch(e){console.error("[tl-event-list] Failed to load events:",e),this.error=e instanceof Error?e.message:"Failed to load events"}finally{this.loading=!1}}render(){const e="event-grid cols-"+Math.min(Math.max(this.columns,1),4);return this.loading?r("div",{class:e},Array.from({length:6}).map(((e,t)=>r("div",{class:"skeleton-card",key:t},r("div",{class:"skeleton-image"}),r("div",{class:"skeleton-content"},r("div",{class:"skeleton-line short"}),r("div",{class:"skeleton-line medium"}),r("div",{class:"skeleton-line long"})))))):this.error?r("div",{class:"error-state"},r("p",{class:"error-title"},"Error loading events"),r("p",{class:"error-message"},this.error)):0===this.events.length?r("div",{class:"empty-state"},r("svg",{class:"empty-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},r("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"})),r("p",{class:"empty-title"},"No events available"),r("p",{class:"empty-message"},"Check back later for upcoming events.")):r("div",{class:e},this.events.map((e=>r("tl-event-card",{key:e.id,event:e,onTlClick:this.handleEventClick}))))}static get watchers(){return{limit:[{watchFiltersChange:0}],category:[{watchFiltersChange:0}]}}static get style(){return":host{display:block;font-family:var(--tl-font-family, system-ui, sans-serif)}.event-grid{display:grid;gap:var(--tl-spacing-6, 1.5rem)}.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, #f3f4f6);border-radius:var(--tl-radius-lg, 0.75rem);overflow:hidden}.skeleton-image{aspect-ratio:16 / 9;background:var(--tl-muted, #f9fafb);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.skeleton-content{padding:var(--tl-spacing-4, 1rem);display:flex;flex-direction:column;gap:0.5rem}.skeleton-line{height:1rem;background:var(--tl-muted, #f9fafb);border-radius:var(--tl-radius-sm, 0.25rem);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, #ef4444);border-radius:var(--tl-radius-lg, 0.75rem);padding:var(--tl-spacing-4, 1rem)}.error-title{margin:0;font-weight:500;color:var(--tl-error, #ef4444)}.error-message{margin:0.25rem 0 0;font-size:0.875rem;color:var(--tl-error, #ef4444)}.empty-state{text-align:center;padding:var(--tl-spacing-8, 2rem) var(--tl-spacing-4, 1rem)}.empty-icon{width:4rem;height:4rem;margin:0 auto 1rem;color:var(--tl-muted-foreground, #6b7280)}.empty-title{margin:0;font-size:1.25rem;font-weight:600;color:var(--tl-foreground, #111827)}.empty-message{margin:0.5rem 0 0;color:var(--tl-muted-foreground, #6b7280)}"}},[1,"tl-event-list",{limit:[2],category:[1],columns:[2],events:[32],loading:[32],error:[32]},void 0,{limit:[{watchFiltersChange:0}],category:[{watchFiltersChange:0}]}]),n=o,c=function(){"undefined"!=typeof customElements&&["tl-event-list","tl-event-card"].forEach((e=>{switch(e){case"tl-event-list":customElements.get(i(e))||customElements.define(i(e),o);break;case"tl-event-card":customElements.get(i(e))||a()}}))};export{n as TlEventList,c as defineCustomElement}
1
+ import{proxyCustomElement as t,HTMLElement as e,createEvent as s,h as i,transformTag as r}from"@stencil/core/internal/client";import{w as l,g as a}from"./sdk-connector.js";import{d as o}from"./tl-event-card2.js";import{c as n,i as c}from"./ticket-selector.js";const d=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.tlEventClick=s(this,"tlEventClick",7),this.limit=12,this.columns=3,this.element=n(c,{client:()=>a(),clientReady:()=>l(),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:s,derived:r}=this.view,l="event-grid cols-"+r.columns;return"loading"===t?i("div",{class:l},Array.from({length:6}).map(((t,e)=>i("div",{class:"skeleton-card",key:e},i("div",{class:"skeleton-image"}),i("div",{class:"skeleton-content"},i("div",{class:"skeleton-line short"}),i("div",{class:"skeleton-line medium"}),i("div",{class:"skeleton-line long"})))))):"error"===t?i("div",{class:"error-state"},i("p",{class:"error-title"},s.errorTitle),i("p",{class:"error-message"},e.error)):"empty"===t?i("div",{class:"empty-state"},i("svg",{class:"empty-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},i("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"})),i("p",{class:"empty-title"},s.emptyTitle),i("p",{class:"empty-message"},s.emptyMessage)):i("div",{class:l},r.events.map((t=>i("tl-event-card",{key:t.id,event:t,onTlClick:this.handleEventClick}))))}static get watchers(){return{limit:[{watchFiltersChange:0}],category:[{watchFiltersChange:0}],columns:[{syncProps:0}]}}static get style(){return":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)}"}},[1,"tl-event-list",{limit:[2],category:[1],columns:[2],view:[32]},void 0,{limit:[{watchFiltersChange:0}],category:[{watchFiltersChange:0}],columns:[{syncProps:0}]}]),m=d,h=function(){"undefined"!=typeof customElements&&["tl-event-list","tl-event-card"].forEach((t=>{switch(t){case"tl-event-list":customElements.get(r(t))||customElements.define(r(t),d);break;case"tl-event-card":customElements.get(r(t))||o()}}))};export{m as TlEventList,h as defineCustomElement}
@@ -1 +1 @@
1
- import{proxyCustomElement as i,HTMLElement as t,createEvent as e,h as s,transformTag as n}from"@stencil/core/internal/client";import{w as l}from"./sdk-connector.js";import{e as o}from"./order-summary.js";const r=i(class extends t{constructor(i){super(),!1!==i&&this.__registerHost(),this.__attachShadow(),this.tlAuthChanged=e(this,"tlAuthChanged",7),this.tlMagicLinkSent=e(this,"tlMagicLinkSent",7),this.tlError=e(this,"tlError",7),this.heading="Sign in",this.allowCodeEntry=!0,this.phase="email",this.email="",this.code="",this.busy=!1,this.error=null,this.notice=null,this.customer=null,this.auth=null,this.unsubscribes=[],this.urlCodeUsed=!1,this.handleEmailInput=i=>{this.email=i.target.value,this.error=null},this.handleCodeInput=i=>{this.code=i.target.value,this.error=null},this.handleEmailSubmit=i=>{i.preventDefault(),this.requestLink()},this.handleCodeSubmit=i=>{i.preventDefault(),this.exchange(this.code.trim())}}async componentWillLoad(){const i=await l().catch((()=>null));if(!i)return void(this.error="Sign-in is not available right now");if(this.auth=i.getAuthManager?.()??null,!this.auth)return void(this.error="Sign-in is not available with this SDK");this.syncFromSDK(),this.unsubscribes.push(i.on("auth:changed",(()=>this.syncFromSDK()))),this.unsubscribes.push(i.on("session:changed",(()=>this.syncFromSDK())));const t=this.codeFromUrl();t&&!this.auth.authenticated&&await this.exchange(t)}disconnectedCallback(){this.unsubscribes.forEach((i=>i())),this.unsubscribes=[]}codeFromUrl(){if("undefined"==typeof window||!window.location?.search||this.urlCodeUsed)return null;const i=new URLSearchParams(window.location.search).get("code");return i&&(this.urlCodeUsed=!0),i}syncFromSDK(){this.auth&&(this.auth.authenticated?(this.customer=this.auth.customer??null,this.phase="signed-in"):"signed-in"===this.phase&&(this.customer=null,this.phase="email"))}async requestLink(i=!1){const t=this.email.trim();if(t){if(this.auth){this.busy=!0,this.error=null,this.notice=null;try{await this.auth.requestMagicLink({email:t}),this.phase="sent",this.notice=i?"Sent again. Check your inbox.":null,this.tlMagicLinkSent.emit({email:t})}catch(i){console.error("[tl-login] Magic-link request failed:",i),this.error=o(i,"Could not send your sign-in link"),this.tlError.emit({message:this.error})}finally{this.busy=!1}}}else this.error="Enter your email address"}async exchange(i){if(!i)return void(this.error="Enter the code from your email");if(!this.auth)return;const t=this.phase;this.busy=!0,this.error=null,this.phase="verifying";try{const t=await this.auth.exchange(i);this.customer=this.auth.customer??t?.customer??null,this.phase="signed-in",this.code="",this.tlAuthChanged.emit({customer:this.customer,authenticated:!0})}catch(i){console.error("[tl-login] Code exchange failed:",i),this.phase="verifying"===t||"email"===t?"email":"code",this.error="That code did not work. Check it and try again, or request a new link.",this.tlError.emit({message:this.error})}finally{this.busy=!1}}async signOut(){if(this.auth){this.busy=!0;try{await this.auth.logout()}catch(i){console.error("[tl-login] Sign out failed:",i)}finally{this.busy=!1,this.customer=null,this.phase="email",this.tlAuthChanged.emit({customer:null,authenticated:!1})}}}renderError(){return this.error?s("p",{class:"error",role:"alert"},this.error):null}render(){return"signed-in"===this.phase?s("div",{class:"login signed-in"},s("p",{class:"signed-in-text"},"Signed in as ",s("strong",null,this.customer?.email??"your account")),s("button",{type:"button",class:"secondary",disabled:this.busy,onClick:()=>this.signOut()},"Sign out")):"verifying"===this.phase?s("div",{class:"login"},s("h2",{class:"title"},"Signing you in…"),s("p",{class:"lead"},"Just a moment.")):"sent"===this.phase?s("div",{class:"login"},s("h2",{class:"title"},"Check your inbox"),s("p",{class:"lead"},"We've sent a sign-in link to ",s("strong",null,this.email),". Open it on this device to continue."),this.notice&&s("p",{class:"notice"},this.notice),this.renderError(),s("div",{class:"actions"},s("button",{type:"button",class:"secondary",disabled:this.busy,onClick:()=>this.requestLink(!0)},this.busy?"Sending…":"Resend link"),this.allowCodeEntry&&s("button",{type:"button",class:"link",onClick:()=>this.phase="code"},"Enter the code instead"),s("button",{type:"button",class:"link",onClick:()=>this.phase="email"},"Use a different email"))):"code"===this.phase?s("form",{class:"login",onSubmit:this.handleCodeSubmit},s("h2",{class:"title"},"Enter your code"),s("p",{class:"lead"},"Type the 6-digit code from the email we sent to ",s("strong",null,this.email),"."),s("label",{class:"label",htmlFor:"tl-login-code"},"Code"),s("input",{id:"tl-login-code",class:"input code-input",type:"text",inputmode:"numeric",autocomplete:"one-time-code",placeholder:"123456",value:this.code,disabled:this.busy,onInput:this.handleCodeInput}),this.renderError(),s("button",{type:"submit",class:"primary",disabled:this.busy},this.busy?"Checking…":"Sign in"),s("div",{class:"actions"},s("button",{type:"button",class:"link",onClick:()=>this.requestLink(!0)},"Resend link"),s("button",{type:"button",class:"link",onClick:()=>this.phase="sent"},"Back"))):s("form",{class:"login",onSubmit:this.handleEmailSubmit},s("h2",{class:"title"},this.heading),s("p",{class:"lead"},"Enter your email and we'll send you a secure sign-in link. No password needed."),s("label",{class:"label",htmlFor:"tl-login-email"},"Email address"),s("input",{id:"tl-login-email",class:"input",type:"email",autocomplete:"email",placeholder:"you@example.com",required:!0,value:this.email,disabled:this.busy||!this.auth,onInput:this.handleEmailInput}),this.renderError(),s("button",{type:"submit",class:"primary",disabled:this.busy||!this.auth},this.busy?"Sending link…":"Email me a sign-in link"))}static get style(){return":host{display:block;font-family:var(--tl-font-family, system-ui, sans-serif);color:var(--tl-foreground, #111827)}.login{display:flex;flex-direction:column;gap:var(--tl-spacing-3, 0.75rem);padding:var(--tl-spacing-6, 1.5rem);background:var(--tl-background, #ffffff);border:1px solid var(--tl-border, #e5e7eb);border-radius:var(--tl-radius-lg, 0.75rem)}.title{margin:0;font-size:1.25rem;font-weight:600}.lead{margin:0;font-size:0.875rem;color:var(--tl-muted-foreground, #6b7280)}.label{font-size:0.875rem;font-weight:500}.input{padding:var(--tl-spacing-3, 0.75rem);font:inherit;font-size:0.9375rem;color:var(--tl-foreground, #111827);background:var(--tl-background, #ffffff);border:1px solid var(--tl-border, #e5e7eb);border-radius:var(--tl-radius-md, 0.5rem)}.input:focus{outline:2px solid var(--tl-primary, #6366f1);outline-offset:1px}.code-input{font-family:var(--tl-font-family-mono, ui-monospace, monospace);font-size:1.25rem;letter-spacing:0.25em;text-align:center}.primary,.secondary{padding:var(--tl-spacing-3, 0.75rem) var(--tl-spacing-4, 1rem);font:inherit;font-size:0.9375rem;font-weight:600;border-radius:var(--tl-radius-md, 0.5rem);cursor:pointer}.primary{color:var(--tl-primary-foreground, #ffffff);background:var(--tl-primary, #6366f1);border:none}.primary:hover:not(:disabled){opacity:0.9}.secondary{color:var(--tl-foreground, #111827);background:var(--tl-secondary, #f3f4f6);border:1px solid var(--tl-border, #e5e7eb)}.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, #6366f1);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, 1rem)}.error{margin:0;font-size:0.8125rem;color:var(--tl-error, #ef4444)}.notice{margin:0;font-size:0.8125rem;color:var(--tl-success, #10b981)}.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}"}},[1,"tl-login",{heading:[1],allowCodeEntry:[4,"allow-code-entry"],phase:[32],email:[32],code:[32],busy:[32],error:[32],notice:[32],customer:[32]}]);function a(){"undefined"!=typeof customElements&&["tl-login"].forEach((i=>{"tl-login"===i&&(customElements.get(n(i))||customElements.define(n(i),r))}))}export{r as T,a as d}
1
+ import{proxyCustomElement as t,HTMLElement as i,createEvent as e,h as s,transformTag as r}from"@stencil/core/internal/client";import{w as n,g as o}from"./sdk-connector.js";import{w as l}from"./web-query.js";import{c as a,l as c}from"./ticket-selector.js";const d=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.tlAuthChanged=e(this,"tlAuthChanged",7),this.tlMagicLinkSent=e(this,"tlMagicLinkSent",7),this.tlError=e(this,"tlError",7),this.heading="Sign in",this.allowCodeEntry=!0,this.element=a(c,{client:()=>o(),clientReady:()=>n(),query:l,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 n().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:e,derived:r}=this.view;return"signed-in"===t?s("div",{class:"login signed-in"},s("p",{class:"signed-in-text"},e.signedInPrefix,s("strong",null,r.signedInEmail)),s("button",{type:"button",class:"secondary",disabled:i.busy,onClick:()=>this.element.actions.signOut()},e.signOut)):"verifying"===t?s("div",{class:"login"},s("h2",{class:"title"},e.verifyingTitle),s("p",{class:"lead"},e.verifyingLead)):"sent"===t?s("div",{class:"login"},s("h2",{class:"title"},e.sentTitle),s("p",{class:"lead"},e.sentLeadBefore,s("strong",null,i.email),e.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)},r.resendLabel),r.showCodeEntry&&s("button",{type:"button",class:"link",onClick:()=>this.element.actions.goTo("code")},e.enterCodeInstead),s("button",{type:"button",class:"link",onClick:()=>this.element.actions.goTo("email")},e.differentEmail))):"code"===t?s("form",{class:"login",onSubmit:this.handleCodeSubmit},s("h2",{class:"title"},e.codeTitle),s("p",{class:"lead"},e.codeLeadBefore,s("strong",null,i.email),e.codeLeadAfter),s("label",{class:"label",htmlFor:"tl-login-code"},e.codeLabel),s("input",{id:"tl-login-code",class:"input code-input",type:"text",inputmode:"numeric",autocomplete:"one-time-code",placeholder:e.codePlaceholder,value:i.code,disabled:i.busy,onInput:this.handleCodeInput}),this.renderError(),s("button",{type:"submit",class:"primary",disabled:i.busy},r.codeSubmitLabel),s("div",{class:"actions"},s("button",{type:"button",class:"link",onClick:()=>this.element.actions.requestLink(!0)},e.resendLink),s("button",{type:"button",class:"link",onClick:()=>this.element.actions.goTo("sent")},e.back))):s("form",{class:"login",onSubmit:this.handleEmailSubmit},s("h2",{class:"title"},this.heading),s("p",{class:"lead"},e.emailLead),s("label",{class:"label",htmlFor:"tl-login-email"},e.emailLabel),s("input",{id:"tl-login-email",class:"input",type:"email",autocomplete:"email",placeholder:e.emailPlaceholder,required:!0,value:i.email,disabled:r.inputsDisabled,onInput:this.handleEmailInput}),this.renderError(),s("button",{type:"submit",class:"primary",disabled:r.inputsDisabled},r.emailSubmitLabel))}static get watchers(){return{heading:[{syncProps:0}],allowCodeEntry:[{syncProps:0}]}}static get style(){return":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}"}},[1,"tl-login",{heading:[1],allowCodeEntry:[4,"allow-code-entry"],view:[32]},void 0,{heading:[{syncProps:0}],allowCodeEntry:[{syncProps:0}]}]);function p(){"undefined"!=typeof customElements&&["tl-login"].forEach((t=>{"tl-login"===t&&(customElements.get(r(t))||customElements.define(r(t),d))}))}export{d as T,p as d}
@@ -1 +1 @@
1
- import{proxyCustomElement as r,HTMLElement as t,createEvent as e,h as s,transformTag as o}from"@stencil/core/internal/client";import{w as i}from"./sdk-connector.js";import{i as a,e as n,t as l,o as d,f as c,a as h,s as f,b as u}from"./order-summary.js";import{d as m}from"./tl-login2.js";import{d as p}from"./tl-order-tickets2.js";import{d as g}from"./tl-ticket2.js";const v=r(class extends t{constructor(r){super(),!1!==r&&this.__registerHost(),this.__attachShadow(),this.tlOrderSelect=e(this,"tlOrderSelect",7),this.tlError=e(this,"tlError",7),this.emptyMessage="When you buy tickets they'll show up here, ready to view and download.",this.columns=2,this.orders=[],this.authenticated=!1,this.loading=!0,this.error=null,this.expandedId=null,this.sdk=null,this.unsubscribes=[]}async componentWillLoad(){if(this.sdk=await i().catch((()=>null)),!this.sdk)return this.loading=!1,void(this.error="Orders are not available right now");const r=this.sdk.getAuthManager?.();this.authenticated=!r||r.authenticated,this.unsubscribes.push(this.sdk.on("auth:changed",(()=>this.syncAuth()))),this.unsubscribes.push(this.sdk.on("session:changed",(()=>this.syncAuth()))),this.authenticated?await this.load():this.loading=!1}disconnectedCallback(){this.unsubscribes.forEach((r=>r())),this.unsubscribes=[]}syncAuth(){const r=this.sdk?.getAuthManager?.();if(!r)return;const t=this.authenticated;this.authenticated=r.authenticated,this.authenticated&&!t?this.load():!this.authenticated&&t&&(this.orders=[],this.expandedId=null)}async load(){if(this.sdk)try{this.loading=!0,this.error=null;const r=this.sdk.getOrdersManager?.();if(!r)throw Error("Orders are not available");const t=await r.mine();this.orders=t??[],this.authenticated=!0}catch(r){a(r)?(this.authenticated=!1,this.orders=[]):(console.error("[tl-my-orders] Failed to load orders:",r),this.error=n(r,"Failed to load your orders"),this.tlError.emit({message:this.error}))}finally{this.loading=!1}}toggle(r){const t=this.expandedId!==r;this.expandedId=t?r:null,t&&this.tlOrderSelect.emit({orderId:r})}renderRow(r){const t=this.expandedId===r.id,e=l(r),o=f(r.status);return s("li",{class:{order:!0,expanded:t},key:r.id},s("button",{type:"button",class:"order-row","aria-expanded":t?"true":"false",onClick:()=>this.toggle(r.id)},s("span",{class:"order-main"},s("span",{class:"order-number"},"Order ",r.orderNumber),s("span",{class:"order-event"},d(r)??"Order"),s("span",{class:"order-meta"},r.createdAt&&s("span",null,c(r.createdAt)),s("span",null,e," ticket",1===e?"":"s"))),s("span",{class:"order-side"},s("span",{class:"order-total"},h(r.total,r.currency)),s("span",{class:"status status-"+o},u(r.status)),s("svg",{class:"chevron",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 18l6-6-6-6"})))),t&&s("div",{class:"order-tickets"},s("tl-order-tickets",{orderId:r.id,columns:this.columns})))}render(){return this.loading?s("div",{class:"orders"},[0,1,2].map((r=>s("div",{class:"skeleton",key:r})))):this.authenticated?s("div",{class:"orders"},this.error?s("div",{class:"state error"},s("p",{class:"state-title"},"Could not load your orders"),s("p",{class:"state-text"},this.error)):0===this.orders.length?s("div",{class:"state empty"},s("svg",{class:"empty-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},s("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"}),s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M13 5v2M13 17v2M13 11v2"})),s("p",{class:"state-title"},"No orders yet"),s("p",{class:"state-text"},this.emptyMessage)):s("ul",{class:"order-list"},this.orders.map((r=>this.renderRow(r))))):s("div",{class:"orders"},s("div",{class:"signin"},s("p",{class:"signin-title"},"Sign in to see your orders"),s("p",{class:"signin-text"},"Your tickets and order history live in your account.")),s("tl-login",null))}static get style(){return":host{display:block;font-family:var(--tl-font-family, system-ui, sans-serif);color:var(--tl-foreground, #111827)}.orders{display:flex;flex-direction:column;gap:var(--tl-spacing-4, 1rem)}.order-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--tl-spacing-3, 0.75rem)}.order{background:var(--tl-background, #ffffff);border:1px solid var(--tl-border, #e5e7eb);border-radius:var(--tl-radius-lg, 0.75rem);overflow:hidden;transition:border-color 0.2s ease, box-shadow 0.2s ease}.order:hover,.order.expanded{border-color:var(--tl-primary, #6366f1);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, 1rem);width:100%;padding:var(--tl-spacing-4, 1rem);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, 0.25rem);min-width:0}.order-number{font-size:0.75rem;font-weight:500;text-transform:uppercase;letter-spacing:0.05em;color:var(--tl-muted-foreground, #6b7280)}.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, 0.75rem);font-size:0.8125rem;color:var(--tl-muted-foreground, #6b7280)}.order-side{display:flex;align-items:center;gap:var(--tl-spacing-3, 0.75rem);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, #f3f4f6);color:var(--tl-secondary-foreground, #111827)}.status-success{background:var(--tl-success, #10b981);color:var(--tl-success-foreground, #ffffff)}.status-info{background:var(--tl-primary, #6366f1);color:var(--tl-primary-foreground, #ffffff)}.status-warning{background:var(--tl-warning, #f59e0b);color:var(--tl-warning-foreground, #ffffff)}.status-error{background:var(--tl-error, #ef4444);color:var(--tl-error-foreground, #ffffff)}.chevron{width:1.125rem;height:1.125rem;color:var(--tl-muted-foreground, #6b7280);transition:transform 0.2s ease}.expanded .chevron{transform:rotate(90deg)}.order-tickets{padding:0 var(--tl-spacing-4, 1rem) var(--tl-spacing-4, 1rem);border-top:1px solid var(--tl-border, #e5e7eb);padding-top:var(--tl-spacing-4, 1rem)}@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.25rem) 0 0;font-size:0.875rem;color:var(--tl-muted-foreground, #6b7280)}.state{padding:var(--tl-spacing-8, 2rem) var(--tl-spacing-4, 1rem);text-align:center;background:var(--tl-background, #ffffff);border:1px solid var(--tl-border, #e5e7eb);border-radius:var(--tl-radius-lg, 0.75rem)}.state.error .state-title{color:var(--tl-error, #ef4444)}.empty-icon{width:3rem;height:3rem;margin:0 auto var(--tl-spacing-3, 0.75rem);color:var(--tl-primary, #6366f1)}.skeleton{height:5rem;background:var(--tl-secondary, #f3f4f6);border-radius:var(--tl-radius-lg, 0.75rem);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}"}},[1,"tl-my-orders",{emptyMessage:[1,"empty-message"],columns:[2],orders:[32],authenticated:[32],loading:[32],error:[32],expandedId:[32]}]),b=v,y=function(){"undefined"!=typeof customElements&&["tl-my-orders","tl-login","tl-order-tickets","tl-ticket"].forEach((r=>{switch(r){case"tl-my-orders":customElements.get(o(r))||customElements.define(o(r),v);break;case"tl-login":customElements.get(o(r))||m();break;case"tl-order-tickets":customElements.get(o(r))||p();break;case"tl-ticket":customElements.get(o(r))||g()}}))};export{b as TlMyOrders,y as defineCustomElement}
1
+ import{proxyCustomElement as r,HTMLElement as t,createEvent as e,h as s,transformTag as o}from"@stencil/core/internal/client";import{w as a,g as i}from"./sdk-connector.js";import{d as n}from"./tl-login2.js";import{d as l}from"./tl-order-tickets2.js";import{d}from"./tl-ticket2.js";import{c,m as p}from"./ticket-selector.js";const g=r(class extends t{constructor(r){super(),!1!==r&&this.__registerHost(),this.__attachShadow(),this.tlOrderSelect=e(this,"tlOrderSelect",7),this.tlError=e(this,"tlError",7),this.emptyMessage="When you buy tickets they'll show up here, ready to view and download.",this.columns=2,this.element=c(p,{client:()=>i(),clientReady:()=>a(),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 s("li",{class:{order:!0,expanded:r.expanded},key:r.id},s("button",{type:"button",class:"order-row","aria-expanded":r.expanded?"true":"false",onClick:()=>this.element.actions.toggle(r.id)},s("span",{class:"order-main"},s("span",{class:"order-number"},r.numberLabel),s("span",{class:"order-event"},r.eventName),s("span",{class:"order-meta"},r.dateLabel&&s("span",null,r.dateLabel),s("span",null,r.countLabel))),s("span",{class:"order-side"},s("span",{class:"order-total"},r.totalLabel),s("span",{class:"status status-"+r.statusTone},r.statusLabel),s("svg",{class:"chevron",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 18l6-6-6-6"})))),r.expanded&&s("div",{class:"order-tickets"},s("tl-order-tickets",{orderId:r.id,columns:this.columns})))}render(){const{status:r,strings:t,state:e,derived:o}=this.view;return"loading"===r?s("div",{class:"orders"},[0,1,2].map((r=>s("div",{class:"skeleton",key:r})))):"signed-out"===r?s("div",{class:"orders"},s("div",{class:"signin"},s("p",{class:"signin-title"},t.signInTitle),s("p",{class:"signin-text"},t.signInText)),s("tl-login",null)):s("div",{class:"orders"},"error"===r?s("div",{class:"state error"},s("p",{class:"state-title"},t.errorTitle),s("p",{class:"state-text"},e.error)):"empty"===r?s("div",{class:"state empty"},s("svg",{class:"empty-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},s("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"}),s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M13 5v2M13 17v2M13 11v2"})),s("p",{class:"state-title"},t.emptyTitle),s("p",{class:"state-text"},this.emptyMessage)):s("ul",{class:"order-list"},o.rows.map((r=>this.renderRow(r)))))}static get watchers(){return{emptyMessage:[{syncProps:0}],columns:[{syncProps:0}]}}static get style(){return":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}}"}},[1,"tl-my-orders",{emptyMessage:[1,"empty-message"],columns:[2],view:[32]},void 0,{emptyMessage:[{syncProps:0}],columns:[{syncProps:0}]}]),u=g,m=function(){"undefined"!=typeof customElements&&["tl-my-orders","tl-login","tl-order-tickets","tl-ticket"].forEach((r=>{switch(r){case"tl-my-orders":customElements.get(o(r))||customElements.define(o(r),g);break;case"tl-login":customElements.get(o(r))||n();break;case"tl-order-tickets":customElements.get(o(r))||l();break;case"tl-ticket":customElements.get(o(r))||d()}}))};export{u as TlMyOrders,m as defineCustomElement}
@@ -1 +1 @@
1
- import{proxyCustomElement as e,HTMLElement as t,createEvent as r,h as a,transformTag as s}from"@stencil/core/internal/client";import{w as o,g as i}from"./sdk-connector.js";const n=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.tlSelect=r(this,"tlSelect",7),this.orientation="auto",this.loading=!0,this.error=null,this.occurrences=[],this.currentMonth=new Date,this.selectedDate=null,this.computedDisplayMode="list",this.containerWidth=0}async componentWillLoad(){await this.waitForSDKAndFetch()}async waitForSDKAndFetch(){if(!this.eventId)return this.error="Event ID is required",void(this.loading=!1);try{await o(),await this.fetchOccurrences()}catch(e){this.error=e instanceof Error?e.message:"SDK not initialized.",this.loading=!1}}componentDidLoad(){this.containerRef&&"undefined"!=typeof ResizeObserver&&(this.resizeObserver=new ResizeObserver((e=>{for(const t of e)this.containerWidth=t.contentRect.width})),this.resizeObserver.observe(this.containerRef))}disconnectedCallback(){this.resizeObserver&&this.resizeObserver.disconnect()}async onEventIdChange(){await this.fetchOccurrences()}async fetchOccurrences(){this.loading=!0,this.error=null;try{const e=i().getEventsManager(),t=await e.get(this.eventId);if(!t)throw new Error("Event not found");this.occurrences=(t.occurrences||[]).map((e=>({id:e.id,startsAt:e.startsAt,endsAt:e.endsAt,status:e.availabilityStatus,availableCapacity:e.availableCapacity,soldOut:"sold_out"===e.availabilityStatus}))),this.computeDisplayMode(),this.computeInitialSelection()}catch(e){console.error("[tl-occurrence-selector] Failed to fetch occurrences:",e),this.error=e instanceof Error?e.message:"Failed to load occurrences",this.occurrences=[]}finally{this.loading=!1}}computeDisplayMode(){if(this.displayMode)return void(this.computedDisplayMode=this.displayMode);if(this.occurrences.length<=5)return void(this.computedDisplayMode="list");const e=new Set;for(const t of this.occurrences){const r=new Date(t.startsAt);e.add(r.toDateString())}this.computedDisplayMode=1===e.size?"slots":"calendar"}computeInitialSelection(){if(0===this.occurrences.length)return;const e=new Date;e.setHours(0,0,0,0);const t=this.getDatesWithOccurrences();let r=null;for(const a of Array.from(t.keys()).sort()){const t=new Date(a);if(t>=e){r=t;break}}if(!r&&t.size>0){const e=Array.from(t.keys()).sort();r=new Date(e[e.length-1])}r&&(this.selectedDate=r,this.currentMonth=new Date(r.getFullYear(),r.getMonth(),1))}getDatesWithOccurrences(){const e=new Map;for(const t of this.occurrences){const r=new Date(t.startsAt);r.setHours(0,0,0,0);const a=r.toDateString();e.has(a)||e.set(a,[]),e.get(a).push(t)}return e}getDateRange(){if(0===this.occurrences.length)return null;let e=new Date(this.occurrences[0].startsAt),t=new Date(this.occurrences[0].startsAt);for(const r of this.occurrences){const a=new Date(r.startsAt);a<e&&(e=a),a>t&&(t=a)}return{first:e,last:t}}isSingleWeek(){const e=this.getDateRange();if(!e)return!1;const t=new Date(e.first),r=t.getDay(),a=0===r?6:r-1;t.setDate(t.getDate()-a),t.setHours(0,0,0,0);const s=new Date(t);return s.setDate(s.getDate()+6),s.setHours(23,59,59,999),e.last<=s}isSingleMonth(){const e=this.getDateRange();return!!e&&e.first.getMonth()===e.last.getMonth()&&e.first.getFullYear()===e.last.getFullYear()}isHorizontalLayout(){return"horizontal"===this.orientation||"vertical"!==this.orientation&&this.containerWidth>=768}formatDate(e){return e.toLocaleDateString("en-GB",{weekday:"long",day:"numeric",month:"long",year:"numeric"})}formatTime(e){return new Date(e).toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"})}formatDateTime(e){const t=new Date(e);return{date:t.toLocaleDateString("en-GB",{weekday:"long",day:"numeric",month:"long",year:"numeric"}),time:t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"})}}handleSelect(e){e.soldOut||0===e.availableCapacity||(console.log("[tl-occurrence-selector] Selected:",e.id),this.tlSelect.emit({occurrence:e}))}handleDateSelect(e){this.selectedDate=e,e.getMonth()===this.currentMonth.getMonth()&&e.getFullYear()===this.currentMonth.getFullYear()||(this.currentMonth=new Date(e.getFullYear(),e.getMonth(),1))}handlePrevMonth(){const e=this.getDateRange();if(!e)return;const t=new Date(this.currentMonth);t.setMonth(t.getMonth()-1),t>=new Date(e.first.getFullYear(),e.first.getMonth(),1)&&(this.currentMonth=t)}handleNextMonth(){const e=this.getDateRange();if(!e)return;const t=new Date(this.currentMonth);t.setMonth(t.getMonth()+1),t<=new Date(e.last.getFullYear(),e.last.getMonth(),1)&&(this.currentMonth=t)}isPrevMonthDisabled(){const e=this.getDateRange();if(!e)return!0;const t=new Date(e.first.getFullYear(),e.first.getMonth(),1);return this.currentMonth<=t}isNextMonthDisabled(){const e=this.getDateRange();if(!e)return!0;const t=new Date(e.last.getFullYear(),e.last.getMonth(),1);return this.currentMonth>=t}getCalendarDays(){if(this.isSingleWeek()){const e=this.getDateRange();if(!e)return[];const t=new Date(e.first),r=t.getDay(),a=0===r?6:r-1;t.setDate(t.getDate()-a),t.setHours(0,0,0,0);const s=[],o=new Date(t);for(let e=0;e<7;e++)s.push(new Date(o)),o.setDate(o.getDate()+1);return s}const e=this.currentMonth.getFullYear(),t=this.currentMonth.getMonth(),r=new Date(e,t,1),a=new Date(e,t+1,0),s=r.getDay(),o=0===s?6:s-1,i=new Date(r);i.setDate(i.getDate()-o);const n=a.getDay(),l=0===n?0:7-n,d=new Date(a);d.setDate(d.getDate()+l);const c=[],u=new Date(i);for(;u<=d;)c.push(new Date(u)),u.setDate(u.getDate()+1);return c}hasOccurrencesOnDate(e){const t=e.toDateString();return this.getDatesWithOccurrences().has(t)}isDateSoldOut(e){const t=e.toDateString(),r=this.getDatesWithOccurrences().get(t);return!!r&&r.every((e=>e.soldOut||0===e.availableCapacity))}getSelectedDateOccurrences(){if(!this.selectedDate)return[];const e=this.selectedDate.toDateString();return(this.getDatesWithOccurrences().get(e)||[]).sort(((e,t)=>new Date(e.startsAt).getTime()-new Date(t.startsAt).getTime()))}getThemeStyles(){if(!this.theme)return{};const e={};return this.theme.primaryColor&&(e["--tl-primary"]=this.theme.primaryColor),this.theme.primaryForeground&&(e["--tl-primary-foreground"]=this.theme.primaryForeground),this.theme.backgroundColor&&(e["--tl-background"]=this.theme.backgroundColor),this.theme.foregroundColor&&(e["--tl-foreground"]=this.theme.foregroundColor),this.theme.mutedColor&&(e["--tl-muted"]=this.theme.mutedColor),this.theme.mutedForeground&&(e["--tl-muted-foreground"]=this.theme.mutedForeground),this.theme.borderColor&&(e["--tl-border"]=this.theme.borderColor),this.theme.borderRadius&&(e["--tl-radius"]=this.theme.borderRadius),this.theme.fontFamily&&(e["--tl-font-family"]=this.theme.fontFamily),e}renderListView(){return a("div",{class:"list-view"},this.occurrences.map((e=>{const t=e.soldOut||0===e.availableCapacity,{date:r,time:s}=this.formatDateTime(e.startsAt);return a("button",{key:e.id,class:"occurrence-item "+(t?"sold-out":""),onClick:()=>this.handleSelect(e),disabled:t},a("div",{class:"occurrence-info"},a("div",{class:"occurrence-date"},r),a("div",{class:"occurrence-time"},s,e.endsAt&&` - ${this.formatTime(e.endsAt)}`)),a("div",{class:"occurrence-status"},t?a("span",{class:"status-sold-out"},"Sold Out"):e.availableCapacity?a("span",{class:"status-available"},e.availableCapacity," available"):a("span",{class:"status-arrow"},"→")))})))}renderSlotsView(){const e=[...this.occurrences].sort(((e,t)=>new Date(e.startsAt).getTime()-new Date(t.startsAt).getTime())),t=e.length>0?this.formatDate(new Date(e[0].startsAt)):"";return a("div",{class:"slots-view"},t&&a("div",{class:"slots-date-header"},t),a("div",{class:"time-slots-grid"},e.map((e=>{const t=e.soldOut||0===e.availableCapacity;return a("button",{key:e.id,class:"time-slot "+(t?"sold-out":""),onClick:()=>this.handleSelect(e),disabled:t},a("span",{class:"slot-time"},this.formatTime(e.startsAt)),t&&a("span",{class:"slot-sold-out"},"Sold Out"))}))))}renderCalendarHeader(){const e=this.currentMonth.toLocaleDateString("en-GB",{month:"long",year:"numeric"}),t=!this.isSingleMonth();return a("div",{class:"calendar-header"},a("span",{class:"month-label"},e),t&&a("div",{class:"calendar-nav-buttons"},a("button",{class:"nav-button",onClick:()=>this.handlePrevMonth(),disabled:this.isPrevMonthDisabled(),"aria-label":"Previous month"},a("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},a("path",{d:"M15 18l-6-6 6-6"}))),a("button",{class:"nav-button",onClick:()=>this.handleNextMonth(),disabled:this.isNextMonthDisabled(),"aria-label":"Next month"},a("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},a("path",{d:"M9 18l6-6-6-6"})))))}renderCalendarGrid(){const e=this.getCalendarDays(),t=new Date;return t.setHours(0,0,0,0),a("div",{class:"calendar-grid"},["Mon","Tue","Wed","Thu","Fri","Sat","Sun"].map((e=>a("div",{class:"weekday-header",key:e},e))),e.map((e=>{const r=e.getMonth()===this.currentMonth.getMonth(),s=this.hasOccurrencesOnDate(e),o=this.isDateSoldOut(e),i=this.selectedDate&&e.toDateString()===this.selectedDate.toDateString(),n=e.toDateString()===t.toDateString(),l=e<t;return a("button",{key:e.toISOString(),class:`calendar-day \n ${r?"":"other-month"} \n ${s?"has-occurrences":""} \n ${o?"sold-out":""} \n ${i?"selected":""} \n ${n?"today":""}\n ${l?"past":""}`,onClick:()=>s&&this.handleDateSelect(e),disabled:!s},a("span",{class:"day-number"},e.getDate()),s&&a("span",{class:"occurrence-dot"}))})))}renderSelectedDateSlots(){const e=this.getSelectedDateOccurrences();if(!this.selectedDate||0===e.length)return a("div",{class:"selected-date-slots empty"},a("p",null,"Select a date to see available times"));const t=this.formatDate(this.selectedDate);return a("div",{class:"selected-date-slots"},a("div",{class:"selected-date-header"},t),a("div",{class:"time-slots-list"},e.map((e=>{const t=e.soldOut||0===e.availableCapacity;return a("button",{key:e.id,class:"time-slot-item "+(t?"sold-out":""),onClick:()=>this.handleSelect(e),disabled:t},a("span",{class:"slot-time"},this.formatTime(e.startsAt)),a("div",{class:"slot-status"},t?a("span",{class:"status-sold-out"},"Sold Out"):e.availableCapacity?a("span",{class:"status-available"},e.availableCapacity," available"):a("span",{class:"status-arrow"},"→")))}))))}renderCalendarView(){const e=this.isHorizontalLayout();return a("div",{class:"calendar-view "+(e?"horizontal":"vertical")},a("div",{class:"calendar-panel"},this.renderCalendarHeader(),this.renderCalendarGrid()),a("div",{class:"slots-panel"},this.renderSelectedDateSlots()))}renderSkeleton(){return a("div",{class:"loading-container"},a("div",{class:"skeleton-calendar"},a("div",{class:"skeleton skeleton-calendar-header"}),a("div",{class:"skeleton-calendar-grid"},Array.from({length:35},((e,t)=>a("div",{key:t,class:"skeleton skeleton-calendar-day"}))))))}render(){const e=this.getThemeStyles();return a("div",{key:"40758aaa06e5f062de92675766e4531995f74bc7",class:"occurrence-selector",ref:e=>this.containerRef=e,style:e},this.loading&&this.renderSkeleton(),!this.loading&&this.error&&a("div",{key:"6d2f5b9c07f65d4941bfb4870729fe3248cb277e",class:"error-container"},a("svg",{key:"daaf1f48dcff80ae7cf94ae0da1d66d9c9b7fb0f",class:"error-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},a("circle",{key:"0a9f494a5cf7f79146e56fc44469a3ca9e5238ae",cx:"12",cy:"12",r:"10"}),a("path",{key:"67d7b453508c847593136bd60e34ea0c38d30cda",d:"M12 8v4m0 4h.01"})),a("p",{key:"c1cc92585ed4451b686350b6d718c3ba06b72dd3",class:"error-message"},this.error),a("button",{key:"4ec9d048af704af12a800385b9868501973ba477",class:"retry-button",onClick:()=>this.fetchOccurrences()},"Retry")),!this.loading&&!this.error&&(0===this.occurrences.length?a("div",{class:"no-occurrences"},a("p",null,"No dates available for this event.")):a("div",{class:"selector-content"},"list"===this.computedDisplayMode&&this.renderListView(),"slots"===this.computedDisplayMode&&this.renderSlotsView(),"calendar"===this.computedDisplayMode&&this.renderCalendarView())))}static get watchers(){return{eventId:[{onEventIdChange:0}]}}static get style(){return":host{--tl-radius:var(--tl-radius-md, 0.5rem);display:block;font-family:var(--tl-font-family, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);color:var(--tl-foreground, #0f172a)}*{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, #64748b)}.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, #ffffff);border:1px solid var(--tl-border, #e2e8f0);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, #e64b12);background:color-mix(in srgb, var(--tl-primary, #e64b12) 5%, var(--tl-background, #ffffff))}.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, #f1f5f9)}.occurrence-item.sold-out{opacity:0.6;background:var(--tl-muted, #f1f5f9)}.occurrence-info{flex:1}.occurrence-date{font-weight:600;font-size:0.9375rem;color:var(--tl-foreground, #0f172a);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, #e64b12)}.slots-view{display:flex;flex-direction:column;gap:1rem}.slots-date-header{font-size:1.125rem;font-weight:600;color:var(--tl-foreground, #0f172a);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, #ffffff);border:1px solid var(--tl-border, #e2e8f0);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, #e64b12);background:color-mix(in srgb, var(--tl-primary, #e64b12) 5%, var(--tl-background, #ffffff))}.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, #f1f5f9)}.time-slot.sold-out{opacity:0.6;background:var(--tl-muted, #f1f5f9)}.slot-time{font-size:0.9375rem;font-weight:600;color:var(--tl-foreground, #0f172a)}.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, #e2e8f0);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, #0f172a);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, #ffffff);border:1px solid var(--tl-border, #e2e8f0);border-radius:var(--tl-radius);cursor:pointer;transition:all 0.15s ease;color:var(--tl-foreground, #0f172a)}.nav-button:hover:not(:disabled){background:var(--tl-muted, #f1f5f9)}.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, #ffffff);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, #0f172a)}.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, #e64b12) 10%, var(--tl-background, #ffffff));border-color:transparent;font-weight:600;color:var(--tl-primary, #e64b12)}.calendar-day.has-occurrences:hover{background:color-mix(in srgb, var(--tl-primary, #e64b12) 18%, var(--tl-background, #ffffff));border-color:transparent}.calendar-day.has-occurrences.sold-out{background:var(--tl-muted, #f1f5f9);border-color:transparent}.calendar-day.has-occurrences.sold-out:hover{background:color-mix(in srgb, var(--tl-muted, #f1f5f9) 80%, var(--tl-background, #ffffff));border-color:transparent}.calendar-day.selected{background:var(--tl-primary, #e64b12);border-color:var(--tl-primary, #e64b12);color:var(--tl-primary-foreground, #ffffff)}.calendar-day.selected:hover{background:color-mix(in srgb, var(--tl-primary, #e64b12) 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, #f1f5f9);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, #0f172a);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, #ffffff);border:1px solid var(--tl-border, #e2e8f0);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, #e64b12);background:color-mix(in srgb, var(--tl-primary, #e64b12) 5%, var(--tl-background, #ffffff))}.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, #f1f5f9)}.time-slot-item.sold-out{opacity:0.6;background:var(--tl-muted, #f1f5f9)}.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, #f1f5f9);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, #e2e8f0);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, #0f172a);font-size:0.9375rem;max-width:400px}.retry-button{margin-top:0.5rem;padding:0.625rem 1.25rem;background:var(--tl-primary, #e64b12);color:var(--tl-primary-foreground, #ffffff);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, #e64b12) 90%, black)}.retry-button:focus-visible{outline:2px solid var(--tl-primary);outline-offset:2px}"}},[1,"tl-occurrence-selector",{eventId:[1,"event-id"],displayMode:[1,"display-mode"],orientation:[1],theme:[16],loading:[32],error:[32],occurrences:[32],currentMonth:[32],selectedDate:[32],computedDisplayMode:[32],containerWidth:[32]},void 0,{eventId:[{onEventIdChange:0}]}]);function l(){"undefined"!=typeof customElements&&["tl-occurrence-selector"].forEach((e=>{"tl-occurrence-selector"===e&&(customElements.get(s(e))||customElements.define(s(e),n))}))}export{n as T,l as d}
1
+ import{proxyCustomElement as e,HTMLElement as r,createEvent as t,h as o,transformTag as a}from"@stencil/core/internal/client";import{w as s,g as i}from"./sdk-connector.js";import{c as l,o as n}from"./ticket-selector.js";const d=[["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"]],c=e(class extends r{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.tlSelect=t(this,"tlSelect",7),this.orientation="auto",this.element=l(n,{client:()=>i(),clientReady:()=>s(),emit:(e,r)=>this.forward(e,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((e=>{this.view=e}))),this.view=this.element.view,this.teardown=this.element.mount()}componentDidLoad(){this.containerRef&&"undefined"!=typeof ResizeObserver&&(this.resizeObserver=new ResizeObserver((e=>{for(const r of e)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(e,r){"tlSelect"===e&&this.tlSelect.emit(r)}themeStyles(){const e={};if(!this.theme)return e;for(const[r,t]of d){const o=this.theme[r];o&&(e[t]=o)}return e}renderRowStatus(e){const{strings:r}=this.view;return"soldOut"===e.statusKind?o("span",{class:"status-sold-out"},r.soldOut):"available"===e.statusKind?o("span",{class:"status-available"},e.capacityLabel):o("span",{class:"status-arrow"},"→")}renderListView(){return o("div",{class:"list-view"},this.view.derived.rows.map((e=>o("button",{key:e.id,class:"occurrence-item "+(e.soldOut?"sold-out":""),onClick:()=>this.element.actions.select(e.id),disabled:e.soldOut},o("div",{class:"occurrence-info"},o("div",{class:"occurrence-date"},e.dateLabel),o("div",{class:"occurrence-time"},e.timeLabel)),o("div",{class:"occurrence-status"},this.renderRowStatus(e))))))}renderSlotsView(){const{slots:e,slotsDateLabel:r}=this.view.derived;return o("div",{class:"slots-view"},r&&o("div",{class:"slots-date-header"},r),o("div",{class:"time-slots-grid"},e.map((e=>o("button",{key:e.id,class:"time-slot "+(e.soldOut?"sold-out":""),onClick:()=>this.element.actions.select(e.id),disabled:e.soldOut},o("span",{class:"slot-time"},e.startLabel),e.soldOut&&o("span",{class:"slot-sold-out"},this.view.strings.soldOut))))))}renderCalendarHeader(){const{strings:e,derived:r}=this.view;return o("div",{class:"calendar-header"},o("span",{class:"month-label"},r.monthLabel),r.showMonthNav&&o("div",{class:"calendar-nav-buttons"},o("button",{class:"nav-button",onClick:()=>this.element.actions.previousMonth(),disabled:!r.canGoBack,"aria-label":e.previousMonth},o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},o("path",{d:"M15 18l-6-6 6-6"}))),o("button",{class:"nav-button",onClick:()=>this.element.actions.nextMonth(),disabled:!r.canGoForward,"aria-label":e.nextMonth},o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},o("path",{d:"M9 18l6-6-6-6"})))))}renderCalendarDay(e){return o("button",{key:e.key,class:e.className,onClick:()=>this.element.actions.selectDate(e.key),disabled:!e.selectable},o("span",{class:"day-number"},e.dayNumber),e.hasOccurrences&&o("span",{class:"occurrence-dot"}))}renderCalendarGrid(){const{derived:e}=this.view;return o("div",{class:"calendar-grid"},e.weekdayLabels.map((e=>o("div",{class:"weekday-header",key:e},e))),e.days.map((e=>this.renderCalendarDay(e))))}renderSelectedDateSlots(){const{strings:e,derived:r}=this.view;return r.selectedDateLabel?o("div",{class:"selected-date-slots"},o("div",{class:"selected-date-header"},r.selectedDateLabel),o("div",{class:"time-slots-list"},r.selectedSlots.map((e=>o("button",{key:e.id,class:"time-slot-item "+(e.soldOut?"sold-out":""),onClick:()=>this.element.actions.select(e.id),disabled:e.soldOut},o("span",{class:"slot-time"},e.startLabel),o("div",{class:"slot-status"},this.renderRowStatus(e))))))):o("div",{class:"selected-date-slots empty"},o("p",null,e.selectADate))}renderCalendarView(){return o("div",{class:this.view.derived.viewClass},o("div",{class:"calendar-panel"},this.renderCalendarHeader(),this.renderCalendarGrid()),o("div",{class:"slots-panel"},this.renderSelectedDateSlots()))}renderSkeleton(){return o("div",{class:"loading-container"},o("div",{class:"skeleton-calendar"},o("div",{class:"skeleton skeleton-calendar-header"}),o("div",{class:"skeleton-calendar-grid"},Array.from({length:35},((e,r)=>o("div",{key:r,class:"skeleton skeleton-calendar-day"}))))))}render(){const{status:e,strings:r,state:t,derived:a}=this.view;return o("div",{key:"84951fb5171ed6c79604861a171f49f43c8b809c",class:"occurrence-selector",ref:e=>this.containerRef=e,style:this.themeStyles()},"loading"===e&&this.renderSkeleton(),"error"===e&&o("div",{key:"2850712eae277f32f3538426c8a5d36b73ca918e",class:"error-container"},o("svg",{key:"89192cd7cce29781b87c83c8dee71d59f6a685ed",class:"error-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},o("circle",{key:"27a52ecb1228c541202752be84323abe687c1655",cx:"12",cy:"12",r:"10"}),o("path",{key:"f51c2b49de89b9c66cde01e11a2de4c56d4dbad9",d:"M12 8v4m0 4h.01"})),o("p",{key:"3c85d762de430f477d2c9ad4341b23765c93e2e3",class:"error-message"},t.error),o("button",{key:"22fa271a8f0a15e18141cf6d66a25a2bf9299c72",class:"retry-button",onClick:()=>{this.element.actions.load()}},r.retry)),"empty"===e&&o("div",{key:"285403135ccff6cd6c8de6a9c62c9186c67c102c",class:"no-occurrences"},o("p",{key:"98373f0c5793cb1aba1328558fac3210e7c6aeeb"},r.empty)),"ready"===e&&o("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}]}}static get style(){return":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}"}},[1,"tl-occurrence-selector",{eventId:[1,"event-id"],displayMode:[1,"display-mode"],orientation:[1],theme:[16],view:[32]},void 0,{eventId:[{watchSubject:0}],displayMode:[{syncProps:0}],orientation:[{syncProps:0}],theme:[{syncProps:0}]}]);function u(){"undefined"!=typeof customElements&&["tl-occurrence-selector"].forEach((e=>{"tl-occurrence-selector"===e&&(customElements.get(a(e))||customElements.define(a(e),c))}))}export{c as T,u as d}
@@ -1 +1 @@
1
- import{proxyCustomElement as t,HTMLElement as e,createEvent as r,h as s,transformTag as i}from"@stencil/core/internal/client";import{o,w as a}from"./sdk-connector.js";import{e as l,r as n,o as c,c as d,d as m,a as u,g as h}from"./order-summary.js";import{d as p}from"./tl-order-tickets2.js";import{d as f}from"./tl-ticket2.js";const g=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.tlOrderLoaded=r(this,"tlOrderLoaded",7),this.tlError=r(this,"tlError",7),this.showTickets=!0,this.columns=2,this.order=null,this.resolvedOrderId=null,this.loading=!1,this.error=null,this.paymentFailed=!1,this.occurrence=null,this.signedInCustomer=null}watchOrderId(t){this.resolvedOrderId=t||this.orderIdFromUrl(),this.load()}async componentWillLoad(){const t=this.urlParams(),e=t?.get("redirect_status");this.paymentFailed=!!e&&"succeeded"!==e,this.resolvedOrderId=this.orderId||this.orderIdFromUrl(),this.resolvedOrderId&&!this.paymentFailed&&await this.load()}componentDidLoad(){this.unsubscribe=o("checkout:completed",(t=>{const e=t;e?.id&&(this.paymentFailed=!1,this.order=e,this.resolvedOrderId=e.id,this.tlOrderLoaded.emit({order:e}),this.load())}))}disconnectedCallback(){this.unsubscribe?.()}urlParams(){return"undefined"!=typeof window&&window.location?.search?new URLSearchParams(window.location.search):null}orderIdFromUrl(){return this.urlParams()?.get("orderId")||null}async load(){const t=this.resolvedOrderId;if(t)try{this.loading=!this.order,this.error=null;const e=await a(),r=e.getOrdersManager?.();if(!r)throw Error("Orders are not available");const s=await r.get(t);if(!s)throw Error("Order not found");this.order=s,this.signedInCustomer=e.getAuthManager?.()?.customer??null,this.tlOrderLoaded.emit({order:s}),this.resolveEvent(e,s)}catch(t){console.error("[tl-order-confirmation] Failed to load order:",t),this.error=l(t,"Failed to load your order"),this.tlError.emit({message:this.error})}finally{this.loading=!1}}async resolveEvent(t,e){const r=e.tickets?.find((t=>t.eventOccurrenceId))?.eventOccurrenceId;if(r)try{const s=await n(t,r);s&&this.order?.id===e.id&&(this.occurrence=s)}catch{}}renderRows(t){const e=this.customerEmail||d(t,this.signedInCustomer),r=this.occurrence?.eventName||c(t),i=this.occurrence?.startsAt;return s("dl",{class:"rows"},s("div",{class:"row"},s("dt",null,"Order reference"),s("dd",{class:"reference"},t.orderNumber)),e&&s("div",{class:"row"},s("dt",null,"Email"),s("dd",null,e)),r&&s("div",{class:"row"},s("dt",null,"Event"),s("dd",null,r)),i&&s("div",{class:"row"},s("dt",null,"Date"),s("dd",null,m(i))))}renderTotals(t){const e=t.currency||"GBP",r=Number(t.totalFees)||0,i=Number(t.totalTax)||0,o=Number(t.totalDiscounts)||0;return s("div",{class:"totals"},s("div",{class:"total-row"},s("span",null,"Subtotal"),s("span",null,u(t.subtotal,e))),r>0&&s("div",{class:"total-row"},s("span",null,"Fees"),s("span",null,u(t.totalFees,e))),i>0&&s("div",{class:"total-row"},s("span",null,"Tax"),s("span",null,u(t.totalTax,e))),o>0&&s("div",{class:"total-row discount"},s("span",null,"Discount"),s("span",null,"-",u(t.totalDiscounts,e))),s("div",{class:"total-row total"},s("span",null,"Total"),s("span",null,u(t.total,e))))}render(){if(this.paymentFailed)return s("div",{class:"confirmation"},s("h1",{class:"title"},"Payment not completed"),s("p",{class:"lead"},"Your payment wasn't completed. Your cart is still saved, so you can try again."));if(!this.resolvedOrderId&&!this.order)return null;if(this.loading)return s("div",{class:"confirmation"},s("div",{class:"skeleton-line short"}),s("div",{class:"skeleton-line long"}),s("div",{class:"skeleton-block"}));const t=this.order,e=t?.id||this.resolvedOrderId;return s("div",{class:"confirmation"},s("div",{class:"check","aria-hidden":"true"},s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"}))),s("h1",{class:"title"},"You're going!"),s("p",{class:"lead"},t?.orderNumber?`Order ${t.orderNumber} is confirmed. Your tickets are on their way to your email.`:"Your order is confirmed. Your tickets are on their way to your email."),this.error&&!t&&s("p",{class:"error"},"We couldn't load your order details yet. ",this.error),t&&Array.isArray(t.items)&&s("div",{class:"summary"},this.renderRows(t),s("ul",{class:"lines"},h(t).map(((e,r)=>s("li",{class:"line",key:r},s("span",{class:"line-name"},e.quantity," x ",e.name),s("span",{class:"line-price"},u(e.subtotal,t.currency)))))),this.renderTotals(t)),this.showTickets&&t&&s("div",{class:"tickets"},s("h2",{class:"subtitle"},"Your tickets"),s("tl-order-tickets",{orderId:e,columns:this.columns}),s("p",{class:"hint"},"Show these QR codes at the door for entry. Use Download PDF on a ticket to save it.")))}static get watchers(){return{orderId:[{watchOrderId:0}]}}static get style(){return":host{display:block;font-family:var(--tl-font-family, system-ui, sans-serif);color:var(--tl-foreground, #111827)}.confirmation{text-align:center}.check{width:4rem;height:4rem;margin:0 auto var(--tl-spacing-4, 1rem);display:flex;align-items:center;justify-content:center;border-radius:9999px;background:var(--tl-success, #10b981);color:var(--tl-success-foreground, #ffffff)}.check svg{width:2rem;height:2rem}.title{margin:0 0 var(--tl-spacing-2, 0.5rem);font-size:1.875rem;font-weight:700;line-height:1.2}.lead{margin:0 0 var(--tl-spacing-6, 1.5rem);color:var(--tl-muted-foreground, #6b7280)}.error{margin:0 0 var(--tl-spacing-6, 1.5rem);font-size:0.875rem;color:var(--tl-error, #ef4444)}.summary{text-align:left;padding:var(--tl-spacing-6, 1.5rem);margin-bottom:var(--tl-spacing-6, 1.5rem);background:var(--tl-muted, #f9fafb);border:1px solid var(--tl-border, #e5e7eb);border-radius:var(--tl-radius-lg, 0.75rem)}.rows{display:grid;gap:var(--tl-spacing-2, 0.5rem);margin:0 0 var(--tl-spacing-4, 1rem);padding:0 0 var(--tl-spacing-4, 1rem);border-bottom:1px solid var(--tl-border, #e5e7eb)}.row{display:flex;justify-content:space-between;gap:var(--tl-spacing-4, 1rem);font-size:0.875rem}.row dt{color:var(--tl-muted-foreground, #6b7280)}.row dd{margin:0;text-align:right;overflow-wrap:anywhere}.reference{font-family:var(--tl-font-family-mono, ui-monospace, monospace);font-weight:600}.lines{list-style:none;margin:0;padding:0;display:grid;gap:var(--tl-spacing-2, 0.5rem)}.line{display:flex;justify-content:space-between;gap:var(--tl-spacing-4, 1rem);font-size:0.875rem}.totals{margin-top:var(--tl-spacing-3, 0.75rem);padding-top:var(--tl-spacing-3, 0.75rem);border-top:1px solid var(--tl-border, #e5e7eb);display:grid;gap:var(--tl-spacing-1, 0.25rem);font-size:0.875rem}.total-row{display:flex;justify-content:space-between;color:var(--tl-muted-foreground, #6b7280)}.total-row.discount{color:var(--tl-success, #10b981)}.total-row.total{margin-top:var(--tl-spacing-1, 0.25rem);font-size:1rem;font-weight:600;color:var(--tl-foreground, #111827)}.tickets{text-align:left}.subtitle{margin:0 0 var(--tl-spacing-4, 1rem);font-size:1.125rem;font-weight:600}.hint{margin:var(--tl-spacing-3, 0.75rem) 0 0;font-size:0.75rem;color:var(--tl-muted-foreground, #6b7280)}.skeleton-line,.skeleton-block{background:var(--tl-secondary, #f3f4f6);border-radius:var(--tl-radius-md, 0.5rem);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;margin:0 auto var(--tl-spacing-3, 0.75rem)}.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}}"}},[1,"tl-order-confirmation",{orderId:[1,"order-id"],customerEmail:[1,"customer-email"],showTickets:[4,"show-tickets"],columns:[2],order:[32],resolvedOrderId:[32],loading:[32],error:[32],paymentFailed:[32],occurrence:[32],signedInCustomer:[32]},void 0,{orderId:[{watchOrderId:0}]}]),v=g,w=function(){"undefined"!=typeof customElements&&["tl-order-confirmation","tl-order-tickets","tl-ticket"].forEach((t=>{switch(t){case"tl-order-confirmation":customElements.get(i(t))||customElements.define(i(t),g);break;case"tl-order-tickets":customElements.get(i(t))||p();break;case"tl-ticket":customElements.get(i(t))||f()}}))};export{v as TlOrderConfirmation,w as defineCustomElement}
1
+ import{proxyCustomElement as t,HTMLElement as s,createEvent as r,h as e,transformTag as i}from"@stencil/core/internal/client";import{w as o,g as l}from"./sdk-connector.js";import{w as a}from"./web-query.js";import{d as n}from"./tl-order-tickets2.js";import{d as c}from"./tl-ticket2.js";import{c as d,j as m}from"./ticket-selector.js";const p=t(class extends s{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.tlOrderLoaded=r(this,"tlOrderLoaded",7),this.tlError=r(this,"tlError",7),this.showTickets=!0,this.columns=2,this.element=d(m,{client:()=>l(),clientReady:()=>o(),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 e("dl",{class:"rows"},this.view.derived.rows.map((t=>e("div",{class:"row",key:t.label},e("dt",null,t.label),e("dd",{class:t.reference?"reference":void 0},t.value)))))}renderTotals(){const{strings:t,derived:s}=this.view;return e("div",{class:"totals"},e("div",{class:"total-row"},e("span",null,t.subtotalRow),e("span",null,s.subtotalLabel)),s.totals.showFee&&e("div",{class:"total-row fee"},e("span",null,s.totals.feeLabel),e("span",null,s.feeAmountLabel)),s.showTaxRow&&e("div",{class:"total-row"},e("span",null,t.taxRow),e("span",null,s.taxLabel)),s.showDiscountRow&&e("div",{class:"total-row discount"},e("span",null,t.discountRow),e("span",null,"-",s.discountLabel)),e("div",{class:"total-row total"},e("span",null,t.totalRow),e("span",null,s.totalLabel)))}render(){const{status:t,state:s,strings:r,derived:i}=this.view;return"payment-failed"===t?e("div",{class:"confirmation"},e("h1",{class:"title"},r.paymentFailedTitle),e("p",{class:"lead"},r.paymentFailedLead)):"idle"===t?null:"loading"===t?e("div",{class:"confirmation"},e("div",{class:"skeleton-line short"}),e("div",{class:"skeleton-line long"}),e("div",{class:"skeleton-block"})):e("div",{class:"confirmation"},e("div",{class:"check","aria-hidden":"true"},e("svg",{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"}))),e("h1",{class:"title"},r.title),e("p",{class:"lead"},i.leadText),i.showError&&e("p",{class:"error"},r.errorPrefix,s.error),i.showSummary&&e("div",{class:"summary"},this.renderRows(),e("ul",{class:"lines"},i.lines.map(((t,s)=>e("li",{class:"line",key:s},e("span",{class:"line-name"},t.label),e("span",{class:"line-price"},t.priceLabel))))),this.renderTotals()),i.showTickets&&e("div",{class:"tickets"},e("h2",{class:"subtitle"},r.ticketsTitle),e("tl-order-tickets",{orderId:i.ticketsOrderId,columns:this.columns}),e("p",{class:"hint"},r.ticketsHint)))}static get watchers(){return{orderId:[{watchOrderId:0}],customerEmail:[{syncProps:0}],showTickets:[{syncProps:0}],columns:[{syncProps:0}]}}static get style(){return":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}}"}},[1,"tl-order-confirmation",{orderId:[1,"order-id"],customerEmail:[1,"customer-email"],showTickets:[4,"show-tickets"],columns:[2],view:[32]},void 0,{orderId:[{watchOrderId:0}],customerEmail:[{syncProps:0}],showTickets:[{syncProps:0}],columns:[{syncProps:0}]}]),h=p,u=function(){"undefined"!=typeof customElements&&["tl-order-confirmation","tl-order-tickets","tl-ticket"].forEach((t=>{switch(t){case"tl-order-confirmation":customElements.get(i(t))||customElements.define(i(t),p);break;case"tl-order-tickets":customElements.get(i(t))||n();break;case"tl-ticket":customElements.get(i(t))||c()}}))};export{h as TlOrderConfirmation,u as defineCustomElement}
@@ -1 +1 @@
1
- import{proxyCustomElement as t,HTMLElement as e,h as s,transformTag as i}from"@stencil/core/internal/client";import{w as r}from"./sdk-connector.js";import{d as a}from"./tl-ticket2.js";const o=t(class t extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.columns=2,this.tickets=[],this.loading=!0,this.error=null,this.issuing=!1,this.poll=0}watchOrder(){this.reset(),this.load()}async componentWillLoad(){await this.load()}disconnectedCallback(){this.stopPolling()}reset(){this.stopPolling(),this.poll=0,this.tickets=[],this.issuing=!1}stopPolling(){void 0!==this.timer&&(clearTimeout(this.timer),this.timer=void 0)}async load(){try{this.error=null;const e=await r(),s=e.getOrdersManager?.();if(!s)throw new Error("Tickets are not available");const i=await s.get(this.orderId);if(this.tickets=i?.tickets??[],this.tickets.length>0)this.issuing=!1,this.stopPolling();else{const e=t.POLL_DELAYS_MS[this.poll];this.issuing=void 0!==e,void 0!==e&&(this.poll+=1,this.stopPolling(),this.timer=setTimeout((()=>this.load()),e))}}catch(t){this.stopPolling(),this.issuing=!1,this.error=t instanceof Error?t.message:"Failed to load tickets"}finally{this.loading=!1}}render(){return this.loading?s("div",{class:"state"},"Loading tickets…"):this.error?s("div",{class:"state error"},this.error):0===this.tickets.length?this.issuing?s("div",{class:"state issuing",role:"status","aria-live":"polite"},s("span",{class:"spinner","aria-hidden":"true"}),"Preparing your tickets…"):s("div",{class:"state",role:"status"},"Your tickets are taking longer than usual. They will be emailed to you as soon as they are ready."):s("div",{class:`grid cols-${this.columns}`},this.tickets.map((t=>s("tl-ticket",{key:t.id,ticket:t,orderId:this.orderId}))))}static get watchers(){return{orderId:[{watchOrder:0}]}}static get style(){return":host{display:block;font-family:var(--tl-font-family, system-ui, sans-serif)}.grid{display:grid;gap:var(--tl-spacing-4, 1rem);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, 1.5rem);text-align:center;color:var(--tl-muted-foreground, #6b7280);font-size:0.875rem}.state.error{color:var(--tl-error, #dc2626)}.state.issuing{display:flex;align-items:center;justify-content:center;gap:var(--tl-spacing-2, 0.5rem)}.spinner{width:0.875rem;height:0.875rem;border:2px solid var(--tl-border, #e5e7eb);border-top-color:var(--tl-primary, #6366f1);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, #e5e7eb)}}"}},[1,"tl-order-tickets",{orderId:[1,"order-id"],columns:[2],tickets:[32],loading:[32],error:[32],issuing:[32]},void 0,{orderId:[{watchOrder:0}]}]);function n(){"undefined"!=typeof customElements&&["tl-order-tickets","tl-ticket"].forEach((t=>{switch(t){case"tl-order-tickets":customElements.get(i(t))||customElements.define(i(t),o);break;case"tl-ticket":customElements.get(i(t))||a()}}))}o.POLL_DELAYS_MS=[1e3,1500,2e3,3e3,4e3,5e3,6e3,8e3,1e4,12e3];export{o as T,n as d}
1
+ import{proxyCustomElement as t,HTMLElement as e,h as s,transformTag as r}from"@stencil/core/internal/client";import{w as i,g as o}from"./sdk-connector.js";import{d as a}from"./tl-ticket2.js";import{c as n,f as c}from"./ticket-selector.js";const d=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.columns=2,this.element=n(c,{client:()=>o(),clientReady:()=>i(),emit:(t,e)=>this.forward(t,e)}),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,e){}render(){const{status:t,state:e,strings:r,derived:i}=this.view;return"loading"===t?s("div",{class:"state"},r.loading):"error"===t?s("div",{class:"state error"},e.error):"issuing"===t?s("div",{class:"state issuing",role:"status","aria-live":"polite"},s("span",{class:"spinner","aria-hidden":"true"}),r.preparing):"delayed"===t?s("div",{class:"state",role:"status"},r.delayed):s("div",{class:`grid cols-${i.columns}`},i.tickets.map((t=>s("tl-ticket",{key:t.id,ticket:t,orderId:i.orderId}))))}static get watchers(){return{orderId:[{watchOrder:0}],columns:[{syncProps:0}]}}static get style(){return":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)}}"}},[1,"tl-order-tickets",{orderId:[1,"order-id"],columns:[2],view:[32]},void 0,{orderId:[{watchOrder:0}],columns:[{syncProps:0}]}]);function l(){"undefined"!=typeof customElements&&["tl-order-tickets","tl-ticket"].forEach((t=>{switch(t){case"tl-order-tickets":customElements.get(r(t))||customElements.define(r(t),d);break;case"tl-ticket":customElements.get(r(t))||a()}}))}export{d as T,l as d}
@@ -1 +1 @@
1
- import{proxyCustomElement as t,HTMLElement as e,createEvent as r,h as o,transformTag as i}from"@stencil/core/internal/client";import{w as s}from"./sdk-connector.js";import{e as a,i as l}from"./order-summary.js";const n=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.tlPromoApplied=r(this,"tlPromoApplied",7),this.tlError=r(this,"tlError",7),this.placeholder="Promo or presale code",this.buttonLabel="Apply",this.code="",this.applying=!1,this.applied=null,this.error=null,this.handleInput=t=>{this.code=t.target.value,this.error=null},this.handleSubmit=t=>{t.preventDefault(),this.apply()},this.reset=()=>{this.applied=null,this.error=null}}async apply(){const t=this.code.trim();if(t){this.applying=!0,this.error=null;try{const e=await s(),r=e.getPresaleManager?.();if(!r)throw Error("Promo codes are not available");const o=await r.redeem(t),i=await(e.getCartManager?.()?.get().catch((()=>null)))??null;this.applied={code:t.toUpperCase(),...o,cart:i},this.code="",this.tlPromoApplied.emit(this.applied)}catch(t){console.error("[tl-promo-code] Redeem failed:",t),this.error=l(t)?"Sign in to use this code":a(t,"That code could not be applied"),this.tlError.emit({message:this.error})}finally{this.applying=!1}}else this.error="Enter a code"}render(){return this.applied?o("div",{class:"applied",role:"status"},o("span",{class:"applied-text"},o("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})),"Code ",o("strong",{class:"code"},this.applied.code),this.applied.alreadyHeld?" was already applied":" applied"),o("button",{type:"button",class:"link",onClick:this.reset},"Use a different code")):o("form",{class:"promo",onSubmit:this.handleSubmit},o("div",{class:"field"},o("input",{class:"input",type:"text",autocomplete:"off",autoCapitalize:"characters",spellcheck:!1,"aria-label":this.placeholder,placeholder:this.placeholder,value:this.code,disabled:this.applying,onInput:this.handleInput}),o("button",{type:"submit",class:"apply",disabled:this.applying},this.applying?"Applying…":this.buttonLabel)),this.error&&o("p",{class:"error",role:"alert"},this.error))}static get style(){return":host{display:block;font-family:var(--tl-font-family, system-ui, sans-serif);color:var(--tl-foreground, #111827)}.field{display:flex;gap:var(--tl-spacing-2, 0.5rem)}.input{flex:1;min-width:0;padding:var(--tl-spacing-3, 0.75rem);font:inherit;font-size:0.875rem;color:var(--tl-foreground, #111827);background:var(--tl-background, #ffffff);border:1px solid var(--tl-border, #e5e7eb);border-radius:var(--tl-radius-md, 0.5rem);text-transform:uppercase}.input::placeholder{text-transform:none;color:var(--tl-muted-foreground, #6b7280)}.input:focus{outline:2px solid var(--tl-primary, #6366f1);outline-offset:1px}.apply{padding:var(--tl-spacing-3, 0.75rem) var(--tl-spacing-4, 1rem);font:inherit;font-size:0.875rem;font-weight:500;color:var(--tl-primary-foreground, #ffffff);background:var(--tl-primary, #6366f1);border:none;border-radius:var(--tl-radius-md, 0.5rem);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.5rem) 0 0;font-size:0.8125rem;color:var(--tl-error, #ef4444)}.applied{display:flex;align-items:center;justify-content:space-between;gap:var(--tl-spacing-3, 0.75rem);padding:var(--tl-spacing-3, 0.75rem);font-size:0.875rem;background:var(--tl-muted, #f9fafb);border:1px solid var(--tl-border, #e5e7eb);border-radius:var(--tl-radius-md, 0.5rem)}.applied-text{display:flex;align-items:center;gap:var(--tl-spacing-2, 0.5rem)}.icon{width:1rem;height:1rem;flex-shrink:0;color:var(--tl-success, #10b981)}.code{font-family:var(--tl-font-family-mono, ui-monospace, monospace)}.link{padding:0;font:inherit;font-size:0.8125rem;color:var(--tl-primary, #6366f1);background:none;border:none;cursor:pointer;white-space:nowrap}.link:hover{text-decoration:underline}"}},[1,"tl-promo-code",{placeholder:[1],buttonLabel:[1,"button-label"],code:[32],applying:[32],applied:[32],error:[32]}]),d=n,p=function(){"undefined"!=typeof customElements&&["tl-promo-code"].forEach((t=>{"tl-promo-code"===t&&(customElements.get(i(t))||customElements.define(i(t),n))}))};export{d as TlPromoCode,p as defineCustomElement}
1
+ import{proxyCustomElement as t,HTMLElement as r,createEvent as e,h as o,transformTag as i}from"@stencil/core/internal/client";import{w as s,g as a}from"./sdk-connector.js";import{c as l,p as n}from"./ticket-selector.js";const d=t(class extends r{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.tlPromoApplied=e(this,"tlPromoApplied",7),this.tlError=e(this,"tlError",7),this.placeholder="Promo or presale code",this.buttonLabel="Apply",this.element=l(n,{client:()=>a(),clientReady:()=>s(),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:e,derived:i}=this.view;return"applied"===t?o("div",{class:"applied",role:"status"},o("span",{class:"applied-text"},o("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})),e.codePrefix,o("strong",{class:"code"},i.appliedCode),i.appliedSuffix),o("button",{type:"button",class:"link",onClick:this.reset},e.useDifferent)):o("form",{class:"promo",onSubmit:this.handleSubmit},o("div",{class:"field"},o("input",{class:"input",type:"text",autocomplete:"off",autoCapitalize:"characters",spellcheck:!1,"aria-label":this.placeholder,placeholder:this.placeholder,value:r.code,disabled:i.disabled,onInput:this.handleInput}),o("button",{type:"submit",class:"apply",disabled:i.disabled},i.actionLabel)),r.error&&o("p",{class:"error",role:"alert"},r.error))}static get watchers(){return{placeholder:[{syncProps:0}],buttonLabel:[{syncProps:0}]}}static get style(){return":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}"}},[1,"tl-promo-code",{placeholder:[1],buttonLabel:[1,"button-label"],view:[32]},void 0,{placeholder:[{syncProps:0}],buttonLabel:[{syncProps:0}]}]),c=d,p=function(){"undefined"!=typeof customElements&&["tl-promo-code"].forEach((t=>{"tl-promo-code"===t&&(customElements.get(i(t))||customElements.define(i(t),d))}))};export{c as TlPromoCode,p as defineCustomElement}