@ticketlayer/elements 0.3.2 → 0.4.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 (142) hide show
  1. package/README.md +16 -15
  2. package/dist/cjs/{index-DfzcrE9-.js → index-I9CoYv3k.js} +277 -1798
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/money-BtmM2gt-.js +118 -0
  6. package/dist/cjs/{order-summary-ZMkJ5bez.js → order-summary-X3TlZxc2.js} +34 -0
  7. package/dist/cjs/ticketlayer-elements.cjs.js +3 -3
  8. package/dist/cjs/tl-buy-modal.cjs.entry.js +3 -3
  9. package/dist/cjs/tl-buy-tickets-button.cjs.entry.js +10 -7
  10. package/dist/cjs/tl-buy-tickets-wrapper.cjs.entry.js +2 -2
  11. package/dist/cjs/tl-cart-badge.cjs.entry.js +2 -2
  12. package/dist/cjs/tl-cart-drawer.cjs.entry.js +2 -2
  13. package/dist/cjs/tl-cart.cjs.entry.js +10 -4
  14. package/dist/cjs/tl-checkout-wrapper.cjs.entry.js +2 -2
  15. package/dist/cjs/tl-event-card.cjs.entry.js +4 -3
  16. package/dist/cjs/tl-event-list.cjs.entry.js +2 -2
  17. package/dist/cjs/tl-login.cjs.entry.js +4 -3
  18. package/dist/cjs/tl-my-orders.cjs.entry.js +4 -3
  19. package/dist/cjs/tl-occurrence-selector_2.cjs.entry.js +454 -122
  20. package/dist/cjs/tl-order-confirmation.cjs.entry.js +11 -8
  21. package/dist/cjs/tl-order-tickets_2.cjs.entry.js +3 -3
  22. package/dist/cjs/tl-promo-code.cjs.entry.js +4 -3
  23. package/dist/cjs/tl-seat-map.cjs.entry.js +2 -2
  24. package/dist/collection/collection-manifest.json +2 -1
  25. package/dist/collection/components/tl-buy-modal/tl-buy-modal.css +12 -13
  26. package/dist/collection/components/tl-buy-modal/tl-buy-modal.js +1 -1
  27. package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.css +4 -4
  28. package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.js +11 -8
  29. package/dist/collection/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.css +2 -2
  30. package/dist/collection/components/tl-cart/tl-cart.css +52 -51
  31. package/dist/collection/components/tl-cart/tl-cart.js +10 -4
  32. package/dist/collection/components/tl-cart-badge/tl-cart-badge.css +11 -11
  33. package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.css +6 -6
  34. package/dist/collection/components/tl-checkout-wrapper/tl-checkout-wrapper.css +2 -2
  35. package/dist/collection/components/tl-event-card/tl-event-card.css +22 -22
  36. package/dist/collection/components/tl-event-card/tl-event-card.js +1 -1
  37. package/dist/collection/components/tl-event-list/tl-event-list.css +17 -17
  38. package/dist/collection/components/tl-login/tl-login.css +26 -26
  39. package/dist/collection/components/tl-login/tl-login.js +1 -1
  40. package/dist/collection/components/tl-my-orders/tl-my-orders.css +40 -40
  41. package/dist/collection/components/tl-occurrence-selector/tl-occurrence-selector.css +54 -65
  42. package/dist/collection/components/tl-occurrence-selector/tl-occurrence-selector.js +2 -2
  43. package/dist/collection/components/tl-order-confirmation/tl-order-confirmation.css +38 -38
  44. package/dist/collection/components/tl-order-confirmation/tl-order-confirmation.js +8 -6
  45. package/dist/collection/components/tl-order-tickets/tl-order-tickets.css +9 -9
  46. package/dist/collection/components/tl-promo-code/tl-promo-code.css +25 -25
  47. package/dist/collection/components/tl-promo-code/tl-promo-code.js +1 -1
  48. package/dist/collection/components/tl-seat-map/tl-seat-map.css +10 -10
  49. package/dist/collection/components/tl-ticket/tl-ticket.css +13 -13
  50. package/dist/collection/components/tl-ticket/tl-ticket.js +1 -1
  51. package/dist/collection/components/tl-ticket-selector/tl-ticket-selector.css +74 -49
  52. package/dist/collection/components/tl-ticket-selector/tl-ticket-selector.js +73 -127
  53. package/dist/collection/utils/cart-totals.js +9 -0
  54. package/dist/collection/utils/order-summary.js +36 -0
  55. package/dist/components/money.js +1 -0
  56. package/dist/components/order-summary.js +1 -1
  57. package/dist/components/tl-buy-modal.js +1 -1
  58. package/dist/components/tl-buy-tickets-button.js +1 -1
  59. package/dist/components/tl-buy-tickets-wrapper2.js +1 -1
  60. package/dist/components/tl-cart-badge.js +1 -1
  61. package/dist/components/tl-cart-drawer.js +1 -1
  62. package/dist/components/tl-cart2.js +1 -1
  63. package/dist/components/tl-checkout-wrapper2.js +1 -1
  64. package/dist/components/tl-event-card2.js +1 -1
  65. package/dist/components/tl-event-list.js +1 -1
  66. package/dist/components/tl-login2.js +1 -1
  67. package/dist/components/tl-my-orders.js +1 -1
  68. package/dist/components/tl-occurrence-selector2.js +1 -1
  69. package/dist/components/tl-order-confirmation.js +1 -1
  70. package/dist/components/tl-order-tickets2.js +1 -1
  71. package/dist/components/tl-promo-code.js +1 -1
  72. package/dist/components/tl-seat-map.js +1 -1
  73. package/dist/components/tl-ticket-selector2.js +1 -1
  74. package/dist/components/tl-ticket2.js +1 -1
  75. package/dist/elements.docs.d.ts +26 -0
  76. package/dist/elements.docs.json +35 -17
  77. package/dist/esm/{index-Ba-RZTFI.js → index-OoYV1faY.js} +277 -1798
  78. package/dist/esm/index.js +1 -1
  79. package/dist/esm/loader.js +3 -3
  80. package/dist/esm/money-4ig0-WB6.js +112 -0
  81. package/dist/esm/{order-summary-BGekdjN9.js → order-summary-DiDtvfZM.js} +34 -1
  82. package/dist/esm/ticketlayer-elements.js +4 -4
  83. package/dist/esm/tl-buy-modal.entry.js +3 -3
  84. package/dist/esm/tl-buy-tickets-button.entry.js +10 -7
  85. package/dist/esm/tl-buy-tickets-wrapper.entry.js +2 -2
  86. package/dist/esm/tl-cart-badge.entry.js +2 -2
  87. package/dist/esm/tl-cart-drawer.entry.js +2 -2
  88. package/dist/esm/tl-cart.entry.js +10 -4
  89. package/dist/esm/tl-checkout-wrapper.entry.js +2 -2
  90. package/dist/esm/tl-event-card.entry.js +4 -3
  91. package/dist/esm/tl-event-list.entry.js +2 -2
  92. package/dist/esm/tl-login.entry.js +4 -3
  93. package/dist/esm/tl-my-orders.entry.js +4 -3
  94. package/dist/esm/tl-occurrence-selector_2.entry.js +455 -123
  95. package/dist/esm/tl-order-confirmation.entry.js +11 -8
  96. package/dist/esm/tl-order-tickets_2.entry.js +3 -3
  97. package/dist/esm/tl-promo-code.entry.js +4 -3
  98. package/dist/esm/tl-seat-map.entry.js +2 -2
  99. package/dist/ticketlayer-elements/index.esm.js +1 -1
  100. package/dist/ticketlayer-elements/p-0814420f.entry.js +1 -0
  101. package/dist/ticketlayer-elements/p-0acabc26.entry.js +1 -0
  102. package/dist/ticketlayer-elements/{p-9372ff1f.entry.js → p-109a3feb.entry.js} +1 -1
  103. package/dist/ticketlayer-elements/{p-41d22d7c.entry.js → p-1a4ba71c.entry.js} +1 -1
  104. package/dist/ticketlayer-elements/p-318965c1.entry.js +1 -0
  105. package/dist/ticketlayer-elements/p-347c7fd1.entry.js +1 -0
  106. package/dist/ticketlayer-elements/p-3649c26d.entry.js +1 -0
  107. package/dist/ticketlayer-elements/p-40260cc9.entry.js +1 -0
  108. package/dist/ticketlayer-elements/p-4ig0-WB6.js +1 -0
  109. package/dist/ticketlayer-elements/p-55fd2f9f.entry.js +1 -0
  110. package/dist/ticketlayer-elements/p-62ee659b.entry.js +1 -0
  111. package/dist/ticketlayer-elements/{p-f446310d.entry.js → p-7d4ecc2b.entry.js} +1 -1
  112. package/dist/ticketlayer-elements/p-7f0abf95.entry.js +1 -0
  113. package/dist/ticketlayer-elements/p-BXpVGW51.js +1 -0
  114. package/dist/ticketlayer-elements/p-OoYV1faY.js +3 -0
  115. package/dist/ticketlayer-elements/p-a3c1b26c.entry.js +1 -0
  116. package/dist/ticketlayer-elements/p-ac264adc.entry.js +1 -0
  117. package/dist/ticketlayer-elements/{p-82752e3b.entry.js → p-aeb4c6fb.entry.js} +1 -1
  118. package/dist/ticketlayer-elements/{p-9c9072c8.entry.js → p-ba62541f.entry.js} +1 -1
  119. package/dist/ticketlayer-elements/ticketlayer-elements.css +1 -1
  120. package/dist/ticketlayer-elements/ticketlayer-elements.esm.js +1 -1
  121. package/dist/types/components/tl-cart/tl-cart.d.ts +10 -0
  122. package/dist/types/components/tl-ticket-selector/tl-ticket-selector.d.ts +40 -29
  123. package/dist/types/components.d.ts +165 -36
  124. package/dist/types/stencil-public-runtime.d.ts +97 -57
  125. package/dist/types/utils/cart-totals.d.ts +10 -0
  126. package/dist/types/utils/order-summary.d.ts +34 -0
  127. package/elements.catalogue.json +91 -22
  128. package/loader/index.d.ts +1 -1
  129. package/package.json +31 -32
  130. package/dist/ticketlayer-elements/p-0291df4c.entry.js +0 -1
  131. package/dist/ticketlayer-elements/p-11273f8f.entry.js +0 -1
  132. package/dist/ticketlayer-elements/p-340ab4f5.entry.js +0 -1
  133. package/dist/ticketlayer-elements/p-7ff43848.entry.js +0 -1
  134. package/dist/ticketlayer-elements/p-976770f3.entry.js +0 -1
  135. package/dist/ticketlayer-elements/p-9a903ff6.entry.js +0 -1
  136. package/dist/ticketlayer-elements/p-BGekdjN9.js +0 -1
  137. package/dist/ticketlayer-elements/p-Ba-RZTFI.js +0 -2
  138. package/dist/ticketlayer-elements/p-a5c90b68.entry.js +0 -1
  139. package/dist/ticketlayer-elements/p-b6d479ad.entry.js +0 -1
  140. package/dist/ticketlayer-elements/p-eb640760.entry.js +0 -1
  141. package/dist/ticketlayer-elements/p-f5846f61.entry.js +0 -1
  142. package/dist/ticketlayer-elements/p-fb9444c4.entry.js +0 -1
@@ -1,8 +1,9 @@
1
- import { r as registerInstance, c as createEvent, h } from './index-Ba-RZTFI.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-OoYV1faY.js';
2
2
  import { o as onSDKEvent, w as whenSDK } from './sdk-connector-CqhvfyKV.js';
3
- import { e as errorMessage, r as resolveOccurrence, o as orderEventName, c as formatDateTime, d as orderCustomerEmail, a as formatPrice, g as ticketItems } from './order-summary-BGekdjN9.js';
3
+ import { e as errorMessage, r as resolveOccurrence, o as orderEventName, c as formatDateTime, d as orderCustomerEmail, g as orderTotals, a as formatPrice, h as ticketItems } from './order-summary-DiDtvfZM.js';
4
+ import './money-4ig0-WB6.js';
4
5
 
5
- const tlOrderConfirmationCss = () => `: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}}`;
6
+ const tlOrderConfirmationCss = () => `: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}}`;
6
7
 
