@getmicdrop/venue-calendar 3.8.3 → 4.0.3
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/README.md +700 -661
- package/dist/AirbnbSplitMain-BfddFqOQ.js +2201 -0
- package/dist/AirbnbSplitMain-BfddFqOQ.js.map +1 -0
- package/dist/{CarouselView.legacy-BED9P-az.js → CarouselView.legacy-BKXwmB2P.js} +11 -10
- package/dist/CarouselView.legacy-BKXwmB2P.js.map +1 -0
- package/dist/CartView-iIEjDwFN.js +1667 -0
- package/dist/CartView-iIEjDwFN.js.map +1 -0
- package/dist/Checkout-Cu0D8mFn.js +743 -0
- package/dist/Checkout-Cu0D8mFn.js.map +1 -0
- package/dist/{Checkout.legacy-B1Ui4zZN.js → Checkout.legacy-C6V9HmUZ.js} +374 -359
- package/dist/Checkout.legacy-C6V9HmUZ.js.map +1 -0
- package/dist/CheckoutMain-B17znLe0.js +1403 -0
- package/dist/CheckoutMain-B17znLe0.js.map +1 -0
- package/dist/CheckoutTimer-BsI1r6lY.js +34 -0
- package/dist/CheckoutTimer-BsI1r6lY.js.map +1 -0
- package/dist/CollectionView-CQgKWQHT.js +142 -0
- package/dist/CollectionView-CQgKWQHT.js.map +1 -0
- package/dist/{CollectionView.legacy-CXv5mTUk.js → CollectionView.legacy-B8SDspBL.js} +25 -24
- package/dist/CollectionView.legacy-B8SDspBL.js.map +1 -0
- package/dist/EventDetailsView-XXl8aQJ9.js +1187 -0
- package/dist/EventDetailsView-XXl8aQJ9.js.map +1 -0
- package/dist/{FeaturedView.legacy-C5yztREl.js → FeaturedView.legacy-Dse2jnrt.js} +15 -15
- package/dist/FeaturedView.legacy-Dse2jnrt.js.map +1 -0
- package/dist/GalleryCard-CDaYD8XI.js +92 -0
- package/dist/GalleryCard-CDaYD8XI.js.map +1 -0
- package/dist/{GalleryView.legacy-DoM4NcPc.js → GalleryView.legacy-U_ripo22.js} +18 -17
- package/dist/GalleryView.legacy-U_ripo22.js.map +1 -0
- package/dist/{GroupedListView.legacy-Dmm_z1rM.js → GroupedListView.legacy-BrickaeB.js} +25 -25
- package/dist/GroupedListView.legacy-BrickaeB.js.map +1 -0
- package/dist/Heading-AFd3o0xt.js +44 -0
- package/dist/Heading-AFd3o0xt.js.map +1 -0
- package/dist/OrderSummarySkeleton-dDKUH741.js +16 -0
- package/dist/OrderSummarySkeleton-dDKUH741.js.map +1 -0
- package/dist/SeriesPage-CNoI4R4M.js +56 -0
- package/dist/SeriesPage-CNoI4R4M.js.map +1 -0
- package/dist/SeriesPage.legacy-Cugebbf0.js +195 -0
- package/dist/SeriesPage.legacy-Cugebbf0.js.map +1 -0
- package/dist/Success-BQAu7uZn.js +715 -0
- package/dist/Success-BQAu7uZn.js.map +1 -0
- package/dist/Success.legacy-DSmTsdB_.js +195 -0
- package/dist/Success.legacy-DSmTsdB_.js.map +1 -0
- package/dist/Text-CXR2fhx6.js +54 -0
- package/dist/Text-CXR2fhx6.js.map +1 -0
- package/dist/{VenueCalendar-DIQ8H0q7.js → VenueCalendar-DzTrcN8J.js} +11242 -21624
- package/dist/VenueCalendar-DzTrcN8J.js.map +1 -0
- package/dist/ViewTicketsEmbed-DOTq6kSz.js +2038 -0
- package/dist/ViewTicketsEmbed-DOTq6kSz.js.map +1 -0
- package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js +7 -0
- package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js.map +1 -0
- package/dist/api/api.cjs +1 -1
- package/dist/api/api.cjs.map +1 -1
- package/dist/api/api.mjs +511 -279
- package/dist/api/api.mjs.map +1 -1
- package/dist/api/client.d.ts +3 -33
- package/dist/api/cta.d.ts +38 -0
- package/dist/api/events.d.ts +3 -1
- package/dist/api/gift-cards.d.ts +88 -0
- package/dist/api/index.d.ts +6 -0
- package/dist/api/types.d.ts +353 -349
- package/dist/api/waitlist.d.ts +23 -0
- package/dist/colors-BZoMuXdh.js.map +1 -1
- package/dist/labels-BPzDu-3y.js +1351 -0
- package/dist/labels-BPzDu-3y.js.map +1 -0
- package/dist/seo/HostSeoController.d.ts +9 -1
- package/dist/seo/seo.cjs +1 -1
- package/dist/seo/seo.cjs.map +1 -1
- package/dist/seo/seo.mjs +53 -50
- package/dist/seo/seo.mjs.map +1 -1
- package/dist/seo/types.d.ts +137 -136
- package/dist/transform-CZI_M7Wk.js +218 -0
- package/dist/transform-CZI_M7Wk.js.map +1 -0
- package/dist/types/index.d.ts +387 -387
- package/dist/venue-calendar.css +1 -1
- package/dist/venue-calendar.es.js +36 -28
- package/dist/venue-calendar.es.js.map +1 -1
- package/dist/venue-calendar.iife.js +43 -43
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +40 -40
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +44 -6
- package/src/lib/theme.js +13 -0
- package/dist/CarouselView.legacy-BED9P-az.js.map +0 -1
- package/dist/Checkout.legacy-B1Ui4zZN.js.map +0 -1
- package/dist/CollectionView.legacy-CXv5mTUk.js.map +0 -1
- package/dist/FeaturedView.legacy-C5yztREl.js.map +0 -1
- package/dist/GalleryView.legacy-DoM4NcPc.js.map +0 -1
- package/dist/GroupedListView.legacy-Dmm_z1rM.js.map +0 -1
- package/dist/SeriesPage.legacy-Cgtr6qB_.js +0 -190
- package/dist/SeriesPage.legacy-Cgtr6qB_.js.map +0 -1
- package/dist/Success.legacy-DHG9NwIq.js +0 -194
- package/dist/Success.legacy-DHG9NwIq.js.map +0 -1
- package/dist/VenueCalendar-DIQ8H0q7.js.map +0 -1
|
@@ -0,0 +1,1351 @@
|
|
|
1
|
+
import { af as C, u as O, v as $, f as _ } from "./VenueCalendar-DzTrcN8J.js";
|
|
2
|
+
import "svelte/internal/disclose-version";
|
|
3
|
+
import * as e from "svelte/internal/client";
|
|
4
|
+
import "svelte/internal/flags/legacy";
|
|
5
|
+
import "svelte/transition";
|
|
6
|
+
import "svelte/easing";
|
|
7
|
+
import { T as b } from "./Text-CXR2fhx6.js";
|
|
8
|
+
function N(i, t, n = {}) {
|
|
9
|
+
const {
|
|
10
|
+
cancelled: d = !1,
|
|
11
|
+
isRegistration: T = !1,
|
|
12
|
+
waitlistEnabled: y = !1
|
|
13
|
+
} = n, p = /* @__PURE__ */ new Date();
|
|
14
|
+
if (d)
|
|
15
|
+
return { text: "Cancelled", disabled: !0, reason: "cancelled" };
|
|
16
|
+
const l = i.endDateTime || i.startDateTime;
|
|
17
|
+
if (l && new Date(l) < p)
|
|
18
|
+
return { text: "Sales ended", disabled: !0, reason: "event_past" };
|
|
19
|
+
const P = (t || []).filter((c) => c.salesChannel !== 2);
|
|
20
|
+
if (P.length === 0)
|
|
21
|
+
return {
|
|
22
|
+
text: "No tickets available",
|
|
23
|
+
disabled: !0,
|
|
24
|
+
reason: "no_tickets"
|
|
25
|
+
};
|
|
26
|
+
let f = !1, x = !0, D = !0, w = null;
|
|
27
|
+
for (const c of P) {
|
|
28
|
+
const k = c.salesBegin || c.salesStart || c.saleBegin || c.onSaleStart, S = c.salesEnd || c.saleEnd || c.onSaleEnd, a = c.remainingCapacity ?? c.quantityRemaining ?? c.quantity, s = c.soldOut || a != null && a <= 0, o = k ? new Date(k) > p : !1, m = S ? new Date(S) < p : !1;
|
|
29
|
+
if (!s && !o && !m && (f = !0), s || (x = !1), o || (D = !1), o && k && !s && !m) {
|
|
30
|
+
const h = new Date(k);
|
|
31
|
+
(!w || h < w) && (w = h);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (f)
|
|
35
|
+
return {
|
|
36
|
+
text: T ? "Reserve a spot" : "Get tickets",
|
|
37
|
+
disabled: !1,
|
|
38
|
+
reason: "available"
|
|
39
|
+
};
|
|
40
|
+
if (D && w) {
|
|
41
|
+
const c = w.getTime() - p.getTime(), k = c / (1e3 * 60 * 60), S = c / (1e3 * 60 * 60 * 24);
|
|
42
|
+
let a;
|
|
43
|
+
if (k < 24)
|
|
44
|
+
a = w.toLocaleTimeString("en-US", {
|
|
45
|
+
hour: "numeric",
|
|
46
|
+
minute: "2-digit",
|
|
47
|
+
hour12: !0
|
|
48
|
+
});
|
|
49
|
+
else if (S <= 7)
|
|
50
|
+
a = C(
|
|
51
|
+
w,
|
|
52
|
+
{ weekday: "short", hour: "numeric", minute: "2-digit", hour12: !0 },
|
|
53
|
+
"en-US"
|
|
54
|
+
);
|
|
55
|
+
else {
|
|
56
|
+
const s = C(
|
|
57
|
+
w,
|
|
58
|
+
{ month: "short", day: "numeric" },
|
|
59
|
+
"en-US"
|
|
60
|
+
), o = w.toLocaleTimeString("en-US", {
|
|
61
|
+
hour: "numeric",
|
|
62
|
+
minute: "2-digit",
|
|
63
|
+
hour12: !0
|
|
64
|
+
});
|
|
65
|
+
a = `${s} ${o}`;
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
text: `On sale ${a}`,
|
|
69
|
+
disabled: !0,
|
|
70
|
+
reason: "coming_soon"
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return x ? y ? {
|
|
74
|
+
text: "Join Waitlist",
|
|
75
|
+
disabled: !1,
|
|
76
|
+
reason: "sold_out_waitlist"
|
|
77
|
+
} : { text: "Sold out", disabled: !0, reason: "sold_out" } : { text: "Sales ended", disabled: !0, reason: "sales_ended" };
|
|
78
|
+
}
|
|
79
|
+
const F = {
|
|
80
|
+
id: 101,
|
|
81
|
+
name: "The Laugh Factory",
|
|
82
|
+
address: "8001 Sunset Blvd, Los Angeles, CA 90046",
|
|
83
|
+
timezone: O(),
|
|
84
|
+
serviceFeePercentage: 10,
|
|
85
|
+
serviceFeeCents: 0,
|
|
86
|
+
taxPercentage: 9.5,
|
|
87
|
+
contactEmail: "help@thelaughfactory.com"
|
|
88
|
+
}, A = [
|
|
89
|
+
{
|
|
90
|
+
id: 1,
|
|
91
|
+
displayName: "Dave Martinez",
|
|
92
|
+
profileImage: "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=200&h=200&fit=crop"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: 2,
|
|
96
|
+
displayName: "Sarah Chen",
|
|
97
|
+
profileImage: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=200&h=200&fit=crop"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: 3,
|
|
101
|
+
displayName: "Mike Thompson",
|
|
102
|
+
profileImage: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=200&h=200&fit=crop"
|
|
103
|
+
}
|
|
104
|
+
], H = [
|
|
105
|
+
{
|
|
106
|
+
question: "What time do doors open?",
|
|
107
|
+
answer: "Doors open at 7:00 PM, one hour before showtime. We recommend arriving early to get the best seats."
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
question: "Is there a drink minimum?",
|
|
111
|
+
answer: "Yes, there is a 2-drink minimum per person. Both alcoholic and non-alcoholic beverages count toward the minimum."
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
question: "Can I get a refund?",
|
|
115
|
+
answer: "Tickets are non-refundable but can be transferred to another person up to 24 hours before the show. Contact us for transfers."
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
question: "Is the venue accessible?",
|
|
119
|
+
answer: "Yes, the venue is fully wheelchair accessible with ADA-compliant seating available. Please contact us to reserve accessible seating."
|
|
120
|
+
}
|
|
121
|
+
], E = [
|
|
122
|
+
{
|
|
123
|
+
id: 101,
|
|
124
|
+
name: "General Admission",
|
|
125
|
+
description: "Standard seating in the main room",
|
|
126
|
+
price: 25,
|
|
127
|
+
fee: 2.5,
|
|
128
|
+
quantityAvailable: 12,
|
|
129
|
+
quantityTotal: 150,
|
|
130
|
+
minPerOrder: 1,
|
|
131
|
+
maxPerOrder: 8,
|
|
132
|
+
status: "on_sale",
|
|
133
|
+
salesEndDate: "2026-02-20T20:00:00-08:00",
|
|
134
|
+
isDonation: !1,
|
|
135
|
+
isHidden: !1
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
id: 102,
|
|
139
|
+
name: "VIP Front Row",
|
|
140
|
+
description: "Premium seats in the first two rows with a complimentary drink",
|
|
141
|
+
price: 55,
|
|
142
|
+
fee: 5.5,
|
|
143
|
+
quantityAvailable: 3,
|
|
144
|
+
quantityTotal: 20,
|
|
145
|
+
minPerOrder: 1,
|
|
146
|
+
maxPerOrder: 4,
|
|
147
|
+
status: "on_sale",
|
|
148
|
+
salesEndDate: "2026-02-20T20:00:00-08:00",
|
|
149
|
+
isDonation: !1,
|
|
150
|
+
isHidden: !1
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
id: 103,
|
|
154
|
+
name: "Table for 4",
|
|
155
|
+
description: "Reserved table for four guests with bottle service",
|
|
156
|
+
price: 180,
|
|
157
|
+
fee: 18,
|
|
158
|
+
quantityAvailable: 8,
|
|
159
|
+
quantityTotal: 15,
|
|
160
|
+
minPerOrder: 1,
|
|
161
|
+
maxPerOrder: 3,
|
|
162
|
+
status: "on_sale",
|
|
163
|
+
isDonation: !1,
|
|
164
|
+
isHidden: !1
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
id: 104,
|
|
168
|
+
name: "Student Discount",
|
|
169
|
+
description: "Valid student ID required at the door",
|
|
170
|
+
price: 15,
|
|
171
|
+
fee: 1.5,
|
|
172
|
+
quantityAvailable: 45,
|
|
173
|
+
quantityTotal: 50,
|
|
174
|
+
minPerOrder: 1,
|
|
175
|
+
maxPerOrder: 2,
|
|
176
|
+
status: "on_sale",
|
|
177
|
+
isDonation: !1,
|
|
178
|
+
isHidden: !1
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
id: 105,
|
|
182
|
+
name: "Early Bird Special",
|
|
183
|
+
description: "Limited early bird pricing — first come, first served",
|
|
184
|
+
price: 20,
|
|
185
|
+
fee: 2,
|
|
186
|
+
quantityAvailable: 0,
|
|
187
|
+
quantityTotal: 30,
|
|
188
|
+
minPerOrder: 1,
|
|
189
|
+
maxPerOrder: 4,
|
|
190
|
+
status: "sold_out",
|
|
191
|
+
isDonation: !1,
|
|
192
|
+
isHidden: !1
|
|
193
|
+
}
|
|
194
|
+
], g = {
|
|
195
|
+
id: 2405,
|
|
196
|
+
title: "Friday Night Comedy Throwdown",
|
|
197
|
+
slug: "friday-night-comedy-throwdown",
|
|
198
|
+
description: `Get ready for the funniest night of the week! The Friday Night Comedy Throwdown brings together three of LA's hottest stand-up comics for two hours of non-stop laughs.
|
|
199
|
+
|
|
200
|
+
Headliner Dave Martinez (as seen on Netflix's "Comedy Knockout") brings his signature high-energy style, while Sarah Chen delivers her razor-sharp observational humor that's earned her a devoted following. Host Mike Thompson keeps the energy up between sets with crowd work that'll have you crying laughing.
|
|
201
|
+
|
|
202
|
+
Whether you're a comedy regular or a first-timer, this show delivers. Grab your crew, grab some drinks, and prepare to laugh until your abs hurt.`,
|
|
203
|
+
date: "2026-02-20",
|
|
204
|
+
startDateTime: "2026-02-20T20:00:00-08:00",
|
|
205
|
+
endDateTime: "2026-02-20T22:00:00-08:00",
|
|
206
|
+
doorsOpenTime: "2026-02-20T19:00:00-08:00",
|
|
207
|
+
timezone: O(),
|
|
208
|
+
imageUrl: "/posters/Friday Night Showdown.jpg",
|
|
209
|
+
// wide landscape 800×400
|
|
210
|
+
venue: F,
|
|
211
|
+
performers: A,
|
|
212
|
+
tickets: E,
|
|
213
|
+
faqs: H,
|
|
214
|
+
disclaimer: "",
|
|
215
|
+
status: "on_sale",
|
|
216
|
+
isPasswordProtected: !1,
|
|
217
|
+
isRegistrationEvent: !1,
|
|
218
|
+
totalTicketsRemaining: 68,
|
|
219
|
+
totalTicketsCapacity: 265,
|
|
220
|
+
displayStartTime: !0,
|
|
221
|
+
displayEndTime: !0,
|
|
222
|
+
displayDoorsTime: !0
|
|
223
|
+
}, Q = {
|
|
224
|
+
...g,
|
|
225
|
+
id: 2406,
|
|
226
|
+
title: "Saturday Night Special",
|
|
227
|
+
slug: "saturday-night-special",
|
|
228
|
+
imageUrl: "/posters/the-duel-square.webp",
|
|
229
|
+
// square 3000×3000
|
|
230
|
+
date: "2026-02-21",
|
|
231
|
+
startDateTime: "2026-02-21T21:00:00-08:00",
|
|
232
|
+
endDateTime: "2026-02-21T23:00:00-08:00",
|
|
233
|
+
displayEndTime: !1,
|
|
234
|
+
status: "sold_out",
|
|
235
|
+
totalTicketsRemaining: 0,
|
|
236
|
+
tickets: E.map((i) => ({ ...i, quantityAvailable: 0, status: "sold_out" }))
|
|
237
|
+
}, Z = {
|
|
238
|
+
...g,
|
|
239
|
+
id: 2407,
|
|
240
|
+
title: "Open Mic Night",
|
|
241
|
+
slug: "open-mic-night",
|
|
242
|
+
imageUrl: "/posters/OpenMic-Twitter.jpg",
|
|
243
|
+
// wide landscape 2127×1075
|
|
244
|
+
date: "2026-02-18",
|
|
245
|
+
startDateTime: "2026-02-18T19:00:00-08:00",
|
|
246
|
+
endDateTime: "2026-02-18T21:00:00-08:00",
|
|
247
|
+
displayDoorsTime: !1,
|
|
248
|
+
description: "Free open mic night! Sign up at the door. All skill levels welcome.",
|
|
249
|
+
status: "on_sale",
|
|
250
|
+
tickets: [
|
|
251
|
+
{
|
|
252
|
+
id: 201,
|
|
253
|
+
name: "Free Entry",
|
|
254
|
+
description: "Sign up at the door for a 5-minute set",
|
|
255
|
+
price: 0,
|
|
256
|
+
fee: 0,
|
|
257
|
+
quantityAvailable: 40,
|
|
258
|
+
quantityTotal: 50,
|
|
259
|
+
minPerOrder: 1,
|
|
260
|
+
maxPerOrder: 2,
|
|
261
|
+
status: "on_sale",
|
|
262
|
+
isDonation: !1,
|
|
263
|
+
isHidden: !1
|
|
264
|
+
}
|
|
265
|
+
],
|
|
266
|
+
totalTicketsRemaining: 40,
|
|
267
|
+
totalTicketsCapacity: 50
|
|
268
|
+
}, ee = {
|
|
269
|
+
...g,
|
|
270
|
+
id: 2410,
|
|
271
|
+
title: "Improv Throwdown",
|
|
272
|
+
slug: "improv-throwdown",
|
|
273
|
+
imageUrl: "/posters/laughlab-tall.webp",
|
|
274
|
+
// tall portrait 2550×3300
|
|
275
|
+
eventSeriesId: 42,
|
|
276
|
+
description: "Weekly improv comedy show featuring rotating guest performers and audience participation games.",
|
|
277
|
+
seriesOccurrences: [
|
|
278
|
+
// Same-day shows (Fri Feb 20 — 7pm, 8pm, 9:30pm)
|
|
279
|
+
{
|
|
280
|
+
id: 2410,
|
|
281
|
+
slug: "improv-throwdown-feb-20-7pm",
|
|
282
|
+
startDateTime: "2026-02-20T19:00:00-08:00",
|
|
283
|
+
endDateTime: "2026-02-20T20:30:00-08:00",
|
|
284
|
+
status: "sold_out",
|
|
285
|
+
ctaText: "Sold out",
|
|
286
|
+
ctaDisabled: !0
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
id: 2414,
|
|
290
|
+
slug: "improv-throwdown-feb-20-8pm",
|
|
291
|
+
startDateTime: "2026-02-20T20:00:00-08:00",
|
|
292
|
+
endDateTime: "2026-02-20T21:30:00-08:00",
|
|
293
|
+
status: "on_sale",
|
|
294
|
+
ctaText: "Get tickets",
|
|
295
|
+
ctaDisabled: !1
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
id: 2415,
|
|
299
|
+
slug: "improv-throwdown-feb-20-930pm",
|
|
300
|
+
startDateTime: "2026-02-20T21:30:00-08:00",
|
|
301
|
+
endDateTime: "2026-02-20T23:00:00-08:00",
|
|
302
|
+
status: "on_sale",
|
|
303
|
+
ctaText: "Get tickets",
|
|
304
|
+
ctaDisabled: !1
|
|
305
|
+
},
|
|
306
|
+
// Single show days
|
|
307
|
+
{
|
|
308
|
+
id: 2411,
|
|
309
|
+
slug: "improv-throwdown-feb-27",
|
|
310
|
+
startDateTime: "2026-02-27T20:00:00-08:00",
|
|
311
|
+
endDateTime: "2026-02-27T22:00:00-08:00",
|
|
312
|
+
status: "sold_out",
|
|
313
|
+
ctaText: "Sold out",
|
|
314
|
+
ctaDisabled: !0
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
id: 2412,
|
|
318
|
+
slug: "improv-throwdown-mar-06",
|
|
319
|
+
startDateTime: "2026-03-06T20:00:00-08:00",
|
|
320
|
+
endDateTime: "2026-03-06T22:00:00-08:00",
|
|
321
|
+
status: "on_sale",
|
|
322
|
+
ctaText: "Get tickets",
|
|
323
|
+
ctaDisabled: !1
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
id: 2413,
|
|
327
|
+
slug: "improv-throwdown-mar-13",
|
|
328
|
+
startDateTime: "2026-03-13T20:00:00-08:00",
|
|
329
|
+
endDateTime: "2026-03-13T22:00:00-08:00",
|
|
330
|
+
status: "coming_soon",
|
|
331
|
+
ctaText: "Coming soon",
|
|
332
|
+
ctaDisabled: !0
|
|
333
|
+
}
|
|
334
|
+
]
|
|
335
|
+
}, te = {
|
|
336
|
+
...g,
|
|
337
|
+
id: 2414,
|
|
338
|
+
title: "Improv Throwdown",
|
|
339
|
+
slug: "improv-throwdown-feb-20-8pm",
|
|
340
|
+
imageUrl: "/posters/laughlab-tall.webp",
|
|
341
|
+
eventSeriesId: 42,
|
|
342
|
+
startDateTime: "2026-02-20T20:00:00-08:00",
|
|
343
|
+
endDateTime: "2026-02-20T21:30:00-08:00",
|
|
344
|
+
description: "Weekly improv comedy show featuring rotating guest performers and audience participation games."
|
|
345
|
+
// No seriesOccurrences — this is a single instance, not the series home
|
|
346
|
+
}, ae = {
|
|
347
|
+
...g,
|
|
348
|
+
id: 3e3,
|
|
349
|
+
title: "February Comedy Festival",
|
|
350
|
+
slug: "february-comedy-festival",
|
|
351
|
+
imageUrl: "/posters/Friday Night Showdown.jpg",
|
|
352
|
+
description: "A curated collection of the best comedy shows this February. From improv to stand-up, sketch to open mic — there's something for every comedy fan.",
|
|
353
|
+
collectionId: 7,
|
|
354
|
+
collectionEvents: [
|
|
355
|
+
{
|
|
356
|
+
id: 2401,
|
|
357
|
+
name: "Friday Night Comedy Throwdown",
|
|
358
|
+
slug: "friday-night-comedy-throwdown",
|
|
359
|
+
image: "/posters/Friday Night Showdown.jpg",
|
|
360
|
+
startDateTime: "2026-02-20T20:00:00-08:00",
|
|
361
|
+
status: "on_sale",
|
|
362
|
+
ticketsRemaining: 42,
|
|
363
|
+
ticketsTotal: 200
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
id: 2402,
|
|
367
|
+
name: "Saturday Night Special",
|
|
368
|
+
slug: "saturday-night-special",
|
|
369
|
+
image: "/posters/the-duel-square.webp",
|
|
370
|
+
startDateTime: "2026-02-21T21:00:00-08:00",
|
|
371
|
+
status: "on_sale",
|
|
372
|
+
ticketsRemaining: 8,
|
|
373
|
+
ticketsTotal: 150
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
id: 2403,
|
|
377
|
+
name: "Stand-Up Comedy Workshop",
|
|
378
|
+
slug: "standup-comedy-workshop",
|
|
379
|
+
image: "/posters/stand up 101.png",
|
|
380
|
+
startDateTime: "2026-02-22T14:00:00-08:00",
|
|
381
|
+
status: "on_sale",
|
|
382
|
+
ticketsRemaining: 15,
|
|
383
|
+
ticketsTotal: 30
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
id: 2410,
|
|
387
|
+
name: "Improv Throwdown",
|
|
388
|
+
slug: "improv-throwdown",
|
|
389
|
+
image: "/posters/laughlab-tall.webp",
|
|
390
|
+
startDateTime: "2026-02-27T20:00:00-08:00",
|
|
391
|
+
status: "on_sale",
|
|
392
|
+
ticketsRemaining: 65,
|
|
393
|
+
ticketsTotal: 200
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
id: 2404,
|
|
397
|
+
name: "Open Mic Night",
|
|
398
|
+
slug: "open-mic-night",
|
|
399
|
+
image: "/posters/OpenMic-Twitter.jpg",
|
|
400
|
+
startDateTime: "2026-02-28T19:00:00-08:00",
|
|
401
|
+
status: "on_sale",
|
|
402
|
+
ticketsRemaining: 100,
|
|
403
|
+
ticketsTotal: 100
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
id: 2405,
|
|
407
|
+
name: "Late Night Comedy Underground",
|
|
408
|
+
slug: "late-night-comedy-underground",
|
|
409
|
+
image: "/posters/standup-portrait.webp",
|
|
410
|
+
startDateTime: "2026-02-28T22:00:00-08:00",
|
|
411
|
+
status: "sold_out",
|
|
412
|
+
ticketsRemaining: 0,
|
|
413
|
+
ticketsTotal: 80
|
|
414
|
+
}
|
|
415
|
+
]
|
|
416
|
+
}, ie = {
|
|
417
|
+
...g,
|
|
418
|
+
id: 2408,
|
|
419
|
+
title: "Stand-Up Comedy Workshop",
|
|
420
|
+
slug: "standup-comedy-workshop",
|
|
421
|
+
imageUrl: "/posters/stand up 101.png",
|
|
422
|
+
// 16:9 landscape 1920×1080
|
|
423
|
+
description: "Learn the fundamentals of stand-up comedy in this 3-hour intensive workshop. Write, refine, and perform your first 5-minute set.",
|
|
424
|
+
isRegistrationEvent: !0,
|
|
425
|
+
displayStartTime: !1,
|
|
426
|
+
displayEndTime: !1,
|
|
427
|
+
status: "on_sale",
|
|
428
|
+
tickets: [
|
|
429
|
+
{
|
|
430
|
+
id: 301,
|
|
431
|
+
name: "Workshop Seat",
|
|
432
|
+
description: "Includes materials and performance slot",
|
|
433
|
+
price: 75,
|
|
434
|
+
fee: 7.5,
|
|
435
|
+
quantityAvailable: 8,
|
|
436
|
+
quantityTotal: 12,
|
|
437
|
+
minPerOrder: 1,
|
|
438
|
+
maxPerOrder: 1,
|
|
439
|
+
status: "on_sale",
|
|
440
|
+
isDonation: !1,
|
|
441
|
+
isHidden: !1
|
|
442
|
+
}
|
|
443
|
+
],
|
|
444
|
+
totalTicketsRemaining: 8,
|
|
445
|
+
totalTicketsCapacity: 12
|
|
446
|
+
}, se = {
|
|
447
|
+
...g,
|
|
448
|
+
id: 2414,
|
|
449
|
+
title: "Charity Comedy Benefit",
|
|
450
|
+
slug: "charity-comedy-benefit",
|
|
451
|
+
imageUrl: "/posters/Friday Night Showdown.jpg",
|
|
452
|
+
description: "All proceeds go to the LA Comedy Relief Fund. Choose your own donation amount or grab a standard ticket.",
|
|
453
|
+
status: "on_sale",
|
|
454
|
+
tickets: [
|
|
455
|
+
{
|
|
456
|
+
id: 401,
|
|
457
|
+
name: "Donation",
|
|
458
|
+
description: "Support the cause — choose your amount",
|
|
459
|
+
price: 0,
|
|
460
|
+
fee: 0,
|
|
461
|
+
quantityAvailable: 200,
|
|
462
|
+
quantityTotal: 200,
|
|
463
|
+
minPerOrder: 1,
|
|
464
|
+
maxPerOrder: 10,
|
|
465
|
+
status: "on_sale",
|
|
466
|
+
isDonation: !0,
|
|
467
|
+
isHidden: !1,
|
|
468
|
+
ticketType: 2
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
id: 402,
|
|
472
|
+
name: "Standard Admission",
|
|
473
|
+
description: "Includes one drink ticket",
|
|
474
|
+
price: 30,
|
|
475
|
+
fee: 3,
|
|
476
|
+
quantityAvailable: 80,
|
|
477
|
+
quantityTotal: 100,
|
|
478
|
+
minPerOrder: 1,
|
|
479
|
+
maxPerOrder: 6,
|
|
480
|
+
status: "on_sale",
|
|
481
|
+
isDonation: !1,
|
|
482
|
+
isHidden: !1
|
|
483
|
+
}
|
|
484
|
+
],
|
|
485
|
+
totalTicketsRemaining: 280,
|
|
486
|
+
totalTicketsCapacity: 300
|
|
487
|
+
}, oe = {
|
|
488
|
+
...g,
|
|
489
|
+
id: 2415,
|
|
490
|
+
title: "The Everything Show",
|
|
491
|
+
slug: "the-everything-show",
|
|
492
|
+
imageUrl: "/posters/the-duel-square.webp",
|
|
493
|
+
description: "A showcase event with every ticket state possible — for testing all edge cases.",
|
|
494
|
+
status: "on_sale",
|
|
495
|
+
tickets: [
|
|
496
|
+
{
|
|
497
|
+
id: 501,
|
|
498
|
+
name: "General Admission",
|
|
499
|
+
description: "Standard seating in the main room",
|
|
500
|
+
price: 25,
|
|
501
|
+
fee: 2.5,
|
|
502
|
+
quantityAvailable: 45,
|
|
503
|
+
quantityTotal: 150,
|
|
504
|
+
minPerOrder: 1,
|
|
505
|
+
maxPerOrder: 8,
|
|
506
|
+
status: "on_sale",
|
|
507
|
+
isDonation: !1,
|
|
508
|
+
isHidden: !1
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
id: 502,
|
|
512
|
+
name: "Basic Entry",
|
|
513
|
+
price: 15,
|
|
514
|
+
fee: 1.5,
|
|
515
|
+
quantityAvailable: 60,
|
|
516
|
+
quantityTotal: 80,
|
|
517
|
+
minPerOrder: 1,
|
|
518
|
+
maxPerOrder: 4,
|
|
519
|
+
status: "on_sale",
|
|
520
|
+
isDonation: !1,
|
|
521
|
+
isHidden: !1
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
id: 503,
|
|
525
|
+
name: "VIP Front Row",
|
|
526
|
+
description: "Premium seats with complimentary drink",
|
|
527
|
+
price: 75,
|
|
528
|
+
fee: 7.5,
|
|
529
|
+
quantityAvailable: 2,
|
|
530
|
+
quantityTotal: 20,
|
|
531
|
+
minPerOrder: 1,
|
|
532
|
+
maxPerOrder: 4,
|
|
533
|
+
status: "on_sale",
|
|
534
|
+
isDonation: !1,
|
|
535
|
+
isHidden: !1
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
id: 504,
|
|
539
|
+
name: "Early Bird",
|
|
540
|
+
description: "Limited early bird pricing",
|
|
541
|
+
price: 20,
|
|
542
|
+
fee: 2,
|
|
543
|
+
quantityAvailable: 0,
|
|
544
|
+
quantityTotal: 30,
|
|
545
|
+
minPerOrder: 1,
|
|
546
|
+
maxPerOrder: 4,
|
|
547
|
+
status: "sold_out",
|
|
548
|
+
isDonation: !1,
|
|
549
|
+
isHidden: !1
|
|
550
|
+
},
|
|
551
|
+
{
|
|
552
|
+
id: 505,
|
|
553
|
+
name: "Late Night Add-On",
|
|
554
|
+
description: "Access to the after-party at midnight",
|
|
555
|
+
price: 40,
|
|
556
|
+
fee: 4,
|
|
557
|
+
quantityAvailable: 50,
|
|
558
|
+
quantityTotal: 50,
|
|
559
|
+
minPerOrder: 1,
|
|
560
|
+
maxPerOrder: 2,
|
|
561
|
+
status: "coming_soon",
|
|
562
|
+
salesStartDate: "2026-03-01T10:00:00-08:00",
|
|
563
|
+
isDonation: !1,
|
|
564
|
+
isHidden: !1
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
id: 506,
|
|
568
|
+
name: "Weekend Bundle",
|
|
569
|
+
description: "Includes Saturday + Sunday shows",
|
|
570
|
+
price: 45,
|
|
571
|
+
fee: 4.5,
|
|
572
|
+
quantityAvailable: 0,
|
|
573
|
+
quantityTotal: 25,
|
|
574
|
+
minPerOrder: 1,
|
|
575
|
+
maxPerOrder: 4,
|
|
576
|
+
status: "sales_ended",
|
|
577
|
+
salesEndDate: "2026-02-10T23:59:00-08:00",
|
|
578
|
+
isDonation: !1,
|
|
579
|
+
isHidden: !1
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
id: 507,
|
|
583
|
+
name: "Donation",
|
|
584
|
+
description: "Support the performers directly",
|
|
585
|
+
price: 0,
|
|
586
|
+
fee: 0,
|
|
587
|
+
quantityAvailable: 100,
|
|
588
|
+
quantityTotal: 100,
|
|
589
|
+
minPerOrder: 1,
|
|
590
|
+
maxPerOrder: 5,
|
|
591
|
+
status: "on_sale",
|
|
592
|
+
isDonation: !0,
|
|
593
|
+
isHidden: !1,
|
|
594
|
+
ticketType: 2
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
id: 508,
|
|
598
|
+
name: "Secret VIP Lounge",
|
|
599
|
+
description: "Backstage access with meet & greet",
|
|
600
|
+
price: 150,
|
|
601
|
+
fee: 15,
|
|
602
|
+
quantityAvailable: 10,
|
|
603
|
+
quantityTotal: 10,
|
|
604
|
+
minPerOrder: 1,
|
|
605
|
+
maxPerOrder: 2,
|
|
606
|
+
status: "on_sale",
|
|
607
|
+
isDonation: !1,
|
|
608
|
+
isHidden: !0
|
|
609
|
+
},
|
|
610
|
+
{
|
|
611
|
+
id: 509,
|
|
612
|
+
name: "Industry Comp",
|
|
613
|
+
description: "Complimentary ticket for industry professionals",
|
|
614
|
+
price: 0,
|
|
615
|
+
fee: 0,
|
|
616
|
+
quantityAvailable: 20,
|
|
617
|
+
quantityTotal: 20,
|
|
618
|
+
minPerOrder: 1,
|
|
619
|
+
maxPerOrder: 1,
|
|
620
|
+
status: "on_sale",
|
|
621
|
+
isDonation: !1,
|
|
622
|
+
isHidden: !0
|
|
623
|
+
}
|
|
624
|
+
],
|
|
625
|
+
totalTicketsRemaining: 287,
|
|
626
|
+
totalTicketsCapacity: 485
|
|
627
|
+
}, re = {
|
|
628
|
+
...g,
|
|
629
|
+
id: 2416,
|
|
630
|
+
title: "Multi-Stage Festival",
|
|
631
|
+
slug: "multi-stage-festival",
|
|
632
|
+
imageUrl: "/posters/OpenMic-Twitter.jpg",
|
|
633
|
+
description: "Three stages, one incredible night. Choose your zone and enjoy performances across the venue.",
|
|
634
|
+
status: "on_sale",
|
|
635
|
+
tickets: [
|
|
636
|
+
{
|
|
637
|
+
id: 601,
|
|
638
|
+
name: "Floor Standing",
|
|
639
|
+
description: "Standing room on the main floor",
|
|
640
|
+
price: 35,
|
|
641
|
+
fee: 3.5,
|
|
642
|
+
quantityAvailable: 100,
|
|
643
|
+
quantityTotal: 200,
|
|
644
|
+
minPerOrder: 1,
|
|
645
|
+
maxPerOrder: 8,
|
|
646
|
+
status: "on_sale",
|
|
647
|
+
isDonation: !1,
|
|
648
|
+
isHidden: !1,
|
|
649
|
+
sectionName: "Floor"
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
id: 602,
|
|
653
|
+
name: "Floor Reserved",
|
|
654
|
+
description: "Reserved seat on the main floor",
|
|
655
|
+
price: 50,
|
|
656
|
+
fee: 5,
|
|
657
|
+
quantityAvailable: 30,
|
|
658
|
+
quantityTotal: 80,
|
|
659
|
+
minPerOrder: 1,
|
|
660
|
+
maxPerOrder: 6,
|
|
661
|
+
status: "on_sale",
|
|
662
|
+
isDonation: !1,
|
|
663
|
+
isHidden: !1,
|
|
664
|
+
sectionName: "Floor"
|
|
665
|
+
},
|
|
666
|
+
{
|
|
667
|
+
id: 603,
|
|
668
|
+
name: "Balcony Standard",
|
|
669
|
+
description: "Standard balcony seating with great views",
|
|
670
|
+
price: 40,
|
|
671
|
+
fee: 4,
|
|
672
|
+
quantityAvailable: 50,
|
|
673
|
+
quantityTotal: 60,
|
|
674
|
+
minPerOrder: 1,
|
|
675
|
+
maxPerOrder: 6,
|
|
676
|
+
status: "on_sale",
|
|
677
|
+
isDonation: !1,
|
|
678
|
+
isHidden: !1,
|
|
679
|
+
sectionName: "Balcony"
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
id: 604,
|
|
683
|
+
name: "Balcony Premium",
|
|
684
|
+
description: "Front-row balcony seats",
|
|
685
|
+
price: 60,
|
|
686
|
+
fee: 6,
|
|
687
|
+
quantityAvailable: 5,
|
|
688
|
+
quantityTotal: 20,
|
|
689
|
+
minPerOrder: 1,
|
|
690
|
+
maxPerOrder: 4,
|
|
691
|
+
status: "on_sale",
|
|
692
|
+
isDonation: !1,
|
|
693
|
+
isHidden: !1,
|
|
694
|
+
sectionName: "Balcony"
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
id: 605,
|
|
698
|
+
name: "VIP Lounge Table",
|
|
699
|
+
description: "Private table for 4 with bottle service and backstage access",
|
|
700
|
+
price: 250,
|
|
701
|
+
fee: 25,
|
|
702
|
+
quantityAvailable: 3,
|
|
703
|
+
quantityTotal: 8,
|
|
704
|
+
minPerOrder: 1,
|
|
705
|
+
maxPerOrder: 2,
|
|
706
|
+
status: "on_sale",
|
|
707
|
+
isDonation: !1,
|
|
708
|
+
isHidden: !1,
|
|
709
|
+
sectionName: "VIP Lounge"
|
|
710
|
+
}
|
|
711
|
+
],
|
|
712
|
+
totalTicketsRemaining: 188,
|
|
713
|
+
totalTicketsCapacity: 368
|
|
714
|
+
}, ne = {
|
|
715
|
+
...g,
|
|
716
|
+
id: 2417,
|
|
717
|
+
title: "Secret Show",
|
|
718
|
+
slug: "secret-show",
|
|
719
|
+
imageUrl: "/posters/luke-null-tall.webp",
|
|
720
|
+
description: "An intimate comedy experience. Some tickets are only available with a promo code.",
|
|
721
|
+
status: "on_sale",
|
|
722
|
+
tickets: [
|
|
723
|
+
{
|
|
724
|
+
id: 701,
|
|
725
|
+
name: "General Admission",
|
|
726
|
+
price: 30,
|
|
727
|
+
fee: 3,
|
|
728
|
+
quantityAvailable: 40,
|
|
729
|
+
quantityTotal: 60,
|
|
730
|
+
minPerOrder: 1,
|
|
731
|
+
maxPerOrder: 6,
|
|
732
|
+
status: "on_sale",
|
|
733
|
+
isDonation: !1,
|
|
734
|
+
isHidden: !1
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
id: 702,
|
|
738
|
+
name: "Premium Seat",
|
|
739
|
+
description: "Reserved seating in rows 1-5",
|
|
740
|
+
price: 50,
|
|
741
|
+
fee: 5,
|
|
742
|
+
quantityAvailable: 15,
|
|
743
|
+
quantityTotal: 30,
|
|
744
|
+
minPerOrder: 1,
|
|
745
|
+
maxPerOrder: 4,
|
|
746
|
+
status: "on_sale",
|
|
747
|
+
isDonation: !1,
|
|
748
|
+
isHidden: !1
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
id: 703,
|
|
752
|
+
name: "Artist Meet & Greet",
|
|
753
|
+
description: "Backstage pass with photo opportunity — promo code required",
|
|
754
|
+
price: 100,
|
|
755
|
+
fee: 10,
|
|
756
|
+
quantityAvailable: 8,
|
|
757
|
+
quantityTotal: 10,
|
|
758
|
+
minPerOrder: 1,
|
|
759
|
+
maxPerOrder: 2,
|
|
760
|
+
status: "on_sale",
|
|
761
|
+
isDonation: !1,
|
|
762
|
+
isHidden: !0
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
id: 704,
|
|
766
|
+
name: "Industry Comp",
|
|
767
|
+
description: "Complimentary entry for industry professionals",
|
|
768
|
+
price: 0,
|
|
769
|
+
fee: 0,
|
|
770
|
+
quantityAvailable: 10,
|
|
771
|
+
quantityTotal: 10,
|
|
772
|
+
minPerOrder: 1,
|
|
773
|
+
maxPerOrder: 1,
|
|
774
|
+
status: "on_sale",
|
|
775
|
+
isDonation: !1,
|
|
776
|
+
isHidden: !0
|
|
777
|
+
}
|
|
778
|
+
],
|
|
779
|
+
totalTicketsRemaining: 73,
|
|
780
|
+
totalTicketsCapacity: 110
|
|
781
|
+
}, le = {
|
|
782
|
+
...g,
|
|
783
|
+
id: 2418,
|
|
784
|
+
title: "Late Night Comedy Underground",
|
|
785
|
+
slug: "late-night-comedy-underground",
|
|
786
|
+
imageUrl: "/posters/laughlab-tall.webp",
|
|
787
|
+
description: "The raunchiest, most unfiltered comedy night in LA. Side stage, no holds barred.",
|
|
788
|
+
status: "on_sale",
|
|
789
|
+
stageName: "Side Stage",
|
|
790
|
+
ageRestriction: 21,
|
|
791
|
+
displayAgeRestriction: !0,
|
|
792
|
+
tickets: [
|
|
793
|
+
{
|
|
794
|
+
id: 801,
|
|
795
|
+
name: "General Admission",
|
|
796
|
+
price: 20,
|
|
797
|
+
fee: 2,
|
|
798
|
+
quantityAvailable: 25,
|
|
799
|
+
quantityTotal: 40,
|
|
800
|
+
minPerOrder: 1,
|
|
801
|
+
maxPerOrder: 4,
|
|
802
|
+
status: "on_sale",
|
|
803
|
+
isDonation: !1,
|
|
804
|
+
isHidden: !1
|
|
805
|
+
},
|
|
806
|
+
{
|
|
807
|
+
id: 802,
|
|
808
|
+
name: "VIP Booth",
|
|
809
|
+
description: "Reserved booth for 2 with drinks included",
|
|
810
|
+
price: 80,
|
|
811
|
+
fee: 8,
|
|
812
|
+
quantityAvailable: 4,
|
|
813
|
+
quantityTotal: 6,
|
|
814
|
+
minPerOrder: 1,
|
|
815
|
+
maxPerOrder: 2,
|
|
816
|
+
status: "on_sale",
|
|
817
|
+
isDonation: !1,
|
|
818
|
+
isHidden: !1
|
|
819
|
+
}
|
|
820
|
+
],
|
|
821
|
+
totalTicketsRemaining: 29,
|
|
822
|
+
totalTicketsCapacity: 46
|
|
823
|
+
}, de = {
|
|
824
|
+
...g,
|
|
825
|
+
id: 2420,
|
|
826
|
+
title: "The Friday Night All-Star Comedy Throwdown featuring Dave Martinez, Sarah Chen, Mike Thompson, Bobby Lee, Andrew Santino, Hasan Minhaj, and Very Special Guests from Netflix, Comedy Central, HBO, and Amazon Prime",
|
|
827
|
+
slug: "the-friday-night-all-star-comedy-throwdown",
|
|
828
|
+
imageUrl: "/posters/laughlab-tall.webp",
|
|
829
|
+
description: `The biggest lineup of the year! Seven of the hottest comics in LA on one stage for one unforgettable night. This is the show comedy fans have been waiting for — a stacked bill from top to bottom with headliners you've seen on every major streaming platform.
|
|
830
|
+
|
|
831
|
+
Dave Martinez (Netflix's "Comedy Knockout") headlines with his signature high-energy style. Sarah Chen brings her razor-sharp observational humor. Mike Thompson keeps the energy sky-high between sets. Bobby Lee delivers his unhinged brilliance. Andrew Santino roasts everything in sight. Hasan Minhaj brings the political heat. Plus surprise guests you won't want to miss.
|
|
832
|
+
|
|
833
|
+
Two-drink minimum. No photography or recording. Arrive early — seating is first come, first served.`,
|
|
834
|
+
ageRestriction: 18,
|
|
835
|
+
displayAgeRestriction: !0,
|
|
836
|
+
displayStartTime: !0,
|
|
837
|
+
displayEndTime: !0,
|
|
838
|
+
displayDoorsTime: !0,
|
|
839
|
+
performers: [
|
|
840
|
+
...A,
|
|
841
|
+
{
|
|
842
|
+
id: 4,
|
|
843
|
+
displayName: "Bobby Lee",
|
|
844
|
+
profileImage: "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=200&h=200&fit=crop"
|
|
845
|
+
},
|
|
846
|
+
{
|
|
847
|
+
id: 5,
|
|
848
|
+
displayName: "Andrew Santino",
|
|
849
|
+
profileImage: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=200&h=200&fit=crop"
|
|
850
|
+
},
|
|
851
|
+
{
|
|
852
|
+
id: 6,
|
|
853
|
+
displayName: "Hasan Minhaj",
|
|
854
|
+
profileImage: "https://images.unsplash.com/photo-1519085360753-af0119f7cbe7?w=200&h=200&fit=crop"
|
|
855
|
+
}
|
|
856
|
+
]
|
|
857
|
+
}, ce = {
|
|
858
|
+
...g,
|
|
859
|
+
id: 2421,
|
|
860
|
+
title: "Sunset Sessions: Rooftop Jazz & Cocktails",
|
|
861
|
+
slug: "sunset-sessions-rooftop-jazz",
|
|
862
|
+
imageUrl: "/posters/Wide.jpg",
|
|
863
|
+
description: `Join us on the rooftop for an evening of smooth jazz, craft cocktails, and stunning sunset views over the city. Featuring a rotating cast of LA's finest jazz musicians in an intimate outdoor setting.
|
|
864
|
+
|
|
865
|
+
Full bar available with specialty cocktails curated for the evening. Light bites and small plates from our kitchen. Dress code: smart casual.`,
|
|
866
|
+
displayStartTime: !0,
|
|
867
|
+
displayEndTime: !0,
|
|
868
|
+
displayDoorsTime: !0
|
|
869
|
+
};
|
|
870
|
+
({
|
|
871
|
+
...g
|
|
872
|
+
});
|
|
873
|
+
const q = {
|
|
874
|
+
URGENT: 0.1,
|
|
875
|
+
// ≤10% remaining → urgent ("Only X left")
|
|
876
|
+
LOW: 0.2,
|
|
877
|
+
// ≤20% remaining (80%+ sold) → "Selling fast"
|
|
878
|
+
MAX_EXACT_COUNT: 20
|
|
879
|
+
// Don't show exact count above 20
|
|
880
|
+
};
|
|
881
|
+
function ue(i, t) {
|
|
882
|
+
if (t === 0) return "none";
|
|
883
|
+
if (i <= 0) return "sold_out";
|
|
884
|
+
const n = i / t;
|
|
885
|
+
return n <= q.URGENT ? "urgent" : n <= q.LOW ? "low" : "none";
|
|
886
|
+
}
|
|
887
|
+
function me(i, t, n, d) {
|
|
888
|
+
return i === "none" ? null : i === "sold_out" ? "Sold out" : i === "urgent" && n !== "browse" && t <= q.MAX_EXACT_COUNT ? `Only ${t} left` : i === "low" || i === "urgent" ? "Selling fast" : null;
|
|
889
|
+
}
|
|
890
|
+
function pe(i) {
|
|
891
|
+
const t = i.tickets.map((d) => ({
|
|
892
|
+
salesBegin: d.salesStartDate,
|
|
893
|
+
salesEnd: d.salesEndDate,
|
|
894
|
+
remainingCapacity: d.quantityAvailable,
|
|
895
|
+
totalCapacity: d.quantityTotal,
|
|
896
|
+
soldOut: d.status === "sold_out",
|
|
897
|
+
salesChannel: 1
|
|
898
|
+
// All our tickets are online (not "at the door only")
|
|
899
|
+
}));
|
|
900
|
+
if (i.status === "cancelled")
|
|
901
|
+
return {
|
|
902
|
+
text: "Cancelled",
|
|
903
|
+
disabled: !0,
|
|
904
|
+
reason: "This event has been cancelled"
|
|
905
|
+
};
|
|
906
|
+
if (i.status === "past")
|
|
907
|
+
return {
|
|
908
|
+
text: "Event ended",
|
|
909
|
+
disabled: !0,
|
|
910
|
+
reason: "This event has ended"
|
|
911
|
+
};
|
|
912
|
+
const n = N(
|
|
913
|
+
{ startDateTime: i.startDateTime, endDateTime: i.endDateTime },
|
|
914
|
+
t,
|
|
915
|
+
{
|
|
916
|
+
cancelled: !1,
|
|
917
|
+
isRegistration: i.isRegistrationEvent,
|
|
918
|
+
waitlistEnabled: !1
|
|
919
|
+
}
|
|
920
|
+
);
|
|
921
|
+
return {
|
|
922
|
+
text: n.text,
|
|
923
|
+
disabled: n.disabled,
|
|
924
|
+
reason: n.disabled ? n.reason : void 0
|
|
925
|
+
};
|
|
926
|
+
}
|
|
927
|
+
function fe(i) {
|
|
928
|
+
const t = i.tickets.filter(
|
|
929
|
+
(l) => l.status === "on_sale" && !l.isHidden
|
|
930
|
+
);
|
|
931
|
+
if (t.length === 0) return null;
|
|
932
|
+
const n = t.some(
|
|
933
|
+
(l) => l.isDonation || l.ticketType === 2
|
|
934
|
+
), d = t.filter(
|
|
935
|
+
(l) => !l.isDonation && l.ticketType !== 2
|
|
936
|
+
), T = d.some((l) => l.price === 0), y = d.filter((l) => l.price > 0);
|
|
937
|
+
if (y.length === 0 && !T && n) return "Donation";
|
|
938
|
+
if (y.length === 0 && T) return null;
|
|
939
|
+
const p = Math.min(...y.map((l) => l.price));
|
|
940
|
+
return T ? null : n ? `From $${p}` : y.length === 1 ? `$${p}` : `From $${p}`;
|
|
941
|
+
}
|
|
942
|
+
function he(i, t) {
|
|
943
|
+
return $(i * (t / 100));
|
|
944
|
+
}
|
|
945
|
+
const I = {
|
|
946
|
+
normal: 300
|
|
947
|
+
};
|
|
948
|
+
function ge(i) {
|
|
949
|
+
if (!i) return "";
|
|
950
|
+
const t = new Date(i), n = /* @__PURE__ */ new Date(), d = t.getTime() - n.getTime(), T = Math.round(d / (1e3 * 60)), y = d / (1e3 * 60 * 60);
|
|
951
|
+
if (T > 0 && T < 60) {
|
|
952
|
+
const f = Math.max(1, T);
|
|
953
|
+
return `in ${f} minute${f !== 1 ? "s" : ""}`;
|
|
954
|
+
}
|
|
955
|
+
if (y > 0 && y < 24) {
|
|
956
|
+
const f = Math.max(1, Math.round(y));
|
|
957
|
+
return `in ${f} hour${f !== 1 ? "s" : ""}`;
|
|
958
|
+
}
|
|
959
|
+
const p = new Date(n);
|
|
960
|
+
if (p.setDate(p.getDate() + 1), t.toDateString() === p.toDateString())
|
|
961
|
+
return `tomorrow at ${t.toLocaleTimeString("en-US", {
|
|
962
|
+
hour: "numeric",
|
|
963
|
+
minute: "2-digit"
|
|
964
|
+
})}`;
|
|
965
|
+
const l = d / (1e3 * 60 * 60 * 24);
|
|
966
|
+
if (l > 0 && l <= 7) {
|
|
967
|
+
const f = new Intl.DateTimeFormat("en-US", {
|
|
968
|
+
weekday: "long"
|
|
969
|
+
}).format(t), x = t.toLocaleTimeString("en-US", {
|
|
970
|
+
hour: "numeric",
|
|
971
|
+
minute: "2-digit"
|
|
972
|
+
});
|
|
973
|
+
return `on ${f} at ${x}`;
|
|
974
|
+
}
|
|
975
|
+
return `on ${new Intl.DateTimeFormat("en-US", {
|
|
976
|
+
month: "short",
|
|
977
|
+
day: "numeric"
|
|
978
|
+
}).format(t)}`;
|
|
979
|
+
}
|
|
980
|
+
function ye() {
|
|
981
|
+
return {
|
|
982
|
+
code: "",
|
|
983
|
+
isApplied: !1,
|
|
984
|
+
isValidating: !1,
|
|
985
|
+
error: "",
|
|
986
|
+
hint: "",
|
|
987
|
+
discountAmount: 0,
|
|
988
|
+
discountType: "",
|
|
989
|
+
discountTicketIds: [],
|
|
990
|
+
revealHiddenTickets: !1,
|
|
991
|
+
revealTicketIds: []
|
|
992
|
+
};
|
|
993
|
+
}
|
|
994
|
+
var M = e.from_html('<div class="flex justify-between"><!> <!></div>'), L = e.from_html('<div class="flex justify-between pt-1 border-t border-default"><!> <!></div>'), U = e.from_html('<div class="flex justify-between"><!> <!></div>'), z = e.from_html('<div class="flex justify-between"><!> <!></div>'), B = e.from_html('<div class="flex justify-between"><!> <!></div>'), j = e.from_html('<div class="space-y-2"><!> <!> <!> <!> <!> <div class="flex justify-between pt-2 border-t border-default"><!> <!></div></div>');
|
|
995
|
+
function ve(i, t) {
|
|
996
|
+
e.push(t, !0);
|
|
997
|
+
let n = e.prop(t, "labels", 19, () => ({}));
|
|
998
|
+
var d = j(), T = e.child(d);
|
|
999
|
+
e.each(T, 17, () => t.orderTotals.lines, (a) => a.ticketId, (a, s) => {
|
|
1000
|
+
var o = M(), m = e.child(o);
|
|
1001
|
+
b(m, {
|
|
1002
|
+
size: "xs",
|
|
1003
|
+
color: "muted",
|
|
1004
|
+
children: (h, r) => {
|
|
1005
|
+
e.next();
|
|
1006
|
+
var v = e.text();
|
|
1007
|
+
e.template_effect(() => e.set_text(v, `${e.get(s).quantity ?? ""}x ${e.get(s).ticketName ?? ""}`)), e.append(h, v);
|
|
1008
|
+
},
|
|
1009
|
+
$$slots: { default: !0 }
|
|
1010
|
+
});
|
|
1011
|
+
var u = e.sibling(m, 2);
|
|
1012
|
+
b(u, {
|
|
1013
|
+
size: "xs",
|
|
1014
|
+
color: "muted",
|
|
1015
|
+
children: (h, r) => {
|
|
1016
|
+
e.next();
|
|
1017
|
+
var v = e.text();
|
|
1018
|
+
e.template_effect((R) => e.set_text(v, R), [() => _(e.get(s).subtotal)]), e.append(h, v);
|
|
1019
|
+
},
|
|
1020
|
+
$$slots: { default: !0 }
|
|
1021
|
+
}), e.reset(o), e.append(a, o);
|
|
1022
|
+
});
|
|
1023
|
+
var y = e.sibling(T, 2);
|
|
1024
|
+
{
|
|
1025
|
+
var p = (a) => {
|
|
1026
|
+
var s = L(), o = e.child(s);
|
|
1027
|
+
b(o, {
|
|
1028
|
+
size: "xs",
|
|
1029
|
+
color: "muted",
|
|
1030
|
+
children: (u, h) => {
|
|
1031
|
+
e.next();
|
|
1032
|
+
var r = e.text();
|
|
1033
|
+
e.template_effect(() => e.set_text(r, n().subtotal || "Subtotal")), e.append(u, r);
|
|
1034
|
+
},
|
|
1035
|
+
$$slots: { default: !0 }
|
|
1036
|
+
});
|
|
1037
|
+
var m = e.sibling(o, 2);
|
|
1038
|
+
b(m, {
|
|
1039
|
+
size: "xs",
|
|
1040
|
+
color: "muted",
|
|
1041
|
+
children: (u, h) => {
|
|
1042
|
+
e.next();
|
|
1043
|
+
var r = e.text();
|
|
1044
|
+
e.template_effect((v) => e.set_text(r, v), [() => _(t.orderTotals.subtotal)]), e.append(u, r);
|
|
1045
|
+
},
|
|
1046
|
+
$$slots: { default: !0 }
|
|
1047
|
+
}), e.reset(s), e.append(a, s);
|
|
1048
|
+
};
|
|
1049
|
+
e.if(y, (a) => {
|
|
1050
|
+
t.orderTotals.lines.length > 1 && a(p);
|
|
1051
|
+
});
|
|
1052
|
+
}
|
|
1053
|
+
var l = e.sibling(y, 2);
|
|
1054
|
+
{
|
|
1055
|
+
var P = (a) => {
|
|
1056
|
+
var s = U(), o = e.child(s);
|
|
1057
|
+
b(o, {
|
|
1058
|
+
size: "xs",
|
|
1059
|
+
color: "muted",
|
|
1060
|
+
children: (u, h) => {
|
|
1061
|
+
e.next();
|
|
1062
|
+
var r = e.text();
|
|
1063
|
+
e.template_effect(() => e.set_text(r, n().serviceFees || "Service fees")), e.append(u, r);
|
|
1064
|
+
},
|
|
1065
|
+
$$slots: { default: !0 }
|
|
1066
|
+
});
|
|
1067
|
+
var m = e.sibling(o, 2);
|
|
1068
|
+
b(m, {
|
|
1069
|
+
size: "xs",
|
|
1070
|
+
color: "muted",
|
|
1071
|
+
children: (u, h) => {
|
|
1072
|
+
e.next();
|
|
1073
|
+
var r = e.text();
|
|
1074
|
+
e.template_effect((v) => e.set_text(r, v), [() => _(t.orderTotals.fees)]), e.append(u, r);
|
|
1075
|
+
},
|
|
1076
|
+
$$slots: { default: !0 }
|
|
1077
|
+
}), e.reset(s), e.append(a, s);
|
|
1078
|
+
};
|
|
1079
|
+
e.if(l, (a) => {
|
|
1080
|
+
t.orderTotals.fees > 0 && a(P);
|
|
1081
|
+
});
|
|
1082
|
+
}
|
|
1083
|
+
var f = e.sibling(l, 2);
|
|
1084
|
+
{
|
|
1085
|
+
var x = (a) => {
|
|
1086
|
+
var s = z(), o = e.child(s);
|
|
1087
|
+
b(o, {
|
|
1088
|
+
size: "xs",
|
|
1089
|
+
color: "muted",
|
|
1090
|
+
children: (u, h) => {
|
|
1091
|
+
e.next();
|
|
1092
|
+
var r = e.text();
|
|
1093
|
+
e.template_effect(() => e.set_text(r, n().taxes || "Taxes")), e.append(u, r);
|
|
1094
|
+
},
|
|
1095
|
+
$$slots: { default: !0 }
|
|
1096
|
+
});
|
|
1097
|
+
var m = e.sibling(o, 2);
|
|
1098
|
+
b(m, {
|
|
1099
|
+
size: "xs",
|
|
1100
|
+
color: "muted",
|
|
1101
|
+
children: (u, h) => {
|
|
1102
|
+
e.next();
|
|
1103
|
+
var r = e.text();
|
|
1104
|
+
e.template_effect((v) => e.set_text(r, v), [() => _(t.orderTotals.taxes)]), e.append(u, r);
|
|
1105
|
+
},
|
|
1106
|
+
$$slots: { default: !0 }
|
|
1107
|
+
}), e.reset(s), e.append(a, s);
|
|
1108
|
+
};
|
|
1109
|
+
e.if(f, (a) => {
|
|
1110
|
+
t.orderTotals.taxes > 0 && a(x);
|
|
1111
|
+
});
|
|
1112
|
+
}
|
|
1113
|
+
var D = e.sibling(f, 2);
|
|
1114
|
+
{
|
|
1115
|
+
var w = (a) => {
|
|
1116
|
+
var s = B(), o = e.child(s);
|
|
1117
|
+
b(o, {
|
|
1118
|
+
size: "xs",
|
|
1119
|
+
color: "success",
|
|
1120
|
+
children: (u, h) => {
|
|
1121
|
+
e.next();
|
|
1122
|
+
var r = e.text();
|
|
1123
|
+
e.template_effect(() => e.set_text(r, n().promoDiscount || "Promo discount")), e.append(u, r);
|
|
1124
|
+
},
|
|
1125
|
+
$$slots: { default: !0 }
|
|
1126
|
+
});
|
|
1127
|
+
var m = e.sibling(o, 2);
|
|
1128
|
+
b(m, {
|
|
1129
|
+
size: "xs",
|
|
1130
|
+
color: "success",
|
|
1131
|
+
children: (u, h) => {
|
|
1132
|
+
e.next();
|
|
1133
|
+
var r = e.text();
|
|
1134
|
+
e.template_effect((v) => e.set_text(r, `-${v ?? ""}`), [() => _(t.orderTotals.promoDiscount)]), e.append(u, r);
|
|
1135
|
+
},
|
|
1136
|
+
$$slots: { default: !0 }
|
|
1137
|
+
}), e.reset(s), e.append(a, s);
|
|
1138
|
+
};
|
|
1139
|
+
e.if(D, (a) => {
|
|
1140
|
+
t.orderTotals.promoDiscount > 0 && a(w);
|
|
1141
|
+
});
|
|
1142
|
+
}
|
|
1143
|
+
var c = e.sibling(D, 2), k = e.child(c);
|
|
1144
|
+
b(k, {
|
|
1145
|
+
size: "sm",
|
|
1146
|
+
class: "font-semibold",
|
|
1147
|
+
children: (a, s) => {
|
|
1148
|
+
e.next();
|
|
1149
|
+
var o = e.text();
|
|
1150
|
+
e.template_effect(() => e.set_text(o, n().total || "Total")), e.append(a, o);
|
|
1151
|
+
},
|
|
1152
|
+
$$slots: { default: !0 }
|
|
1153
|
+
});
|
|
1154
|
+
var S = e.sibling(k, 2);
|
|
1155
|
+
b(S, {
|
|
1156
|
+
size: "sm",
|
|
1157
|
+
class: "font-semibold",
|
|
1158
|
+
children: (a, s) => {
|
|
1159
|
+
e.next();
|
|
1160
|
+
var o = e.text();
|
|
1161
|
+
e.template_effect((m) => e.set_text(o, m), [() => _(t.orderTotals.total)]), e.append(a, o);
|
|
1162
|
+
},
|
|
1163
|
+
$$slots: { default: !0 }
|
|
1164
|
+
}), e.reset(c), e.reset(d), e.template_effect(() => e.set_style(d, `transition-duration: ${I.normal}ms;`)), e.append(i, d), e.pop();
|
|
1165
|
+
}
|
|
1166
|
+
const G = {
|
|
1167
|
+
// ── Ticket quantity controls ──────────────────────────────────────
|
|
1168
|
+
decrease: "Decrease",
|
|
1169
|
+
increase: "Increase",
|
|
1170
|
+
quantity: "quantity",
|
|
1171
|
+
// ── Ticket states ─────────────────────────────────────────────────
|
|
1172
|
+
soldOut: "Sold out",
|
|
1173
|
+
free: "Free",
|
|
1174
|
+
unavailable: "Unavailable",
|
|
1175
|
+
eventSoldOut: "This event is sold out",
|
|
1176
|
+
// ── Price display ─────────────────────────────────────────────────
|
|
1177
|
+
includesFees: "Includes",
|
|
1178
|
+
fees: "fees",
|
|
1179
|
+
fee: "fee",
|
|
1180
|
+
// ── Checkout CTAs ─────────────────────────────────────────────────
|
|
1181
|
+
checkout: "Checkout",
|
|
1182
|
+
getTickets: "Get tickets",
|
|
1183
|
+
selectTickets: "Select tickets",
|
|
1184
|
+
selectTicketsBelow: "Select tickets below",
|
|
1185
|
+
selectTicketsToContinue: "Select tickets to continue",
|
|
1186
|
+
reserveASpot: "Reserve a spot",
|
|
1187
|
+
// ── Password modal / gate ─────────────────────────────────────────
|
|
1188
|
+
enterPassword: "Enter Password",
|
|
1189
|
+
enterEventPassword: "Enter event password",
|
|
1190
|
+
passwordRequired: "Password Required",
|
|
1191
|
+
passwordRequiredShort: "Password required",
|
|
1192
|
+
eventRequiresPassword: "This event requires a password to purchase tickets.",
|
|
1193
|
+
eventRequiresPasswordAccess: "This event requires a password to access tickets.",
|
|
1194
|
+
enterEventPasswordToView: "Enter the event password to view tickets.",
|
|
1195
|
+
enterEventPasswordToViewAvailable: "Enter the event password to view available tickets.",
|
|
1196
|
+
eventPassword: "Event password",
|
|
1197
|
+
password: "Password",
|
|
1198
|
+
pleaseEnterPassword: "Please enter the event password",
|
|
1199
|
+
pleaseEnterAPassword: "Please enter a password",
|
|
1200
|
+
eventRequiresPasswordShort: "This event requires a password",
|
|
1201
|
+
unlockTickets: "Unlock tickets",
|
|
1202
|
+
cancel: "Cancel",
|
|
1203
|
+
continue: "Continue",
|
|
1204
|
+
submit: "Submit",
|
|
1205
|
+
// ── Order summary ─────────────────────────────────────────────────
|
|
1206
|
+
subtotal: "Subtotal",
|
|
1207
|
+
serviceFees: "Service fees",
|
|
1208
|
+
taxes: "Taxes",
|
|
1209
|
+
tax: "Tax",
|
|
1210
|
+
promoDiscount: "Promo discount",
|
|
1211
|
+
giftCard: "Gift card",
|
|
1212
|
+
total: "Total",
|
|
1213
|
+
orderSummary: "Order summary",
|
|
1214
|
+
yourOrder: "Your Order",
|
|
1215
|
+
// ── Ticket counts (used in CTA buttons) ───────────────────────────
|
|
1216
|
+
ticket: "ticket",
|
|
1217
|
+
tickets: "tickets",
|
|
1218
|
+
// ── Checkout form (v3-airbnb-split) ───────────────────────────────
|
|
1219
|
+
yourDetails: "Your details",
|
|
1220
|
+
attendeeDetails: "Attendee details",
|
|
1221
|
+
attendee: "Attendee",
|
|
1222
|
+
sameAsPurchaser: "Same as purchaser",
|
|
1223
|
+
payment: "Payment",
|
|
1224
|
+
noPaymentRequired: "No payment required",
|
|
1225
|
+
freeEventMessage: "This is a free event. Complete the form above to reserve your spot.",
|
|
1226
|
+
firstName: "First name",
|
|
1227
|
+
lastName: "Last name",
|
|
1228
|
+
emailAddress: "Email address",
|
|
1229
|
+
email: "Email",
|
|
1230
|
+
emailPlaceholder: "you@example.com",
|
|
1231
|
+
attendeeEmailPlaceholder: "attendee@example.com",
|
|
1232
|
+
cardNumber: "Card number",
|
|
1233
|
+
cardPlaceholder: "4242 4242 4242 4242",
|
|
1234
|
+
expiryDate: "Expiry date",
|
|
1235
|
+
expiryPlaceholder: "MM / YY",
|
|
1236
|
+
cvc: "CVC",
|
|
1237
|
+
cvcPlaceholder: "123",
|
|
1238
|
+
keepMeUpdated: "Keep me updated about this event and similar events",
|
|
1239
|
+
agreeToTerms: "I agree to the terms and conditions",
|
|
1240
|
+
goBack: "Go back",
|
|
1241
|
+
loadingPaymentForm: "Loading secure payment form...",
|
|
1242
|
+
// ── Checkout form validation ──────────────────────────────────────
|
|
1243
|
+
firstNameRequired: "First name is required",
|
|
1244
|
+
lastNameRequired: "Last name is required",
|
|
1245
|
+
emailRequired: "Email is required",
|
|
1246
|
+
emailInvalid: "Enter a valid email address",
|
|
1247
|
+
emailInvalidShort: "Enter a valid email",
|
|
1248
|
+
cardNumberRequired: "Card number is required",
|
|
1249
|
+
expiryRequired: "Expiry date is required",
|
|
1250
|
+
cvcRequired: "CVC is required",
|
|
1251
|
+
mustAgreeTerms: "You must agree to the terms",
|
|
1252
|
+
// ── Place order CTAs ──────────────────────────────────────────────
|
|
1253
|
+
placeOrder: "Place order",
|
|
1254
|
+
completeOrder: "Complete order",
|
|
1255
|
+
placingOrder: "Placing order...",
|
|
1256
|
+
// ── Promo code ────────────────────────────────────────────────────
|
|
1257
|
+
havePromoCode: "Have a promo code?",
|
|
1258
|
+
promoCode: "Promo code",
|
|
1259
|
+
enterCode: "Enter code",
|
|
1260
|
+
apply: "Apply",
|
|
1261
|
+
remove: "Remove",
|
|
1262
|
+
removePromoCode: "Remove promo code",
|
|
1263
|
+
applyPromoCode: "Apply promo code",
|
|
1264
|
+
checkingPromoCode: "Checking promo code",
|
|
1265
|
+
checking: "Checking...",
|
|
1266
|
+
promoApplied: "Promo applied",
|
|
1267
|
+
// ── Navigation tabs (app-segments) ────────────────────────────────
|
|
1268
|
+
about: "About",
|
|
1269
|
+
ticketsTab: "Tickets",
|
|
1270
|
+
eventSections: "Event sections",
|
|
1271
|
+
// ── Event details ─────────────────────────────────────────────────
|
|
1272
|
+
eventDetails: "Event details",
|
|
1273
|
+
performers: "Performers",
|
|
1274
|
+
faq: "FAQ",
|
|
1275
|
+
frequentlyAskedQuestions: "Frequently asked questions",
|
|
1276
|
+
doors: "Doors",
|
|
1277
|
+
doorsOpenAt: "Doors open at",
|
|
1278
|
+
// ── Series occurrences ────────────────────────────────────────────
|
|
1279
|
+
upcomingDates: "Upcoming Dates",
|
|
1280
|
+
// ── Close / dismiss ───────────────────────────────────────────────
|
|
1281
|
+
closeTicketSelection: "Close ticket selection",
|
|
1282
|
+
closeTicketSelector: "Close ticket selector",
|
|
1283
|
+
// ── Accessibility ─────────────────────────────────────────────────
|
|
1284
|
+
ticketSelection: "ticket selection",
|
|
1285
|
+
ticketsSelected: "tickets selected",
|
|
1286
|
+
view: "View",
|
|
1287
|
+
// ── Success page (v3-airbnb-split) ────────────────────────────────
|
|
1288
|
+
youreIn: "You're in!",
|
|
1289
|
+
youreRegistered: "You're registered!",
|
|
1290
|
+
confirmed: "confirmed",
|
|
1291
|
+
viewTickets: "View tickets",
|
|
1292
|
+
order: "Order",
|
|
1293
|
+
confirmationSentTo: "Confirmation sent to",
|
|
1294
|
+
addToCalendar: "Add to Calendar",
|
|
1295
|
+
googleCalendar: "Google Calendar",
|
|
1296
|
+
appleCalendar: "Apple Calendar (.ics)",
|
|
1297
|
+
share: "Share",
|
|
1298
|
+
map: "Map",
|
|
1299
|
+
backToEvent: "Back to event",
|
|
1300
|
+
needHelp: "Need help?",
|
|
1301
|
+
linkCopied: "Link copied to clipboard!",
|
|
1302
|
+
copyLink: "Copy this link:",
|
|
1303
|
+
addToAppleWallet: "Add to Apple Wallet",
|
|
1304
|
+
saveToGoogleWallet: "Save to Google Wallet",
|
|
1305
|
+
// ── Session timer / expiration modals ─────────────────────────────
|
|
1306
|
+
sessionExpiringSoon: "Session expiring soon",
|
|
1307
|
+
sessionExpiringSoonMessage: "Your checkout session will expire in {time}. Your selected tickets will be released back to inventory.",
|
|
1308
|
+
extensionsRemaining: "{count} extension{plural} remaining",
|
|
1309
|
+
continueCheckout: "Continue checkout",
|
|
1310
|
+
okIllHurry: "OK, I'll hurry",
|
|
1311
|
+
maxExtensionsReached: "Maximum extensions reached",
|
|
1312
|
+
wantToKeepTickets: "Want to keep your tickets?",
|
|
1313
|
+
sessionExpiredMessage: "Your checkout session has expired and your selected tickets have been released.",
|
|
1314
|
+
sessionExpired: "Session expired",
|
|
1315
|
+
reservationTimedOut: "Your reservation has timed out. Please select your tickets again to continue.",
|
|
1316
|
+
keepMyTickets: "Keep my tickets",
|
|
1317
|
+
selectTicketsAgain: "Select tickets again",
|
|
1318
|
+
extendingSession: "Extending...",
|
|
1319
|
+
// ── MobileCta ─────────────────────────────────────────────────────
|
|
1320
|
+
selectTicketsLabel: "Select Tickets"
|
|
1321
|
+
};
|
|
1322
|
+
function Te(i = {}) {
|
|
1323
|
+
return { ...G, ...i };
|
|
1324
|
+
}
|
|
1325
|
+
export {
|
|
1326
|
+
I as D,
|
|
1327
|
+
ve as O,
|
|
1328
|
+
se as a,
|
|
1329
|
+
ie as b,
|
|
1330
|
+
Z as c,
|
|
1331
|
+
g as d,
|
|
1332
|
+
he as e,
|
|
1333
|
+
me as f,
|
|
1334
|
+
ue as g,
|
|
1335
|
+
ge as h,
|
|
1336
|
+
pe as i,
|
|
1337
|
+
fe as j,
|
|
1338
|
+
ye as k,
|
|
1339
|
+
ce as l,
|
|
1340
|
+
Te as m,
|
|
1341
|
+
de as n,
|
|
1342
|
+
le as o,
|
|
1343
|
+
ne as p,
|
|
1344
|
+
re as q,
|
|
1345
|
+
oe as r,
|
|
1346
|
+
ae as s,
|
|
1347
|
+
te as t,
|
|
1348
|
+
ee as u,
|
|
1349
|
+
Q as v
|
|
1350
|
+
};
|
|
1351
|
+
//# sourceMappingURL=labels-BPzDu-3y.js.map
|