@ticketlayer/elements 0.2.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 (195) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +55 -0
  3. package/dist/cjs/index-DfzcrE9-.js +3598 -0
  4. package/dist/cjs/index.cjs.js +16 -0
  5. package/dist/cjs/loader.cjs.js +12 -0
  6. package/dist/cjs/order-summary-ZMkJ5bez.js +116 -0
  7. package/dist/cjs/sdk-connector-ClDF3013.js +108 -0
  8. package/dist/cjs/ticketlayer-elements.cjs.js +24 -0
  9. package/dist/cjs/tl-buy-modal.cjs.entry.js +127 -0
  10. package/dist/cjs/tl-buy-tickets-button.cjs.entry.js +131 -0
  11. package/dist/cjs/tl-buy-tickets-wrapper.cjs.entry.js +58 -0
  12. package/dist/cjs/tl-cart-badge.cjs.entry.js +109 -0
  13. package/dist/cjs/tl-cart-drawer.cjs.entry.js +67 -0
  14. package/dist/cjs/tl-cart.cjs.entry.js +148 -0
  15. package/dist/cjs/tl-checkout-wrapper.cjs.entry.js +57 -0
  16. package/dist/cjs/tl-event-card.cjs.entry.js +140 -0
  17. package/dist/cjs/tl-event-list.cjs.entry.js +80 -0
  18. package/dist/cjs/tl-login.cjs.entry.js +184 -0
  19. package/dist/cjs/tl-my-orders.cjs.entry.js +123 -0
  20. package/dist/cjs/tl-occurrence-selector_2.cjs.entry.js +754 -0
  21. package/dist/cjs/tl-order-confirmation.cjs.entry.js +146 -0
  22. package/dist/cjs/tl-order-tickets_2.cjs.entry.js +3198 -0
  23. package/dist/cjs/tl-promo-code.cjs.entry.js +75 -0
  24. package/dist/cjs/tl-seat-map.cjs.entry.js +147 -0
  25. package/dist/collection/collection-manifest.json +29 -0
  26. package/dist/collection/components/tl-buy-modal/tl-buy-modal.css +264 -0
  27. package/dist/collection/components/tl-buy-modal/tl-buy-modal.js +249 -0
  28. package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.css +120 -0
  29. package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.js +412 -0
  30. package/dist/collection/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.css +23 -0
  31. package/dist/collection/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.js +192 -0
  32. package/dist/collection/components/tl-cart/tl-cart.css +251 -0
  33. package/dist/collection/components/tl-cart/tl-cart.js +314 -0
  34. package/dist/collection/components/tl-cart-badge/tl-cart-badge.css +138 -0
  35. package/dist/collection/components/tl-cart-badge/tl-cart-badge.js +217 -0
  36. package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.css +98 -0
  37. package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.js +185 -0
  38. package/dist/collection/components/tl-checkout-wrapper/tl-checkout-wrapper.css +23 -0
  39. package/dist/collection/components/tl-checkout-wrapper/tl-checkout-wrapper.js +148 -0
  40. package/dist/collection/components/tl-event-card/event-card-adapter.js +23 -0
  41. package/dist/collection/components/tl-event-card/tl-event-card.css +175 -0
  42. package/dist/collection/components/tl-event-card/tl-event-card.js +205 -0
  43. package/dist/collection/components/tl-event-list/tl-event-list.css +134 -0
  44. package/dist/collection/components/tl-event-list/tl-event-list.js +171 -0
  45. package/dist/collection/components/tl-login/tl-login.css +133 -0
  46. package/dist/collection/components/tl-login/tl-login.js +309 -0
  47. package/dist/collection/components/tl-my-orders/tl-my-orders.css +204 -0
  48. package/dist/collection/components/tl-my-orders/tl-my-orders.js +221 -0
  49. package/dist/collection/components/tl-occurrence-selector/tl-occurrence-selector.css +658 -0
  50. package/dist/collection/components/tl-occurrence-selector/tl-occurrence-selector.js +707 -0
  51. package/dist/collection/components/tl-order-confirmation/tl-order-confirmation.css +176 -0
  52. package/dist/collection/components/tl-order-confirmation/tl-order-confirmation.js +298 -0
  53. package/dist/collection/components/tl-order-tickets/tl-order-tickets.css +30 -0
  54. package/dist/collection/components/tl-order-tickets/tl-order-tickets.js +122 -0
  55. package/dist/collection/components/tl-promo-code/tl-promo-code.css +106 -0
  56. package/dist/collection/components/tl-promo-code/tl-promo-code.js +181 -0
  57. package/dist/collection/components/tl-seat-map/tl-seat-map.css +85 -0
  58. package/dist/collection/components/tl-seat-map/tl-seat-map.js +366 -0
  59. package/dist/collection/components/tl-ticket/tl-ticket.css +90 -0
  60. package/dist/collection/components/tl-ticket/tl-ticket.js +129 -0
  61. package/dist/collection/components/tl-ticket-selector/tl-ticket-selector.css +205 -0
  62. package/dist/collection/components/tl-ticket-selector/tl-ticket-selector.js +332 -0
  63. package/dist/collection/index.js +10 -0
  64. package/dist/collection/utils/order-summary.js +101 -0
  65. package/dist/collection/utils/sdk-connector.js +100 -0
  66. package/dist/collection/utils/testing/mock-sdk.js +95 -0
  67. package/dist/components/index.d.ts +35 -0
  68. package/dist/components/index.js +1 -0
  69. package/dist/components/order-summary.js +1 -0
  70. package/dist/components/sdk-connector.js +1 -0
  71. package/dist/components/tl-buy-modal.d.ts +11 -0
  72. package/dist/components/tl-buy-modal.js +1 -0
  73. package/dist/components/tl-buy-tickets-button.d.ts +11 -0
  74. package/dist/components/tl-buy-tickets-button.js +1 -0
  75. package/dist/components/tl-buy-tickets-wrapper.d.ts +11 -0
  76. package/dist/components/tl-buy-tickets-wrapper.js +1 -0
  77. package/dist/components/tl-buy-tickets-wrapper2.js +1 -0
  78. package/dist/components/tl-cart-badge.d.ts +11 -0
  79. package/dist/components/tl-cart-badge.js +1 -0
  80. package/dist/components/tl-cart-drawer.d.ts +11 -0
  81. package/dist/components/tl-cart-drawer.js +1 -0
  82. package/dist/components/tl-cart.d.ts +11 -0
  83. package/dist/components/tl-cart.js +1 -0
  84. package/dist/components/tl-cart2.js +1 -0
  85. package/dist/components/tl-checkout-wrapper.d.ts +11 -0
  86. package/dist/components/tl-checkout-wrapper.js +1 -0
  87. package/dist/components/tl-checkout-wrapper2.js +1 -0
  88. package/dist/components/tl-event-card.d.ts +11 -0
  89. package/dist/components/tl-event-card.js +1 -0
  90. package/dist/components/tl-event-card2.js +1 -0
  91. package/dist/components/tl-event-list.d.ts +11 -0
  92. package/dist/components/tl-event-list.js +1 -0
  93. package/dist/components/tl-login.d.ts +11 -0
  94. package/dist/components/tl-login.js +1 -0
  95. package/dist/components/tl-login2.js +1 -0
  96. package/dist/components/tl-my-orders.d.ts +11 -0
  97. package/dist/components/tl-my-orders.js +1 -0
  98. package/dist/components/tl-occurrence-selector.d.ts +11 -0
  99. package/dist/components/tl-occurrence-selector.js +1 -0
  100. package/dist/components/tl-occurrence-selector2.js +1 -0
  101. package/dist/components/tl-order-confirmation.d.ts +11 -0
  102. package/dist/components/tl-order-confirmation.js +1 -0
  103. package/dist/components/tl-order-tickets.d.ts +11 -0
  104. package/dist/components/tl-order-tickets.js +1 -0
  105. package/dist/components/tl-order-tickets2.js +1 -0
  106. package/dist/components/tl-promo-code.d.ts +11 -0
  107. package/dist/components/tl-promo-code.js +1 -0
  108. package/dist/components/tl-seat-map.d.ts +11 -0
  109. package/dist/components/tl-seat-map.js +1 -0
  110. package/dist/components/tl-ticket-selector.d.ts +11 -0
  111. package/dist/components/tl-ticket-selector.js +1 -0
  112. package/dist/components/tl-ticket-selector2.js +1 -0
  113. package/dist/components/tl-ticket.d.ts +11 -0
  114. package/dist/components/tl-ticket.js +1 -0
  115. package/dist/components/tl-ticket2.js +1 -0
  116. package/dist/elements.docs.d.ts +454 -0
  117. package/dist/elements.docs.json +3008 -0
  118. package/dist/esm/index-Ba-RZTFI.js +3588 -0
  119. package/dist/esm/index.js +4 -0
  120. package/dist/esm/loader.js +10 -0
  121. package/dist/esm/order-summary-BGekdjN9.js +103 -0
  122. package/dist/esm/sdk-connector-CqhvfyKV.js +102 -0
  123. package/dist/esm/ticketlayer-elements.js +20 -0
  124. package/dist/esm/tl-buy-modal.entry.js +125 -0
  125. package/dist/esm/tl-buy-tickets-button.entry.js +129 -0
  126. package/dist/esm/tl-buy-tickets-wrapper.entry.js +56 -0
  127. package/dist/esm/tl-cart-badge.entry.js +107 -0
  128. package/dist/esm/tl-cart-drawer.entry.js +65 -0
  129. package/dist/esm/tl-cart.entry.js +146 -0
  130. package/dist/esm/tl-checkout-wrapper.entry.js +55 -0
  131. package/dist/esm/tl-event-card.entry.js +138 -0
  132. package/dist/esm/tl-event-list.entry.js +78 -0
  133. package/dist/esm/tl-login.entry.js +182 -0
  134. package/dist/esm/tl-my-orders.entry.js +121 -0
  135. package/dist/esm/tl-occurrence-selector_2.entry.js +751 -0
  136. package/dist/esm/tl-order-confirmation.entry.js +144 -0
  137. package/dist/esm/tl-order-tickets_2.entry.js +3195 -0
  138. package/dist/esm/tl-promo-code.entry.js +73 -0
  139. package/dist/esm/tl-seat-map.entry.js +145 -0
  140. package/dist/index.cjs.js +1 -0
  141. package/dist/index.js +1 -0
  142. package/dist/ticketlayer-elements/index.esm.js +1 -0
  143. package/dist/ticketlayer-elements/p-0291df4c.entry.js +1 -0
  144. package/dist/ticketlayer-elements/p-10f01a1f.entry.js +1 -0
  145. package/dist/ticketlayer-elements/p-11273f8f.entry.js +1 -0
  146. package/dist/ticketlayer-elements/p-340ab4f5.entry.js +1 -0
  147. package/dist/ticketlayer-elements/p-41d22d7c.entry.js +1 -0
  148. package/dist/ticketlayer-elements/p-82752e3b.entry.js +1 -0
  149. package/dist/ticketlayer-elements/p-976770f3.entry.js +1 -0
  150. package/dist/ticketlayer-elements/p-9a903ff6.entry.js +1 -0
  151. package/dist/ticketlayer-elements/p-9c9072c8.entry.js +1 -0
  152. package/dist/ticketlayer-elements/p-9d8163d6.entry.js +1 -0
  153. package/dist/ticketlayer-elements/p-BGekdjN9.js +1 -0
  154. package/dist/ticketlayer-elements/p-Ba-RZTFI.js +2 -0
  155. package/dist/ticketlayer-elements/p-CqhvfyKV.js +1 -0
  156. package/dist/ticketlayer-elements/p-a5c90b68.entry.js +1 -0
  157. package/dist/ticketlayer-elements/p-b6d479ad.entry.js +1 -0
  158. package/dist/ticketlayer-elements/p-dd43f015.entry.js +1 -0
  159. package/dist/ticketlayer-elements/p-eb640760.entry.js +1 -0
  160. package/dist/ticketlayer-elements/p-ee3aa227.entry.js +1 -0
  161. package/dist/ticketlayer-elements/p-fb9444c4.entry.js +1 -0
  162. package/dist/ticketlayer-elements/ticketlayer-elements.css +1 -0
  163. package/dist/ticketlayer-elements/ticketlayer-elements.esm.js +1 -0
  164. package/dist/types/components/tl-buy-modal/tl-buy-modal.d.ts +54 -0
  165. package/dist/types/components/tl-buy-tickets-button/tl-buy-tickets-button.d.ts +61 -0
  166. package/dist/types/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.d.ts +52 -0
  167. package/dist/types/components/tl-cart/tl-cart.d.ts +80 -0
  168. package/dist/types/components/tl-cart-badge/tl-cart-badge.d.ts +36 -0
  169. package/dist/types/components/tl-cart-drawer/tl-cart-drawer.d.ts +35 -0
  170. package/dist/types/components/tl-checkout-wrapper/tl-checkout-wrapper.d.ts +39 -0
  171. package/dist/types/components/tl-event-card/event-card-adapter.d.ts +23 -0
  172. package/dist/types/components/tl-event-card/tl-event-card.d.ts +55 -0
  173. package/dist/types/components/tl-event-list/tl-event-list.d.ts +30 -0
  174. package/dist/types/components/tl-login/tl-login.d.ts +59 -0
  175. package/dist/types/components/tl-my-orders/tl-my-orders.d.ts +39 -0
  176. package/dist/types/components/tl-occurrence-selector/tl-occurrence-selector.d.ts +208 -0
  177. package/dist/types/components/tl-order-confirmation/tl-order-confirmation.d.ts +54 -0
  178. package/dist/types/components/tl-order-tickets/tl-order-tickets.d.ts +21 -0
  179. package/dist/types/components/tl-promo-code/tl-promo-code.d.ts +39 -0
  180. package/dist/types/components/tl-seat-map/tl-seat-map.d.ts +68 -0
  181. package/dist/types/components/tl-ticket/tl-ticket.d.ts +28 -0
  182. package/dist/types/components/tl-ticket-selector/tl-ticket-selector.d.ts +78 -0
  183. package/dist/types/components.d.ts +1629 -0
  184. package/dist/types/index.d.ts +14 -0
  185. package/dist/types/stencil-public-runtime.d.ts +1839 -0
  186. package/dist/types/utils/order-summary.d.ts +67 -0
  187. package/dist/types/utils/sdk-connector.d.ts +113 -0
  188. package/dist/types/utils/testing/mock-sdk.d.ts +36 -0
  189. package/elements.catalogue.json +968 -0
  190. package/loader/cdn.js +1 -0
  191. package/loader/index.cjs.js +1 -0
  192. package/loader/index.d.ts +24 -0
  193. package/loader/index.es2017.js +1 -0
  194. package/loader/index.js +2 -0
  195. package/package.json +101 -0
