@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.
- package/LICENSE +21 -0
- package/README.md +55 -0
- package/dist/cjs/index-DfzcrE9-.js +3598 -0
- package/dist/cjs/index.cjs.js +16 -0
- package/dist/cjs/loader.cjs.js +12 -0
- package/dist/cjs/order-summary-ZMkJ5bez.js +116 -0
- package/dist/cjs/sdk-connector-ClDF3013.js +108 -0
- package/dist/cjs/ticketlayer-elements.cjs.js +24 -0
- package/dist/cjs/tl-buy-modal.cjs.entry.js +127 -0
- package/dist/cjs/tl-buy-tickets-button.cjs.entry.js +131 -0
- package/dist/cjs/tl-buy-tickets-wrapper.cjs.entry.js +58 -0
- package/dist/cjs/tl-cart-badge.cjs.entry.js +109 -0
- package/dist/cjs/tl-cart-drawer.cjs.entry.js +67 -0
- package/dist/cjs/tl-cart.cjs.entry.js +148 -0
- package/dist/cjs/tl-checkout-wrapper.cjs.entry.js +57 -0
- package/dist/cjs/tl-event-card.cjs.entry.js +140 -0
- package/dist/cjs/tl-event-list.cjs.entry.js +80 -0
- package/dist/cjs/tl-login.cjs.entry.js +184 -0
- package/dist/cjs/tl-my-orders.cjs.entry.js +123 -0
- package/dist/cjs/tl-occurrence-selector_2.cjs.entry.js +754 -0
- package/dist/cjs/tl-order-confirmation.cjs.entry.js +146 -0
- package/dist/cjs/tl-order-tickets_2.cjs.entry.js +3198 -0
- package/dist/cjs/tl-promo-code.cjs.entry.js +75 -0
- package/dist/cjs/tl-seat-map.cjs.entry.js +147 -0
- package/dist/collection/collection-manifest.json +29 -0
- package/dist/collection/components/tl-buy-modal/tl-buy-modal.css +264 -0
- package/dist/collection/components/tl-buy-modal/tl-buy-modal.js +249 -0
- package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.css +120 -0
- package/dist/collection/components/tl-buy-tickets-button/tl-buy-tickets-button.js +412 -0
- package/dist/collection/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.css +23 -0
- package/dist/collection/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.js +192 -0
- package/dist/collection/components/tl-cart/tl-cart.css +251 -0
- package/dist/collection/components/tl-cart/tl-cart.js +314 -0
- package/dist/collection/components/tl-cart-badge/tl-cart-badge.css +138 -0
- package/dist/collection/components/tl-cart-badge/tl-cart-badge.js +217 -0
- package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.css +98 -0
- package/dist/collection/components/tl-cart-drawer/tl-cart-drawer.js +185 -0
- package/dist/collection/components/tl-checkout-wrapper/tl-checkout-wrapper.css +23 -0
- package/dist/collection/components/tl-checkout-wrapper/tl-checkout-wrapper.js +148 -0
- package/dist/collection/components/tl-event-card/event-card-adapter.js +23 -0
- package/dist/collection/components/tl-event-card/tl-event-card.css +175 -0
- package/dist/collection/components/tl-event-card/tl-event-card.js +205 -0
- package/dist/collection/components/tl-event-list/tl-event-list.css +134 -0
- package/dist/collection/components/tl-event-list/tl-event-list.js +171 -0
- package/dist/collection/components/tl-login/tl-login.css +133 -0
- package/dist/collection/components/tl-login/tl-login.js +309 -0
- package/dist/collection/components/tl-my-orders/tl-my-orders.css +204 -0
- package/dist/collection/components/tl-my-orders/tl-my-orders.js +221 -0
- package/dist/collection/components/tl-occurrence-selector/tl-occurrence-selector.css +658 -0
- package/dist/collection/components/tl-occurrence-selector/tl-occurrence-selector.js +707 -0
- package/dist/collection/components/tl-order-confirmation/tl-order-confirmation.css +176 -0
- package/dist/collection/components/tl-order-confirmation/tl-order-confirmation.js +298 -0
- package/dist/collection/components/tl-order-tickets/tl-order-tickets.css +30 -0
- package/dist/collection/components/tl-order-tickets/tl-order-tickets.js +122 -0
- package/dist/collection/components/tl-promo-code/tl-promo-code.css +106 -0
- package/dist/collection/components/tl-promo-code/tl-promo-code.js +181 -0
- package/dist/collection/components/tl-seat-map/tl-seat-map.css +85 -0
- package/dist/collection/components/tl-seat-map/tl-seat-map.js +366 -0
- package/dist/collection/components/tl-ticket/tl-ticket.css +90 -0
- package/dist/collection/components/tl-ticket/tl-ticket.js +129 -0
- package/dist/collection/components/tl-ticket-selector/tl-ticket-selector.css +205 -0
- package/dist/collection/components/tl-ticket-selector/tl-ticket-selector.js +332 -0
- package/dist/collection/index.js +10 -0
- package/dist/collection/utils/order-summary.js +101 -0
- package/dist/collection/utils/sdk-connector.js +100 -0
- package/dist/collection/utils/testing/mock-sdk.js +95 -0
- package/dist/components/index.d.ts +35 -0
- package/dist/components/index.js +1 -0
- package/dist/components/order-summary.js +1 -0
- package/dist/components/sdk-connector.js +1 -0
- package/dist/components/tl-buy-modal.d.ts +11 -0
- package/dist/components/tl-buy-modal.js +1 -0
- package/dist/components/tl-buy-tickets-button.d.ts +11 -0
- package/dist/components/tl-buy-tickets-button.js +1 -0
- package/dist/components/tl-buy-tickets-wrapper.d.ts +11 -0
- package/dist/components/tl-buy-tickets-wrapper.js +1 -0
- package/dist/components/tl-buy-tickets-wrapper2.js +1 -0
- package/dist/components/tl-cart-badge.d.ts +11 -0
- package/dist/components/tl-cart-badge.js +1 -0
- package/dist/components/tl-cart-drawer.d.ts +11 -0
- package/dist/components/tl-cart-drawer.js +1 -0
- package/dist/components/tl-cart.d.ts +11 -0
- package/dist/components/tl-cart.js +1 -0
- package/dist/components/tl-cart2.js +1 -0
- package/dist/components/tl-checkout-wrapper.d.ts +11 -0
- package/dist/components/tl-checkout-wrapper.js +1 -0
- package/dist/components/tl-checkout-wrapper2.js +1 -0
- package/dist/components/tl-event-card.d.ts +11 -0
- package/dist/components/tl-event-card.js +1 -0
- package/dist/components/tl-event-card2.js +1 -0
- package/dist/components/tl-event-list.d.ts +11 -0
- package/dist/components/tl-event-list.js +1 -0
- package/dist/components/tl-login.d.ts +11 -0
- package/dist/components/tl-login.js +1 -0
- package/dist/components/tl-login2.js +1 -0
- package/dist/components/tl-my-orders.d.ts +11 -0
- package/dist/components/tl-my-orders.js +1 -0
- package/dist/components/tl-occurrence-selector.d.ts +11 -0
- package/dist/components/tl-occurrence-selector.js +1 -0
- package/dist/components/tl-occurrence-selector2.js +1 -0
- package/dist/components/tl-order-confirmation.d.ts +11 -0
- package/dist/components/tl-order-confirmation.js +1 -0
- package/dist/components/tl-order-tickets.d.ts +11 -0
- package/dist/components/tl-order-tickets.js +1 -0
- package/dist/components/tl-order-tickets2.js +1 -0
- package/dist/components/tl-promo-code.d.ts +11 -0
- package/dist/components/tl-promo-code.js +1 -0
- package/dist/components/tl-seat-map.d.ts +11 -0
- package/dist/components/tl-seat-map.js +1 -0
- package/dist/components/tl-ticket-selector.d.ts +11 -0
- package/dist/components/tl-ticket-selector.js +1 -0
- package/dist/components/tl-ticket-selector2.js +1 -0
- package/dist/components/tl-ticket.d.ts +11 -0
- package/dist/components/tl-ticket.js +1 -0
- package/dist/components/tl-ticket2.js +1 -0
- package/dist/elements.docs.d.ts +454 -0
- package/dist/elements.docs.json +3008 -0
- package/dist/esm/index-Ba-RZTFI.js +3588 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/loader.js +10 -0
- package/dist/esm/order-summary-BGekdjN9.js +103 -0
- package/dist/esm/sdk-connector-CqhvfyKV.js +102 -0
- package/dist/esm/ticketlayer-elements.js +20 -0
- package/dist/esm/tl-buy-modal.entry.js +125 -0
- package/dist/esm/tl-buy-tickets-button.entry.js +129 -0
- package/dist/esm/tl-buy-tickets-wrapper.entry.js +56 -0
- package/dist/esm/tl-cart-badge.entry.js +107 -0
- package/dist/esm/tl-cart-drawer.entry.js +65 -0
- package/dist/esm/tl-cart.entry.js +146 -0
- package/dist/esm/tl-checkout-wrapper.entry.js +55 -0
- package/dist/esm/tl-event-card.entry.js +138 -0
- package/dist/esm/tl-event-list.entry.js +78 -0
- package/dist/esm/tl-login.entry.js +182 -0
- package/dist/esm/tl-my-orders.entry.js +121 -0
- package/dist/esm/tl-occurrence-selector_2.entry.js +751 -0
- package/dist/esm/tl-order-confirmation.entry.js +144 -0
- package/dist/esm/tl-order-tickets_2.entry.js +3195 -0
- package/dist/esm/tl-promo-code.entry.js +73 -0
- package/dist/esm/tl-seat-map.entry.js +145 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/ticketlayer-elements/index.esm.js +1 -0
- package/dist/ticketlayer-elements/p-0291df4c.entry.js +1 -0
- package/dist/ticketlayer-elements/p-10f01a1f.entry.js +1 -0
- package/dist/ticketlayer-elements/p-11273f8f.entry.js +1 -0
- package/dist/ticketlayer-elements/p-340ab4f5.entry.js +1 -0
- package/dist/ticketlayer-elements/p-41d22d7c.entry.js +1 -0
- package/dist/ticketlayer-elements/p-82752e3b.entry.js +1 -0
- package/dist/ticketlayer-elements/p-976770f3.entry.js +1 -0
- package/dist/ticketlayer-elements/p-9a903ff6.entry.js +1 -0
- package/dist/ticketlayer-elements/p-9c9072c8.entry.js +1 -0
- package/dist/ticketlayer-elements/p-9d8163d6.entry.js +1 -0
- package/dist/ticketlayer-elements/p-BGekdjN9.js +1 -0
- package/dist/ticketlayer-elements/p-Ba-RZTFI.js +2 -0
- package/dist/ticketlayer-elements/p-CqhvfyKV.js +1 -0
- package/dist/ticketlayer-elements/p-a5c90b68.entry.js +1 -0
- package/dist/ticketlayer-elements/p-b6d479ad.entry.js +1 -0
- package/dist/ticketlayer-elements/p-dd43f015.entry.js +1 -0
- package/dist/ticketlayer-elements/p-eb640760.entry.js +1 -0
- package/dist/ticketlayer-elements/p-ee3aa227.entry.js +1 -0
- package/dist/ticketlayer-elements/p-fb9444c4.entry.js +1 -0
- package/dist/ticketlayer-elements/ticketlayer-elements.css +1 -0
- package/dist/ticketlayer-elements/ticketlayer-elements.esm.js +1 -0
- package/dist/types/components/tl-buy-modal/tl-buy-modal.d.ts +54 -0
- package/dist/types/components/tl-buy-tickets-button/tl-buy-tickets-button.d.ts +61 -0
- package/dist/types/components/tl-buy-tickets-wrapper/tl-buy-tickets-wrapper.d.ts +52 -0
- package/dist/types/components/tl-cart/tl-cart.d.ts +80 -0
- package/dist/types/components/tl-cart-badge/tl-cart-badge.d.ts +36 -0
- package/dist/types/components/tl-cart-drawer/tl-cart-drawer.d.ts +35 -0
- package/dist/types/components/tl-checkout-wrapper/tl-checkout-wrapper.d.ts +39 -0
- package/dist/types/components/tl-event-card/event-card-adapter.d.ts +23 -0
- package/dist/types/components/tl-event-card/tl-event-card.d.ts +55 -0
- package/dist/types/components/tl-event-list/tl-event-list.d.ts +30 -0
- package/dist/types/components/tl-login/tl-login.d.ts +59 -0
- package/dist/types/components/tl-my-orders/tl-my-orders.d.ts +39 -0
- package/dist/types/components/tl-occurrence-selector/tl-occurrence-selector.d.ts +208 -0
- package/dist/types/components/tl-order-confirmation/tl-order-confirmation.d.ts +54 -0
- package/dist/types/components/tl-order-tickets/tl-order-tickets.d.ts +21 -0
- package/dist/types/components/tl-promo-code/tl-promo-code.d.ts +39 -0
- package/dist/types/components/tl-seat-map/tl-seat-map.d.ts +68 -0
- package/dist/types/components/tl-ticket/tl-ticket.d.ts +28 -0
- package/dist/types/components/tl-ticket-selector/tl-ticket-selector.d.ts +78 -0
- package/dist/types/components.d.ts +1629 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/stencil-public-runtime.d.ts +1839 -0
- package/dist/types/utils/order-summary.d.ts +67 -0
- package/dist/types/utils/sdk-connector.d.ts +113 -0
- package/dist/types/utils/testing/mock-sdk.d.ts +36 -0
- package/elements.catalogue.json +968 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- 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
|
+
}
|