7
8
  const TlOrderConfirmation = class {
8
9
  constructor(hostRef) {
@@ -109,12 +110,14 @@ const TlOrderConfirmation = class {
109
110
  const startsAt = this.occurrence?.startsAt;
110
111
  return (h("dl", { class: "rows" }, h("div", { class: "row" }, h("dt", null, "Order reference"), h("dd", { class: "reference" }, order.orderNumber)), email && (h("div", { class: "row" }, h("dt", null, "Email"), h("dd", null, email))), eventName && (h("div", { class: "row" }, h("dt", null, "Event"), h("dd", null, eventName))), startsAt && (h("div", { class: "row" }, h("dt", null, "Date"), h("dd", null, formatDateTime(startsAt))))));
111
112
  }
113
+ // Money comes from orderTotals: the booking fee is its own row named after
114
+ // the channel's fee profile, the subtotal is the ticket lines alone (the
115
+ // order's own `subtotal` folds the fee line into it) and the total is the
116
+ // order's figure, so what is shown is what was charged.
112
117
  renderTotals(order) {
113
- const c = order.currency || 'GBP';
114
- const fees = Number(order.totalFees) || 0;
115
- const tax = Number(order.totalTax) || 0;
116
- const discounts = Number(order.totalDiscounts) || 0;
117
- return (h("div", { class: "totals" }, h("div", { class: "total-row" }, h("span", null, "Subtotal"), h("span", null, formatPrice(order.subtotal, c))), fees > 0 && (h("div", { class: "total-row" }, h("span", null, "Fees"), h("span", null, formatPrice(order.totalFees, c)))), tax > 0 && (h("div", { class: "total-row" }, h("span", null, "Tax"), h("span", null, formatPrice(order.totalTax, c)))), discounts > 0 && (h("div", { class: "total-row discount" }, h("span", null, "Discount"), h("span", null, "-", formatPrice(order.totalDiscounts, c)))), h("div", { class: "total-row total" }, h("span", null, "Total"), h("span", null, formatPrice(order.total, c)))));
118
+ const totals = orderTotals(order);
119
+ const c = totals.currency;
120
+ return (h("div", { class: "totals" }, h("div", { class: "total-row" }, h("span", null, "Subtotal"), h("span", null, formatPrice(totals.subtotal, c))), totals.showFee && (h("div", { class: "total-row fee" }, h("span", null, totals.feeLabel), h("span", null, formatPrice(totals.fees, c)))), totals.tax > 0 && (h("div", { class: "total-row" }, h("span", null, "Tax"), h("span", null, formatPrice(totals.tax, c)))), totals.discount > 0 && (h("div", { class: "total-row discount" }, h("span", null, "Discount"), h("span", null, "-", formatPrice(totals.discount, c)))), h("div", { class: "total-row total" }, h("span", null, "Total"), h("span", null, formatPrice(totals.total, c)))));
118
121
  }
119
122
  render() {
120
123
  if (this.paymentFailed) {
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, h } from './index-Ba-RZTFI.js';
1
+ import { r as registerInstance, h } from './index-OoYV1faY.js';
2
2
  import { w as whenSDK } from './sdk-connector-CqhvfyKV.js';
3
3
 
4
- const tlOrderTicketsCss = () => `: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)}}`;
4
+ const tlOrderTicketsCss = () => `: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)}}`;
5
5
 
6
6
  const TlOrderTickets = class {
7
7
  constructor(hostRef) {
@@ -3176,7 +3176,7 @@ function requireBrowser () {
3176
3176
  var browserExports = requireBrowser();
3177
3177
  var QRCode = /*@__PURE__*/getDefaultExportFromCjs(browserExports);
3178
3178
 
3179
- const tlTicketCss = () => `:host{display:block;font-family:var(--tl-font-family, system-ui, sans-serif)}.ticket{border:1px solid var(--tl-border, #e5e7eb);border-radius:var(--tl-radius-lg, 0.75rem);background:var(--tl-card, #ffffff);padding:var(--tl-spacing-5, 1.25rem);text-align:center}.qr-wrap{position:relative;width:160px;height:160px;margin:0 auto}.qr{width:160px;height:160px}.qr svg{width:100%;height:100%;display:block}.qr.inactive{opacity:0.3}.stamp{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);padding:0.25rem 0.5rem;border-radius:var(--tl-radius-sm, 0.25rem);background:rgba(17, 24, 39, 0.85);color:#ffffff;font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em}.name{margin:1rem 0 0;font-weight:600;color:var(--tl-foreground, #111827)}.meta{margin:0.125rem 0 0;font-size:0.875rem;color:var(--tl-muted-foreground, #6b7280)}.barcode{margin:0.25rem 0 0;font-family:ui-monospace, monospace;font-size:0.625rem;color:var(--tl-muted-foreground, #9ca3af);word-break:break-all}.download{margin-top:0.75rem;padding:0.375rem 0.75rem;border:1px solid var(--tl-border, #e5e7eb);border-radius:var(--tl-radius-md, 0.5rem);background:transparent;color:var(--tl-foreground, #111827);font-size:0.875rem;font-weight:500;cursor:pointer}.download:hover{background:var(--tl-muted, #f3f4f6)}.download:disabled{opacity:0.5;cursor:default}`;
3179
+ const tlTicketCss = () => `:host{display:block;font-family:var(--tl-font-family)}.ticket{border:1px solid var(--tl-border);border-radius:var(--tl-radius-lg);background:var(--tl-card);padding:var(--tl-spacing-5);text-align:center}.qr-wrap{position:relative;width:160px;height:160px;margin:0 auto}.qr{width:160px;height:160px}.qr svg{width:100%;height:100%;display:block}.qr.inactive{opacity:0.3}.stamp{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);padding:0.25rem 0.5rem;border-radius:var(--tl-radius-sm);background:rgba(17, 24, 39, 0.85);color:#ffffff;font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em}.name{margin:1rem 0 0;font-weight:600;color:var(--tl-foreground)}.meta{margin:0.125rem 0 0;font-size:0.875rem;color:var(--tl-muted-foreground)}.barcode{margin:0.25rem 0 0;font-family:ui-monospace, monospace;font-size:0.625rem;color:var(--tl-muted-foreground);word-break:break-all}.download{margin-top:0.75rem;padding:0.375rem 0.75rem;border:1px solid var(--tl-border);border-radius:var(--tl-radius-md);background:transparent;color:var(--tl-foreground);font-size:0.875rem;font-weight:500;cursor:pointer}.download:hover{background:var(--tl-muted)}.download:disabled{opacity:0.5;cursor:default}`;
3180
3180
 
3181
3181
  const TlTicket = class {
3182
3182
  constructor(hostRef) {
@@ -1,8 +1,9 @@
1
- import { r as registerInstance, c as createEvent, h } from './index-Ba-RZTFI.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-OoYV1faY.js';
2
2
  import { w as whenSDK } from './sdk-connector-CqhvfyKV.js';
3
- import { e as errorMessage, i as isAuthError } from './order-summary-BGekdjN9.js';
3
+ import { e as errorMessage, i as isAuthError } from './order-summary-DiDtvfZM.js';
4
+ import './money-4ig0-WB6.js';
4
5
 
5
- const tlPromoCodeCss = () => `: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}`;
6
+ const tlPromoCodeCss = () => `: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}`;
6
7
 
7
8
  const TlPromoCode = class {
8
9
  constructor(hostRef) {
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, c as createEvent, h, a as getElement } from './index-Ba-RZTFI.js';
1
+ import { r as registerInstance, c as createEvent, h, a as getElement } from './index-OoYV1faY.js';
2
2
  import { h as hasSDK, g as getSDK } from './sdk-connector-CqhvfyKV.js';
3
3
 
4
- const tlSeatMapCss = () => `:host{display:block;font-family:var(--tl-font-family, system-ui, -apple-system, sans-serif)}.seat-map-container{position:relative;overflow:hidden;border-radius:var(--tl-radius-md, 0.5rem);background:var(--tl-color-background, #ffffff)}.seat-map-iframe{width:100%;height:100%;border:none}.seat-map-iframe.hidden{display:none}.loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--tl-color-background, #ffffff);color:var(--tl-color-foreground, #0f172a);gap:1rem}.loading p{margin:0;font-size:0.875rem;color:var(--tl-color-muted-foreground, #64748b)}.spinner{width:40px;height:40px;border:3px solid var(--tl-color-border, #e2e8f0);border-top-color:var(--tl-color-primary, #e64b12);border-radius:50%;animation:tl-seat-map-spin 1s linear infinite}@keyframes tl-seat-map-spin{to{transform:rotate(360deg)}}.error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--tl-color-background, #ffffff);color:var(--tl-color-error, #ef4444);padding:1.5rem;text-align:center}.error-title{margin:0 0 0.5rem;font-size:1.125rem;font-weight:600}.error-message{margin:0;font-size:0.875rem;opacity:0.9}`;
4
+ const tlSeatMapCss = () => `:host{display:block;font-family:var(--tl-font-family)}.seat-map-container{position:relative;overflow:hidden;border-radius:var(--tl-radius-md);background:var(--tl-color-background)}.seat-map-iframe{width:100%;height:100%;border:none}.seat-map-iframe.hidden{display:none}.loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--tl-color-background);color:var(--tl-color-foreground);gap:1rem}.loading p{margin:0;font-size:0.875rem;color:var(--tl-color-muted-foreground)}.spinner{width:40px;height:40px;border:3px solid var(--tl-color-border);border-top-color:var(--tl-color-primary);border-radius:50%;animation:tl-seat-map-spin 1s linear infinite}@keyframes tl-seat-map-spin{to{transform:rotate(360deg)}}.error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--tl-color-background);color:var(--tl-color-error);padding:1.5rem;text-align:center}.error-title{margin:0 0 0.5rem;font-size:1.125rem;font-weight:600}.error-message{margin:0;font-size:0.875rem;opacity:0.9}`;
5
5
 
6
6
  const TlSeatMap = class {
7
7
  constructor(hostRef) {
@@ -1 +1 @@
1
- export{g as getSDK,h as hasSDK,o as onSDKEvent,s as setSDK,w as whenSDK}from"./p-CqhvfyKV.js";export{tl_buy_tickets_wrapper as TlBuyTicketsWrapper}from"./tl-buy-tickets-wrapper.entry.esm.js";export{tl_checkout_wrapper as TlCheckoutWrapper}from"./tl-checkout-wrapper.entry.esm.js";import"./p-Ba-RZTFI.js";
1
+ export{g as getSDK,h as hasSDK,o as onSDKEvent,s as setSDK,w as whenSDK}from"./p-CqhvfyKV.js";export{tl_buy_tickets_wrapper as TlBuyTicketsWrapper}from"./tl-buy-tickets-wrapper.entry.esm.js";export{tl_checkout_wrapper as TlCheckoutWrapper}from"./tl-checkout-wrapper.entry.esm.js";import"./p-OoYV1faY.js";
@@ -0,0 +1 @@
1
+ import{r as i,c as t,h as s}from"./p-OoYV1faY.js";import{w as n}from"./p-CqhvfyKV.js";import{e}from"./p-BXpVGW51.js";import"./p-4ig0-WB6.js";const l=class{constructor(s){i(this,s),this.tlAuthChanged=t(this,"tlAuthChanged"),this.tlMagicLinkSent=t(this,"tlMagicLinkSent"),this.tlError=t(this,"tlError"),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 n().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=e(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"))}};l.style=":host{display:block;font-family:var(--tl-font-family);color:var(--tl-foreground)}.login{display:flex;flex-direction:column;gap:var(--tl-spacing-3);padding:var(--tl-spacing-6);background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius-lg)}.title{margin:0;font-size:1.25rem;font-weight:600}.lead{margin:0;font-size:0.875rem;color:var(--tl-muted-foreground)}.label{font-size:0.875rem;font-weight:500}.input{padding:var(--tl-spacing-3);font:inherit;font-size:0.9375rem;color:var(--tl-foreground);background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius-md)}.input:focus{outline:2px solid var(--tl-primary);outline-offset:1px}.code-input{font-family:var(--tl-font-family-mono);font-size:1.25rem;letter-spacing:0.25em;text-align:center}.primary,.secondary{padding:var(--tl-spacing-3) var(--tl-spacing-4);font:inherit;font-size:0.9375rem;font-weight:600;border-radius:var(--tl-radius-md);cursor:pointer}.primary{color:var(--tl-primary-foreground);background:var(--tl-primary);border:none}.primary:hover:not(:disabled){opacity:0.9}.secondary{color:var(--tl-foreground);background:var(--tl-secondary);border:1px solid var(--tl-border)}.primary:disabled,.secondary:disabled,.input:disabled{opacity:0.6;cursor:not-allowed}.link{padding:0;font:inherit;font-size:0.875rem;color:var(--tl-primary);background:none;border:none;cursor:pointer}.link:hover{text-decoration:underline}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tl-spacing-4)}.error{margin:0;font-size:0.8125rem;color:var(--tl-error)}.notice{margin:0;font-size:0.8125rem;color:var(--tl-success)}.signed-in{flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap}.signed-in-text{margin:0;font-size:0.875rem;overflow-wrap:anywhere}";export{l as tl_login}
@@ -0,0 +1 @@
1
+ import{r as t,c as r,h as s}from"./p-OoYV1faY.js";import{o as e,w as i}from"./p-CqhvfyKV.js";import{e as a,r as o,o as l,c as n,d,g as c,a as h,h as u}from"./p-BXpVGW51.js";import"./p-4ig0-WB6.js";const p=class{constructor(s){t(this,s),this.tlOrderLoaded=r(this,"tlOrderLoaded"),this.tlError=r(this,"tlError"),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(),r=t?.get("redirect_status");this.paymentFailed=!!r&&"succeeded"!==r,this.resolvedOrderId=this.orderId||this.orderIdFromUrl(),this.resolvedOrderId&&!this.paymentFailed&&await this.load()}componentDidLoad(){this.unsubscribe=e("checkout:completed",(t=>{const r=t;r?.id&&(this.paymentFailed=!1,this.order=r,this.resolvedOrderId=r.id,this.tlOrderLoaded.emit({order:r}),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 r=await i(),s=r.getOrdersManager?.();if(!s)throw new Error("Orders are not available");const e=await s.get(t);if(!e)throw new Error("Order not found");this.order=e,this.signedInCustomer=r.getAuthManager?.()?.customer??null,this.tlOrderLoaded.emit({order:e}),this.resolveEvent(r,e)}catch(t){console.error("[tl-order-confirmation] Failed to load order:",t),this.error=a(t,"Failed to load your order"),this.tlError.emit({message:this.error})}finally{this.loading=!1}}async resolveEvent(t,r){const s=r.tickets?.find((t=>t.eventOccurrenceId))?.eventOccurrenceId;if(s)try{const e=await o(t,s);e&&this.order?.id===r.id&&(this.occurrence=e)}catch{}}renderRows(t){const r=this.customerEmail||d(t,this.signedInCustomer),e=this.occurrence?.eventName||l(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)),r&&s("div",{class:"row"},s("dt",null,"Email"),s("dd",null,r)),e&&s("div",{class:"row"},s("dt",null,"Event"),s("dd",null,e)),i&&s("div",{class:"row"},s("dt",null,"Date"),s("dd",null,n(i))))}renderTotals(t){const r=c(t),e=r.currency;return s("div",{class:"totals"},s("div",{class:"total-row"},s("span",null,"Subtotal"),s("span",null,h(r.subtotal,e))),r.showFee&&s("div",{class:"total-row fee"},s("span",null,r.feeLabel),s("span",null,h(r.fees,e))),r.tax>0&&s("div",{class:"total-row"},s("span",null,"Tax"),s("span",null,h(r.tax,e))),r.discount>0&&s("div",{class:"total-row discount"},s("span",null,"Discount"),s("span",null,"-",h(r.discount,e))),s("div",{class:"total-row total"},s("span",null,"Total"),s("span",null,h(r.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,r=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"},u(t).map(((r,e)=>s("li",{class:"line",key:e},s("span",{class:"line-name"},r.quantity," x ",r.name),s("span",{class:"line-price"},h(r.subtotal,t.currency)))))),this.renderTotals(t)),this.showTickets&&t&&s("div",{class:"tickets"},s("h2",{class:"subtitle"},"Your tickets"),s("tl-order-tickets",{orderId:r,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}]}}};p.style=":host{display:block;font-family:var(--tl-font-family);color:var(--tl-foreground)}.confirmation{text-align:center}.check{width:4rem;height:4rem;margin:0 auto var(--tl-spacing-4);display:flex;align-items:center;justify-content:center;border-radius:9999px;background:var(--tl-success);color:var(--tl-success-foreground)}.check svg{width:2rem;height:2rem}.title{margin:0 0 var(--tl-spacing-2);font-size:1.875rem;font-weight:700;line-height:1.2}.lead{margin:0 0 var(--tl-spacing-6);color:var(--tl-muted-foreground)}.error{margin:0 0 var(--tl-spacing-6);font-size:0.875rem;color:var(--tl-error)}.summary{text-align:left;padding:var(--tl-spacing-6);margin-bottom:var(--tl-spacing-6);background:var(--tl-muted);border:1px solid var(--tl-border);border-radius:var(--tl-radius-lg)}.rows{display:grid;gap:var(--tl-spacing-2);margin:0 0 var(--tl-spacing-4);padding:0 0 var(--tl-spacing-4);border-bottom:1px solid var(--tl-border)}.row{display:flex;justify-content:space-between;gap:var(--tl-spacing-4);font-size:0.875rem}.row dt{color:var(--tl-muted-foreground)}.row dd{margin:0;text-align:right;overflow-wrap:anywhere}.reference{font-family:var(--tl-font-family-mono);font-weight:600}.lines{list-style:none;margin:0;padding:0;display:grid;gap:var(--tl-spacing-2)}.line{display:flex;justify-content:space-between;gap:var(--tl-spacing-4);font-size:0.875rem}.totals{margin-top:var(--tl-spacing-3);padding-top:var(--tl-spacing-3);border-top:1px solid var(--tl-border);display:grid;gap:var(--tl-spacing-1);font-size:0.875rem}.total-row{display:flex;justify-content:space-between;color:var(--tl-muted-foreground)}.total-row.discount{color:var(--tl-success)}.total-row.total{margin-top:var(--tl-spacing-1);font-size:1rem;font-weight:600;color:var(--tl-foreground)}.tickets{text-align:left}.subtitle{margin:0 0 var(--tl-spacing-4);font-size:1.125rem;font-weight:600}.hint{margin:var(--tl-spacing-3) 0 0;font-size:0.75rem;color:var(--tl-muted-foreground)}.skeleton-line,.skeleton-block{background:var(--tl-secondary);border-radius:var(--tl-radius-md);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;margin:0 auto var(--tl-spacing-3)}.skeleton-line{height:1rem}.skeleton-line.short{width:40%;height:1.75rem}.skeleton-line.long{width:70%}.skeleton-block{height:8rem}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}";export{p as tl_order_confirmation}
@@ -1 +1 @@
1
- import{r as e,c as t,h as a,a as s}from"./p-Ba-RZTFI.js";import{h as i,g as r}from"./p-CqhvfyKV.js";const o=class{constructor(a){e(this,a),this.tlReady=t(this,"tlReady"),this.tlLoad=t(this,"tlLoad"),this.tlError=t(this,"tlError"),this.tlSeatAdded=t(this,"tlSeatAdded"),this.tlSeatRemoved=t(this,"tlSeatRemoved"),this.tlCartChange=t(this,"tlCartChange"),this.hboUrl="https://checkout.ticketlayer.com",this.apiUrl="https://api.ticketlayer.com",this.height="600px",this.width="100%",this.isReady=!1,this.isLoading=!0,this.error=null,this.seatsInCart=[],this.postToIframe=(e,t={})=>{this.iframeRef?.contentWindow&&this.iframeRef.contentWindow.postMessage({type:e,...t},"*")},this.handleMessage=e=>{if(e.data&&e.data.type)switch(e.data.type){case"seatmap:ready":this.isReady=!0,this.isLoading=!1,this.tlReady.emit(),this.postToIframe("seatmap:set-cart-seats",{seatIds:this.seatsInCart});break;case"seatmap:loaded":this.tlLoad.emit({seatMapId:e.data.seatMapId});break;case"seatmap:error":this.error=e.data.error,this.isLoading=!1,this.tlError.emit({error:e.data.error});break;case"seatmap:add-seat":this.handleAddSeat(e.data.seatId,e.data.ticketTypeId);break;case"seatmap:remove-seat":this.handleRemoveSeat(e.data.seatId)}},this.handleAddSeat=async(e,t)=>{if(!i())return console.warn("[tl-seat-map] SDK not available, cannot add seat"),void this.postToIframe("seatmap:add-seat-failed",{seatId:e,error:"SDK not available"});try{const a=r();await a.getCartManager().addSeat(e,t,this.occurrenceId),this.postToIframe("seatmap:add-seat-confirmed",{seatId:e}),this.seatsInCart=[...this.seatsInCart,e],this.tlSeatAdded.emit({seatId:e,ticketTypeId:t}),this.tlCartChange.emit({seatIds:this.seatsInCart})}catch(t){console.error("[tl-seat-map] Failed to add seat:",t),this.postToIframe("seatmap:add-seat-failed",{seatId:e,error:"Failed to add seat"})}},this.handleRemoveSeat=async e=>{if(!i())return console.warn("[tl-seat-map] SDK not available, cannot remove seat"),void this.postToIframe("seatmap:remove-seat-failed",{seatId:e,error:"SDK not available"});try{const t=r();await t.getCartManager().removeSeat(e,this.occurrenceId),this.postToIframe("seatmap:remove-seat-confirmed",{seatId:e}),this.seatsInCart=this.seatsInCart.filter((t=>t!==e)),this.tlSeatRemoved.emit({seatId:e}),this.tlCartChange.emit({seatIds:this.seatsInCart})}catch(t){console.error("[tl-seat-map] Failed to remove seat:",t),this.postToIframe("seatmap:remove-seat-failed",{seatId:e,error:"Failed to remove seat"})}}}componentWillLoad(){window.addEventListener("message",this.handleMessage)}disconnectedCallback(){window.removeEventListener("message",this.handleMessage)}watchOccurrenceId(){this.isReady=!1,this.isLoading=!0,this.error=null}getIframeSrc(){return`${this.hboUrl}/embed/seats?occurrenceId=${encodeURIComponent(this.occurrenceId)}&apiUrl=${encodeURIComponent(this.apiUrl)}`}render(){return a("div",{key:"c9beadc1792d7825ac3f99e6abc8b181e28fd1b6",class:"seat-map-container",style:{width:this.width,height:this.height}},this.isLoading&&a("div",{key:"ad792ea35f433a268c81722ce4e7d0e34780d337",class:"loading"},a("div",{key:"dd3e0657b16c2f265f59fbaa2ac39c559c2093b7",class:"spinner"}),a("p",{key:"2714e3073d0e5cddc50d530aa1cf46a7f73ba96f"},"Loading seat map...")),this.error&&a("div",{key:"3de9d73ab89a1ee963e73b4192d5c93e9667f11b",class:"error"},a("p",{key:"0fea5c828b5b212ffdb45c9c7702d241e2b79cc4",class:"error-title"},"Error"),a("p",{key:"f2c090b982bb1ee6fb7d347d8860b4ce4798a891",class:"error-message"},this.error)),a("iframe",{key:"8023219fdd467ec736f9627190690a6f73df3bb3",ref:e=>this.iframeRef=e,src:this.getIframeSrc(),class:{"seat-map-iframe":!0,hidden:this.isLoading||!!this.error},title:"Ticketlayer Seat Map",allow:"fullscreen"}))}get el(){return s(this)}static get watchers(){return{occurrenceId:[{watchOccurrenceId:0}]}}};o.style=":host{display:block;font-family:var(--tl-font-family, system-ui, -apple-system, sans-serif)}.seat-map-container{position:relative;overflow:hidden;border-radius:var(--tl-radius-md, 0.5rem);background:var(--tl-color-background, #ffffff)}.seat-map-iframe{width:100%;height:100%;border:none}.seat-map-iframe.hidden{display:none}.loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--tl-color-background, #ffffff);color:var(--tl-color-foreground, #0f172a);gap:1rem}.loading p{margin:0;font-size:0.875rem;color:var(--tl-color-muted-foreground, #64748b)}.spinner{width:40px;height:40px;border:3px solid var(--tl-color-border, #e2e8f0);border-top-color:var(--tl-color-primary, #e64b12);border-radius:50%;animation:tl-seat-map-spin 1s linear infinite}@keyframes tl-seat-map-spin{to{transform:rotate(360deg)}}.error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--tl-color-background, #ffffff);color:var(--tl-color-error, #ef4444);padding:1.5rem;text-align:center}.error-title{margin:0 0 0.5rem;font-size:1.125rem;font-weight:600}.error-message{margin:0;font-size:0.875rem;opacity:0.9}";export{o as tl_seat_map}
1
+ import{r as e,c as t,h as a,a as s}from"./p-OoYV1faY.js";import{h as i,g as r}from"./p-CqhvfyKV.js";const o=class{constructor(a){e(this,a),this.tlReady=t(this,"tlReady"),this.tlLoad=t(this,"tlLoad"),this.tlError=t(this,"tlError"),this.tlSeatAdded=t(this,"tlSeatAdded"),this.tlSeatRemoved=t(this,"tlSeatRemoved"),this.tlCartChange=t(this,"tlCartChange"),this.hboUrl="https://checkout.ticketlayer.com",this.apiUrl="https://api.ticketlayer.com",this.height="600px",this.width="100%",this.isReady=!1,this.isLoading=!0,this.error=null,this.seatsInCart=[],this.postToIframe=(e,t={})=>{this.iframeRef?.contentWindow&&this.iframeRef.contentWindow.postMessage({type:e,...t},"*")},this.handleMessage=e=>{if(e.data&&e.data.type)switch(e.data.type){case"seatmap:ready":this.isReady=!0,this.isLoading=!1,this.tlReady.emit(),this.postToIframe("seatmap:set-cart-seats",{seatIds:this.seatsInCart});break;case"seatmap:loaded":this.tlLoad.emit({seatMapId:e.data.seatMapId});break;case"seatmap:error":this.error=e.data.error,this.isLoading=!1,this.tlError.emit({error:e.data.error});break;case"seatmap:add-seat":this.handleAddSeat(e.data.seatId,e.data.ticketTypeId);break;case"seatmap:remove-seat":this.handleRemoveSeat(e.data.seatId)}},this.handleAddSeat=async(e,t)=>{if(!i())return console.warn("[tl-seat-map] SDK not available, cannot add seat"),void this.postToIframe("seatmap:add-seat-failed",{seatId:e,error:"SDK not available"});try{const a=r();await a.getCartManager().addSeat(e,t,this.occurrenceId),this.postToIframe("seatmap:add-seat-confirmed",{seatId:e}),this.seatsInCart=[...this.seatsInCart,e],this.tlSeatAdded.emit({seatId:e,ticketTypeId:t}),this.tlCartChange.emit({seatIds:this.seatsInCart})}catch(t){console.error("[tl-seat-map] Failed to add seat:",t),this.postToIframe("seatmap:add-seat-failed",{seatId:e,error:"Failed to add seat"})}},this.handleRemoveSeat=async e=>{if(!i())return console.warn("[tl-seat-map] SDK not available, cannot remove seat"),void this.postToIframe("seatmap:remove-seat-failed",{seatId:e,error:"SDK not available"});try{const t=r();await t.getCartManager().removeSeat(e,this.occurrenceId),this.postToIframe("seatmap:remove-seat-confirmed",{seatId:e}),this.seatsInCart=this.seatsInCart.filter((t=>t!==e)),this.tlSeatRemoved.emit({seatId:e}),this.tlCartChange.emit({seatIds:this.seatsInCart})}catch(t){console.error("[tl-seat-map] Failed to remove seat:",t),this.postToIframe("seatmap:remove-seat-failed",{seatId:e,error:"Failed to remove seat"})}}}componentWillLoad(){window.addEventListener("message",this.handleMessage)}disconnectedCallback(){window.removeEventListener("message",this.handleMessage)}watchOccurrenceId(){this.isReady=!1,this.isLoading=!0,this.error=null}getIframeSrc(){return`${this.hboUrl}/embed/seats?occurrenceId=${encodeURIComponent(this.occurrenceId)}&apiUrl=${encodeURIComponent(this.apiUrl)}`}render(){return a("div",{key:"c9beadc1792d7825ac3f99e6abc8b181e28fd1b6",class:"seat-map-container",style:{width:this.width,height:this.height}},this.isLoading&&a("div",{key:"ad792ea35f433a268c81722ce4e7d0e34780d337",class:"loading"},a("div",{key:"dd3e0657b16c2f265f59fbaa2ac39c559c2093b7",class:"spinner"}),a("p",{key:"2714e3073d0e5cddc50d530aa1cf46a7f73ba96f"},"Loading seat map...")),this.error&&a("div",{key:"3de9d73ab89a1ee963e73b4192d5c93e9667f11b",class:"error"},a("p",{key:"0fea5c828b5b212ffdb45c9c7702d241e2b79cc4",class:"error-title"},"Error"),a("p",{key:"f2c090b982bb1ee6fb7d347d8860b4ce4798a891",class:"error-message"},this.error)),a("iframe",{key:"8023219fdd467ec736f9627190690a6f73df3bb3",ref:e=>this.iframeRef=e,src:this.getIframeSrc(),class:{"seat-map-iframe":!0,hidden:this.isLoading||!!this.error},title:"Ticketlayer Seat Map",allow:"fullscreen"}))}get el(){return s(this)}static get watchers(){return{occurrenceId:[{watchOccurrenceId:0}]}}};o.style=":host{display:block;font-family:var(--tl-font-family)}.seat-map-container{position:relative;overflow:hidden;border-radius:var(--tl-radius-md);background:var(--tl-color-background)}.seat-map-iframe{width:100%;height:100%;border:none}.seat-map-iframe.hidden{display:none}.loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--tl-color-background);color:var(--tl-color-foreground);gap:1rem}.loading p{margin:0;font-size:0.875rem;color:var(--tl-color-muted-foreground)}.spinner{width:40px;height:40px;border:3px solid var(--tl-color-border);border-top-color:var(--tl-color-primary);border-radius:50%;animation:tl-seat-map-spin 1s linear infinite}@keyframes tl-seat-map-spin{to{transform:rotate(360deg)}}.error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--tl-color-background);color:var(--tl-color-error);padding:1.5rem;text-align:center}.error-title{margin:0 0 0.5rem;font-size:1.125rem;font-weight:600}.error-message{margin:0;font-size:0.875rem;opacity:0.9}";export{o as tl_seat_map}
@@ -1 +1 @@
1
- import{r as t,c as e,h as r,H as s,a as i}from"./p-Ba-RZTFI.js";import{h as o,g as a}from"./p-CqhvfyKV.js";const l=class{constructor(r){t(this,r),this.tlComplete=e(this,"tl-complete"),this.tlError=e(this,"tl-error"),this.tlClose=e(this,"tl-close"),this.disabled=!1,this.handleClick=()=>{if(!this.disabled)return o()?void a().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 r(s,{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},r("slot",{key:"0118d9921df5af1ae2376fd4135bac487aac7ebd"}))}get el(){return i(this)}};l.style="tl-checkout-wrapper,.tl-checkout-wrapper{display:inline-block;cursor:pointer}tl-checkout-wrapper:focus,.tl-checkout-wrapper:focus{outline:2px solid var(--tl-ring, #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}";export{l as tl_checkout_wrapper}
1
+ import{r as t,c as e,h as r,H as s,a as i}from"./p-OoYV1faY.js";import{h as o,g as a}from"./p-CqhvfyKV.js";const l=class{constructor(r){t(this,r),this.tlComplete=e(this,"tl-complete"),this.tlError=e(this,"tl-error"),this.tlClose=e(this,"tl-close"),this.disabled=!1,this.handleClick=()=>{if(!this.disabled)return o()?void a().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 r(s,{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},r("slot",{key:"0118d9921df5af1ae2376fd4135bac487aac7ebd"}))}get el(){return i(this)}};l.style="tl-checkout-wrapper,.tl-checkout-wrapper{display:inline-block;cursor:pointer}tl-checkout-wrapper:focus,.tl-checkout-wrapper:focus{outline:2px solid var(--tl-ring);outline-offset:2px;border-radius:var(--tl-radius-sm)}tl-checkout-wrapper[disabled],tl-checkout-wrapper.tl-checkout-wrapper--disabled,.tl-checkout-wrapper--disabled{cursor:not-allowed;opacity:0.5}";export{l as tl_checkout_wrapper}
@@ -0,0 +1 @@
1
+ import{r as e,c as t,h as s}from"./p-OoYV1faY.js";import{w as i}from"./p-CqhvfyKV.js";const r=class{constructor(s){e(this,s),this.tlEventClick=t(this,"tlEventClick"),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 i()).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?s("div",{class:e},Array.from({length:6}).map(((e,t)=>s("div",{class:"skeleton-card",key:t},s("div",{class:"skeleton-image"}),s("div",{class:"skeleton-content"},s("div",{class:"skeleton-line short"}),s("div",{class:"skeleton-line medium"}),s("div",{class:"skeleton-line long"})))))):this.error?s("div",{class:"error-state"},s("p",{class:"error-title"},"Error loading events"),s("p",{class:"error-message"},this.error)):0===this.events.length?s("div",{class:"empty-state"},s("svg",{class:"empty-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})),s("p",{class:"empty-title"},"No events available"),s("p",{class:"empty-message"},"Check back later for upcoming events.")):s("div",{class:e},this.events.map((e=>s("tl-event-card",{key:e.id,event:e,onTlClick:this.handleEventClick}))))}static get watchers(){return{limit:[{watchFiltersChange:0}],category:[{watchFiltersChange:0}]}}};r.style=":host{display:block;font-family:var(--tl-font-family)}.event-grid{display:grid;gap:var(--tl-spacing-6)}.cols-1{grid-template-columns:1fr}.cols-2{grid-template-columns:repeat(2, 1fr)}.cols-3{grid-template-columns:repeat(3, 1fr)}.cols-4{grid-template-columns:repeat(4, 1fr)}@media (max-width: 1024px){.cols-4,.cols-3{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 640px){.cols-4,.cols-3,.cols-2{grid-template-columns:1fr}}.skeleton-card{background:var(--tl-secondary);border-radius:var(--tl-radius-lg);overflow:hidden}.skeleton-image{aspect-ratio:16 / 9;background:var(--tl-muted);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.skeleton-content{padding:var(--tl-spacing-4);display:flex;flex-direction:column;gap:0.5rem}.skeleton-line{height:1rem;background:var(--tl-muted);border-radius:var(--tl-radius-sm);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.skeleton-line.short{width:4rem;height:0.75rem}.skeleton-line.medium{width:75%}.skeleton-line.long{width:50%}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}.error-state{background:rgba(239, 68, 68, 0.1);border:1px solid var(--tl-error);border-radius:var(--tl-radius-lg);padding:var(--tl-spacing-4)}.error-title{margin:0;font-weight:500;color:var(--tl-error)}.error-message{margin:0.25rem 0 0;font-size:0.875rem;color:var(--tl-error)}.empty-state{text-align:center;padding:var(--tl-spacing-8) var(--tl-spacing-4)}.empty-icon{width:4rem;height:4rem;margin:0 auto 1rem;color:var(--tl-muted-foreground)}.empty-title{margin:0;font-size:1.25rem;font-weight:600;color:var(--tl-foreground)}.empty-message{margin:0.5rem 0 0;color:var(--tl-muted-foreground)}";export{r as tl_event_list}
@@ -0,0 +1 @@
1
+ import{r as t,c as o,h as r}from"./p-OoYV1faY.js";import{w as a,h as i,g as e}from"./p-CqhvfyKV.js";import{c as s}from"./p-4ig0-WB6.js";const n=class{constructor(r){t(this,r),this.tlCheckout=o(this,"tlCheckout"),this.tlItemRemoved=o(this,"tlItemRemoved"),this.tlCartUpdated=o(this,"tlCartUpdated"),this.tlError=o(this,"tlError"),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 a(),o=t.getCartManager?.();if(o){const t=await o.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 a().catch((()=>null));if(!t)return;const o=t.getCartManager?.();o&&(this.unsubscribe=o.on?.("cart:updated",(t=>{console.log("[tl-cart] Cart updated:",t),this.cart=t,this.tlCartUpdated.emit({cart:t})})))}async handleRemoveItem(t){if(i()){this.removingItemId=t;try{const o=e(),r=o.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,o="GBP"){return new Intl.NumberFormat("en-GB",{style:"currency",currency:o}).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 r("div",{class:"skeleton-container"},r("div",{class:"skeleton-item"}),r("div",{class:"skeleton-item"}),r("div",{class:"skeleton-totals"}))}renderEmptyCart(){return r("div",{class:"empty-cart"},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:"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"})),r("p",{class:"empty-title"},"Your cart is empty"),r("p",{class:"empty-message"},"Add tickets to get started"))}renderCartItem(t){const o=this.removingItemId===t.id;return r("div",{class:"cart-item "+(o?"removing":""),key:t.id},r("div",{class:"item-info"},r("p",{class:"item-name"},t.ticketTypeName),!this.compact&&r("p",{class:"item-event"},t.eventName),!this.compact&&t.occurrenceDate&&r("p",{class:"item-date"},this.formatDate(t.occurrenceDate)),r("p",{class:"item-quantity"},"Qty: ",t.quantity)),r("div",{class:"item-actions"},r("p",{class:"item-price"},this.formatPrice(t.totalPrice,t.currency)),this.showRemoveButtons&&r("button",{class:"remove-btn",onClick:()=>this.handleRemoveItem(t.id),disabled:o,"aria-label":"Remove item"},o?r("span",{class:"spinner"}):r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},r("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}=this.cart,o=s(this.cart),a=o.currency;return r("div",{class:"cart "+(this.compact?"compact":"")},r("div",{class:"cart-items"},t.map((t=>this.renderCartItem(t)))),r("div",{class:"cart-totals"},!this.compact&&r("div",{class:"total-row subtotal"},r("span",null,"Subtotal"),r("span",null,this.formatPrice(o.subtotal,a))),o.showFee&&!this.compact&&r("div",{class:"total-row fees"},r("span",null,o.feeLabel),r("span",null,this.formatPrice(o.fees,a))),o.discount>0&&!this.compact&&r("div",{class:"total-row discount"},r("span",null,"Discount"),r("span",null,"-",this.formatPrice(o.discount,a))),r("div",{class:"total-row total"},r("span",null,"Total"),r("span",null,this.formatPrice(o.total,a)))),this.showCheckoutButton&&r("button",{class:"checkout-btn",onClick:this.handleCheckout,disabled:0===t.length},this.checkoutLabel))}};n.style=":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}";export{n as tl_cart}
@@ -0,0 +1 @@
1
+ import{r as t,c as r,h as i}from"./p-OoYV1faY.js";import{w as o}from"./p-CqhvfyKV.js";import{e,i as a}from"./p-BXpVGW51.js";import"./p-4ig0-WB6.js";const s=class{constructor(i){t(this,i),this.tlPromoApplied=r(this,"tlPromoApplied"),this.tlError=r(this,"tlError"),this.placeholder="Promo or presale code",this.buttonLabel="Apply",this.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 r=await o(),i=r.getPresaleManager?.();if(!i)throw new Error("Promo codes are not available");const e=await i.redeem(t),a=await(r.getCartManager?.()?.get().catch((()=>null)))??null;this.applied={code:t.toUpperCase(),...e,cart:a},this.code="",this.tlPromoApplied.emit(this.applied)}catch(t){console.error("[tl-promo-code] Redeem failed:",t),this.error=a(t)?"Sign in to use this code":e(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?i("div",{class:"applied",role:"status"},i("span",{class:"applied-text"},i("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},i("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})),"Code ",i("strong",{class:"code"},this.applied.code),this.applied.alreadyHeld?" was already applied":" applied"),i("button",{type:"button",class:"link",onClick:this.reset},"Use a different code")):i("form",{class:"promo",onSubmit:this.handleSubmit},i("div",{class:"field"},i("input",{class:"input",type:"text",autocomplete:"off",autoCapitalize:"characters",spellcheck:!1,"aria-label":this.placeholder,placeholder:this.placeholder,value:this.code,disabled:this.applying,onInput:this.handleInput}),i("button",{type:"submit",class:"apply",disabled:this.applying},this.applying?"Applying…":this.buttonLabel)),this.error&&i("p",{class:"error",role:"alert"},this.error))}};s.style=":host{display:block;font-family:var(--tl-font-family);color:var(--tl-foreground)}.field{display:flex;gap:var(--tl-spacing-2)}.input{flex:1;min-width:0;padding:var(--tl-spacing-3);font:inherit;font-size:0.875rem;color:var(--tl-foreground);background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius-md);text-transform:uppercase}.input::placeholder{text-transform:none;color:var(--tl-muted-foreground)}.input:focus{outline:2px solid var(--tl-primary);outline-offset:1px}.apply{padding:var(--tl-spacing-3) var(--tl-spacing-4);font:inherit;font-size:0.875rem;font-weight:500;color:var(--tl-primary-foreground);background:var(--tl-primary);border:none;border-radius:var(--tl-radius-md);cursor:pointer;white-space:nowrap}.apply:hover:not(:disabled){opacity:0.9}.apply:disabled,.input:disabled{opacity:0.6;cursor:not-allowed}.error{margin:var(--tl-spacing-2) 0 0;font-size:0.8125rem;color:var(--tl-error)}.applied{display:flex;align-items:center;justify-content:space-between;gap:var(--tl-spacing-3);padding:var(--tl-spacing-3);font-size:0.875rem;background:var(--tl-muted);border:1px solid var(--tl-border);border-radius:var(--tl-radius-md)}.applied-text{display:flex;align-items:center;gap:var(--tl-spacing-2)}.icon{width:1rem;height:1rem;flex-shrink:0;color:var(--tl-success)}.code{font-family:var(--tl-font-family-mono)}.link{padding:0;font:inherit;font-size:0.8125rem;color:var(--tl-primary);background:none;border:none;cursor:pointer;white-space:nowrap}.link:hover{text-decoration:underline}";export{s as tl_promo_code}
@@ -0,0 +1 @@
1
+ import{r as t,h as n}from"./p-OoYV1faY.js";import{w as r}from"./p-CqhvfyKV.js";const e=class{constructor(n){t(this,n),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 t=await r(),n=t.getOrdersManager?.();if(!n)throw new Error("Tickets are not available");const o=await n.get(this.orderId);if(this.tickets=o?.tickets??[],this.tickets.length>0)this.issuing=!1,this.stopPolling();else{const t=e.POLL_DELAYS_MS[this.poll];this.issuing=void 0!==t,void 0!==t&&(this.poll+=1,this.stopPolling(),this.timer=setTimeout((()=>this.load()),t))}}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?n("div",{class:"state"},"Loading tickets…"):this.error?n("div",{class:"state error"},this.error):0===this.tickets.length?this.issuing?n("div",{class:"state issuing",role:"status","aria-live":"polite"},n("span",{class:"spinner","aria-hidden":"true"}),"Preparing your tickets…"):n("div",{class:"state",role:"status"},"Your tickets are taking longer than usual. They will be emailed to you as soon as they are ready."):n("div",{class:`grid cols-${this.columns}`},this.tickets.map((t=>n("tl-ticket",{key:t.id,ticket:t,orderId:this.orderId}))))}static get watchers(){return{orderId:[{watchOrder:0}]}}};function o(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}e.POLL_DELAYS_MS=[1e3,1500,2e3,3e3,4e3,5e3,6e3,8e3,1e4,12e3],e.style=":host{display:block;font-family:var(--tl-font-family)}.grid{display:grid;gap:var(--tl-spacing-4);grid-template-columns:1fr}@media (min-width: 480px){.grid.cols-2{grid-template-columns:repeat(2, 1fr)}.grid.cols-3{grid-template-columns:repeat(3, 1fr)}}.state{padding:var(--tl-spacing-6);text-align:center;color:var(--tl-muted-foreground);font-size:0.875rem}.state.error{color:var(--tl-error)}.state.issuing{display:flex;align-items:center;justify-content:center;gap:var(--tl-spacing-2)}.spinner{width:0.875rem;height:0.875rem;border:2px solid var(--tl-border);border-top-color:var(--tl-primary);border-radius:50%;animation:tl-spin 0.7s linear infinite;flex:none}@keyframes tl-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation:none;border-top-color:var(--tl-border)}}";var i,s,u={};function c(){return s?i:(s=1,i=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then})}var a,f={},l={};function h(){if(a)return l;let t;a=1;const n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return l.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return 4*t+17},l.getSymbolTotalCodewords=function(t){return n[t]},l.getBCHDigit=function(t){let n=0;for(;0!==t;)n++,t>>>=1;return n},l.setToSJISFunction=function(n){if("function"!=typeof n)throw new Error('"toSJISFunc" is not a valid function.');t=n},l.isKanjiModeEnabled=function(){return void 0!==t},l.toSJIS=function(n){return t(n)},l}var d,w,p,m,g,v={};function y(){return d||(d=1,(t=v).L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2},t.isValid=function(t){return t&&void 0!==t.bit&&t.bit>=0&&t.bit<4},t.from=function(n,r){if(t.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+n)}}(n)}catch(t){return r}}),v;var t}var b,E,k,x,A={},M={},T={},R={};function P(){if(x)return R;x=1;const t=y(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return R.getBlocksCount=function(r,e){switch(e){case t.L:return n[4*(r-1)+0];case t.M:return n[4*(r-1)+1];case t.Q:return n[4*(r-1)+2];case t.H:return n[4*(r-1)+3];default:return}},R.getTotalCodewordsCount=function(n,e){switch(e){case t.L:return r[4*(n-1)+0];case t.M:return r[4*(n-1)+1];case t.Q:return r[4*(n-1)+2];case t.H:return r[4*(n-1)+3];default:return}},R}var U,I,F,C,N={},_={};var B,q={},L={},$={};function z(){return B||(B=1,$.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}),$}var Q,j,O,S={};function D(){if(Q)return S;Q=1;const t="[0-9]+";let n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";n=n.replace(/u/g,"\\u");const r="(?:(?![A-Z0-9 $%*+\\-./:]|"+n+")(?:.|[\r\n]))+";S.KANJI=new RegExp(n,"g"),S.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),S.BYTE=new RegExp(r,"g"),S.NUMERIC=new RegExp(t,"g"),S.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");const e=new RegExp("^"+n+"$"),o=new RegExp("^"+t+"$"),i=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return S.testKanji=function(t){return e.test(t)},S.testNumeric=function(t){return o.test(t)},S.testAlphanumeric=function(t){return i.test(t)},S}function Y(){return j||(j=1,function(t){const n=z(),r=D();t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(t,r){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!n.isValid(r))throw new Error("Invalid version: "+r);return r>=1&&r<10?t.ccBits[0]:r<27?t.ccBits[1]:t.ccBits[2]},t.getBestModeForData=function(n){return r.testNumeric(n)?t.NUMERIC:r.testAlphanumeric(n)?t.ALPHANUMERIC:r.testKanji(n)?t.KANJI:t.BYTE},t.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},t.isValid=function(t){return t&&t.bit&&t.ccBits},t.from=function(n,r){if(t.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw new Error("Unknown mode: "+n)}}(n)}catch(t){return r}}}(L)),L}var Z,V,H,J,K,W,G,X,tt,nt,rt,et,ot={},it={},st={exports:{}};function ut(){return nt||(nt=1,function(t){var n={single_source_shortest_paths:function(t,r,e){var o={},i={};i[r]=0;var s,u,c,a,f,l,h=n.PriorityQueue.make();for(h.push(r,0);!h.empty();)for(c in a=(s=h.pop()).cost,f=t[u=s.value]||{})f.hasOwnProperty(c)&&(l=a+f[c],(void 0===i[c]||i[c]>l)&&(i[c]=l,h.push(c,l),o[c]=u));if(void 0!==e&&void 0===i[e]){var d=["Could not find a path from ",r," to ",e,"."].join("");throw new Error(d)}return o},extract_shortest_path_from_predecessor_list:function(t,n){for(var r=[],e=n;e;)r.push(e),e=t[e];return r.reverse(),r},find_path:function(t,r,e){var o=n.single_source_shortest_paths(t,r,e);return n.extract_shortest_path_from_predecessor_list(o,e)},PriorityQueue:{make:function(t){var r,e=n.PriorityQueue,o={};for(r in t=t||{},e)e.hasOwnProperty(r)&&(o[r]=e[r]);return o.queue=[],o.sorter=t.sorter||e.default_sorter,o},default_sorter:function(t,n){return t.cost-n.cost},push:function(t,n){this.queue.push({value:t,cost:n}),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};t.exports=n}(st)),st.exports}function ct(){if(et)return f;et=1;const t=h(),n=y(),r=function(){if(p)return w;function t(){this.buffer=[],this.length=0}return p=1,t.prototype={get:function(t){const n=Math.floor(t/8);return 1==(this.buffer[n]>>>7-t%8&1)},put:function(t,n){for(let r=0;r<n;r++)this.putBit(1==(t>>>n-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),t&&(this.buffer[n]|=128>>>this.length%8),this.length++}},w=t}(),e=function(){if(g)return m;function t(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}return g=1,t.prototype.set=function(t,n,r,e){const o=t*this.size+n;this.data[o]=r,e&&(this.reservedBit[o]=!0)},t.prototype.get=function(t,n){return this.data[t*this.size+n]},t.prototype.xor=function(t,n,r){this.data[t*this.size+n]^=r},t.prototype.isReserved=function(t,n){return this.reservedBit[t*this.size+n]},m=t}(),o=(b||(b=1,function(t){const n=h().getSymbolSize;t.getRowColCoords=function(t){if(1===t)return[];const r=Math.floor(t/7)+2,e=n(t),o=145===e?26:2*Math.ceil((e-13)/(2*r-2)),i=[e-7];for(let t=1;t<r-1;t++)i[t]=i[t-1]-o;return i.push(6),i.reverse()},t.getPositions=function(n){const r=[],e=t.getRowColCoords(n),o=e.length;for(let t=0;t<o;t++)for(let n=0;n<o;n++)0===t&&0===n||0===t&&n===o-1||t===o-1&&0===n||r.push([e[t],e[n]]);return r}}(A)),A),i=function(){if(E)return M;E=1;const t=h().getSymbolSize;return M.getPositions=function(n){const r=t(n);return[[0,0],[r-7,0],[0,r-7]]},M}(),s=(k||(k=1,function(t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};function n(n,r,e){switch(n){case t.Patterns.PATTERN000:return(r+e)%2==0;case t.Patterns.PATTERN001:return r%2==0;case t.Patterns.PATTERN010:return e%3==0;case t.Patterns.PATTERN011:return(r+e)%3==0;case t.Patterns.PATTERN100:return(Math.floor(r/2)+Math.floor(e/3))%2==0;case t.Patterns.PATTERN101:return r*e%2+r*e%3==0;case t.Patterns.PATTERN110:return(r*e%2+r*e%3)%2==0;case t.Patterns.PATTERN111:return(r*e%3+(r+e)%2)%2==0;default:throw new Error("bad maskPattern:"+n)}}t.isValid=function(t){return null!=t&&""!==t&&!isNaN(t)&&t>=0&&t<=7},t.from=function(n){return t.isValid(n)?parseInt(n,10):void 0},t.getPenaltyN1=function(t){const n=t.size;let r=0,e=0,o=0,i=null,s=null;for(let u=0;u<n;u++){e=o=0,i=s=null;for(let c=0;c<n;c++){let n=t.get(u,c);n===i?e++:(e>=5&&(r+=e-5+3),i=n,e=1),n=t.get(c,u),n===s?o++:(o>=5&&(r+=o-5+3),s=n,o=1)}e>=5&&(r+=e-5+3),o>=5&&(r+=o-5+3)}return r},t.getPenaltyN2=function(t){const n=t.size;let r=0;for(let e=0;e<n-1;e++)for(let o=0;o<n-1;o++){const n=t.get(e,o)+t.get(e,o+1)+t.get(e+1,o)+t.get(e+1,o+1);4!==n&&0!==n||r++}return 3*r},t.getPenaltyN3=function(t){const n=t.size;let r=0,e=0,o=0;for(let i=0;i<n;i++){e=o=0;for(let s=0;s<n;s++)e=e<<1&2047|t.get(i,s),s>=10&&(1488===e||93===e)&&r++,o=o<<1&2047|t.get(s,i),s>=10&&(1488===o||93===o)&&r++}return 40*r},t.getPenaltyN4=function(t){let n=0;const r=t.data.length;for(let e=0;e<r;e++)n+=t.data[e];return 10*Math.abs(Math.ceil(100*n/r/5)-10)},t.applyMask=function(t,r){const e=r.size;for(let o=0;o<e;o++)for(let i=0;i<e;i++)r.isReserved(i,o)||r.xor(i,o,n(t,i,o))},t.getBestMask=function(n,r){const e=Object.keys(t.Patterns).length;let o=0,i=1/0;for(let s=0;s<e;s++){r(s),t.applyMask(s,n);const e=t.getPenaltyN1(n)+t.getPenaltyN2(n)+t.getPenaltyN3(n)+t.getPenaltyN4(n);t.applyMask(s,n),e<i&&(i=e,o=s)}return o}}(T)),T),u=P(),c=function(){if(C)return F;C=1;const t=(I||(I=1,function(t){const n=function(){if(U)return _;U=1;const t=new Uint8Array(512),n=new Uint8Array(256);return function(){let r=1;for(let e=0;e<255;e++)t[e]=r,n[r]=e,r<<=1,256&r&&(r^=285);for(let n=255;n<512;n++)t[n]=t[n-255]}(),_.log=function(t){if(t<1)throw new Error("log("+t+")");return n[t]},_.exp=function(n){return t[n]},_.mul=function(r,e){return 0===r||0===e?0:t[n[r]+n[e]]},_}();t.mul=function(t,r){const e=new Uint8Array(t.length+r.length-1);for(let o=0;o<t.length;o++)for(let i=0;i<r.length;i++)e[o+i]^=n.mul(t[o],r[i]);return e},t.mod=function(t,r){let e=new Uint8Array(t);for(;e.length-r.length>=0;){const t=e[0];for(let o=0;o<r.length;o++)e[o]^=n.mul(r[o],t);let o=0;for(;o<e.length&&0===e[o];)o++;e=e.slice(o)}return e},t.generateECPolynomial=function(r){let e=new Uint8Array([1]);for(let o=0;o<r;o++)e=t.mul(e,new Uint8Array([1,n.exp(o)]));return e}}(N)),N);function n(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}return n.prototype.initialize=function(n){this.degree=n,this.genPoly=t.generateECPolynomial(this.degree)},n.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const r=new Uint8Array(n.length+this.degree);r.set(n);const e=t.mod(r,this.genPoly),o=this.degree-e.length;if(o>0){const t=new Uint8Array(this.degree);return t.set(e,o),t}return e},F=n}(),a=(O||(O=1,function(t){const n=h(),r=P(),e=y(),o=Y(),i=z(),s=n.getBCHDigit(7973);function u(t,n){return o.getCharCountIndicator(t,n)+4}function c(t,n){let r=0;return t.forEach((function(t){const e=u(t.mode,n);r+=e+t.getBitsLength()})),r}t.from=function(t,n){return i.isValid(t)?parseInt(t,10):n},t.getCapacity=function(t,e,s){if(!i.isValid(t))throw new Error("Invalid QR Code version");void 0===s&&(s=o.BYTE);const c=8*(n.getSymbolTotalCodewords(t)-r.getTotalCodewordsCount(t,e));if(s===o.MIXED)return c;const a=c-u(s,t);switch(s){case o.NUMERIC:return Math.floor(a/10*3);case o.ALPHANUMERIC:return Math.floor(a/11*2);case o.KANJI:return Math.floor(a/13);default:return Math.floor(a/8)}},t.getBestVersionForData=function(n,r){let i;const s=e.from(r,e.M);if(Array.isArray(n)){if(n.length>1)return function(n,r){for(let e=1;e<=40;e++)if(c(n,e)<=t.getCapacity(e,r,o.MIXED))return e}(n,s);if(0===n.length)return 1;i=n[0]}else i=n;return function(n,r,e){for(let o=1;o<=40;o++)if(r<=t.getCapacity(o,e,n))return o}(i.mode,i.getLength(),s)},t.getEncodedBits=function(t){if(!i.isValid(t)||t<7)throw new Error("Invalid QR Code version");let r=t<<12;for(;n.getBCHDigit(r)-s>=0;)r^=7973<<n.getBCHDigit(r)-s;return t<<12|r}}(q)),q),l=function(){if(Z)return ot;Z=1;const t=h(),n=t.getBCHDigit(1335);return ot.getEncodedBits=function(r,e){const o=r.bit<<3|e;let i=o<<10;for(;t.getBCHDigit(i)-n>=0;)i^=1335<<t.getBCHDigit(i)-n;return 21522^(o<<10|i)},ot}(),d=Y(),v=(rt||(rt=1,function(t){const n=Y(),r=function(){if(H)return V;H=1;const t=Y();function n(n){this.mode=t.NUMERIC,this.data=n.toString()}return n.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%3*3+1:0)},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(t){let n,r,e;for(n=0;n+3<=this.data.length;n+=3)r=this.data.substr(n,3),e=parseInt(r,10),t.put(e,10);const o=this.data.length-n;o>0&&(r=this.data.substr(n),e=parseInt(r,10),t.put(e,3*o+1))},V=n}(),e=function(){if(K)return J;K=1;const t=Y(),n=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function r(n){this.mode=t.ALPHANUMERIC,this.data=n}return r.getBitsLength=function(t){return 11*Math.floor(t/2)+t%2*6},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(t){let r;for(r=0;r+2<=this.data.length;r+=2){let e=45*n.indexOf(this.data[r]);e+=n.indexOf(this.data[r+1]),t.put(e,11)}this.data.length%2&&t.put(n.indexOf(this.data[r]),6)},J=r}(),o=function(){if(G)return W;G=1;const t=Y();function n(n){this.mode=t.BYTE,this.data="string"==typeof n?(new TextEncoder).encode(n):new Uint8Array(n)}return n.getBitsLength=function(t){return 8*t},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(t){for(let n=0,r=this.data.length;n<r;n++)t.put(this.data[n],8)},W=n}(),i=function(){if(tt)return X;tt=1;const t=Y(),n=h();function r(n){this.mode=t.KANJI,this.data=n}return r.getBitsLength=function(t){return 13*t},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(t){let r;for(r=0;r<this.data.length;r++){let e=n.toSJIS(this.data[r]);if(e>=33088&&e<=40956)e-=33088;else{if(!(e>=57408&&e<=60351))throw new Error("Invalid SJIS character: "+this.data[r]+"\nMake sure your charset is UTF-8");e-=49472}e=192*(e>>>8&255)+(255&e),t.put(e,13)}},X=r}(),s=D(),u=h(),c=ut();function a(t){return unescape(encodeURIComponent(t)).length}function f(t,n,r){const e=[];let o;for(;null!==(o=t.exec(r));)e.push({data:o[0],index:o.index,mode:n,length:o[0].length});return e}function l(t){const r=f(s.NUMERIC,n.NUMERIC,t),e=f(s.ALPHANUMERIC,n.ALPHANUMERIC,t);let o,i;return u.isKanjiModeEnabled()?(o=f(s.BYTE,n.BYTE,t),i=f(s.KANJI,n.KANJI,t)):(o=f(s.BYTE_KANJI,n.BYTE,t),i=[]),r.concat(e,o,i).sort((function(t,n){return t.index-n.index})).map((function(t){return{data:t.data,mode:t.mode,length:t.length}}))}function d(t,s){switch(s){case n.NUMERIC:return r.getBitsLength(t);case n.ALPHANUMERIC:return e.getBitsLength(t);case n.KANJI:return i.getBitsLength(t);case n.BYTE:return o.getBitsLength(t)}}function w(t,s){let c;const a=n.getBestModeForData(t);if(c=n.from(s,a),c!==n.BYTE&&c.bit<a.bit)throw new Error('"'+t+'" cannot be encoded with mode '+n.toString(c)+".\n Suggested mode is: "+n.toString(a));switch(c!==n.KANJI||u.isKanjiModeEnabled()||(c=n.BYTE),c){case n.NUMERIC:return new r(t);case n.ALPHANUMERIC:return new e(t);case n.KANJI:return new i(t);case n.BYTE:return new o(t)}}t.fromArray=function(t){return t.reduce((function(t,n){return"string"==typeof n?t.push(w(n,null)):n.data&&t.push(w(n.data,n.mode)),t}),[])},t.fromString=function(r,e){const o=function(t,r){const e={},o={start:{}};let i=["start"];for(let s=0;s<t.length;s++){const u=t[s],c=[];for(let t=0;t<u.length;t++){const a=u[t],f=""+s+t;c.push(f),e[f]={node:a,lastCount:0},o[f]={};for(let t=0;t<i.length;t++){const s=i[t];e[s]&&e[s].node.mode===a.mode?(o[s][f]=d(e[s].lastCount+a.length,a.mode)-d(e[s].lastCount,a.mode),e[s].lastCount+=a.length):(e[s]&&(e[s].lastCount=a.length),o[s][f]=d(a.length,a.mode)+4+n.getCharCountIndicator(a.mode,r))}}i=c}for(let t=0;t<i.length;t++)o[i[t]].end=0;return{map:o,table:e}}(function(t){const r=[];for(let e=0;e<t.length;e++){const o=t[e];switch(o.mode){case n.NUMERIC:r.push([o,{data:o.data,mode:n.ALPHANUMERIC,length:o.length},{data:o.data,mode:n.BYTE,length:o.length}]);break;case n.ALPHANUMERIC:r.push([o,{data:o.data,mode:n.BYTE,length:o.length}]);break;case n.KANJI:r.push([o,{data:o.data,mode:n.BYTE,length:a(o.data)}]);break;case n.BYTE:r.push([{data:o.data,mode:n.BYTE,length:a(o.data)}])}}return r}(l(r,u.isKanjiModeEnabled())),e),i=c.find_path(o.map,"start","end"),s=[];for(let t=1;t<i.length-1;t++)s.push(o.table[i[t]].node);return t.fromArray(s.reduce((function(t,n){const r=t.length-1>=0?t[t.length-1]:null;return r&&r.mode===n.mode?(t[t.length-1].data+=n.data,t):(t.push(n),t)}),[]))},t.rawSplit=function(n){return t.fromArray(l(n,u.isKanjiModeEnabled()))}}(it)),it);function x(t,n,r){const e=t.size,o=l.getEncodedBits(n,r);let i,s;for(i=0;i<15;i++)s=1==(o>>i&1),t.set(i<6?i:i<8?i+1:e-15+i,8,s,!0),t.set(8,i<8?e-i-1:i<9?15-i-1+1:15-i-1,s,!0);t.set(e-8,8,1,!0)}function R(n,f,l,h){let w;if(Array.isArray(n))w=v.fromArray(n);else{if("string"!=typeof n)throw new Error("Invalid data");{let t=f;if(!t){const r=v.rawSplit(n);t=a.getBestVersionForData(r,l)}w=v.fromString(n,t||40)}}const p=a.getBestVersionForData(w,l);if(!p)throw new Error("The amount of data is too big to be stored in a QR Code");if(f){if(f<p)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+p+".\n")}else f=p;const m=function(n,e,o){const i=new r;o.forEach((function(t){i.put(t.mode.bit,4),i.put(t.getLength(),d.getCharCountIndicator(t.mode,n)),t.write(i)}));const s=8*(t.getSymbolTotalCodewords(n)-u.getTotalCodewordsCount(n,e));for(i.getLengthInBits()+4<=s&&i.put(0,4);i.getLengthInBits()%8!=0;)i.putBit(0);const a=(s-i.getLengthInBits())/8;for(let t=0;t<a;t++)i.put(t%2?17:236,8);return function(n,r,e){const o=t.getSymbolTotalCodewords(r),i=o-u.getTotalCodewordsCount(r,e),s=u.getBlocksCount(r,e),a=s-o%s,f=Math.floor(o/s),l=Math.floor(i/s),h=l+1,d=f-l,w=new c(d);let p=0;const m=new Array(s),g=new Array(s);let v=0;const y=new Uint8Array(n.buffer);for(let t=0;t<s;t++){const n=t<a?l:h;m[t]=y.slice(p,p+n),g[t]=w.encode(m[t]),p+=n,v=Math.max(v,n)}const b=new Uint8Array(o);let E,k,x=0;for(E=0;E<v;E++)for(k=0;k<s;k++)E<m[k].length&&(b[x++]=m[k][E]);for(E=0;E<d;E++)for(k=0;k<s;k++)b[x++]=g[k][E];return b}(i,n,e)}(f,l,w),g=t.getSymbolSize(f),y=new e(g);return function(t,n){const r=t.size,e=i.getPositions(n);for(let n=0;n<e.length;n++){const o=e[n][0],i=e[n][1];for(let n=-1;n<=7;n++)if(!(o+n<=-1||r<=o+n))for(let e=-1;e<=7;e++)i+e<=-1||r<=i+e||t.set(o+n,i+e,n>=0&&n<=6&&(0===e||6===e)||e>=0&&e<=6&&(0===n||6===n)||n>=2&&n<=4&&e>=2&&e<=4,!0)}}(y,f),function(t){const n=t.size;for(let r=8;r<n-8;r++){const n=r%2==0;t.set(r,6,n,!0),t.set(6,r,n,!0)}}(y),function(t,n){const r=o.getPositions(n);for(let n=0;n<r.length;n++){const e=r[n][0],o=r[n][1];for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)t.set(e+n,o+r,-2===n||2===n||-2===r||2===r||0===n&&0===r,!0)}}(y,f),x(y,l,0),f>=7&&function(t,n){const r=t.size,e=a.getEncodedBits(n);let o,i,s;for(let n=0;n<18;n++)o=Math.floor(n/3),i=n%3+r-8-3,s=1==(e>>n&1),t.set(o,i,s,!0),t.set(i,o,s,!0)}(y,f),function(t,n){const r=t.size;let e=-1,o=r-1,i=7,s=0;for(let u=r-1;u>0;u-=2)for(6===u&&u--;;){for(let r=0;r<2;r++)if(!t.isReserved(o,u-r)){let e=!1;s<n.length&&(e=1==(n[s]>>>i&1)),t.set(o,u-r,e),i--,-1===i&&(s++,i=7)}if(o+=e,o<0||r<=o){o-=e,e=-e;break}}}(y,m),isNaN(h)&&(h=s.getBestMask(y,x.bind(null,y,l))),s.applyMask(h,y),x(y,l,h),{modules:y,version:f,errorCorrectionLevel:l,maskPattern:h,segments:w}}return f.create=function(r,e){if(void 0===r||""===r)throw new Error("No input text");let o,i,u=n.M;return void 0!==e&&(u=n.from(e.errorCorrectionLevel,n.M),o=a.from(e.version),i=s.from(e.maskPattern),e.toSJISFunc&&t.setToSJISFunction(e.toSJISFunc)),R(r,o,u,i)},f}var at,ft,lt={},ht={};function dt(){return at||(at=1,function(t){function n(t){if("number"==typeof t&&(t=t.toString()),"string"!=typeof t)throw new Error("Color should be defined as hex string");let n=t.slice().replace("#","").split("");if(n.length<3||5===n.length||n.length>8)throw new Error("Invalid hex color: "+t);3!==n.length&&4!==n.length||(n=Array.prototype.concat.apply([],n.map((function(t){return[t,t]})))),6===n.length&&n.push("F","F");const r=parseInt(n.join(""),16);return{r:r>>24&255,g:r>>16&255,b:r>>8&255,a:255&r,hex:"#"+n.slice(0,6).join("")}}t.getOptions=function(t){t||(t={}),t.color||(t.color={});const r=t.width&&t.width>=21?t.width:void 0;return{width:r,scale:r?4:t.scale||4,margin:null==t.margin||t.margin<0?4:t.margin,color:{dark:n(t.color.dark||"#000000ff"),light:n(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}},t.getScale=function(t,n){return n.width&&n.width>=t+2*n.margin?n.width/(t+2*n.margin):n.scale},t.getImageWidth=function(n,r){const e=t.getScale(n,r);return Math.floor((n+2*r.margin)*e)},t.qrToImageData=function(n,r,e){const o=r.modules.size,i=r.modules.data,s=t.getScale(o,e),u=Math.floor((o+2*e.margin)*s),c=e.margin*s,a=[e.color.light,e.color.dark];for(let t=0;t<u;t++)for(let r=0;r<u;r++){let f=4*(t*u+r),l=e.color.light;t>=c&&r>=c&&t<u-c&&r<u-c&&(l=a[i[Math.floor((t-c)/s)*o+Math.floor((r-c)/s)]?1:0]),n[f++]=l.r,n[f++]=l.g,n[f++]=l.b,n[f]=l.a}}}(ht)),ht}var wt,pt,mt={};var gt=function(){if(pt)return u;pt=1;const t=c(),n=ct(),r=(ft||(ft=1,function(t){const n=dt();t.render=function(t,r,e){let o=e,i=r;void 0!==o||r&&r.getContext||(o=r,r=void 0),r||(i=function(){try{return document.createElement("canvas")}catch(t){throw new Error("You need to specify a canvas element")}}()),o=n.getOptions(o);const s=n.getImageWidth(t.modules.size,o),u=i.getContext("2d"),c=u.createImageData(s,s);return n.qrToImageData(c.data,t,o),function(t,n,r){t.clearRect(0,0,n.width,n.height),n.style||(n.style={}),n.height=r,n.width=r,n.style.height=r+"px",n.style.width=r+"px"}(u,i,s),u.putImageData(c,0,0),i},t.renderToDataURL=function(n,r,e){let o=e;return void 0!==o||r&&r.getContext||(o=r,r=void 0),o||(o={}),t.render(n,r,o).toDataURL(o.type||"image/png",(o.rendererOpts||{}).quality)}}(lt)),lt),e=function(){if(wt)return mt;wt=1;const t=dt();function n(t,n){const r=t.a/255,e=n+'="'+t.hex+'"';return r<1?e+" "+n+'-opacity="'+r.toFixed(2).slice(1)+'"':e}function r(t,n,r){let e=t+n;return void 0!==r&&(e+=" "+r),e}return mt.render=function(e,o,i){const s=t.getOptions(o),u=e.modules.size,c=e.modules.data,a=u+2*s.margin,f=s.color.light.a?"<path "+n(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",l="<path "+n(s.color.dark,"stroke")+' d="'+function(t,n,e){let o="",i=0,s=!1,u=0;for(let c=0;c<t.length;c++){const a=Math.floor(c%n),f=Math.floor(c/n);a||s||(s=!0),t[c]?(u++,c>0&&a>0&&t[c-1]||(o+=s?r("M",a+e,.5+f+e):r("m",i,0),i=0,s=!1),a+1<n&&t[c+1]||(o+=r("h",u),u=0)):i++}return o}(c,u,s.margin)+'"/>',h='<svg xmlns="http://www.w3.org/2000/svg" '+(s.width?'width="'+s.width+'" height="'+s.width+'" ':"")+'viewBox="0 0 '+a+" "+a+'" shape-rendering="crispEdges">'+f+l+"</svg>\n";return"function"==typeof i&&i(null,h),h},mt}();function o(r,e,o,i,s){const u=[].slice.call(arguments,1),c=u.length,a="function"==typeof u[c-1];if(!a&&!t())throw new Error("Callback required as last argument");if(!a){if(c<1)throw new Error("Too few arguments provided");return 1===c?(o=e,e=i=void 0):2!==c||e.getContext||(i=o,o=e,e=void 0),new Promise((function(t,s){try{const s=n.create(o,i);t(r(s,e,i))}catch(t){s(t)}}))}if(c<2)throw new Error("Too few arguments provided");2===c?(s=o,o=e,e=i=void 0):3===c&&(e.getContext&&void 0===s?(s=i,i=void 0):(s=i,i=o,o=e,e=void 0));try{const t=n.create(o,i);s(null,r(t,e,i))}catch(t){s(t)}}return u.create=n.create,u.toCanvas=o.bind(null,r.render),u.toDataURL=o.bind(null,r.renderToDataURL),u.toString=o.bind(null,(function(t,n,r){return e.render(t,r)})),u}(),vt=o(gt);const yt=class{constructor(n){t(this,n),this.qrSvg="",this.downloading=!1}async generateQr(){this.ticket?.barcode&&(this.qrSvg=await vt.toString(this.ticket.barcode,{type:"svg",margin:0,errorCorrectionLevel:"M"}))}async componentWillLoad(){await this.generateQr()}async download(){try{this.downloading=!0;const t=await r(),n=t.getOrdersManager?.();if(!n)throw new Error("Ticket downloads are not available");const e=await n.ticketPdf(this.orderId,this.ticket.id),o=URL.createObjectURL(e),i=document.createElement("a");i.href=o,i.download=`ticket-${this.ticket.id}.pdf`,document.body.appendChild(i),i.click(),i.remove(),URL.revokeObjectURL(o)}catch(t){console.error("[tl-ticket] download failed",t)}finally{this.downloading=!1}}render(){const t=this.ticket;if(!t)return null;const r="fully_redeemed"===t.admissionStatus,e=["cancelled","expired"].includes(t.status),o=r||e;return n("div",{class:"ticket"},n("div",{class:"qr-wrap"},n("div",{class:{qr:!0,inactive:o},innerHTML:this.qrSvg}),o&&n("span",{class:"stamp"},r?"Used":"Void")),n("p",{class:"name"},t.name),t.seatLabel&&n("p",{class:"meta"},"Seat ",t.seatLabel),t.holderName&&n("p",{class:"meta"},t.holderName),n("p",{class:"barcode"},t.barcode),n("button",{class:"download",disabled:this.downloading,onClick:()=>this.download()},this.downloading?"Preparing…":"Download PDF"))}static get watchers(){return{ticket:[{generateQr:0}]}}};yt.style=":host{display:block;font-family:var(--tl-font-family)}.ticket{border:1px solid var(--tl-border);border-radius:var(--tl-radius-lg);background:var(--tl-card);padding:var(--tl-spacing-5);text-align:center}.qr-wrap{position:relative;width:160px;height:160px;margin:0 auto}.qr{width:160px;height:160px}.qr svg{width:100%;height:100%;display:block}.qr.inactive{opacity:0.3}.stamp{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);padding:0.25rem 0.5rem;border-radius:var(--tl-radius-sm);background:rgba(17, 24, 39, 0.85);color:#ffffff;font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em}.name{margin:1rem 0 0;font-weight:600;color:var(--tl-foreground)}.meta{margin:0.125rem 0 0;font-size:0.875rem;color:var(--tl-muted-foreground)}.barcode{margin:0.25rem 0 0;font-family:ui-monospace, monospace;font-size:0.625rem;color:var(--tl-muted-foreground);word-break:break-all}.download{margin-top:0.75rem;padding:0.375rem 0.75rem;border:1px solid var(--tl-border);border-radius:var(--tl-radius-md);background:transparent;color:var(--tl-foreground);font-size:0.875rem;font-weight:500;cursor:pointer}.download:hover{background:var(--tl-muted)}.download:disabled{opacity:0.5;cursor:default}";export{e as tl_order_tickets,yt as tl_ticket}
@@ -0,0 +1 @@
1
+ const t="Booking fee";function e(t){return"number"==typeof t?Number.isInteger(t)?t:null:"string"==typeof t&&/^-?\d+$/.test(t)?Number(t):null}function n(t,e){return null===t?e:t>0||e}const o=t=>t.type||"ticket";function s(s){const u=s||{},l=Array.isArray(u.items)?u.items:[],r=l.filter((t=>"fee"===o(t))),f=l.filter((t=>"discount"===o(t))),a=e(u.itemsSubtotal)??e(u.subtotal)??l.filter((t=>!["fee","tax","discount"].includes(o(t)))).reduce(((t,n)=>t+(e(n.subtotal)??0)),0),c=r.length?r.reduce(((t,n)=>t+(e(n.subtotal)??0)),0):null,i=e(u.totalFees)??e(u.fees)??c,y=f.length?f.reduce(((t,n)=>t+Math.abs(e(n.subtotal)??0)),0):null,b=e(u.totalDiscounts)??e(u.discount)??y,p=e(u.totalTax)??0,g="string"==typeof u.feeLabel&&!!u.feeLabel||r.some((t=>"string"==typeof t.name&&!!t.name)),h="string"==typeof u.feeLabel&&u.feeLabel||r.map((t=>t.name)).find((t=>"string"==typeof t&&!!t))||t;return{currency:u.currency||"GBP",subtotal:a,fees:i??0,discount:b??0,total:e(u.total)??a+(i??0)+p-(b??0),showFee:"boolean"==typeof u.hasFees?u.hasFees:n(i,g),feeLabel:h}}function u(o,s=null){const u=(o||[]).reduce(((t,n)=>t+(e(n.price)??0)*(Math.max(0,Math.trunc(n.quantity||0))||0)),0),l=s?e(s.amount):null;return{subtotal:u,fees:l??0,total:u+(l??0),showFee:!!s&&n(l,!!s?.label),feeLabel:s?.label||t}}export{t as F,s as c,n as e,e as m,u as s}
@@ -0,0 +1 @@
1
+ import{r as t,c as e,h as o,H as r}from"./p-OoYV1faY.js";import{h as i,g as n}from"./p-CqhvfyKV.js";const a={available:{defaultLabel:"Buy Tickets",color:"var(--tl-primary)",hoverColor:"color-mix(in srgb, var(--tl-primary) 90%, black)",foreground:"var(--tl-primary-foreground)"},soldOut:{defaultLabel:"Sold Out",color:"#dc2626",hoverColor:"#b91c1c",foreground:"#ffffff"},waitlist:{defaultLabel:"Join Waitlist",color:"#2563eb",hoverColor:"#1d4ed8",foreground:"#ffffff"},comingSoon:{defaultLabel:"On Sale Soon",color:"#d97706",hoverColor:"#b45309",foreground:"#ffffff"}},s=class{constructor(o){t(this,o),this.tlClick=e(this,"tlClick"),this.state="available",this.variant="primary",this.size="md",this.fullWidth=!1,this.currency="GBP",this.pricePrefix="From",this.disabled=!1,this.isHovered=!1,this.handleClick=()=>{if(!this.disabled&&"soldOut"!==this.state&&"comingSoon"!==this.state&&(this.tlClick.emit({eventId:this.eventId,occurrenceId:this.occurrenceId}),i()))try{n().event(this.eventId).openModal({occurrenceId:this.occurrenceId})}catch(t){console.error("[tl-buy-tickets-button] Failed to open modal:",t)}}}formatPrice(t){const e=t/100,o=e%1!=0;return new Intl.NumberFormat("en-GB",{style:"currency",currency:this.currency,minimumFractionDigits:o?2:0,maximumFractionDigits:o?2:0}).format(e)}getStateConfig(){return a[this.state]}isInteractive(){return!this.disabled&&"soldOut"!==this.state&&"comingSoon"!==this.state}render(){const t=this.getStateConfig(),e=this.label||t.defaultLabel,i=this.isInteractive();return o(r,{key:"86ee9a81d82c10398dab4e22b3bbae15abb8f449",class:{"full-width":this.fullWidth}},o("button",{key:"b581e199ced7ffd14669ebe0cc727edc2f8c8914",type:"button",class:{"buy-button":!0,[`variant-${this.variant}`]:!0,[`size-${this.size}`]:!0,disabled:!i,hovered:this.isHovered&&i},style:{"--button-color":t.color,"--button-hover-color":t.hoverColor,"--button-foreground":t.foreground},disabled:!i,onClick:this.handleClick,onMouseEnter:()=>this.isHovered=!0,onMouseLeave:()=>this.isHovered=!1},o("span",{key:"f776bab4a999ed36b25400424d639b4c9261c02a",class:"icon"},"soldOut"===this.state&&this.renderSoldOutIcon(),"waitlist"===this.state&&this.renderWaitlistIcon(),"comingSoon"===this.state&&this.renderComingSoonIcon(),"available"===this.state&&this.renderTicketIcon()),o("span",{key:"e98ecbe6debc5c2c18ce1d304b60bf1074b003b3",class:"label"},e),void 0!==this.price&&o("span",{key:"e7e261d09a541b126b02b88d00992f3a6483a9b8",class:"price"},o("span",{key:"5eab43a47c2dd4c1339fe84b583902b1e38a0b2a",class:"price-prefix"},this.pricePrefix),o("span",{key:"f03b514ff2bc3c9a1b2e922d93a92accdedd0fad",class:"price-value"},this.formatPrice(this.price)))))}renderTicketIcon(){return o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},o("path",{d:"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z"}),o("path",{d:"M13 5v2"}),o("path",{d:"M13 17v2"}),o("path",{d:"M13 11v2"}))}renderSoldOutIcon(){return o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},o("circle",{cx:"12",cy:"12",r:"10"}),o("path",{d:"m15 9-6 6"}),o("path",{d:"m9 9 6 6"}))}renderWaitlistIcon(){return o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},o("circle",{cx:"12",cy:"12",r:"10"}),o("polyline",{points:"12 6 12 12 16 14"}))}renderComingSoonIcon(){return o("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},o("path",{d:"M12 2v4"}),o("path",{d:"m16.2 7.8 2.9-2.9"}),o("path",{d:"M18 12h4"}),o("path",{d:"m16.2 16.2 2.9 2.9"}),o("path",{d:"M12 18v4"}),o("path",{d:"m4.9 19.1 2.9-2.9"}),o("path",{d:"M2 12h4"}),o("path",{d:"m4.9 4.9 2.9 2.9"}))}};s.style=":host{display:inline-block;font-family:var(--tl-font-family)}:host(.full-width){display:block;width:100%}:host(.full-width) .buy-button{width:100%}.buy-button{display:inline-flex;align-items:center;justify-content:center;gap:0.5rem;font-weight:600;border:none;cursor:pointer;text-decoration:none;outline:none;transition:all 0.2s ease;white-space:nowrap}.buy-button.variant-primary{background:var(--button-color);color:var(--button-foreground)}.buy-button.variant-secondary{background:color-mix(in srgb, var(--button-color) 15%, transparent);color:var(--button-color)}.buy-button.variant-outline{background:transparent;color:var(--button-color);border:2px solid var(--button-color)}.buy-button.size-sm{padding:0.5rem 1rem;font-size:0.875rem;border-radius:var(--tl-radius-sm)}.buy-button.size-md{padding:0.75rem 1.5rem;font-size:1rem;border-radius:var(--tl-radius-md)}.buy-button.size-lg{padding:1rem 2rem;font-size:1.125rem;border-radius:var(--tl-radius-lg);min-height:51px}.buy-button.hovered:not(.disabled){opacity:0.9;transform:translateY(-1px)}.buy-button.hovered.variant-primary{background:var(--button-hover-color)}.buy-button.disabled{opacity:0.7;cursor:not-allowed}.icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.icon svg{width:1em;height:1em}.label{flex-shrink:0}.price{display:inline-flex;align-items:center;gap:0.25rem;margin-left:0.5rem;white-space:nowrap;opacity:0.9}.price-prefix{opacity:0.7}.price-value{font-weight:700}";export{s as tl_buy_tickets_button}
@@ -0,0 +1 @@
1
+ import{r as t,c as e,h as r}from"./p-OoYV1faY.js";import{w as o,g as a}from"./p-CqhvfyKV.js";import{s}from"./p-4ig0-WB6.js";const i=["discovery","purchase","cart","checkout","account","tickets"],n=["web","native"];function l(t){return"function"==typeof t?t:()=>t??null}const c=t=>s(t.state.ticketTypes.map((e=>({price:e.price,quantity:t.state.quantities[e.id]||0}))),t.state.feeQuote),d=function(t){const e=e=>{throw new Error(`[elements-core] ${t.tag||"<no tag>"}: ${e}`)};/^tl-[a-z0-9]+(-[a-z0-9]+)*$/.test(t.tag)||e("tag must look like tl-something"),i.includes(t.category)||e(`category must be one of ${i.join(", ")}`),t.runtimes.length&&!t.runtimes.some((t=>!n.includes(t)))||e(`runtimes must be a non-empty subset of ${n.join(", ")}`),new Set(t.tokens).size!==t.tokens.length&&e("tokens must not repeat"),t.statuses.length||e("statuses must not be empty");for(const[r,o]of Object.entries(t.events))/^tl[A-Z]/.test(r)||e(`event ${r} must be named tlSomething`),o.detail||e(`event ${r} must state its detail type`);for(const[r,o]of Object.entries(t.props))o.required&&void 0!==o.default&&e(`prop ${r} is required and has a default`);return Object.freeze({...t})}({tag:"tl-ticket-selector",docs:"Pick quantities of the ticket types on sale for one occurrence, and add them to the cart.",category:"purchase",runtimes:["web","native"],tokens:["background","border","border-hover","error","error-bg","font-family","foreground","muted","muted-foreground","primary","primary-foreground","radius-md","radius-sm","spacing-1","spacing-2","spacing-3","spacing-4","success","warning","warning-bg"],sdkMethods:["cart.addItem","events.getTicketTypes"],props:{eventId:{type:"string",attr:"event-id",required:!0,docs:"Event ID"},occurrenceId:{type:"string",attr:"occurrence-id",required:!0,docs:"Occurrence ID"},showButton:{type:"boolean",attr:"show-button",default:!0,docs:"Show add to cart button"},buttonLabel:{type:"string",attr:"button-label",default:"Add to Cart",docs:"Button label"}},events:{tlAddToCart:{detail:"{ items: AddToCartItem[]; }",docs:"Emitted when items are added to cart"},tlQuantityChange:{detail:"{ ticketTypeId: string; quantity: number; total: number; }",docs:"Emitted when quantity changes"},tlError:{detail:"{ message: string; }",docs:"Emitted on error"}},strings:{selectTickets:"Select Tickets",adding:"Adding...",added:"Added to cart!",limited:"Limited",soldOut:"Sold Out",ticketsRow:"Tickets",totalRow:"Total",decrease:"Decrease quantity",increase:"Increase quantity",loadFailed:"Failed to load tickets",addFailed:"Failed to add to cart",noClient:"SDK not initialized."},statuses:["loading","error","ready"],state:()=>({ticketTypes:[],quantities:{},loading:!0,error:null,adding:!1,addSuccess:!1,feeQuote:null}),status:({state:t})=>t.loading?"loading":t.error?"error":"ready",derive:t=>{const{state:e,strings:r,props:o,formatMoney:a}=t,s=c(t),i=(t=>Object.values(t.quantities).reduce(((t,e)=>t+e),0))(e),n=e.ticketTypes[0]?.currency;return{rows:e.ticketTypes.map((t=>{const r=e.quantities[t.id]||0,o="sold_out"===t.availabilityStatus;return{id:t.id,name:t.name,description:t.description??null,priceLabel:a(t.price,t.currency),quantity:r,soldOut:o,limited:"limited"===t.availabilityStatus,canDecrease:!o&&r>0,canIncrease:!o&&r<t.maxPerOrder}})),totals:s,totalItems:i,currency:n,subtotalLabel:a(s.subtotal,n),feeLabel:a(s.fees,n),totalLabel:a(s.total,n),showTotals:s.showFee&&i>0,actionLabel:e.adding?r.adding:0===i?r.selectTickets:`${o.buttonLabel} - ${a(s.total)}`,actionDisabled:0===i||e.adding}},actions:t=>({async load(){try{t.setState({loading:!0,error:null});const e=await t.client().getEventsManager().getTicketTypes(t.props.eventId,t.props.occurrenceId),r={};for(const t of e)r[t.id]=0;t.setState({ticketTypes:e,quantities:r})}catch(e){const r=e instanceof Error?e.message:t.strings.loadFailed;t.setState({error:r}),t.emit("tlError",{message:r})}finally{t.setState({loading:!1})}},changeQuantity(e,r){const o=t.state.ticketTypes.find((t=>t.id===e));if(!o)return;const a=Math.max(0,Math.min(o.maxPerOrder,(t.state.quantities[e]||0)+r));t.setState((t=>({quantities:{...t.quantities,[e]:a}}))),t.emit("tlQuantityChange",{ticketTypeId:e,quantity:a,total:c(t).total})},async addToCart(){const e=Object.entries(t.state.quantities).filter((([,t])=>t>0)).map((([t,e])=>({ticketTypeId:t,quantity:e})));if(0!==e.length){t.setState({adding:!0,addSuccess:!1});try{const r=t.optionalClient()?.getCartManager?.();if(r)for(const o of e)await r.addItem(o.ticketTypeId,o.quantity,t.props.occurrenceId);const o={};for(const e of t.state.ticketTypes)o[e.id]=0;t.setState({quantities:o,addSuccess:!0}),t.after(3e3,(()=>t.setState({addSuccess:!1}))),t.emit("tlAddToCart",{items:e})}catch(e){const r=e instanceof Error?e.message:t.strings.addFailed;t.setState({error:r}),t.emit("tlError",{message:r})}finally{t.setState({adding:!1})}}},setFeeQuote(e){t.setState({feeQuote:e})},connectFailed(e){t.setState({error:e||t.strings.noClient,loading:!1})}})}),u=class{constructor(r){t(this,r),this.tlSelect=e(this,"tlSelect"),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(t){this.error=t instanceof Error?t.message:"SDK not initialized.",this.loading=!1}}componentDidLoad(){this.containerRef&&"undefined"!=typeof ResizeObserver&&(this.resizeObserver=new ResizeObserver((t=>{for(const e of t)this.containerWidth=e.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 t=a().getEventsManager(),e=await t.get(this.eventId);if(!e)throw new Error("Event not found");this.occurrences=(e.occurrences||[]).map((t=>({id:t.id,startsAt:t.startsAt,endsAt:t.endsAt,status:t.availabilityStatus,availableCapacity:t.availableCapacity,soldOut:"sold_out"===t.availabilityStatus}))),this.computeDisplayMode(),this.computeInitialSelection()}catch(t){console.error("[tl-occurrence-selector] Failed to fetch occurrences:",t),this.error=t instanceof Error?t.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 t=new Set;for(const e of this.occurrences){const r=new Date(e.startsAt);t.add(r.toDateString())}this.computedDisplayMode=1===t.size?"slots":"calendar"}computeInitialSelection(){if(0===this.occurrences.length)return;const t=new Date;t.setHours(0,0,0,0);const e=this.getDatesWithOccurrences();let r=null;for(const o of Array.from(e.keys()).sort()){const e=new Date(o);if(e>=t){r=e;break}}if(!r&&e.size>0){const t=Array.from(e.keys()).sort();r=new Date(t[t.length-1])}r&&(this.selectedDate=r,this.currentMonth=new Date(r.getFullYear(),r.getMonth(),1))}getDatesWithOccurrences(){const t=new Map;for(const e of this.occurrences){const r=new Date(e.startsAt);r.setHours(0,0,0,0);const o=r.toDateString();t.has(o)||t.set(o,[]),t.get(o).push(e)}return t}getDateRange(){if(0===this.occurrences.length)return null;let t=new Date(this.occurrences[0].startsAt),e=new Date(this.occurrences[0].startsAt);for(const r of this.occurrences){const o=new Date(r.startsAt);o<t&&(t=o),o>e&&(e=o)}return{first:t,last:e}}isSingleWeek(){const t=this.getDateRange();if(!t)return!1;const e=new Date(t.first),r=e.getDay(),o=0===r?6:r-1;e.setDate(e.getDate()-o),e.setHours(0,0,0,0);const a=new Date(e);return a.setDate(a.getDate()+6),a.setHours(23,59,59,999),t.last<=a}isSingleMonth(){const t=this.getDateRange();return!!t&&t.first.getMonth()===t.last.getMonth()&&t.first.getFullYear()===t.last.getFullYear()}isHorizontalLayout(){return"horizontal"===this.orientation||"vertical"!==this.orientation&&this.containerWidth>=768}formatDate(t){return t.toLocaleDateString("en-GB",{weekday:"long",day:"numeric",month:"long",year:"numeric"})}formatTime(t){return new Date(t).toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"})}formatDateTime(t){const e=new Date(t);return{date:e.toLocaleDateString("en-GB",{weekday:"long",day:"numeric",month:"long",year:"numeric"}),time:e.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"})}}handleSelect(t){t.soldOut||0===t.availableCapacity||(console.log("[tl-occurrence-selector] Selected:",t.id),this.tlSelect.emit({occurrence:t}))}handleDateSelect(t){this.selectedDate=t,t.getMonth()===this.currentMonth.getMonth()&&t.getFullYear()===this.currentMonth.getFullYear()||(this.currentMonth=new Date(t.getFullYear(),t.getMonth(),1))}handlePrevMonth(){const t=this.getDateRange();if(!t)return;const e=new Date(this.currentMonth);e.setMonth(e.getMonth()-1),e>=new Date(t.first.getFullYear(),t.first.getMonth(),1)&&(this.currentMonth=e)}handleNextMonth(){const t=this.getDateRange();if(!t)return;const e=new Date(this.currentMonth);e.setMonth(e.getMonth()+1),e<=new Date(t.last.getFullYear(),t.last.getMonth(),1)&&(this.currentMonth=e)}isPrevMonthDisabled(){const t=this.getDateRange();if(!t)return!0;const e=new Date(t.first.getFullYear(),t.first.getMonth(),1);return this.currentMonth<=e}isNextMonthDisabled(){const t=this.getDateRange();if(!t)return!0;const e=new Date(t.last.getFullYear(),t.last.getMonth(),1);return this.currentMonth>=e}getCalendarDays(){if(this.isSingleWeek()){const t=this.getDateRange();if(!t)return[];const e=new Date(t.first),r=e.getDay(),o=0===r?6:r-1;e.setDate(e.getDate()-o),e.setHours(0,0,0,0);const a=[],s=new Date(e);for(let t=0;t<7;t++)a.push(new Date(s)),s.setDate(s.getDate()+1);return a}const t=this.currentMonth.getFullYear(),e=this.currentMonth.getMonth(),r=new Date(t,e,1),o=new Date(t,e+1,0),a=r.getDay(),s=0===a?6:a-1,i=new Date(r);i.setDate(i.getDate()-s);const n=o.getDay(),l=0===n?0:7-n,c=new Date(o);c.setDate(c.getDate()+l);const d=[],u=new Date(i);for(;u<=c;)d.push(new Date(u)),u.setDate(u.getDate()+1);return d}hasOccurrencesOnDate(t){const e=t.toDateString();return this.getDatesWithOccurrences().has(e)}isDateSoldOut(t){const e=t.toDateString(),r=this.getDatesWithOccurrences().get(e);return!!r&&r.every((t=>t.soldOut||0===t.availableCapacity))}getSelectedDateOccurrences(){if(!this.selectedDate)return[];const t=this.selectedDate.toDateString();return(this.getDatesWithOccurrences().get(t)||[]).sort(((t,e)=>new Date(t.startsAt).getTime()-new Date(e.startsAt).getTime()))}getThemeStyles(){if(!this.theme)return{};const t={};return this.theme.primaryColor&&(t["--tl-primary"]=this.theme.primaryColor),this.theme.primaryForeground&&(t["--tl-primary-foreground"]=this.theme.primaryForeground),this.theme.backgroundColor&&(t["--tl-background"]=this.theme.backgroundColor),this.theme.foregroundColor&&(t["--tl-foreground"]=this.theme.foregroundColor),this.theme.mutedColor&&(t["--tl-muted"]=this.theme.mutedColor),this.theme.mutedForeground&&(t["--tl-muted-foreground"]=this.theme.mutedForeground),this.theme.borderColor&&(t["--tl-border"]=this.theme.borderColor),this.theme.borderRadius&&(t["--tl-radius"]=this.theme.borderRadius),this.theme.fontFamily&&(t["--tl-font-family"]=this.theme.fontFamily),t}renderListView(){return r("div",{class:"list-view"},this.occurrences.map((t=>{const e=t.soldOut||0===t.availableCapacity,{date:o,time:a}=this.formatDateTime(t.startsAt);return r("button",{key:t.id,class:"occurrence-item "+(e?"sold-out":""),onClick:()=>this.handleSelect(t),disabled:e},r("div",{class:"occurrence-info"},r("div",{class:"occurrence-date"},o),r("div",{class:"occurrence-time"},a,t.endsAt&&` - ${this.formatTime(t.endsAt)}`)),r("div",{class:"occurrence-status"},e?r("span",{class:"status-sold-out"},"Sold Out"):t.availableCapacity?r("span",{class:"status-available"},t.availableCapacity," available"):r("span",{class:"status-arrow"},"→")))})))}renderSlotsView(){const t=[...this.occurrences].sort(((t,e)=>new Date(t.startsAt).getTime()-new Date(e.startsAt).getTime())),e=t.length>0?this.formatDate(new Date(t[0].startsAt)):"";return r("div",{class:"slots-view"},e&&r("div",{class:"slots-date-header"},e),r("div",{class:"time-slots-grid"},t.map((t=>{const e=t.soldOut||0===t.availableCapacity;return r("button",{key:t.id,class:"time-slot "+(e?"sold-out":""),onClick:()=>this.handleSelect(t),disabled:e},r("span",{class:"slot-time"},this.formatTime(t.startsAt)),e&&r("span",{class:"slot-sold-out"},"Sold Out"))}))))}renderCalendarHeader(){const t=this.currentMonth.toLocaleDateString("en-GB",{month:"long",year:"numeric"}),e=!this.isSingleMonth();return r("div",{class:"calendar-header"},r("span",{class:"month-label"},t),e&&r("div",{class:"calendar-nav-buttons"},r("button",{class:"nav-button",onClick:()=>this.handlePrevMonth(),disabled:this.isPrevMonthDisabled(),"aria-label":"Previous month"},r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},r("path",{d:"M15 18l-6-6 6-6"}))),r("button",{class:"nav-button",onClick:()=>this.handleNextMonth(),disabled:this.isNextMonthDisabled(),"aria-label":"Next month"},r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},r("path",{d:"M9 18l6-6-6-6"})))))}renderCalendarGrid(){const t=this.getCalendarDays(),e=new Date;return e.setHours(0,0,0,0),r("div",{class:"calendar-grid"},["Mon","Tue","Wed","Thu","Fri","Sat","Sun"].map((t=>r("div",{class:"weekday-header",key:t},t))),t.map((t=>{const o=t.getMonth()===this.currentMonth.getMonth(),a=this.hasOccurrencesOnDate(t),s=this.isDateSoldOut(t),i=this.selectedDate&&t.toDateString()===this.selectedDate.toDateString(),n=t.toDateString()===e.toDateString(),l=t<e;return r("button",{key:t.toISOString(),class:`calendar-day \n ${o?"":"other-month"} \n ${a?"has-occurrences":""} \n ${s?"sold-out":""} \n ${i?"selected":""} \n ${n?"today":""}\n ${l?"past":""}`,onClick:()=>a&&this.handleDateSelect(t),disabled:!a},r("span",{class:"day-number"},t.getDate()),a&&r("span",{class:"occurrence-dot"}))})))}renderSelectedDateSlots(){const t=this.getSelectedDateOccurrences();if(!this.selectedDate||0===t.length)return r("div",{class:"selected-date-slots empty"},r("p",null,"Select a date to see available times"));const e=this.formatDate(this.selectedDate);return r("div",{class:"selected-date-slots"},r("div",{class:"selected-date-header"},e),r("div",{class:"time-slots-list"},t.map((t=>{const e=t.soldOut||0===t.availableCapacity;return r("button",{key:t.id,class:"time-slot-item "+(e?"sold-out":""),onClick:()=>this.handleSelect(t),disabled:e},r("span",{class:"slot-time"},this.formatTime(t.startsAt)),r("div",{class:"slot-status"},e?r("span",{class:"status-sold-out"},"Sold Out"):t.availableCapacity?r("span",{class:"status-available"},t.availableCapacity," available"):r("span",{class:"status-arrow"},"→")))}))))}renderCalendarView(){const t=this.isHorizontalLayout();return r("div",{class:"calendar-view "+(t?"horizontal":"vertical")},r("div",{class:"calendar-panel"},this.renderCalendarHeader(),this.renderCalendarGrid()),r("div",{class:"slots-panel"},this.renderSelectedDateSlots()))}renderSkeleton(){return r("div",{class:"loading-container"},r("div",{class:"skeleton-calendar"},r("div",{class:"skeleton skeleton-calendar-header"}),r("div",{class:"skeleton-calendar-grid"},Array.from({length:35},((t,e)=>r("div",{key:e,class:"skeleton skeleton-calendar-day"}))))))}render(){const t=this.getThemeStyles();return r("div",{key:"40758aaa06e5f062de92675766e4531995f74bc7",class:"occurrence-selector",ref:t=>this.containerRef=t,style:t},this.loading&&this.renderSkeleton(),!this.loading&&this.error&&r("div",{key:"6d2f5b9c07f65d4941bfb4870729fe3248cb277e",class:"error-container"},r("svg",{key:"daaf1f48dcff80ae7cf94ae0da1d66d9c9b7fb0f",class:"error-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},r("circle",{key:"0a9f494a5cf7f79146e56fc44469a3ca9e5238ae",cx:"12",cy:"12",r:"10"}),r("path",{key:"67d7b453508c847593136bd60e34ea0c38d30cda",d:"M12 8v4m0 4h.01"})),r("p",{key:"c1cc92585ed4451b686350b6d718c3ba06b72dd3",class:"error-message"},this.error),r("button",{key:"4ec9d048af704af12a800385b9868501973ba477",class:"retry-button",onClick:()=>this.fetchOccurrences()},"Retry")),!this.loading&&!this.error&&(0===this.occurrences.length?r("div",{class:"no-occurrences"},r("p",null,"No dates available for this event.")):r("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}]}}};u.style=":host{display:block;font-family:var(--tl-font-family);color:var(--tl-foreground)}*{box-sizing:border-box;margin:0;padding:0}.occurrence-selector{width:100%}.no-occurrences{text-align:center;padding:3rem 1rem;color:var(--tl-muted-foreground)}.list-view{display:flex;flex-direction:column;gap:0.75rem}.occurrence-item{display:flex;justify-content:space-between;align-items:flex-start;width:100%;padding:1rem 1.25rem;background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius);text-align:left;cursor:pointer;transition:all 0.15s ease;font-family:inherit}.occurrence-item:hover:not(:disabled){border-color:var(--tl-primary);background:color-mix(in srgb, var(--tl-primary) 5%, var(--tl-background))}.occurrence-item:focus-visible{outline:2px solid var(--tl-primary);outline-offset:2px}.occurrence-item:disabled{cursor:not-allowed;opacity:0.6;background:var(--tl-muted)}.occurrence-item.sold-out{opacity:0.6;background:var(--tl-muted)}.occurrence-info{flex:1}.occurrence-date{font-weight:600;font-size:0.9375rem;color:var(--tl-foreground);margin-bottom:0.25rem}.occurrence-time{font-size:0.875rem;color:var(--tl-muted-foreground)}.occurrence-status{flex-shrink:0;text-align:right}.status-sold-out{font-size:0.875rem;font-weight:500;color:var(--tl-muted-foreground)}.status-available{font-size:0.875rem;color:var(--tl-muted-foreground)}.status-arrow{font-size:1.25rem;color:var(--tl-primary)}.slots-view{display:flex;flex-direction:column;gap:1rem}.slots-date-header{font-size:1.125rem;font-weight:600;color:var(--tl-foreground);padding-bottom:0.5rem;border-bottom:1px solid var(--tl-border)}.time-slots-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(100px, 1fr));gap:0.5rem}.time-slot{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0.75rem 0.5rem;background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius);cursor:pointer;transition:all 0.15s ease;font-family:inherit;min-height:3.5rem}.time-slot:hover:not(:disabled){border-color:var(--tl-primary);background:color-mix(in srgb, var(--tl-primary) 5%, var(--tl-background))}.time-slot:focus-visible{outline:2px solid var(--tl-primary);outline-offset:2px}.time-slot:disabled{cursor:not-allowed;opacity:0.6;background:var(--tl-muted)}.time-slot.sold-out{opacity:0.6;background:var(--tl-muted)}.slot-time{font-size:0.9375rem;font-weight:600;color:var(--tl-foreground)}.slot-sold-out{font-size:0.6875rem;color:var(--tl-muted-foreground);margin-top:0.125rem}.calendar-view{display:flex;flex-direction:column;gap:1.5rem}.calendar-view.horizontal{flex-direction:row;gap:1.5rem;align-items:flex-start}.calendar-view.horizontal .calendar-panel{flex-shrink:0;width:340px}.calendar-view.horizontal .slots-panel{flex:1;min-width:0}.calendar-view.vertical .calendar-panel{width:100%}.calendar-view.vertical .slots-panel{width:100%}.calendar-panel{border:1px solid var(--tl-border);border-radius:var(--tl-radius);padding:1rem}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:0.75rem}.month-label{font-size:1rem;font-weight:600;color:var(--tl-foreground);flex:1}.calendar-nav-buttons{display:flex;gap:0.375rem}.nav-button{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius);cursor:pointer;transition:all 0.15s ease;color:var(--tl-foreground)}.nav-button:hover:not(:disabled){background:var(--tl-muted)}.nav-button:disabled{cursor:not-allowed;opacity:0.4}.nav-button svg{width:0.875rem;height:0.875rem}.calendar-grid{display:grid;grid-template-columns:repeat(7, 1fr);gap:0.1875rem}.weekday-header{text-align:center;font-size:0.6875rem;font-weight:600;color:var(--tl-muted-foreground);padding:0.375rem 0;text-transform:uppercase;letter-spacing:0.05em}.calendar-day{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1;padding:0.1875rem;background:var(--tl-background);border:1px solid transparent;border-radius:var(--tl-radius);cursor:default;transition:all 0.15s ease;font-family:inherit;font-size:0.9375rem;font-weight:500;color:var(--tl-foreground)}.calendar-day.other-month{color:var(--tl-muted-foreground);opacity:0.5}.calendar-day.has-occurrences{cursor:pointer;background:color-mix(in srgb, var(--tl-primary) 10%, var(--tl-background));border-color:transparent;font-weight:600;color:var(--tl-primary)}.calendar-day.has-occurrences:hover{background:color-mix(in srgb, var(--tl-primary) 18%, var(--tl-background));border-color:transparent}.calendar-day.has-occurrences.sold-out{background:var(--tl-muted);border-color:transparent}.calendar-day.has-occurrences.sold-out:hover{background:color-mix(in srgb, var(--tl-muted) 80%, var(--tl-background));border-color:transparent}.calendar-day.selected{background:var(--tl-primary);border-color:var(--tl-primary);color:var(--tl-primary-foreground)}.calendar-day.selected:hover{background:color-mix(in srgb, var(--tl-primary) 90%, black)}.calendar-day.selected .occurrence-dot{background:var(--tl-primary-foreground)}.calendar-day.today .day-number{font-weight:700;text-decoration:underline;text-underline-offset:2px}.calendar-day.past:not(.has-occurrences){opacity:0.4}.day-number{line-height:1}.occurrence-dot{display:none}.slots-panel{min-height:200px}.selected-date-slots{height:100%}.selected-date-slots.empty{display:flex;align-items:center;justify-content:center;color:var(--tl-muted-foreground);background:var(--tl-muted);border-radius:var(--tl-radius);padding:2rem 1rem;text-align:center;min-height:200px;font-size:0.875rem}.selected-date-header{font-size:0.9375rem;font-weight:600;color:var(--tl-foreground);padding-bottom:0.625rem;margin-bottom:0.625rem}.time-slots-list{display:flex;flex-direction:column;gap:0.5rem}.time-slot-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:0.625rem 0.875rem;background:var(--tl-background);border:1px solid var(--tl-border);border-radius:var(--tl-radius);text-align:left;cursor:pointer;transition:all 0.15s ease;font-family:inherit}.time-slot-item:hover:not(:disabled){border-color:var(--tl-primary);background:color-mix(in srgb, var(--tl-primary) 5%, var(--tl-background))}.time-slot-item:focus-visible{outline:2px solid var(--tl-primary);outline-offset:2px}.time-slot-item:disabled{cursor:not-allowed;opacity:0.6;background:var(--tl-muted)}.time-slot-item.sold-out{opacity:0.6;background:var(--tl-muted)}.time-slot-item .slot-time{font-size:0.9375rem;font-weight:600}.slot-status{flex-shrink:0}.slot-status .status-sold-out{font-size:0.75rem}.slot-status .status-available{font-size:0.75rem}.slot-status .status-arrow{font-size:1rem}@media (max-width: 640px){.event-name{font-size:1.25rem}.occurrence-date{font-size:0.875rem}.time-slots-grid{grid-template-columns:repeat(auto-fill, minmax(80px, 1fr))}.time-slot{padding:0.625rem 0.375rem;min-height:3rem}.slot-time{font-size:0.875rem}.calendar-day{font-size:0.75rem}.weekday-header{font-size:0.625rem}.calendar-view.horizontal .calendar-panel{width:100%}}@media (max-width: 767px){.calendar-view.horizontal{flex-direction:column}}.loading-container{padding:1rem 0;min-height:400px}@keyframes skeleton-pulse{0%,100%{opacity:1}50%{opacity:0.5}}.skeleton{background:var(--tl-muted);border-radius:var(--tl-radius);animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-list{display:flex;flex-direction:column;gap:0.75rem}.skeleton-list-item{height:4.5rem;border-radius:var(--tl-radius)}.skeleton-calendar{border:1px solid var(--tl-border);border-radius:var(--tl-radius);padding:1rem;min-height:350px}.skeleton-calendar-header{height:1.75rem;width:50%;margin-bottom:0.75rem;border-radius:var(--tl-radius)}.skeleton-calendar-grid{display:grid;grid-template-columns:repeat(7, 1fr);gap:0.1875rem;margin-top:0.75rem}.skeleton-calendar-day{aspect-ratio:1;border-radius:var(--tl-radius)}.skeleton-slots{display:flex;flex-direction:column;gap:1rem}.skeleton-slots-header{height:1.75rem;width:60%;border-radius:var(--tl-radius);margin-bottom:0.5rem}.skeleton-slots-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(100px, 1fr));gap:0.5rem}.skeleton-slot-item{height:3.5rem;border-radius:var(--tl-radius)}.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1rem;gap:1rem;text-align:center}.error-icon{width:3rem;height:3rem;color:var(--tl-muted-foreground);stroke-width:1.5}.error-message{color:var(--tl-foreground);font-size:0.9375rem;max-width:400px}.retry-button{margin-top:0.5rem;padding:0.625rem 1.25rem;background:var(--tl-primary);color:var(--tl-primary-foreground);border:none;border-radius:var(--tl-radius);font-family:inherit;font-size:0.875rem;font-weight:500;cursor:pointer;transition:all 0.15s ease}.retry-button:hover{background:color-mix(in srgb, var(--tl-primary) 90%, black)}.retry-button:focus-visible{outline:2px solid var(--tl-primary);outline-offset:2px}";const h=class{constructor(r){t(this,r),this.tlAddToCart=e(this,"tlAddToCart"),this.tlQuantityChange=e(this,"tlQuantityChange"),this.tlError=e(this,"tlError"),this.showButton=!0,this.buttonLabel="Add to Cart",this.element=function(t,e={}){const r={};for(const[e,o]of Object.entries(t.props))void 0!==o.default&&(r[e]=o.default);let o={...r,...e.props??{}};const a={...t.strings,...e.strings??{}},s=e.locale??"en-GB",i=e.currency??"GBP";let n=l(e.client),c=t.state(o),d=!1;const u=new Set,h=new Set,m=(t,e)=>new Intl.NumberFormat(s,{style:"currency",currency:e||i}).format(t/100),g=()=>{const e={props:o,state:c,strings:a,formatMoney:m};return{status:t.status(e),props:o,state:c,strings:a,derived:t.derive(e)}},p=()=>{if(d)return;const t=g();for(const e of[...h])e(t)},f=t.actions({get props(){return o},get state(){return c},strings:a,formatMoney:m,setState(t){if(d)return;const e="function"==typeof t?t(c):t;c={...c,...e},p()},emit(r,o){if(!t.events[r])throw new Error(`[elements-core] ${t.tag}: ${r} is not a declared event`);e.emit?.(r,o)},client(){const e=n();if(!e)throw new Error(`[elements-core] ${t.tag}: no client. A harness hands the core the client the host published.`);return e},optionalClient(){try{return n()}catch{return null}},after(t,e){if(d)return;const r=setTimeout((()=>{u.delete(r),d||e()}),t);u.add(r)}});return{core:t,get props(){return o},get state(){return c},get view(){return g()},actions:f,setProps(t){d||(o={...o,...t},p())},setClient(t){n=l(t)},subscribe:t=>(h.add(t),()=>{h.delete(t)}),destroy(){d=!0;for(const t of u)clearTimeout(t);u.clear(),h.clear()}}}(d,{client:()=>a(),emit:(t,e)=>this.forward(t,e)}),this.view=this.element.view}get feeQuote(){return this.element.state.feeQuote}set feeQuote(t){this.element.actions.setFeeQuote(t)}watchPropsChange(){this.syncProps(),this.element.actions.load()}syncProps(){this.element.setProps({eventId:this.eventId,occurrenceId:this.occurrenceId,showButton:this.showButton,buttonLabel:this.buttonLabel})}async componentWillLoad(){this.syncProps(),this.unsubscribe=this.element.subscribe((t=>{this.view=t})),this.view=this.element.view,await this.waitForSDKAndLoad()}disconnectedCallback(){this.unsubscribe?.(),this.element.destroy()}async waitForSDKAndLoad(){if(this.eventId&&this.occurrenceId)try{await o(),await this.element.actions.load()}catch(t){this.element.actions.connectFailed(t instanceof Error?t.message:this.view.strings.noClient)}}forward(t,e){"tlAddToCart"===t?this.tlAddToCart.emit(e):"tlQuantityChange"===t?this.tlQuantityChange.emit(e):"tlError"===t&&this.tlError.emit(e)}renderSkeleton(){return r("div",{class:"skeleton-container"},r("div",{class:"skeleton-row"}),r("div",{class:"skeleton-row"}),r("div",{class:"skeleton-row"}))}renderError(){return r("div",{class:"error-state"},r("p",{class:"error-message"},this.view.state.error))}renderTicketRow(t){const e=this.view.strings;return r("div",{class:"ticket-row "+(t.soldOut?"sold-out":""),key:t.id},r("div",{class:"ticket-info"},r("div",{class:"ticket-header"},r("span",{class:"ticket-name"},t.name),t.limited&&r("span",{class:"status-badge limited"},e.limited),t.soldOut&&r("span",{class:"status-badge sold-out"},e.soldOut)),t.description&&r("p",{class:"ticket-description"},t.description),r("p",{class:"ticket-price"},t.priceLabel)),r("div",{class:"quantity-controls"},r("button",{class:"qty-btn",onClick:()=>this.element.actions.changeQuantity(t.id,-1),disabled:!t.canDecrease,"aria-label":e.decrease},"−"),r("span",{class:"qty-value"},t.quantity),r("button",{class:"qty-btn",onClick:()=>this.element.actions.changeQuantity(t.id,1),disabled:!t.canIncrease,"aria-label":e.increase},"+")))}render(){const{status:t,state:e,strings:o,derived:a}=this.view;return"loading"===t?this.renderSkeleton():"error"===t?this.renderError():r("div",{class:"ticket-selector"},r("div",{class:"ticket-list"},a.rows.map((t=>this.renderTicketRow(t)))),a.showTotals&&r("div",{class:"selection-totals"},r("div",{class:"total-row"},r("span",null,o.ticketsRow),r("span",null,a.subtotalLabel)),r("div",{class:"total-row fee"},r("span",null,a.totals.feeLabel),r("span",null,a.feeLabel)),r("div",{class:"total-row total"},r("span",null,o.totalRow),r("span",null,a.totalLabel))),e.addSuccess&&r("div",{class:"success-message"},r("svg",{class:"success-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})),o.added),this.showButton&&r("button",{class:"add-to-cart-btn "+(0===a.totalItems?"disabled":""),onClick:()=>this.element.actions.addToCart(),disabled:a.actionDisabled},a.actionLabel))}static get watchers(){return{eventId:[{watchPropsChange:0}],occurrenceId:[{watchPropsChange:0}],showButton:[{syncProps:0}],buttonLabel:[{syncProps:0}]}}};h.style=":host{--tl-color-primary:var(--tl-primary);--tl-color-primary-foreground:var(--tl-primary-foreground);--tl-color-background:var(--tl-background);--tl-color-foreground:var(--tl-foreground);--tl-color-muted:var(--tl-muted);--tl-color-muted-foreground:var(--tl-muted-foreground);--tl-color-border:var(--tl-border);--tl-color-destructive:var(--tl-error);display:block;font-family:var(--tl-font-family)}.ticket-selector{background:var(--tl-color-background)}.skeleton-container{padding:var(--tl-spacing-4)}.skeleton-row{height:60px;background:var(--tl-color-muted);border-radius:var(--tl-radius-md);margin-bottom:var(--tl-spacing-3);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}.error-state{padding:var(--tl-spacing-4);color:var(--tl-color-destructive)}.error-message{margin:0;font-size:14px}.ticket-list{margin-bottom:var(--tl-spacing-4)}.ticket-row{display:flex;align-items:center;justify-content:space-between;padding:var(--tl-spacing-3) 0;border-bottom:1px solid var(--tl-color-border)}.ticket-row.sold-out{opacity:0.5}.ticket-info{flex:1;min-width:0}.ticket-header{display:flex;align-items:center;gap:var(--tl-spacing-2);flex-wrap:wrap}.ticket-name{font-weight:600;color:var(--tl-color-foreground);font-size:15px}.status-badge{font-size:12px;font-weight:500;padding:2px 8px;border-radius:4px}.status-badge.limited{background-color:var(--tl-color-warning-bg);color:var(--tl-color-warning)}.status-badge.sold-out{background-color:var(--tl-color-destructive-bg);color:var(--tl-color-destructive)}.ticket-description{margin:var(--tl-spacing-1) 0 0;font-size:14px;color:var(--tl-color-muted-foreground)}.ticket-price{margin:var(--tl-spacing-1) 0 0;font-size:14px;font-weight:600;color:var(--tl-color-foreground)}.quantity-controls{display:flex;align-items:center;gap:var(--tl-spacing-2);margin-left:var(--tl-spacing-4)}.qty-btn{width:32px;height:32px;border-radius:var(--tl-radius-sm);border:1px solid var(--tl-color-border);background:var(--tl-color-background);color:var(--tl-color-foreground);font-size:18px;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color 0.15s, border-color 0.15s}.qty-btn:hover:not(:disabled){background-color:var(--tl-color-muted);border-color:var(--tl-color-border-hover)}.qty-btn:disabled{cursor:not-allowed;opacity:0.5}.qty-value{width:32px;text-align:center;font-weight:600;font-size:16px;color:var(--tl-color-foreground)}.success-message{display:flex;align-items:center;justify-content:center;gap:var(--tl-spacing-2);padding:var(--tl-spacing-3);background-color:var(--tl-color-success);color:#ffffff;border-radius:var(--tl-radius-md);margin-bottom:var(--tl-spacing-3);font-weight:500;font-size:14px}.success-icon{width:18px;height:18px}.add-to-cart-btn{width:100%;padding:var(--tl-spacing-3) var(--tl-spacing-4);border-radius:var(--tl-radius-md);border:none;background-color:var(--tl-color-primary);color:var(--tl-color-primary-foreground);font-weight:600;font-size:16px;cursor:pointer;transition:opacity 0.15s, transform 0.1s}.add-to-cart-btn:hover:not(:disabled){opacity:0.9}.add-to-cart-btn:active:not(:disabled){transform:scale(0.98)}.add-to-cart-btn.disabled,.add-to-cart-btn:disabled{background-color:var(--tl-color-muted);color:var(--tl-color-muted-foreground);cursor:not-allowed}.selection-totals{padding:var(--tl-spacing-3) 0;border-top:1px solid var(--tl-color-border)}.selection-totals .total-row{display:flex;justify-content:space-between;align-items:center;padding:var(--tl-spacing-1) 0;font-size:14px;color:var(--tl-color-muted-foreground)}.selection-totals .total-row.total{font-size:16px;font-weight:700;color:var(--tl-color-foreground);padding-top:var(--tl-spacing-2);border-top:1px solid var(--tl-color-border);margin-top:var(--tl-spacing-2)}";export{u as tl_occurrence_selector,h as tl_ticket_selector}
@@ -1 +1 @@
1
- import{r as e,c as a,h as r,H as t}from"./p-Ba-RZTFI.js";import{o}from"./p-CqhvfyKV.js";const d=class{constructor(r){e(this,r),this.tlOpen=a(this,"tlOpen"),this.tlClose=a(this,"tlClose"),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=o("ui:cart-requested",(()=>this.setOpen(!0))),this.offClose=o("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 r(t,{key:"022314d9fb612e930da52ece34f2ab8ae8ce44da"},r("div",{key:"985b4001145d72ba91ef7d466adba8ab939e9cc4",class:{overlay:!0,"is-open":this.visible},onClick:e=>{e.target===e.currentTarget&&this.close()}},r("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"},r("header",{key:"e0126d634e952ebf56b73e54545f6c3981210827",class:"drawer-header"},r("h2",{key:"a72b23114aa836076ec59cd4a5d1438d228179d9",class:"drawer-title"},this.heading),r("button",{key:"92fb5b159490440352a6c23d65aa6e8c956ae3d8",class:"close-btn",onClick:this.close,"aria-label":"Close cart"},r("svg",{key:"138f4dc7669e62fb667091da0ba26dfbe94327c6",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},r("path",{key:"21fedd9dc89937a92f9c1124d4fa834b55908f1e",d:"M6 6l12 12M18 6L6 18","stroke-linecap":"round"})))),r("div",{key:"ebee87cb6a3c98dbf813d0a903a9cb4da2c696f3",class:"drawer-body"},r("tl-cart",{key:"323db3a160837b68ffaa767e647ec67b06fa53b0"})),r("footer",{key:"d35543373eb13ad1acc46ae50aefcb5a04f305a1",class:"drawer-footer"},r("div",{key:"52229c74d39471bf186c965b6a53b38f79ce8d61",class:"pb-links"},r("a",{key:"d0430bf93d920c57fc42043faed7e8fd895855aa",href:"https://ticketlayer.com/privacy",target:"_blank",rel:"noopener noreferrer"},"Privacy Policy"),r("a",{key:"2a75dc8dcdc9ec3010fe83f97d903cdc32767e49",href:"https://ticketlayer.com/report-abuse",target:"_blank",rel:"noopener noreferrer"},"Report Abuse")),r("a",{key:"40642c5c4c003a454dd7ab2b66ebe5948a03df7d",class:"pb-brand",href:"https://ticketlayer.com",target:"_blank",rel:"noopener noreferrer"},r("span",{key:"a5d9b5c023381d25b6aaddf61e56dbdb21580975",class:"pb-pre"},"Powered by"),r("svg",{key:"35bc23af9a35272d7ada24fd66d5f12f1d951ae8",width:"13",height:"13",viewBox:"0 0 50 50",fill:"none","aria-hidden":"true"},r("g",{key:"fcca5f9bbc13d2781ea65bb907c9c07516972e28",transform:"matrix(0.0129 0 0 -0.0129 25.4752 25.4752)"},r("path",{key:"7bf2071ba8d6d14c9ac9fc7c7a5a36a8008136e8",fill:"currentColor",transform:"translate(-1781.5, -1759.4003)",d:"M 41 2973 c 1 -285 5 -734 9 -998 c 7 -444 9 -488 30 -580 c 81 -364 235 -634 512 -900 c 135 -130 263 -220 423 -299 c 156 -77 249 -109 409 -143 c 110 -23 142 -25 354 -24 c 230 1 310 8 427 37 c 241 60 453 162 640 309 c 82 64 252 234 317 315 c 210 264 340 604 355 926 l 6 121 l -69 6 c -86 8 -706 9 -755 1 l -36 -6 l -21 -125 c -34 -191 -98 -317 -236 -462 c -111 -115 -249 -198 -396 -238 c -98 -27 -356 -24 -463 5 c -100 27 -183 69 -273 137 c -226 173 -353 409 -354 660 c 0 44 -5 120 -10 169 c -6 49 -8 91 -6 94 c 3 3 65 -22 138 -55 c 140 -64 251 -103 358 -127 c 71 -17 295 -46 347 -46 l 33 0 l 0 434 l 0 434 l -67 7 c -147 14 -269 56 -393 133 c -222 139 -378 393 -397 648 l -6 71 l -75 7 c -41 3 -239 6 -439 6 l -363 0 l 1 -517 z"}))),r("span",{key:"c97081daa81688106395f6ef6c497b11df53a6a9",class:"pb-word"},"ticketlayer"))))))}static get watchers(){return{open:[{onOpenProp:0}]}}};d.style=":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}";export{d as tl_cart_drawer}
1
+ import{r as e,c as a,h as r,H as t}from"./p-OoYV1faY.js";import{o}from"./p-CqhvfyKV.js";const d=class{constructor(r){e(this,r),this.tlOpen=a(this,"tlOpen"),this.tlClose=a(this,"tlClose"),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=o("ui:cart-requested",(()=>this.setOpen(!0))),this.offClose=o("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 r(t,{key:"022314d9fb612e930da52ece34f2ab8ae8ce44da"},r("div",{key:"985b4001145d72ba91ef7d466adba8ab939e9cc4",class:{overlay:!0,"is-open":this.visible},onClick:e=>{e.target===e.currentTarget&&this.close()}},r("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"},r("header",{key:"e0126d634e952ebf56b73e54545f6c3981210827",class:"drawer-header"},r("h2",{key:"a72b23114aa836076ec59cd4a5d1438d228179d9",class:"drawer-title"},this.heading),r("button",{key:"92fb5b159490440352a6c23d65aa6e8c956ae3d8",class:"close-btn",onClick:this.close,"aria-label":"Close cart"},r("svg",{key:"138f4dc7669e62fb667091da0ba26dfbe94327c6",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},r("path",{key:"21fedd9dc89937a92f9c1124d4fa834b55908f1e",d:"M6 6l12 12M18 6L6 18","stroke-linecap":"round"})))),r("div",{key:"ebee87cb6a3c98dbf813d0a903a9cb4da2c696f3",class:"drawer-body"},r("tl-cart",{key:"323db3a160837b68ffaa767e647ec67b06fa53b0"})),r("footer",{key:"d35543373eb13ad1acc46ae50aefcb5a04f305a1",class:"drawer-footer"},r("div",{key:"52229c74d39471bf186c965b6a53b38f79ce8d61",class:"pb-links"},r("a",{key:"d0430bf93d920c57fc42043faed7e8fd895855aa",href:"https://ticketlayer.com/privacy",target:"_blank",rel:"noopener noreferrer"},"Privacy Policy"),r("a",{key:"2a75dc8dcdc9ec3010fe83f97d903cdc32767e49",href:"https://ticketlayer.com/report-abuse",target:"_blank",rel:"noopener noreferrer"},"Report Abuse")),r("a",{key:"40642c5c4c003a454dd7ab2b66ebe5948a03df7d",class:"pb-brand",href:"https://ticketlayer.com",target:"_blank",rel:"noopener noreferrer"},r("span",{key:"a5d9b5c023381d25b6aaddf61e56dbdb21580975",class:"pb-pre"},"Powered by"),r("svg",{key:"35bc23af9a35272d7ada24fd66d5f12f1d951ae8",width:"13",height:"13",viewBox:"0 0 50 50",fill:"none","aria-hidden":"true"},r("g",{key:"fcca5f9bbc13d2781ea65bb907c9c07516972e28",transform:"matrix(0.0129 0 0 -0.0129 25.4752 25.4752)"},r("path",{key:"7bf2071ba8d6d14c9ac9fc7c7a5a36a8008136e8",fill:"currentColor",transform:"translate(-1781.5, -1759.4003)",d:"M 41 2973 c 1 -285 5 -734 9 -998 c 7 -444 9 -488 30 -580 c 81 -364 235 -634 512 -900 c 135 -130 263 -220 423 -299 c 156 -77 249 -109 409 -143 c 110 -23 142 -25 354 -24 c 230 1 310 8 427 37 c 241 60 453 162 640 309 c 82 64 252 234 317 315 c 210 264 340 604 355 926 l 6 121 l -69 6 c -86 8 -706 9 -755 1 l -36 -6 l -21 -125 c -34 -191 -98 -317 -236 -462 c -111 -115 -249 -198 -396 -238 c -98 -27 -356 -24 -463 5 c -100 27 -183 69 -273 137 c -226 173 -353 409 -354 660 c 0 44 -5 120 -10 169 c -6 49 -8 91 -6 94 c 3 3 65 -22 138 -55 c 140 -64 251 -103 358 -127 c 71 -17 295 -46 347 -46 l 33 0 l 0 434 l 0 434 l -67 7 c -147 14 -269 56 -393 133 c -222 139 -378 393 -397 648 l -6 71 l -75 7 c -41 3 -239 6 -439 6 l -363 0 l 1 -517 z"}))),r("span",{key:"c97081daa81688106395f6ef6c497b11df53a6a9",class:"pb-word"},"ticketlayer"))))))}static get watchers(){return{open:[{onOpenProp:0}]}}};d.style=":host{--_bg:var(--tl-background);--_fg:var(--tl-foreground);--_muted-fg:var(--tl-muted-foreground);--_muted:var(--tl-muted);--_border:var(--tl-border);--_font:var(--tl-font-family);font-family:var(--_font)}.overlay{position:fixed;inset:0;z-index:2147483640;background:rgba(8, 8, 16, 0.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);opacity:0;pointer-events:none;transition:opacity 0.25s ease}.overlay.is-open{opacity:1;pointer-events:auto}.panel{position:fixed;top:0;bottom:0;width:min(420px, 100%);display:flex;flex-direction:column;background:var(--_bg);color:var(--_fg);box-shadow:0 0 48px rgba(0, 0, 0, 0.5);transition:transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);will-change:transform}.panel--right{right:0;border-left:1px solid var(--_border);transform:translateX(100%)}.panel--left{left:0;border-right:1px solid var(--_border);transform:translateX(-100%)}.panel.is-open{transform:translateX(0)}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--_border)}.drawer-title{margin:0;font-size:1.1rem;font-weight:700}.close-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:999px;background:var(--_muted);color:var(--_muted-fg);cursor:pointer;transition:color 0.15s}.close-btn:hover{color:var(--_fg)}.close-btn svg{width:16px;height:16px}.drawer-body{flex:1;overflow-y:auto;padding:18px 20px}.drawer-footer{flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 20px;border-top:1px solid var(--_border);font-size:11.5px;font-weight:500;color:var(--_muted-fg)}.drawer-footer a{color:inherit;text-decoration:none;opacity:0.9;transition:opacity 0.15s ease}.drawer-footer a:hover{opacity:1}.drawer-footer .pb-links{display:flex;gap:14px}.drawer-footer .pb-brand{display:inline-flex;align-items:center;gap:5px}.drawer-footer .pb-brand svg{display:block}.drawer-footer .pb-pre{opacity:0.7}.drawer-footer .pb-word{font-weight:700}";export{d as tl_cart_drawer}
@@ -0,0 +1 @@
1
+ import{r as t,c as e,h as r}from"./p-OoYV1faY.js";import{w as a}from"./p-CqhvfyKV.js";import{e as i}from"./p-BXpVGW51.js";import"./p-4ig0-WB6.js";const s=class{constructor(r){t(this,r),this.tlClick=e(this,"tlClick"),this.tlError=e(this,"tlError"),this.loadedEvent=null,this.loading=!1,this.error=null,this.handleClick=()=>{const t=this.current;t&&(console.log("[tl-event-card] Clicked:",t.id),this.tlClick.emit({eventId:t.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 t=await a(),e=await t.getEventsManager().get(this.eventId);if(!e)throw new Error("Event not found");this.loadedEvent=function(t){const e=t.occurrences??[],r=e.map((t=>t.startsAt)).filter((t=>!!t)).sort(),a=Date.now(),i=r.find((t=>new Date(t).getTime()>=a))??r[0],s="sold_out"===t.status||e.length>0&&e.every((t=>"sold_out"===t.status));return{id:t.id,name:t.name,...t.shortDescription?{shortDescription:t.shortDescription}:{},...t.imageUrl?{imageUrl:t.imageUrl}:{},...t.venueName?{venue:{id:t.venueId??"",name:t.venueName,city:t.venueCity??""}}:{},...i?{nextOccurrence:{startsAt:i}}:{},availabilityStatus:s?"sold_out":"available"}}(e)}catch(t){console.error("[tl-event-card] Failed to load event:",t),this.error=i(t,"Failed to load event"),this.tlError.emit({message:this.error})}finally{this.loading=!1}}get current(){return this.event??this.loadedEvent}formatDate(t){return new Date(t).toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"})}getStatusBadgeClass(){const t="status-badge";switch(this.current?.availabilityStatus){case"available":return`${t} status-available`;case"limited":return`${t} status-limited`;case"sold_out":return`${t} status-sold-out`;default:return t}}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 r("div",{class:"event-card card-skeleton","aria-busy":"true"},r("div",{class:"image-container"}),r("div",{class:"content"},r("div",{class:"skeleton-line short"}),r("div",{class:"skeleton-line long"})));if(this.error)return r("div",{class:"event-card card-error"},this.error);const t=this.current;if(!t)return null;const e=t.thumbnailUrl||t.imageUrl;return r("div",{class:"event-card",onClick:this.handleClick},r("div",{class:"image-container"},e?r("img",{src:e,alt:t.name,class:"event-image"}):r("div",{class:"image-placeholder"},r("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"}))),r("div",{class:"status-container"},r("span",{class:this.getStatusBadgeClass()},this.getStatusLabel()))),r("div",{class:"content"},t.category&&r("span",{class:"category"},t.category),r("h3",{class:"title"},t.name),t.nextOccurrence&&r("p",{class:"meta"},r("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})),this.formatDate(t.nextOccurrence.startsAt)),t.venue&&r("p",{class:"meta"},r("svg",{class:"icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"})),t.venue.name,", ",t.venue.city),t.shortDescription&&r("p",{class:"description"},t.shortDescription)))}static get watchers(){return{eventId:[{watchEventId:0}]}}};s.style=":host{display:block;font-family:var(--tl-font-family)}.event-card{background:var(--tl-secondary);border-radius:var(--tl-radius-lg);overflow:hidden;box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);cursor:pointer;transition:box-shadow 0.2s ease, transform 0.2s ease}.event-card:hover{box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);transform:translateY(-2px)}.image-container{position:relative;aspect-ratio:16 / 9;overflow:hidden;background:var(--tl-muted)}.event-image{width:100%;height:100%;object-fit:cover;transition:transform 0.3s ease}.event-card:hover .event-image{transform:scale(1.05)}.image-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--tl-muted-foreground)}.status-container{position:absolute;top:0.5rem;right:0.5rem}.status-badge{display:inline-block;padding:0.25rem 0.5rem;font-size:0.75rem;font-weight:500;border-radius:var(--tl-radius-sm)}.status-available{background:var(--tl-success);color:var(--tl-success-foreground)}.status-limited{background:var(--tl-warning);color:var(--tl-warning-foreground)}.status-sold-out{background:var(--tl-error);color:var(--tl-error-foreground)}.content{padding:var(--tl-spacing-4)}.category{display:inline-block;font-size:0.75rem;font-weight:500;text-transform:uppercase;letter-spacing:0.05em;color:var(--tl-primary)}.title{margin:0.25rem 0 0;font-size:1.125rem;font-weight:600;color:var(--tl-foreground);line-height:1.3}.event-card:hover .title{color:var(--tl-primary)}.meta{display:flex;align-items:center;gap:0.5rem;margin:0.5rem 0 0;font-size:0.875rem;color:var(--tl-muted-foreground)}.meta:first-of-type{margin-top:0.75rem}.icon{width:1rem;height:1rem;flex-shrink:0}.description{margin:0.75rem 0 0;font-size:0.875rem;color:var(--tl-muted-foreground);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-skeleton{cursor:default;pointer-events:none}.card-skeleton .image-container{animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.skeleton-line{height:0.875rem;margin-top:0.5rem;background:var(--tl-muted);border-radius:var(--tl-radius-sm);animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.skeleton-line.short{width:40%}.skeleton-line.long{width:80%}.card-error{padding:var(--tl-spacing-4);font-size:0.875rem;color:var(--tl-error);cursor:default}.card-error:hover{transform:none}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}";export{s as tl_event_card}
@@ -0,0 +1 @@
1
+ import{m as n,e,F as t}from"./p-4ig0-WB6.js";function r(n,e="GBP"){if(null==n||""===n)return"";const t=new Intl.NumberFormat("en-GB",{style:"currency",currency:e});if("number"==typeof n)return t.format(n/100);const r=Number(n);return Number.isNaN(r)?String(n):t.format(r)}function u(n){return new Date(n).toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit"})}function c(n){return new Date(n).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"})}function s(n){return(n.items??[]).filter((n=>!n.type||"ticket"===n.type))}function a(n){return s(n).reduce(((n,e)=>n+(Number(e.quantity)||0)),0)||n.tickets?.length||0}function o(n){return n.eventName||s(n)[0]?.name||n.items?.[0]?.name||null}function i(n,e){const t=n?.customerEmail||n?.customer?.email;if(t)return t;const r=e;return r?.email||null}function f(n){return n?n.replace(/_/g," ").replace(/^\w/,(n=>n.toUpperCase())):""}function l(n){switch(n){case"confirmed":return"success";case"completed":case"fulfilled":return"info";case"pending":case"processing":return"warning";case"cancelled":case"expired":case"failed":return"error";default:return"muted"}}function m(n,e){return n instanceof Error&&n.message?n.message:e}function d(n){return!(!n||"object"!=typeof n||401!==n.status&&403!==n.status&&"NO_SESSION"!==n.code&&"NOT_AUTHENTICATED"!==n.code)}async function y(n,e,t=12){const r=n.getEventsManager(),u=(await r.list({limit:t})).items.slice(0,t);for(const n of u){const t=await r.get(n.id).catch((()=>null)),u=t?.occurrences?.find((n=>n.id===e));if(u)return{eventId:t?.id??n.id,eventName:t?.name??n.name??"",startsAt:u.startsAt??null}}return null}function g(r){const u=r||{},c=Array.isArray(u.items)?u.items:[],a=c.filter((n=>"fee"===n.type)),o=c.filter((n=>"discount"===n.type)),i=s(u),f=a.length?a.reduce(((e,t)=>e+(n(t.subtotal)??0)),0):null,l=f??n(u.totalFees)??0,m=n(u.subtotal),d=i.length?i.reduce(((e,t)=>e+(n(t.subtotal)??0)),0):(m??0)-l,y=o.length?o.reduce(((e,t)=>e+Math.abs(n(t.subtotal)??0)),0):null,g=n(u.totalDiscounts)??y??0,h=n(u.totalTax)??0,p=a.some((n=>"string"==typeof n.name&&!!n.name));return{currency:u.currency||"GBP",subtotal:d,fees:l,feeLabel:a.map((n=>n.name)).find((n=>!!n))||t,showFee:e(f??n(u.totalFees),p),tax:h,discount:g,total:n(u.total)??d+l+h-g}}export{r as a,f as b,u as c,i as d,m as e,c as f,g,s as h,d as i,o,y as r,l as s,a as t}