@@ -0,0 +1,1629 @@
1
+ /* eslint-disable */
2
+ /* tslint:disable */
3
+ /**
4
+ * This is an autogenerated file created by the Stencil compiler.
5
+ * It contains typing information for all components that exist in this project.
6
+ */
7
+ import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
+ import { ButtonSize, ButtonState, ButtonVariant } from "./components/tl-buy-tickets-button/tl-buy-tickets-button";
9
+ import { OrderResult } from "./utils/sdk-connector";
10
+ import { TlCartData } from "./components/tl-cart/tl-cart";
11
+ import { TlEventCardEvent } from "./components/tl-event-card/tl-event-card";
12
+ import { TlAuthChanged } from "./components/tl-login/tl-login";
13
+ import { TlOccurrence, TlOccurrenceSelectorTheme } from "./components/tl-occurrence-selector/tl-occurrence-selector";
14
+ import { TlOrderData } from "./utils/order-summary";
15
+ import { TlPromoApplied } from "./components/tl-promo-code/tl-promo-code";
16
+ import { TlTicketData } from "./components/tl-ticket/tl-ticket";
17
+ import { AddToCartItem } from "./components/tl-ticket-selector/tl-ticket-selector";
18
+ export { ButtonSize, ButtonState, ButtonVariant } from "./components/tl-buy-tickets-button/tl-buy-tickets-button";
19
+ export { OrderResult } from "./utils/sdk-connector";
20
+ export { TlCartData } from "./components/tl-cart/tl-cart";
21
+ export { TlEventCardEvent } from "./components/tl-event-card/tl-event-card";
22
+ export { TlAuthChanged } from "./components/tl-login/tl-login";
23
+ export { TlOccurrence, TlOccurrenceSelectorTheme } from "./components/tl-occurrence-selector/tl-occurrence-selector";
24
+ export { TlOrderData } from "./utils/order-summary";
25
+ export { TlPromoApplied } from "./components/tl-promo-code/tl-promo-code";
26
+ export { TlTicketData } from "./components/tl-ticket/tl-ticket";
27
+ export { AddToCartItem } from "./components/tl-ticket-selector/tl-ticket-selector";
28
+ export namespace Components {
29
+ /**
30
+ * @component tl-buy-modal
31
+ * The in-page buy-tickets funnel: occurrence → ticket selection → added.
32
+ * A NATIVE Elements overlay (no iframe) - it simply composes the existing
33
+ * `tl-occurrence-selector` and `tl-ticket-selector`, which already bind to the
34
+ * SDK and add to the cart. Because it's pure browse/cart (zero PCI surface), it
35
+ * renders in-page identically on HBO and on any third-party embed bound to
36
+ * `window.Ticketlayer`. Only the *checkout* step crosses into an iframe.
37
+ * It is not placed in markup by hosts: the SDK's buy-modal manager mounts it on
38
+ * demand when something emits `ui:event-modal-requested` (e.g. a
39
+ * `tl-buy-tickets-button` or a calendar date click), and removes it on close.
40
+ * @event tlClose - user dismissed the modal (keep browsing)
41
+ * @event tlCheckout - user chose to proceed to checkout (manager hands off to
42
+ * the checkout intent: iframe on embeds, /checkout on HBO)
43
+ * @event tlError - the event couldn't be loaded
44
+ */
45
+ interface TlBuyModal {
46
+ /**
47
+ * Event to sell tickets for.
48
+ */
49
+ "eventId": string;
50
+ /**
51
+ * Optionally open straight to ticket selection for this occurrence.
52
+ */
53
+ "occurrenceId"?: string;
54
+ }
55
+ interface TlBuyTicketsButton {
56
+ /**
57
+ * Currency code for price formatting
58
+ * @default 'GBP'
59
+ */
60
+ "currency": string;
61
+ /**
62
+ * Disabled state
63
+ * @default false
64
+ */
65
+ "disabled": boolean;
66
+ /**
67
+ * Event ID to purchase tickets for
68
+ */
69
+ "eventId": string;
70
+ /**
71
+ * Full width button
72
+ * @default false
73
+ */
74
+ "fullWidth": boolean;
75
+ /**
76
+ * Button label override (default depends on state)
77
+ */
78
+ "label"?: string;
79
+ /**
80
+ * Optional pre-selected occurrence ID
81
+ */
82
+ "occurrenceId"?: string;
83
+ /**
84
+ * Price to display (in minor units e.g. pence)
85
+ */
86
+ "price"?: number;
87
+ /**
88
+ * Show price prefix text
89
+ * @default 'From'
90
+ */
91
+ "pricePrefix": string;
92
+ /**
93
+ * Button size
94
+ * @default 'md'
95
+ */
96
+ "size": ButtonSize;
97
+ /**
98
+ * Button state - determines colour, label, and icon
99
+ * @default 'available'
100
+ */
101
+ "state": ButtonState;
102
+ /**
103
+ * Button variant
104
+ * @default 'primary'
105
+ */
106
+ "variant": ButtonVariant;
107
+ }
108
+ /**
109
+ * @component tl-buy-tickets-wrapper
110
+ * Wraps any content and opens the Ticketlayer modal when clicked.
111
+ * Uses the SDK's modal manager which handles the iframe overlay.
112
+ * @example <tl-buy-tickets-wrapper event-id="evt_001">
113
+ * <button>Buy Tickets</button>
114
+ * </tl-buy-tickets-wrapper>
115
+ * @example <tl-buy-tickets-wrapper event-id="evt_001" occurrence-id="occ_001">
116
+ * <button>Get Tickets for Saturday</button>
117
+ * </tl-buy-tickets-wrapper>
118
+ */
119
+ interface TlBuyTicketsWrapper {
120
+ /**
121
+ * Whether the wrapper is disabled
122
+ * @default false
123
+ */
124
+ "disabled": boolean;
125
+ /**
126
+ * The event ID to purchase tickets for
127
+ */
128
+ "eventId": string;
129
+ /**
130
+ * Optional specific occurrence ID (skips occurrence selector)
131
+ */
132
+ "occurrenceId"?: string;
133
+ }
134
+ interface TlCart {
135
+ /**
136
+ * Checkout button label
137
+ * @default 'Checkout'
138
+ */
139
+ "checkoutLabel": string;
140
+ /**
141
+ * Compact mode - hides some details
142
+ * @default false
143
+ */
144
+ "compact": boolean;
145
+ /**
146
+ * Show checkout button
147
+ * @default true
148
+ */
149
+ "showCheckoutButton": boolean;
150
+ /**
151
+ * Show remove item buttons
152
+ * @default true
153
+ */
154
+ "showRemoveButtons": boolean;
155
+ }
156
+ interface TlCartBadge {
157
+ /**
158
+ * Badge only mode - only shows the count bubble, no icon or button
159
+ * @default false
160
+ */
161
+ "badgeOnly": boolean;
162
+ /**
163
+ * Custom icon (emoji or text). If not provided, uses cart SVG
164
+ */
165
+ "icon"?: string;
166
+ /**
167
+ * Show the badge even when count is 0
168
+ * @default false
169
+ */
170
+ "showEmpty": boolean;
171
+ /**
172
+ * Size variant
173
+ * @default 'md'
174
+ */
175
+ "size": 'sm' | 'md' | 'lg';
176
+ }
177
+ /**
178
+ * @component tl-cart-drawer
179
+ * A slide-in cart panel (off-canvas) showing the current cart. It opens when
180
+ * anything raises the `ui:cart-requested` bus intent - e.g. wire a
181
+ * `tl-cart-badge`'s click to emit it - and closes on the backdrop, the close
182
+ * button, Escape, or `ui:modal-close-requested`. The panel embeds `<tl-cart>`,
183
+ * so the actual cart rendering / remove / checkout is shared with the inline
184
+ * cart; the drawer only adds the off-canvas chrome.
185
+ * @prop side - which edge the panel slides from (default 'right')
186
+ * @event tlOpen - the drawer opened
187
+ * @event tlClose - the drawer closed
188
+ */
189
+ interface TlCartDrawer {
190
+ /**
191
+ * Heading shown at the top of the panel.
192
+ * @default 'Your cart'
193
+ */
194
+ "heading": string;
195
+ /**
196
+ * Controlled open state (also driven by the `ui:cart-requested` intent).
197
+ * @default false
198
+ */
199
+ "open": boolean;
200
+ /**
201
+ * Edge the panel slides in from.
202
+ * @default 'right'
203
+ */
204
+ "side": 'right' | 'left';
205
+ }
206
+ /**
207
+ * @component tl-checkout-wrapper
208
+ * Wraps any content and opens the Ticketlayer checkout modal when clicked.
209
+ * Uses the SDK's modal manager which handles the iframe overlay.
210
+ * @example <tl-checkout-wrapper>
211
+ * <button>Proceed to Checkout</button>
212
+ * </tl-checkout-wrapper>
213
+ */
214
+ interface TlCheckoutWrapper {
215
+ /**
216
+ * Whether the wrapper is disabled
217
+ * @default false
218
+ */
219
+ "disabled": boolean;
220
+ }
221
+ interface TlEventCard {
222
+ /**
223
+ * Event data to display (tl-event-list passes this)
224
+ */
225
+ "event"?: TlEventCardEvent;
226
+ /**
227
+ * Load the event from the SDK by id when no `event` is given, so a single card works standalone (e.g. on a Webflow page).
228
+ */
229
+ "eventId"?: string;
230
+ }
231
+ interface TlEventList {
232
+ /**
233
+ * Category filter
234
+ */
235
+ "category"?: string;
236
+ /**
237
+ * Columns for grid layout (1, 2, 3, or 4)
238
+ * @default 3
239
+ */
240
+ "columns": number;
241
+ /**
242
+ * Maximum number of events to display
243
+ * @default 12
244
+ */
245
+ "limit": number;
246
+ }
247
+ /**
248
+ * tl-login - magic-link sign-in. The customer enters an email, we ask the SDK
249
+ * to send a link (POST /sales/customer-auth/magic-link), then either the link
250
+ * lands back on this page with `?code=` or the customer types the code from
251
+ * the email; both exchange through the SDK (POST /sales/customer-tokens). No
252
+ * password is ever handled here.
253
+ * States: enter email -> check your inbox (resend, enter code) -> signed in
254
+ * (email + sign out).
255
+ * Usage: <tl-login></tl-login>
256
+ * @event tlAuthChanged - signed in or out ({ customer, authenticated })
257
+ * @event tlMagicLinkSent - a link was requested for an email
258
+ * @event tlError - request or code exchange failed
259
+ */
260
+ interface TlLogin {
261
+ /**
262
+ * Offer a "enter the code" path alongside the emailed link (default true).
263
+ * @default true
264
+ */
265
+ "allowCodeEntry": boolean;
266
+ /**
267
+ * Heading for the email step.
268
+ * @default 'Sign in'
269
+ */
270
+ "heading": string;
271
+ }
272
+ /**
273
+ * tl-my-orders - the signed-in customer's orders (GET /sales/my-orders through
274
+ * the SDK): event, date, ticket count, total and status per row. Clicking a
275
+ * row expands it to show the order's tickets (tl-order-tickets). Shows
276
+ * tl-login inline when nobody is signed in.
277
+ * Usage: <tl-my-orders></tl-my-orders>
278
+ * @event tlOrderSelect - a row was expanded ({ orderId })
279
+ * @event tlError - the orders could not be loaded
280
+ */
281
+ interface TlMyOrders {
282
+ /**
283
+ * Columns for the expanded ticket grid.
284
+ * @default 2
285
+ */
286
+ "columns": number;
287
+ /**
288
+ * Copy for the empty state.
289
+ * @default "When you buy tickets they'll show up here, ready to view and download."
290
+ */
291
+ "emptyMessage": string;
292
+ }
293
+ interface TlOccurrenceSelector {
294
+ /**
295
+ * Force a specific display mode (auto-detected if not set)
296
+ */
297
+ "displayMode"?: DisplayMode;
298
+ /**
299
+ * Event ID to fetch occurrences for
300
+ */
301
+ "eventId": string;
302
+ /**
303
+ * Layout orientation (auto = horizontal on desktop, vertical on mobile)
304
+ * @default 'auto'
305
+ */
306
+ "orientation": Orientation;
307
+ /**
308
+ * Theme configuration
309
+ */
310
+ "theme"?: TlOccurrenceSelectorTheme;
311
+ }
312
+ /**
313
+ * tl-order-confirmation - the "thank you" page block: order reference,
314
+ * customer email, event and date, ticket lines, totals, then the tickets
315
+ * themselves (tl-order-tickets, each with a Download PDF link).
316
+ * Finds its order three ways, in priority order:
317
+ * 1. the `order-id` prop
318
+ * 2. the URL (`?orderId=`), the contract the hosted box office confirmation
319
+ * page uses; `?redirect_status=` from a Stripe return is honoured too
320
+ * 3. the SDK's `checkout:completed` event, for a page that mounts this before
321
+ * the customer pays
322
+ * Usage: <tl-order-confirmation order-id="ord_xxx"></tl-order-confirmation>
323
+ * @event tlOrderLoaded - the order was loaded
324
+ * @event tlError - the order could not be loaded
325
+ */
326
+ interface TlOrderConfirmation {
327
+ /**
328
+ * Columns for the ticket grid.
329
+ * @default 2
330
+ */
331
+ "columns": number;
332
+ /**
333
+ * Email to show when the order view carries none (a host that collected it at checkout).
334
+ */
335
+ "customerEmail"?: string;
336
+ /**
337
+ * The order to show. Falls back to `?orderId=` in the page URL.
338
+ */
339
+ "orderId"?: string;
340
+ /**
341
+ * Mount tl-order-tickets under the summary (default true).
342
+ * @default true
343
+ */
344
+ "showTickets": boolean;
345
+ }
346
+ /**
347
+ * tl-order-tickets - renders all the tickets for an order as scannable QR
348
+ * cards with PDF download. Fetches the order through the SDK (order-access
349
+ * gated by the session), so it works on a confirmation page or in an account.
350
+ * Usage: <tl-order-tickets order-id="ord_xxx"></tl-order-tickets>
351
+ */
352
+ interface TlOrderTickets {
353
+ /**
354
+ * Columns in the grid (default 2).
355
+ * @default 2
356
+ */
357
+ "columns": number;
358
+ /**
359
+ * The order whose tickets to show.
360
+ */
361
+ "orderId": string;
362
+ }
363
+ /**
364
+ * tl-promo-code - an input plus Apply button that redeems a presale or promo
365
+ * code for the current cart (POST /sales/presale-codes/redeem through the
366
+ * SDK). Redemption unlocks gated pricing on the customer; the SDK re-reads the
367
+ * cart and publishes cart:updated, so tl-cart and badges re-render on their own.
368
+ * The API has no un-redeem, so the applied state offers only "use a different
369
+ * code", which clears the input for another redemption.
370
+ * Usage: <tl-promo-code></tl-promo-code>
371
+ * @event tlPromoApplied - a code was redeemed ({ code, benefit, alreadyHeld, cart })
372
+ * @event tlError - the code was rejected
373
+ */
374
+ interface TlPromoCode {
375
+ /**
376
+ * Apply button label.
377
+ * @default 'Apply'
378
+ */
379
+ "buttonLabel": string;
380
+ /**
381
+ * Input placeholder.
382
+ * @default 'Promo or presale code'
383
+ */
384
+ "placeholder": string;
385
+ }
386
+ interface TlSeatMap {
387
+ /**
388
+ * API URL for the seat map data
389
+ * @default 'https://api.ticketlayer.com'
390
+ */
391
+ "apiUrl": string;
392
+ /**
393
+ * Base URL for the hosted seat map (HBO URL)
394
+ * @default 'https://checkout.ticketlayer.com'
395
+ */
396
+ "hboUrl": string;
397
+ /**
398
+ * Height of the seat map
399
+ * @default '600px'
400
+ */
401
+ "height": string;
402
+ /**
403
+ * Occurrence ID to show seat map for
404
+ */
405
+ "occurrenceId": string;
406
+ /**
407
+ * Width of the seat map
408
+ * @default '100%'
409
+ */
410
+ "width": string;
411
+ }
412
+ /**
413
+ * tl-ticket - a single event ticket: a scannable QR (the redemption token),
414
+ * ticket name / seat / holder, and a PDF download. Greys out + stamps
415
+ * Used/Void when redeemed or cancelled.
416
+ */
417
+ interface TlTicket {
418
+ /**
419
+ * Order id this ticket belongs to (for the PDF download).
420
+ */
421
+ "orderId": string;
422
+ /**
423
+ * The ticket to render.
424
+ */
425
+ "ticket": TlTicketData;
426
+ }
427
+ interface TlTicketSelector {
428
+ /**
429
+ * Button label
430
+ * @default 'Add to Cart'
431
+ */
432
+ "buttonLabel": string;
433
+ /**
434
+ * Event ID
435
+ */
436
+ "eventId": string;
437
+ /**
438
+ * Occurrence ID
439
+ */
440
+ "occurrenceId": string;
441
+ /**
442
+ * Show add to cart button
443
+ * @default true
444
+ */
445
+ "showButton": boolean;
446
+ }
447
+ }
448
+ export interface TlBuyModalCustomEvent<T> extends CustomEvent<T> {
449
+ detail: T;
450
+ target: HTMLTlBuyModalElement;
451
+ }
452
+ export interface TlBuyTicketsButtonCustomEvent<T> extends CustomEvent<T> {
453
+ detail: T;
454
+ target: HTMLTlBuyTicketsButtonElement;
455
+ }
456
+ export interface TlBuyTicketsWrapperCustomEvent<T> extends CustomEvent<T> {
457
+ detail: T;
458
+ target: HTMLTlBuyTicketsWrapperElement;
459
+ }
460
+ export interface TlCartCustomEvent<T> extends CustomEvent<T> {
461
+ detail: T;
462
+ target: HTMLTlCartElement;
463
+ }
464
+ export interface TlCartBadgeCustomEvent<T> extends CustomEvent<T> {
465
+ detail: T;
466
+ target: HTMLTlCartBadgeElement;
467
+ }
468
+ export interface TlCartDrawerCustomEvent<T> extends CustomEvent<T> {
469
+ detail: T;
470
+ target: HTMLTlCartDrawerElement;
471
+ }
472
+ export interface TlCheckoutWrapperCustomEvent<T> extends CustomEvent<T> {
473
+ detail: T;
474
+ target: HTMLTlCheckoutWrapperElement;
475
+ }
476
+ export interface TlEventCardCustomEvent<T> extends CustomEvent<T> {
477
+ detail: T;
478
+ target: HTMLTlEventCardElement;
479
+ }
480
+ export interface TlEventListCustomEvent<T> extends CustomEvent<T> {
481
+ detail: T;
482
+ target: HTMLTlEventListElement;
483
+ }
484
+ export interface TlLoginCustomEvent<T> extends CustomEvent<T> {
485
+ detail: T;
486
+ target: HTMLTlLoginElement;
487
+ }
488
+ export interface TlMyOrdersCustomEvent<T> extends CustomEvent<T> {
489
+ detail: T;
490
+ target: HTMLTlMyOrdersElement;
491
+ }
492
+ export interface TlOccurrenceSelectorCustomEvent<T> extends CustomEvent<T> {
493
+ detail: T;
494
+ target: HTMLTlOccurrenceSelectorElement;
495
+ }
496
+ export interface TlOrderConfirmationCustomEvent<T> extends CustomEvent<T> {
497
+ detail: T;
498
+ target: HTMLTlOrderConfirmationElement;
499
+ }
500
+ export interface TlPromoCodeCustomEvent<T> extends CustomEvent<T> {
501
+ detail: T;
502
+ target: HTMLTlPromoCodeElement;
503
+ }
504
+ export interface TlSeatMapCustomEvent<T> extends CustomEvent<T> {
505
+ detail: T;
506
+ target: HTMLTlSeatMapElement;
507
+ }
508
+ export interface TlTicketSelectorCustomEvent<T> extends CustomEvent<T> {
509
+ detail: T;
510
+ target: HTMLTlTicketSelectorElement;
511
+ }
512
+ declare global {
513
+ interface HTMLTlBuyModalElementEventMap {
514
+ "tlClose": void;
515
+ "tlCheckout": void;
516
+ "tlError": { message: string };
517
+ }
518
+ /**
519
+ * @component tl-buy-modal
520
+ * The in-page buy-tickets funnel: occurrence → ticket selection → added.
521
+ * A NATIVE Elements overlay (no iframe) - it simply composes the existing
522
+ * `tl-occurrence-selector` and `tl-ticket-selector`, which already bind to the
523
+ * SDK and add to the cart. Because it's pure browse/cart (zero PCI surface), it
524
+ * renders in-page identically on HBO and on any third-party embed bound to
525
+ * `window.Ticketlayer`. Only the *checkout* step crosses into an iframe.
526
+ * It is not placed in markup by hosts: the SDK's buy-modal manager mounts it on
527
+ * demand when something emits `ui:event-modal-requested` (e.g. a
528
+ * `tl-buy-tickets-button` or a calendar date click), and removes it on close.
529
+ * @event tlClose - user dismissed the modal (keep browsing)
530
+ * @event tlCheckout - user chose to proceed to checkout (manager hands off to
531
+ * the checkout intent: iframe on embeds, /checkout on HBO)
532
+ * @event tlError - the event couldn't be loaded
533
+ */
534
+ interface HTMLTlBuyModalElement extends Components.TlBuyModal, HTMLStencilElement {
535
+ addEventListener<K extends keyof HTMLTlBuyModalElementEventMap>(type: K, listener: (this: HTMLTlBuyModalElement, ev: TlBuyModalCustomEvent<HTMLTlBuyModalElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
536
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
537
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
538
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
539
+ removeEventListener<K extends keyof HTMLTlBuyModalElementEventMap>(type: K, listener: (this: HTMLTlBuyModalElement, ev: TlBuyModalCustomEvent<HTMLTlBuyModalElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
540
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
541
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
542
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
543
+ }
544
+ var HTMLTlBuyModalElement: {
545
+ prototype: HTMLTlBuyModalElement;
546
+ new (): HTMLTlBuyModalElement;
547
+ };
548
+ interface HTMLTlBuyTicketsButtonElementEventMap {
549
+ "tlClick": { eventId: string; occurrenceId?: string };
550
+ }
551
+ interface HTMLTlBuyTicketsButtonElement extends Components.TlBuyTicketsButton, HTMLStencilElement {
552
+ addEventListener<K extends keyof HTMLTlBuyTicketsButtonElementEventMap>(type: K, listener: (this: HTMLTlBuyTicketsButtonElement, ev: TlBuyTicketsButtonCustomEvent<HTMLTlBuyTicketsButtonElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
553
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
554
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
555
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
556
+ removeEventListener<K extends keyof HTMLTlBuyTicketsButtonElementEventMap>(type: K, listener: (this: HTMLTlBuyTicketsButtonElement, ev: TlBuyTicketsButtonCustomEvent<HTMLTlBuyTicketsButtonElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
557
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
558
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
559
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
560
+ }
561
+ var HTMLTlBuyTicketsButtonElement: {
562
+ prototype: HTMLTlBuyTicketsButtonElement;
563
+ new (): HTMLTlBuyTicketsButtonElement;
564
+ };
565
+ interface HTMLTlBuyTicketsWrapperElementEventMap {
566
+ "tl-complete": OrderResult;
567
+ "tl-error": { message: string };
568
+ "tl-close": void;
569
+ }
570
+ /**
571
+ * @component tl-buy-tickets-wrapper
572
+ * Wraps any content and opens the Ticketlayer modal when clicked.
573
+ * Uses the SDK's modal manager which handles the iframe overlay.
574
+ * @example <tl-buy-tickets-wrapper event-id="evt_001">
575
+ * <button>Buy Tickets</button>
576
+ * </tl-buy-tickets-wrapper>
577
+ * @example <tl-buy-tickets-wrapper event-id="evt_001" occurrence-id="occ_001">
578
+ * <button>Get Tickets for Saturday</button>
579
+ * </tl-buy-tickets-wrapper>
580
+ */
581
+ interface HTMLTlBuyTicketsWrapperElement extends Components.TlBuyTicketsWrapper, HTMLStencilElement {
582
+ addEventListener<K extends keyof HTMLTlBuyTicketsWrapperElementEventMap>(type: K, listener: (this: HTMLTlBuyTicketsWrapperElement, ev: TlBuyTicketsWrapperCustomEvent<HTMLTlBuyTicketsWrapperElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
583
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
584
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
585
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
586
+ removeEventListener<K extends keyof HTMLTlBuyTicketsWrapperElementEventMap>(type: K, listener: (this: HTMLTlBuyTicketsWrapperElement, ev: TlBuyTicketsWrapperCustomEvent<HTMLTlBuyTicketsWrapperElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
587
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
588
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
589
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
590
+ }
591
+ var HTMLTlBuyTicketsWrapperElement: {
592
+ prototype: HTMLTlBuyTicketsWrapperElement;
593
+ new (): HTMLTlBuyTicketsWrapperElement;
594
+ };
595
+ interface HTMLTlCartElementEventMap {
596
+ "tlCheckout": { cart: TlCartData };
597
+ "tlItemRemoved": { itemId: string };
598
+ "tlCartUpdated": { cart: TlCartData };
599
+ "tlError": { message: string };
600
+ }
601
+ interface HTMLTlCartElement extends Components.TlCart, HTMLStencilElement {
602
+ addEventListener<K extends keyof HTMLTlCartElementEventMap>(type: K, listener: (this: HTMLTlCartElement, ev: TlCartCustomEvent<HTMLTlCartElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
603
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
604
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
605
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
606
+ removeEventListener<K extends keyof HTMLTlCartElementEventMap>(type: K, listener: (this: HTMLTlCartElement, ev: TlCartCustomEvent<HTMLTlCartElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
607
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
608
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
609
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
610
+ }
611
+ var HTMLTlCartElement: {
612
+ prototype: HTMLTlCartElement;
613
+ new (): HTMLTlCartElement;
614
+ };
615
+ interface HTMLTlCartBadgeElementEventMap {
616
+ "tlClick": { itemCount: number };
617
+ }
618
+ interface HTMLTlCartBadgeElement extends Components.TlCartBadge, HTMLStencilElement {
619
+ addEventListener<K extends keyof HTMLTlCartBadgeElementEventMap>(type: K, listener: (this: HTMLTlCartBadgeElement, ev: TlCartBadgeCustomEvent<HTMLTlCartBadgeElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
620
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
621
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
622
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
623
+ removeEventListener<K extends keyof HTMLTlCartBadgeElementEventMap>(type: K, listener: (this: HTMLTlCartBadgeElement, ev: TlCartBadgeCustomEvent<HTMLTlCartBadgeElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
624
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
625
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
626
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
627
+ }
628
+ var HTMLTlCartBadgeElement: {
629
+ prototype: HTMLTlCartBadgeElement;
630
+ new (): HTMLTlCartBadgeElement;
631
+ };
632
+ interface HTMLTlCartDrawerElementEventMap {
633
+ "tlOpen": void;
634
+ "tlClose": void;
635
+ }
636
+ /**
637
+ * @component tl-cart-drawer
638
+ * A slide-in cart panel (off-canvas) showing the current cart. It opens when
639
+ * anything raises the `ui:cart-requested` bus intent - e.g. wire a
640
+ * `tl-cart-badge`'s click to emit it - and closes on the backdrop, the close
641
+ * button, Escape, or `ui:modal-close-requested`. The panel embeds `<tl-cart>`,
642
+ * so the actual cart rendering / remove / checkout is shared with the inline
643
+ * cart; the drawer only adds the off-canvas chrome.
644
+ * @prop side - which edge the panel slides from (default 'right')
645
+ * @event tlOpen - the drawer opened
646
+ * @event tlClose - the drawer closed
647
+ */
648
+ interface HTMLTlCartDrawerElement extends Components.TlCartDrawer, HTMLStencilElement {
649
+ addEventListener<K extends keyof HTMLTlCartDrawerElementEventMap>(type: K, listener: (this: HTMLTlCartDrawerElement, ev: TlCartDrawerCustomEvent<HTMLTlCartDrawerElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
650
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
651
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
652
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
653
+ removeEventListener<K extends keyof HTMLTlCartDrawerElementEventMap>(type: K, listener: (this: HTMLTlCartDrawerElement, ev: TlCartDrawerCustomEvent<HTMLTlCartDrawerElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
654
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
655
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
656
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
657
+ }
658
+ var HTMLTlCartDrawerElement: {
659
+ prototype: HTMLTlCartDrawerElement;
660
+ new (): HTMLTlCartDrawerElement;
661
+ };
662
+ interface HTMLTlCheckoutWrapperElementEventMap {
663
+ "tl-complete": OrderResult;
664
+ "tl-error": { message: string };
665
+ "tl-close": void;
666
+ }
667
+ /**
668
+ * @component tl-checkout-wrapper
669
+ * Wraps any content and opens the Ticketlayer checkout modal when clicked.
670
+ * Uses the SDK's modal manager which handles the iframe overlay.
671
+ * @example <tl-checkout-wrapper>
672
+ * <button>Proceed to Checkout</button>
673
+ * </tl-checkout-wrapper>
674
+ */
675
+ interface HTMLTlCheckoutWrapperElement extends Components.TlCheckoutWrapper, HTMLStencilElement {
676
+ addEventListener<K extends keyof HTMLTlCheckoutWrapperElementEventMap>(type: K, listener: (this: HTMLTlCheckoutWrapperElement, ev: TlCheckoutWrapperCustomEvent<HTMLTlCheckoutWrapperElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
677
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
678
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
679
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
680
+ removeEventListener<K extends keyof HTMLTlCheckoutWrapperElementEventMap>(type: K, listener: (this: HTMLTlCheckoutWrapperElement, ev: TlCheckoutWrapperCustomEvent<HTMLTlCheckoutWrapperElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
681
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
682
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
683
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
684
+ }
685
+ var HTMLTlCheckoutWrapperElement: {
686
+ prototype: HTMLTlCheckoutWrapperElement;
687
+ new (): HTMLTlCheckoutWrapperElement;
688
+ };
689
+ interface HTMLTlEventCardElementEventMap {
690
+ "tlClick": { eventId: string };
691
+ "tlError": { message: string };
692
+ }
693
+ interface HTMLTlEventCardElement extends Components.TlEventCard, HTMLStencilElement {
694
+ addEventListener<K extends keyof HTMLTlEventCardElementEventMap>(type: K, listener: (this: HTMLTlEventCardElement, ev: TlEventCardCustomEvent<HTMLTlEventCardElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
695
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
696
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
697
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
698
+ removeEventListener<K extends keyof HTMLTlEventCardElementEventMap>(type: K, listener: (this: HTMLTlEventCardElement, ev: TlEventCardCustomEvent<HTMLTlEventCardElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
699
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
700
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
701
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
702
+ }
703
+ var HTMLTlEventCardElement: {
704
+ prototype: HTMLTlEventCardElement;
705
+ new (): HTMLTlEventCardElement;
706
+ };
707
+ interface HTMLTlEventListElementEventMap {
708
+ "tlEventClick": { eventId: string };
709
+ }
710
+ interface HTMLTlEventListElement extends Components.TlEventList, HTMLStencilElement {
711
+ addEventListener<K extends keyof HTMLTlEventListElementEventMap>(type: K, listener: (this: HTMLTlEventListElement, ev: TlEventListCustomEvent<HTMLTlEventListElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
712
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
713
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
714
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
715
+ removeEventListener<K extends keyof HTMLTlEventListElementEventMap>(type: K, listener: (this: HTMLTlEventListElement, ev: TlEventListCustomEvent<HTMLTlEventListElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
716
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
717
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
718
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
719
+ }
720
+ var HTMLTlEventListElement: {
721
+ prototype: HTMLTlEventListElement;
722
+ new (): HTMLTlEventListElement;
723
+ };
724
+ interface HTMLTlLoginElementEventMap {
725
+ "tlAuthChanged": TlAuthChanged;
726
+ "tlMagicLinkSent": { email: string };
727
+ "tlError": { message: string };
728
+ }
729
+ /**
730
+ * tl-login - magic-link sign-in. The customer enters an email, we ask the SDK
731
+ * to send a link (POST /sales/customer-auth/magic-link), then either the link
732
+ * lands back on this page with `?code=` or the customer types the code from
733
+ * the email; both exchange through the SDK (POST /sales/customer-tokens). No
734
+ * password is ever handled here.
735
+ * States: enter email -> check your inbox (resend, enter code) -> signed in
736
+ * (email + sign out).
737
+ * Usage: <tl-login></tl-login>
738
+ * @event tlAuthChanged - signed in or out ({ customer, authenticated })
739
+ * @event tlMagicLinkSent - a link was requested for an email
740
+ * @event tlError - request or code exchange failed
741
+ */
742
+ interface HTMLTlLoginElement extends Components.TlLogin, HTMLStencilElement {
743
+ addEventListener<K extends keyof HTMLTlLoginElementEventMap>(type: K, listener: (this: HTMLTlLoginElement, ev: TlLoginCustomEvent<HTMLTlLoginElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
744
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
745
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
746
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
747
+ removeEventListener<K extends keyof HTMLTlLoginElementEventMap>(type: K, listener: (this: HTMLTlLoginElement, ev: TlLoginCustomEvent<HTMLTlLoginElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
748
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
749
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
750
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
751
+ }
752
+ var HTMLTlLoginElement: {
753
+ prototype: HTMLTlLoginElement;
754
+ new (): HTMLTlLoginElement;
755
+ };
756
+ interface HTMLTlMyOrdersElementEventMap {
757
+ "tlOrderSelect": { orderId: string };
758
+ "tlError": { message: string };
759
+ }
760
+ /**
761
+ * tl-my-orders - the signed-in customer's orders (GET /sales/my-orders through
762
+ * the SDK): event, date, ticket count, total and status per row. Clicking a
763
+ * row expands it to show the order's tickets (tl-order-tickets). Shows
764
+ * tl-login inline when nobody is signed in.
765
+ * Usage: <tl-my-orders></tl-my-orders>
766
+ * @event tlOrderSelect - a row was expanded ({ orderId })
767
+ * @event tlError - the orders could not be loaded
768
+ */
769
+ interface HTMLTlMyOrdersElement extends Components.TlMyOrders, HTMLStencilElement {
770
+ addEventListener<K extends keyof HTMLTlMyOrdersElementEventMap>(type: K, listener: (this: HTMLTlMyOrdersElement, ev: TlMyOrdersCustomEvent<HTMLTlMyOrdersElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
771
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
772
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
773
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
774
+ removeEventListener<K extends keyof HTMLTlMyOrdersElementEventMap>(type: K, listener: (this: HTMLTlMyOrdersElement, ev: TlMyOrdersCustomEvent<HTMLTlMyOrdersElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
775
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
776
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
777
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
778
+ }
779
+ var HTMLTlMyOrdersElement: {
780
+ prototype: HTMLTlMyOrdersElement;
781
+ new (): HTMLTlMyOrdersElement;
782
+ };
783
+ interface HTMLTlOccurrenceSelectorElementEventMap {
784
+ "tlSelect": { occurrence: TlOccurrence };
785
+ }
786
+ interface HTMLTlOccurrenceSelectorElement extends Components.TlOccurrenceSelector, HTMLStencilElement {
787
+ addEventListener<K extends keyof HTMLTlOccurrenceSelectorElementEventMap>(type: K, listener: (this: HTMLTlOccurrenceSelectorElement, ev: TlOccurrenceSelectorCustomEvent<HTMLTlOccurrenceSelectorElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
788
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
789
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
790
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
791
+ removeEventListener<K extends keyof HTMLTlOccurrenceSelectorElementEventMap>(type: K, listener: (this: HTMLTlOccurrenceSelectorElement, ev: TlOccurrenceSelectorCustomEvent<HTMLTlOccurrenceSelectorElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
792
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
793
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
794
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
795
+ }
796
+ var HTMLTlOccurrenceSelectorElement: {
797
+ prototype: HTMLTlOccurrenceSelectorElement;
798
+ new (): HTMLTlOccurrenceSelectorElement;
799
+ };
800
+ interface HTMLTlOrderConfirmationElementEventMap {
801
+ "tlOrderLoaded": { order: TlOrderData };
802
+ "tlError": { message: string };
803
+ }
804
+ /**
805
+ * tl-order-confirmation - the "thank you" page block: order reference,
806
+ * customer email, event and date, ticket lines, totals, then the tickets
807
+ * themselves (tl-order-tickets, each with a Download PDF link).
808
+ * Finds its order three ways, in priority order:
809
+ * 1. the `order-id` prop
810
+ * 2. the URL (`?orderId=`), the contract the hosted box office confirmation
811
+ * page uses; `?redirect_status=` from a Stripe return is honoured too
812
+ * 3. the SDK's `checkout:completed` event, for a page that mounts this before
813
+ * the customer pays
814
+ * Usage: <tl-order-confirmation order-id="ord_xxx"></tl-order-confirmation>
815
+ * @event tlOrderLoaded - the order was loaded
816
+ * @event tlError - the order could not be loaded
817
+ */
818
+ interface HTMLTlOrderConfirmationElement extends Components.TlOrderConfirmation, HTMLStencilElement {
819
+ addEventListener<K extends keyof HTMLTlOrderConfirmationElementEventMap>(type: K, listener: (this: HTMLTlOrderConfirmationElement, ev: TlOrderConfirmationCustomEvent<HTMLTlOrderConfirmationElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
820
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
821
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
822
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
823
+ removeEventListener<K extends keyof HTMLTlOrderConfirmationElementEventMap>(type: K, listener: (this: HTMLTlOrderConfirmationElement, ev: TlOrderConfirmationCustomEvent<HTMLTlOrderConfirmationElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
824
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
825
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
826
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
827
+ }
828
+ var HTMLTlOrderConfirmationElement: {
829
+ prototype: HTMLTlOrderConfirmationElement;
830
+ new (): HTMLTlOrderConfirmationElement;
831
+ };
832
+ /**
833
+ * tl-order-tickets - renders all the tickets for an order as scannable QR
834
+ * cards with PDF download. Fetches the order through the SDK (order-access
835
+ * gated by the session), so it works on a confirmation page or in an account.
836
+ * Usage: <tl-order-tickets order-id="ord_xxx"></tl-order-tickets>
837
+ */
838
+ interface HTMLTlOrderTicketsElement extends Components.TlOrderTickets, HTMLStencilElement {
839
+ }
840
+ var HTMLTlOrderTicketsElement: {
841
+ prototype: HTMLTlOrderTicketsElement;
842
+ new (): HTMLTlOrderTicketsElement;
843
+ };
844
+ interface HTMLTlPromoCodeElementEventMap {
845
+ "tlPromoApplied": TlPromoApplied;
846
+ "tlError": { message: string };
847
+ }
848
+ /**
849
+ * tl-promo-code - an input plus Apply button that redeems a presale or promo
850
+ * code for the current cart (POST /sales/presale-codes/redeem through the
851
+ * SDK). Redemption unlocks gated pricing on the customer; the SDK re-reads the
852
+ * cart and publishes cart:updated, so tl-cart and badges re-render on their own.
853
+ * The API has no un-redeem, so the applied state offers only "use a different
854
+ * code", which clears the input for another redemption.
855
+ * Usage: <tl-promo-code></tl-promo-code>
856
+ * @event tlPromoApplied - a code was redeemed ({ code, benefit, alreadyHeld, cart })
857
+ * @event tlError - the code was rejected
858
+ */
859
+ interface HTMLTlPromoCodeElement extends Components.TlPromoCode, HTMLStencilElement {
860
+ addEventListener<K extends keyof HTMLTlPromoCodeElementEventMap>(type: K, listener: (this: HTMLTlPromoCodeElement, ev: TlPromoCodeCustomEvent<HTMLTlPromoCodeElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
861
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
862
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
863
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
864
+ removeEventListener<K extends keyof HTMLTlPromoCodeElementEventMap>(type: K, listener: (this: HTMLTlPromoCodeElement, ev: TlPromoCodeCustomEvent<HTMLTlPromoCodeElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
865
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
866
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
867
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
868
+ }
869
+ var HTMLTlPromoCodeElement: {
870
+ prototype: HTMLTlPromoCodeElement;
871
+ new (): HTMLTlPromoCodeElement;
872
+ };
873
+ interface HTMLTlSeatMapElementEventMap {
874
+ "tlReady": void;
875
+ "tlLoad": { seatMapId: string };
876
+ "tlError": { error: string };
877
+ "tlSeatAdded": { seatId: string; ticketTypeId: string };
878
+ "tlSeatRemoved": { seatId: string };
879
+ "tlCartChange": { seatIds: string[] };
880
+ }
881
+ interface HTMLTlSeatMapElement extends Components.TlSeatMap, HTMLStencilElement {
882
+ addEventListener<K extends keyof HTMLTlSeatMapElementEventMap>(type: K, listener: (this: HTMLTlSeatMapElement, ev: TlSeatMapCustomEvent<HTMLTlSeatMapElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
883
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
884
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
885
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
886
+ removeEventListener<K extends keyof HTMLTlSeatMapElementEventMap>(type: K, listener: (this: HTMLTlSeatMapElement, ev: TlSeatMapCustomEvent<HTMLTlSeatMapElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
887
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
888
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
889
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
890
+ }
891
+ var HTMLTlSeatMapElement: {
892
+ prototype: HTMLTlSeatMapElement;
893
+ new (): HTMLTlSeatMapElement;
894
+ };
895
+ /**
896
+ * tl-ticket - a single event ticket: a scannable QR (the redemption token),
897
+ * ticket name / seat / holder, and a PDF download. Greys out + stamps
898
+ * Used/Void when redeemed or cancelled.
899
+ */
900
+ interface HTMLTlTicketElement extends Components.TlTicket, HTMLStencilElement {
901
+ }
902
+ var HTMLTlTicketElement: {
903
+ prototype: HTMLTlTicketElement;
904
+ new (): HTMLTlTicketElement;
905
+ };
906
+ interface HTMLTlTicketSelectorElementEventMap {
907
+ "tlAddToCart": { items: AddToCartItem[] };
908
+ "tlQuantityChange": { ticketTypeId: string; quantity: number; total: number };
909
+ "tlError": { message: string };
910
+ }
911
+ interface HTMLTlTicketSelectorElement extends Components.TlTicketSelector, HTMLStencilElement {
912
+ addEventListener<K extends keyof HTMLTlTicketSelectorElementEventMap>(type: K, listener: (this: HTMLTlTicketSelectorElement, ev: TlTicketSelectorCustomEvent<HTMLTlTicketSelectorElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
913
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
914
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
915
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
916
+ removeEventListener<K extends keyof HTMLTlTicketSelectorElementEventMap>(type: K, listener: (this: HTMLTlTicketSelectorElement, ev: TlTicketSelectorCustomEvent<HTMLTlTicketSelectorElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
917
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
918
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
919
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
920
+ }
921
+ var HTMLTlTicketSelectorElement: {
922
+ prototype: HTMLTlTicketSelectorElement;
923
+ new (): HTMLTlTicketSelectorElement;
924
+ };
925
+ interface HTMLElementTagNameMap {
926
+ "tl-buy-modal": HTMLTlBuyModalElement;
927
+ "tl-buy-tickets-button": HTMLTlBuyTicketsButtonElement;
928
+ "tl-buy-tickets-wrapper": HTMLTlBuyTicketsWrapperElement;
929
+ "tl-cart": HTMLTlCartElement;
930
+ "tl-cart-badge": HTMLTlCartBadgeElement;
931
+ "tl-cart-drawer": HTMLTlCartDrawerElement;
932
+ "tl-checkout-wrapper": HTMLTlCheckoutWrapperElement;
933
+ "tl-event-card": HTMLTlEventCardElement;
934
+ "tl-event-list": HTMLTlEventListElement;
935
+ "tl-login": HTMLTlLoginElement;
936
+ "tl-my-orders": HTMLTlMyOrdersElement;
937
+ "tl-occurrence-selector": HTMLTlOccurrenceSelectorElement;
938
+ "tl-order-confirmation": HTMLTlOrderConfirmationElement;
939
+ "tl-order-tickets": HTMLTlOrderTicketsElement;
940
+ "tl-promo-code": HTMLTlPromoCodeElement;
941
+ "tl-seat-map": HTMLTlSeatMapElement;
942
+ "tl-ticket": HTMLTlTicketElement;
943
+ "tl-ticket-selector": HTMLTlTicketSelectorElement;
944
+ }
945
+ }
946
+ declare namespace LocalJSX {
947
+ /**
948
+ * @component tl-buy-modal
949
+ * The in-page buy-tickets funnel: occurrence → ticket selection → added.
950
+ * A NATIVE Elements overlay (no iframe) - it simply composes the existing
951
+ * `tl-occurrence-selector` and `tl-ticket-selector`, which already bind to the
952
+ * SDK and add to the cart. Because it's pure browse/cart (zero PCI surface), it
953
+ * renders in-page identically on HBO and on any third-party embed bound to
954
+ * `window.Ticketlayer`. Only the *checkout* step crosses into an iframe.
955
+ * It is not placed in markup by hosts: the SDK's buy-modal manager mounts it on
956
+ * demand when something emits `ui:event-modal-requested` (e.g. a
957
+ * `tl-buy-tickets-button` or a calendar date click), and removes it on close.
958
+ * @event tlClose - user dismissed the modal (keep browsing)
959
+ * @event tlCheckout - user chose to proceed to checkout (manager hands off to
960
+ * the checkout intent: iframe on embeds, /checkout on HBO)
961
+ * @event tlError - the event couldn't be loaded
962
+ */
963
+ interface TlBuyModal {
964
+ /**
965
+ * Event to sell tickets for.
966
+ */
967
+ "eventId": string;
968
+ /**
969
+ * Optionally open straight to ticket selection for this occurrence.
970
+ */
971
+ "occurrenceId"?: string;
972
+ "onTlCheckout"?: (event: TlBuyModalCustomEvent<void>) => void;
973
+ "onTlClose"?: (event: TlBuyModalCustomEvent<void>) => void;
974
+ "onTlError"?: (event: TlBuyModalCustomEvent<{ message: string }>) => void;
975
+ }
976
+ interface TlBuyTicketsButton {
977
+ /**
978
+ * Currency code for price formatting
979
+ * @default 'GBP'
980
+ */
981
+ "currency"?: string;
982
+ /**
983
+ * Disabled state
984
+ * @default false
985
+ */
986
+ "disabled"?: boolean;
987
+ /**
988
+ * Event ID to purchase tickets for
989
+ */
990
+ "eventId": string;
991
+ /**
992
+ * Full width button
993
+ * @default false
994
+ */
995
+ "fullWidth"?: boolean;
996
+ /**
997
+ * Button label override (default depends on state)
998
+ */
999
+ "label"?: string;
1000
+ /**
1001
+ * Optional pre-selected occurrence ID
1002
+ */
1003
+ "occurrenceId"?: string;
1004
+ /**
1005
+ * Emitted when button is clicked (before modal opens)
1006
+ */
1007
+ "onTlClick"?: (event: TlBuyTicketsButtonCustomEvent<{ eventId: string; occurrenceId?: string }>) => void;
1008
+ /**
1009
+ * Price to display (in minor units e.g. pence)
1010
+ */
1011
+ "price"?: number;
1012
+ /**
1013
+ * Show price prefix text
1014
+ * @default 'From'
1015
+ */
1016
+ "pricePrefix"?: string;
1017
+ /**
1018
+ * Button size
1019
+ * @default 'md'
1020
+ */
1021
+ "size"?: ButtonSize;
1022
+ /**
1023
+ * Button state - determines colour, label, and icon
1024
+ * @default 'available'
1025
+ */
1026
+ "state"?: ButtonState;
1027
+ /**
1028
+ * Button variant
1029
+ * @default 'primary'
1030
+ */
1031
+ "variant"?: ButtonVariant;
1032
+ }
1033
+ /**
1034
+ * @component tl-buy-tickets-wrapper
1035
+ * Wraps any content and opens the Ticketlayer modal when clicked.
1036
+ * Uses the SDK's modal manager which handles the iframe overlay.
1037
+ * @example <tl-buy-tickets-wrapper event-id="evt_001">
1038
+ * <button>Buy Tickets</button>
1039
+ * </tl-buy-tickets-wrapper>
1040
+ * @example <tl-buy-tickets-wrapper event-id="evt_001" occurrence-id="occ_001">
1041
+ * <button>Get Tickets for Saturday</button>
1042
+ * </tl-buy-tickets-wrapper>
1043
+ */
1044
+ interface TlBuyTicketsWrapper {
1045
+ /**
1046
+ * Whether the wrapper is disabled
1047
+ * @default false
1048
+ */
1049
+ "disabled"?: boolean;
1050
+ /**
1051
+ * The event ID to purchase tickets for
1052
+ */
1053
+ "eventId": string;
1054
+ /**
1055
+ * Optional specific occurrence ID (skips occurrence selector)
1056
+ */
1057
+ "occurrenceId"?: string;
1058
+ /**
1059
+ * Emitted when the modal closes
1060
+ */
1061
+ "onTl-close"?: (event: TlBuyTicketsWrapperCustomEvent<void>) => void;
1062
+ /**
1063
+ * Emitted when purchase completes successfully
1064
+ */
1065
+ "onTl-complete"?: (event: TlBuyTicketsWrapperCustomEvent<OrderResult>) => void;
1066
+ /**
1067
+ * Emitted when an error occurs
1068
+ */
1069
+ "onTl-error"?: (event: TlBuyTicketsWrapperCustomEvent<{ message: string }>) => void;
1070
+ }
1071
+ interface TlCart {
1072
+ /**
1073
+ * Checkout button label
1074
+ * @default 'Checkout'
1075
+ */
1076
+ "checkoutLabel"?: string;
1077
+ /**
1078
+ * Compact mode - hides some details
1079
+ * @default false
1080
+ */
1081
+ "compact"?: boolean;
1082
+ /**
1083
+ * Emitted when cart is updated
1084
+ */
1085
+ "onTlCartUpdated"?: (event: TlCartCustomEvent<{ cart: TlCartData }>) => void;
1086
+ /**
1087
+ * Emitted when checkout is clicked
1088
+ */
1089
+ "onTlCheckout"?: (event: TlCartCustomEvent<{ cart: TlCartData }>) => void;
1090
+ /**
1091
+ * Emitted on error
1092
+ */
1093
+ "onTlError"?: (event: TlCartCustomEvent<{ message: string }>) => void;
1094
+ /**
1095
+ * Emitted when item is removed
1096
+ */
1097
+ "onTlItemRemoved"?: (event: TlCartCustomEvent<{ itemId: string }>) => void;
1098
+ /**
1099
+ * Show checkout button
1100
+ * @default true
1101
+ */
1102
+ "showCheckoutButton"?: boolean;
1103
+ /**
1104
+ * Show remove item buttons
1105
+ * @default true
1106
+ */
1107
+ "showRemoveButtons"?: boolean;
1108
+ }
1109
+ interface TlCartBadge {
1110
+ /**
1111
+ * Badge only mode - only shows the count bubble, no icon or button
1112
+ * @default false
1113
+ */
1114
+ "badgeOnly"?: boolean;
1115
+ /**
1116
+ * Custom icon (emoji or text). If not provided, uses cart SVG
1117
+ */
1118
+ "icon"?: string;
1119
+ /**
1120
+ * Emitted when the badge is clicked
1121
+ */
1122
+ "onTlClick"?: (event: TlCartBadgeCustomEvent<{ itemCount: number }>) => void;
1123
+ /**
1124
+ * Show the badge even when count is 0
1125
+ * @default false
1126
+ */
1127
+ "showEmpty"?: boolean;
1128
+ /**
1129
+ * Size variant
1130
+ * @default 'md'
1131
+ */
1132
+ "size"?: 'sm' | 'md' | 'lg';
1133
+ }
1134
+ /**
1135
+ * @component tl-cart-drawer
1136
+ * A slide-in cart panel (off-canvas) showing the current cart. It opens when
1137
+ * anything raises the `ui:cart-requested` bus intent - e.g. wire a
1138
+ * `tl-cart-badge`'s click to emit it - and closes on the backdrop, the close
1139
+ * button, Escape, or `ui:modal-close-requested`. The panel embeds `<tl-cart>`,
1140
+ * so the actual cart rendering / remove / checkout is shared with the inline
1141
+ * cart; the drawer only adds the off-canvas chrome.
1142
+ * @prop side - which edge the panel slides from (default 'right')
1143
+ * @event tlOpen - the drawer opened
1144
+ * @event tlClose - the drawer closed
1145
+ */
1146
+ interface TlCartDrawer {
1147
+ /**
1148
+ * Heading shown at the top of the panel.
1149
+ * @default 'Your cart'
1150
+ */
1151
+ "heading"?: string;
1152
+ "onTlClose"?: (event: TlCartDrawerCustomEvent<void>) => void;
1153
+ "onTlOpen"?: (event: TlCartDrawerCustomEvent<void>) => void;
1154
+ /**
1155
+ * Controlled open state (also driven by the `ui:cart-requested` intent).
1156
+ * @default false
1157
+ */
1158
+ "open"?: boolean;
1159
+ /**
1160
+ * Edge the panel slides in from.
1161
+ * @default 'right'
1162
+ */
1163
+ "side"?: 'right' | 'left';
1164
+ }
1165
+ /**
1166
+ * @component tl-checkout-wrapper
1167
+ * Wraps any content and opens the Ticketlayer checkout modal when clicked.
1168
+ * Uses the SDK's modal manager which handles the iframe overlay.
1169
+ * @example <tl-checkout-wrapper>
1170
+ * <button>Proceed to Checkout</button>
1171
+ * </tl-checkout-wrapper>
1172
+ */
1173
+ interface TlCheckoutWrapper {
1174
+ /**
1175
+ * Whether the wrapper is disabled
1176
+ * @default false
1177
+ */
1178
+ "disabled"?: boolean;
1179
+ /**
1180
+ * Emitted when the modal closes
1181
+ */
1182
+ "onTl-close"?: (event: TlCheckoutWrapperCustomEvent<void>) => void;
1183
+ /**
1184
+ * Emitted when checkout completes successfully
1185
+ */
1186
+ "onTl-complete"?: (event: TlCheckoutWrapperCustomEvent<OrderResult>) => void;
1187
+ /**
1188
+ * Emitted when an error occurs
1189
+ */
1190
+ "onTl-error"?: (event: TlCheckoutWrapperCustomEvent<{ message: string }>) => void;
1191
+ }
1192
+ interface TlEventCard {
1193
+ /**
1194
+ * Event data to display (tl-event-list passes this)
1195
+ */
1196
+ "event"?: TlEventCardEvent;
1197
+ /**
1198
+ * Load the event from the SDK by id when no `event` is given, so a single card works standalone (e.g. on a Webflow page).
1199
+ */
1200
+ "eventId"?: string;
1201
+ /**
1202
+ * Emitted when the card is clicked
1203
+ */
1204
+ "onTlClick"?: (event: TlEventCardCustomEvent<{ eventId: string }>) => void;
1205
+ /**
1206
+ * Emitted when the event could not be loaded by id
1207
+ */
1208
+ "onTlError"?: (event: TlEventCardCustomEvent<{ message: string }>) => void;
1209
+ }
1210
+ interface TlEventList {
1211
+ /**
1212
+ * Category filter
1213
+ */
1214
+ "category"?: string;
1215
+ /**
1216
+ * Columns for grid layout (1, 2, 3, or 4)
1217
+ * @default 3
1218
+ */
1219
+ "columns"?: number;
1220
+ /**
1221
+ * Maximum number of events to display
1222
+ * @default 12
1223
+ */
1224
+ "limit"?: number;
1225
+ /**
1226
+ * Emitted when an event card is clicked
1227
+ */
1228
+ "onTlEventClick"?: (event: TlEventListCustomEvent<{ eventId: string }>) => void;
1229
+ }
1230
+ /**
1231
+ * tl-login - magic-link sign-in. The customer enters an email, we ask the SDK
1232
+ * to send a link (POST /sales/customer-auth/magic-link), then either the link
1233
+ * lands back on this page with `?code=` or the customer types the code from
1234
+ * the email; both exchange through the SDK (POST /sales/customer-tokens). No
1235
+ * password is ever handled here.
1236
+ * States: enter email -> check your inbox (resend, enter code) -> signed in
1237
+ * (email + sign out).
1238
+ * Usage: <tl-login></tl-login>
1239
+ * @event tlAuthChanged - signed in or out ({ customer, authenticated })
1240
+ * @event tlMagicLinkSent - a link was requested for an email
1241
+ * @event tlError - request or code exchange failed
1242
+ */
1243
+ interface TlLogin {
1244
+ /**
1245
+ * Offer a "enter the code" path alongside the emailed link (default true).
1246
+ * @default true
1247
+ */
1248
+ "allowCodeEntry"?: boolean;
1249
+ /**
1250
+ * Heading for the email step.
1251
+ * @default 'Sign in'
1252
+ */
1253
+ "heading"?: string;
1254
+ "onTlAuthChanged"?: (event: TlLoginCustomEvent<TlAuthChanged>) => void;
1255
+ "onTlError"?: (event: TlLoginCustomEvent<{ message: string }>) => void;
1256
+ "onTlMagicLinkSent"?: (event: TlLoginCustomEvent<{ email: string }>) => void;
1257
+ }
1258
+ /**
1259
+ * tl-my-orders - the signed-in customer's orders (GET /sales/my-orders through
1260
+ * the SDK): event, date, ticket count, total and status per row. Clicking a
1261
+ * row expands it to show the order's tickets (tl-order-tickets). Shows
1262
+ * tl-login inline when nobody is signed in.
1263
+ * Usage: <tl-my-orders></tl-my-orders>
1264
+ * @event tlOrderSelect - a row was expanded ({ orderId })
1265
+ * @event tlError - the orders could not be loaded
1266
+ */
1267
+ interface TlMyOrders {
1268
+ /**
1269
+ * Columns for the expanded ticket grid.
1270
+ * @default 2
1271
+ */
1272
+ "columns"?: number;
1273
+ /**
1274
+ * Copy for the empty state.
1275
+ * @default "When you buy tickets they'll show up here, ready to view and download."
1276
+ */
1277
+ "emptyMessage"?: string;
1278
+ "onTlError"?: (event: TlMyOrdersCustomEvent<{ message: string }>) => void;
1279
+ "onTlOrderSelect"?: (event: TlMyOrdersCustomEvent<{ orderId: string }>) => void;
1280
+ }
1281
+ interface TlOccurrenceSelector {
1282
+ /**
1283
+ * Force a specific display mode (auto-detected if not set)
1284
+ */
1285
+ "displayMode"?: DisplayMode;
1286
+ /**
1287
+ * Event ID to fetch occurrences for
1288
+ */
1289
+ "eventId": string;
1290
+ /**
1291
+ * Emitted when an occurrence is selected
1292
+ */
1293
+ "onTlSelect"?: (event: TlOccurrenceSelectorCustomEvent<{ occurrence: TlOccurrence }>) => void;
1294
+ /**
1295
+ * Layout orientation (auto = horizontal on desktop, vertical on mobile)
1296
+ * @default 'auto'
1297
+ */
1298
+ "orientation"?: Orientation;
1299
+ /**
1300
+ * Theme configuration
1301
+ */
1302
+ "theme"?: TlOccurrenceSelectorTheme;
1303
+ }
1304
+ /**
1305
+ * tl-order-confirmation - the "thank you" page block: order reference,
1306
+ * customer email, event and date, ticket lines, totals, then the tickets
1307
+ * themselves (tl-order-tickets, each with a Download PDF link).
1308
+ * Finds its order three ways, in priority order:
1309
+ * 1. the `order-id` prop
1310
+ * 2. the URL (`?orderId=`), the contract the hosted box office confirmation
1311
+ * page uses; `?redirect_status=` from a Stripe return is honoured too
1312
+ * 3. the SDK's `checkout:completed` event, for a page that mounts this before
1313
+ * the customer pays
1314
+ * Usage: <tl-order-confirmation order-id="ord_xxx"></tl-order-confirmation>
1315
+ * @event tlOrderLoaded - the order was loaded
1316
+ * @event tlError - the order could not be loaded
1317
+ */
1318
+ interface TlOrderConfirmation {
1319
+ /**
1320
+ * Columns for the ticket grid.
1321
+ * @default 2
1322
+ */
1323
+ "columns"?: number;
1324
+ /**
1325
+ * Email to show when the order view carries none (a host that collected it at checkout).
1326
+ */
1327
+ "customerEmail"?: string;
1328
+ "onTlError"?: (event: TlOrderConfirmationCustomEvent<{ message: string }>) => void;
1329
+ "onTlOrderLoaded"?: (event: TlOrderConfirmationCustomEvent<{ order: TlOrderData }>) => void;
1330
+ /**
1331
+ * The order to show. Falls back to `?orderId=` in the page URL.
1332
+ */
1333
+ "orderId"?: string;
1334
+ /**
1335
+ * Mount tl-order-tickets under the summary (default true).
1336
+ * @default true
1337
+ */
1338
+ "showTickets"?: boolean;
1339
+ }
1340
+ /**
1341
+ * tl-order-tickets - renders all the tickets for an order as scannable QR
1342
+ * cards with PDF download. Fetches the order through the SDK (order-access
1343
+ * gated by the session), so it works on a confirmation page or in an account.
1344
+ * Usage: <tl-order-tickets order-id="ord_xxx"></tl-order-tickets>
1345
+ */
1346
+ interface TlOrderTickets {
1347
+ /**
1348
+ * Columns in the grid (default 2).
1349
+ * @default 2
1350
+ */
1351
+ "columns"?: number;
1352
+ /**
1353
+ * The order whose tickets to show.
1354
+ */
1355
+ "orderId": string;
1356
+ }
1357
+ /**
1358
+ * tl-promo-code - an input plus Apply button that redeems a presale or promo
1359
+ * code for the current cart (POST /sales/presale-codes/redeem through the
1360
+ * SDK). Redemption unlocks gated pricing on the customer; the SDK re-reads the
1361
+ * cart and publishes cart:updated, so tl-cart and badges re-render on their own.
1362
+ * The API has no un-redeem, so the applied state offers only "use a different
1363
+ * code", which clears the input for another redemption.
1364
+ * Usage: <tl-promo-code></tl-promo-code>
1365
+ * @event tlPromoApplied - a code was redeemed ({ code, benefit, alreadyHeld, cart })
1366
+ * @event tlError - the code was rejected
1367
+ */
1368
+ interface TlPromoCode {
1369
+ /**
1370
+ * Apply button label.
1371
+ * @default 'Apply'
1372
+ */
1373
+ "buttonLabel"?: string;
1374
+ "onTlError"?: (event: TlPromoCodeCustomEvent<{ message: string }>) => void;
1375
+ "onTlPromoApplied"?: (event: TlPromoCodeCustomEvent<TlPromoApplied>) => void;
1376
+ /**
1377
+ * Input placeholder.
1378
+ * @default 'Promo or presale code'
1379
+ */
1380
+ "placeholder"?: string;
1381
+ }
1382
+ interface TlSeatMap {
1383
+ /**
1384
+ * API URL for the seat map data
1385
+ * @default 'https://api.ticketlayer.com'
1386
+ */
1387
+ "apiUrl"?: string;
1388
+ /**
1389
+ * Base URL for the hosted seat map (HBO URL)
1390
+ * @default 'https://checkout.ticketlayer.com'
1391
+ */
1392
+ "hboUrl"?: string;
1393
+ /**
1394
+ * Height of the seat map
1395
+ * @default '600px'
1396
+ */
1397
+ "height"?: string;
1398
+ /**
1399
+ * Occurrence ID to show seat map for
1400
+ */
1401
+ "occurrenceId": string;
1402
+ /**
1403
+ * Emitted when cart seats change
1404
+ */
1405
+ "onTlCartChange"?: (event: TlSeatMapCustomEvent<{ seatIds: string[] }>) => void;
1406
+ /**
1407
+ * Emitted when an error occurs
1408
+ */
1409
+ "onTlError"?: (event: TlSeatMapCustomEvent<{ error: string }>) => void;
1410
+ /**
1411
+ * Emitted when seat map is loaded
1412
+ */
1413
+ "onTlLoad"?: (event: TlSeatMapCustomEvent<{ seatMapId: string }>) => void;
1414
+ /**
1415
+ * Emitted when seat map is ready
1416
+ */
1417
+ "onTlReady"?: (event: TlSeatMapCustomEvent<void>) => void;
1418
+ /**
1419
+ * Emitted when a seat is added to cart
1420
+ */
1421
+ "onTlSeatAdded"?: (event: TlSeatMapCustomEvent<{ seatId: string; ticketTypeId: string }>) => void;
1422
+ /**
1423
+ * Emitted when a seat is removed from cart
1424
+ */
1425
+ "onTlSeatRemoved"?: (event: TlSeatMapCustomEvent<{ seatId: string }>) => void;
1426
+ /**
1427
+ * Width of the seat map
1428
+ * @default '100%'
1429
+ */
1430
+ "width"?: string;
1431
+ }
1432
+ /**
1433
+ * tl-ticket - a single event ticket: a scannable QR (the redemption token),
1434
+ * ticket name / seat / holder, and a PDF download. Greys out + stamps
1435
+ * Used/Void when redeemed or cancelled.
1436
+ */
1437
+ interface TlTicket {
1438
+ /**
1439
+ * Order id this ticket belongs to (for the PDF download).
1440
+ */
1441
+ "orderId": string;
1442
+ /**
1443
+ * The ticket to render.
1444
+ */
1445
+ "ticket": TlTicketData;
1446
+ }
1447
+ interface TlTicketSelector {
1448
+ /**
1449
+ * Button label
1450
+ * @default 'Add to Cart'
1451
+ */
1452
+ "buttonLabel"?: string;
1453
+ /**
1454
+ * Event ID
1455
+ */
1456
+ "eventId": string;
1457
+ /**
1458
+ * Occurrence ID
1459
+ */
1460
+ "occurrenceId": string;
1461
+ /**
1462
+ * Emitted when items are added to cart
1463
+ */
1464
+ "onTlAddToCart"?: (event: TlTicketSelectorCustomEvent<{ items: AddToCartItem[] }>) => void;
1465
+ /**
1466
+ * Emitted on error
1467
+ */
1468
+ "onTlError"?: (event: TlTicketSelectorCustomEvent<{ message: string }>) => void;
1469
+ /**
1470
+ * Emitted when quantity changes
1471
+ */
1472
+ "onTlQuantityChange"?: (event: TlTicketSelectorCustomEvent<{ ticketTypeId: string; quantity: number; total: number }>) => void;
1473
+ /**
1474
+ * Show add to cart button
1475
+ * @default true
1476
+ */
1477
+ "showButton"?: boolean;
1478
+ }
1479
+ interface IntrinsicElements {
1480
+ "tl-buy-modal": TlBuyModal;
1481
+ "tl-buy-tickets-button": TlBuyTicketsButton;
1482
+ "tl-buy-tickets-wrapper": TlBuyTicketsWrapper;
1483
+ "tl-cart": TlCart;
1484
+ "tl-cart-badge": TlCartBadge;
1485
+ "tl-cart-drawer": TlCartDrawer;
1486
+ "tl-checkout-wrapper": TlCheckoutWrapper;
1487
+ "tl-event-card": TlEventCard;
1488
+ "tl-event-list": TlEventList;
1489
+ "tl-login": TlLogin;
1490
+ "tl-my-orders": TlMyOrders;
1491
+ "tl-occurrence-selector": TlOccurrenceSelector;
1492
+ "tl-order-confirmation": TlOrderConfirmation;
1493
+ "tl-order-tickets": TlOrderTickets;
1494
+ "tl-promo-code": TlPromoCode;
1495
+ "tl-seat-map": TlSeatMap;
1496
+ "tl-ticket": TlTicket;
1497
+ "tl-ticket-selector": TlTicketSelector;
1498
+ }
1499
+ }
1500
+ export { LocalJSX as JSX };
1501
+ declare module "@stencil/core" {
1502
+ export namespace JSX {
1503
+ interface IntrinsicElements {
1504
+ /**
1505
+ * @component tl-buy-modal
1506
+ * The in-page buy-tickets funnel: occurrence → ticket selection → added.
1507
+ * A NATIVE Elements overlay (no iframe) - it simply composes the existing
1508
+ * `tl-occurrence-selector` and `tl-ticket-selector`, which already bind to the
1509
+ * SDK and add to the cart. Because it's pure browse/cart (zero PCI surface), it
1510
+ * renders in-page identically on HBO and on any third-party embed bound to
1511
+ * `window.Ticketlayer`. Only the *checkout* step crosses into an iframe.
1512
+ * It is not placed in markup by hosts: the SDK's buy-modal manager mounts it on
1513
+ * demand when something emits `ui:event-modal-requested` (e.g. a
1514
+ * `tl-buy-tickets-button` or a calendar date click), and removes it on close.
1515
+ * @event tlClose - user dismissed the modal (keep browsing)
1516
+ * @event tlCheckout - user chose to proceed to checkout (manager hands off to
1517
+ * the checkout intent: iframe on embeds, /checkout on HBO)
1518
+ * @event tlError - the event couldn't be loaded
1519
+ */
1520
+ "tl-buy-modal": LocalJSX.TlBuyModal & JSXBase.HTMLAttributes<HTMLTlBuyModalElement>;
1521
+ "tl-buy-tickets-button": LocalJSX.TlBuyTicketsButton & JSXBase.HTMLAttributes<HTMLTlBuyTicketsButtonElement>;
1522
+ /**
1523
+ * @component tl-buy-tickets-wrapper
1524
+ * Wraps any content and opens the Ticketlayer modal when clicked.
1525
+ * Uses the SDK's modal manager which handles the iframe overlay.
1526
+ * @example <tl-buy-tickets-wrapper event-id="evt_001">
1527
+ * <button>Buy Tickets</button>
1528
+ * </tl-buy-tickets-wrapper>
1529
+ * @example <tl-buy-tickets-wrapper event-id="evt_001" occurrence-id="occ_001">
1530
+ * <button>Get Tickets for Saturday</button>
1531
+ * </tl-buy-tickets-wrapper>
1532
+ */
1533
+ "tl-buy-tickets-wrapper": LocalJSX.TlBuyTicketsWrapper & JSXBase.HTMLAttributes<HTMLTlBuyTicketsWrapperElement>;
1534
+ "tl-cart": LocalJSX.TlCart & JSXBase.HTMLAttributes<HTMLTlCartElement>;
1535
+ "tl-cart-badge": LocalJSX.TlCartBadge & JSXBase.HTMLAttributes<HTMLTlCartBadgeElement>;
1536
+ /**
1537
+ * @component tl-cart-drawer
1538
+ * A slide-in cart panel (off-canvas) showing the current cart. It opens when
1539
+ * anything raises the `ui:cart-requested` bus intent - e.g. wire a
1540
+ * `tl-cart-badge`'s click to emit it - and closes on the backdrop, the close
1541
+ * button, Escape, or `ui:modal-close-requested`. The panel embeds `<tl-cart>`,
1542
+ * so the actual cart rendering / remove / checkout is shared with the inline
1543
+ * cart; the drawer only adds the off-canvas chrome.
1544
+ * @prop side - which edge the panel slides from (default 'right')
1545
+ * @event tlOpen - the drawer opened
1546
+ * @event tlClose - the drawer closed
1547
+ */
1548
+ "tl-cart-drawer": LocalJSX.TlCartDrawer & JSXBase.HTMLAttributes<HTMLTlCartDrawerElement>;
1549
+ /**
1550
+ * @component tl-checkout-wrapper
1551
+ * Wraps any content and opens the Ticketlayer checkout modal when clicked.
1552
+ * Uses the SDK's modal manager which handles the iframe overlay.
1553
+ * @example <tl-checkout-wrapper>
1554
+ * <button>Proceed to Checkout</button>
1555
+ * </tl-checkout-wrapper>
1556
+ */
1557
+ "tl-checkout-wrapper": LocalJSX.TlCheckoutWrapper & JSXBase.HTMLAttributes<HTMLTlCheckoutWrapperElement>;
1558
+ "tl-event-card": LocalJSX.TlEventCard & JSXBase.HTMLAttributes<HTMLTlEventCardElement>;
1559
+ "tl-event-list": LocalJSX.TlEventList & JSXBase.HTMLAttributes<HTMLTlEventListElement>;
1560
+ /**
1561
+ * tl-login - magic-link sign-in. The customer enters an email, we ask the SDK
1562
+ * to send a link (POST /sales/customer-auth/magic-link), then either the link
1563
+ * lands back on this page with `?code=` or the customer types the code from
1564
+ * the email; both exchange through the SDK (POST /sales/customer-tokens). No
1565
+ * password is ever handled here.
1566
+ * States: enter email -> check your inbox (resend, enter code) -> signed in
1567
+ * (email + sign out).
1568
+ * Usage: <tl-login></tl-login>
1569
+ * @event tlAuthChanged - signed in or out ({ customer, authenticated })
1570
+ * @event tlMagicLinkSent - a link was requested for an email
1571
+ * @event tlError - request or code exchange failed
1572
+ */
1573
+ "tl-login": LocalJSX.TlLogin & JSXBase.HTMLAttributes<HTMLTlLoginElement>;
1574
+ /**
1575
+ * tl-my-orders - the signed-in customer's orders (GET /sales/my-orders through
1576
+ * the SDK): event, date, ticket count, total and status per row. Clicking a
1577
+ * row expands it to show the order's tickets (tl-order-tickets). Shows
1578
+ * tl-login inline when nobody is signed in.
1579
+ * Usage: <tl-my-orders></tl-my-orders>
1580
+ * @event tlOrderSelect - a row was expanded ({ orderId })
1581
+ * @event tlError - the orders could not be loaded
1582
+ */
1583
+ "tl-my-orders": LocalJSX.TlMyOrders & JSXBase.HTMLAttributes<HTMLTlMyOrdersElement>;
1584
+ "tl-occurrence-selector": LocalJSX.TlOccurrenceSelector & JSXBase.HTMLAttributes<HTMLTlOccurrenceSelectorElement>;
1585
+ /**
1586
+ * tl-order-confirmation - the "thank you" page block: order reference,
1587
+ * customer email, event and date, ticket lines, totals, then the tickets
1588
+ * themselves (tl-order-tickets, each with a Download PDF link).
1589
+ * Finds its order three ways, in priority order:
1590
+ * 1. the `order-id` prop
1591
+ * 2. the URL (`?orderId=`), the contract the hosted box office confirmation
1592
+ * page uses; `?redirect_status=` from a Stripe return is honoured too
1593
+ * 3. the SDK's `checkout:completed` event, for a page that mounts this before
1594
+ * the customer pays
1595
+ * Usage: <tl-order-confirmation order-id="ord_xxx"></tl-order-confirmation>
1596
+ * @event tlOrderLoaded - the order was loaded
1597
+ * @event tlError - the order could not be loaded
1598
+ */
1599
+ "tl-order-confirmation": LocalJSX.TlOrderConfirmation & JSXBase.HTMLAttributes<HTMLTlOrderConfirmationElement>;
1600
+ /**
1601
+ * tl-order-tickets - renders all the tickets for an order as scannable QR
1602
+ * cards with PDF download. Fetches the order through the SDK (order-access
1603
+ * gated by the session), so it works on a confirmation page or in an account.
1604
+ * Usage: <tl-order-tickets order-id="ord_xxx"></tl-order-tickets>
1605
+ */
1606
+ "tl-order-tickets": LocalJSX.TlOrderTickets & JSXBase.HTMLAttributes<HTMLTlOrderTicketsElement>;
1607
+ /**
1608
+ * tl-promo-code - an input plus Apply button that redeems a presale or promo
1609
+ * code for the current cart (POST /sales/presale-codes/redeem through the
1610
+ * SDK). Redemption unlocks gated pricing on the customer; the SDK re-reads the
1611
+ * cart and publishes cart:updated, so tl-cart and badges re-render on their own.
1612
+ * The API has no un-redeem, so the applied state offers only "use a different
1613
+ * code", which clears the input for another redemption.
1614
+ * Usage: <tl-promo-code></tl-promo-code>
1615
+ * @event tlPromoApplied - a code was redeemed ({ code, benefit, alreadyHeld, cart })
1616
+ * @event tlError - the code was rejected
1617
+ */
1618
+ "tl-promo-code": LocalJSX.TlPromoCode & JSXBase.HTMLAttributes<HTMLTlPromoCodeElement>;
1619
+ "tl-seat-map": LocalJSX.TlSeatMap & JSXBase.HTMLAttributes<HTMLTlSeatMapElement>;
1620
+ /**
1621
+ * tl-ticket - a single event ticket: a scannable QR (the redemption token),
1622
+ * ticket name / seat / holder, and a PDF download. Greys out + stamps
1623
+ * Used/Void when redeemed or cancelled.
1624
+ */
1625
+ "tl-ticket": LocalJSX.TlTicket & JSXBase.HTMLAttributes<HTMLTlTicketElement>;
1626
+ "tl-ticket-selector": LocalJSX.TlTicketSelector & JSXBase.HTMLAttributes<HTMLTlTicketSelectorElement>;
1627
+ }
1628
+ }
1629
+ }