@getmicdrop/venue-calendar 4.0.112 → 4.0.114

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +2 -0
  2. package/dist/CartView-DP-zSPnp.js +2466 -0
  3. package/dist/CartView-DP-zSPnp.js.map +1 -0
  4. package/dist/{Checkout-nyPWpzmE.js → Checkout-4OBtw96f.js} +5 -5
  5. package/dist/{Checkout-nyPWpzmE.js.map → Checkout-4OBtw96f.js.map} +1 -1
  6. package/dist/{Checkout-ns94gCrx.js → Checkout-Bn3zFEcH.js} +54 -54
  7. package/dist/{Checkout-ns94gCrx.js.map → Checkout-Bn3zFEcH.js.map} +1 -1
  8. package/dist/{CheckoutTimer-Bv4qR0Mn.js → CheckoutTimer-7n0Rg2J4.js} +5 -5
  9. package/dist/{CheckoutTimer-Bv4qR0Mn.js.map → CheckoutTimer-7n0Rg2J4.js.map} +1 -1
  10. package/dist/{ClockIcon-D2ib_bzt.js → ClockIcon-B5QsNamV.js} +2 -2
  11. package/dist/{ClockIcon-D2ib_bzt.js.map → ClockIcon-B5QsNamV.js.map} +1 -1
  12. package/dist/{CollectionView-G3OmVuiX.js → CollectionView-D__MAuqN.js} +44 -45
  13. package/dist/CollectionView-D__MAuqN.js.map +1 -0
  14. package/dist/{Event-B1syGqOf.js → Event-B0q-bk_t.js} +585 -581
  15. package/dist/Event-B0q-bk_t.js.map +1 -0
  16. package/dist/{EventPage-CqryTYfg.js → EventPage-DcgdVEO1.js} +10 -10
  17. package/dist/EventPage-DcgdVEO1.js.map +1 -0
  18. package/dist/{Heading-BM6t9w6d.js → Heading-CPS9G7Qy.js} +5 -5
  19. package/dist/Heading-CPS9G7Qy.js.map +1 -0
  20. package/dist/{ScarcityBadge-B7KnIEoD.js → ScarcityBadge-2WQu1zu5.js} +28 -28
  21. package/dist/{ScarcityBadge-B7KnIEoD.js.map → ScarcityBadge-2WQu1zu5.js.map} +1 -1
  22. package/dist/{SeriesPage-DYbBhYHy.js → SeriesPage-dj131X05.js} +5 -5
  23. package/dist/{SeriesPage-DYbBhYHy.js.map → SeriesPage-dj131X05.js.map} +1 -1
  24. package/dist/{Spinner-D2Ff-2jf.js → Spinner-nG3bt_QB.js} +2 -2
  25. package/dist/{Spinner-D2Ff-2jf.js.map → Spinner-nG3bt_QB.js.map} +1 -1
  26. package/dist/{Success-CPQuVaaV.js → Success-C9GZXfob.js} +8 -8
  27. package/dist/Success-C9GZXfob.js.map +1 -0
  28. package/dist/{Text-C-9C-Rav.js → Text-DDafFquO.js} +4 -4
  29. package/dist/{Text-C-9C-Rav.js.map → Text-DDafFquO.js.map} +1 -1
  30. package/dist/{VenueCalendar-Dkr4qm4p.js → VenueCalendar-DLn8bG9x.js} +4143 -4091
  31. package/dist/VenueCalendar-DLn8bG9x.js.map +1 -0
  32. package/dist/{ViewTicketsEmbed-B581Bukn.js → ViewTicketsEmbed-CdG_Pmhe.js} +388 -381
  33. package/dist/{ViewTicketsEmbed-B581Bukn.js.map → ViewTicketsEmbed-CdG_Pmhe.js.map} +1 -1
  34. package/dist/api/api/client.d.ts +17 -0
  35. package/dist/api/api/cta.d.ts +34 -0
  36. package/dist/api/api/events.d.ts +183 -0
  37. package/dist/api/api/gift-cards.d.ts +108 -0
  38. package/dist/api/api/index.d.ts +46 -0
  39. package/dist/api/api/orders.d.ts +149 -0
  40. package/dist/api/api/promo.d.ts +45 -0
  41. package/dist/api/api/result.d.ts +78 -0
  42. package/dist/api/api/route-manifest.d.ts +179 -0
  43. package/dist/api/api/transformers/address.d.ts +18 -0
  44. package/dist/api/api/transformers/cart.d.ts +19 -0
  45. package/dist/api/api/transformers/collection.d.ts +12 -0
  46. package/dist/api/api/transformers/event.d.ts +173 -0
  47. package/dist/api/api/transformers/giftCard.d.ts +11 -0
  48. package/dist/api/api/transformers/index.d.ts +27 -0
  49. package/dist/api/api/transformers/order.d.ts +44 -0
  50. package/dist/api/api/transformers/performer.d.ts +8 -0
  51. package/dist/api/api/transformers/series.d.ts +12 -0
  52. package/dist/api/api/transformers/venue.d.ts +39 -0
  53. package/dist/api/api/venues.d.ts +33 -0
  54. package/dist/api/api/waitlist.d.ts +49 -0
  55. package/dist/api/api.cjs +2 -0
  56. package/dist/api/api.cjs.map +1 -0
  57. package/dist/api/api.mjs +1302 -0
  58. package/dist/api/api.mjs.map +1 -0
  59. package/dist/api/types.d.ts +483 -0
  60. package/dist/{labels-DAFwZdnA.js → labels-CgmLAnGa.js} +3 -3
  61. package/dist/{labels-DAFwZdnA.js.map → labels-CgmLAnGa.js.map} +1 -1
  62. package/dist/{modalManager.svelte-BbA2uxS7.js → modalManager.svelte-Bb8AqZzB.js} +2 -2
  63. package/dist/{modalManager.svelte-BbA2uxS7.js.map → modalManager.svelte-Bb8AqZzB.js.map} +1 -1
  64. package/dist/navigation--gZASiSa.js.map +1 -1
  65. package/dist/{promo-BGoSmBd_.js → promo-DJRCG611.js} +9 -9
  66. package/dist/{promo-BGoSmBd_.js.map → promo-DJRCG611.js.map} +1 -1
  67. package/dist/seo/HostSeoController.d.ts +68 -0
  68. package/dist/seo/buildCollectionJsonLd.d.ts +8 -0
  69. package/dist/seo/buildEventJsonLd.d.ts +9 -0
  70. package/dist/seo/buildSeriesJsonLd.d.ts +6 -0
  71. package/dist/seo/helpers.d.ts +88 -0
  72. package/dist/seo/index.d.ts +10 -0
  73. package/dist/seo/seo.cjs +2 -0
  74. package/dist/seo/seo.cjs.map +1 -0
  75. package/dist/seo/seo.mjs +688 -0
  76. package/dist/seo/seo.mjs.map +1 -0
  77. package/dist/seo/types.d.ts +149 -0
  78. package/dist/{showcase-state-options-BWzGMPZ-.js → showcase-state-options-BcHrrA3V.js} +2 -2
  79. package/dist/showcase-state-options-BcHrrA3V.js.map +1 -0
  80. package/dist/{transform-CpjZiH34.js → transform-BdZxoZmv.js} +10 -10
  81. package/dist/{transform-CpjZiH34.js.map → transform-BdZxoZmv.js.map} +1 -1
  82. package/dist/{utm-D1uGUvk2.js → utm-BAxeAo8P.js} +2 -2
  83. package/dist/{utm-D1uGUvk2.js.map → utm-BAxeAo8P.js.map} +1 -1
  84. package/dist/venue-calendar.css +1 -1
  85. package/dist/venue-calendar.es.js +4 -4
  86. package/dist/venue-calendar.iife.js +37 -37
  87. package/dist/venue-calendar.iife.js.map +1 -1
  88. package/dist/venue-calendar.umd.js +32 -32
  89. package/dist/venue-calendar.umd.js.map +1 -1
  90. package/package.json +7 -3
  91. package/dist/CartView-H6PXIc8m.js +0 -2475
  92. package/dist/CartView-H6PXIc8m.js.map +0 -1
  93. package/dist/CollectionView-G3OmVuiX.js.map +0 -1
  94. package/dist/Event-B1syGqOf.js.map +0 -1
  95. package/dist/EventPage-CqryTYfg.js.map +0 -1
  96. package/dist/Heading-BM6t9w6d.js.map +0 -1
  97. package/dist/Success-CPQuVaaV.js.map +0 -1
  98. package/dist/VenueCalendar-Dkr4qm4p.js.map +0 -1
  99. package/dist/showcase-state-options-BWzGMPZ-.js.map +0 -1
@@ -0,0 +1,483 @@
1
+ /**
2
+ * API Types for MicDrop Public Checkout API
3
+ *
4
+ * These types define the shape of API requests and responses
5
+ * for the public checkout flow (no authentication required).
6
+ */
7
+
8
+ import type { EventId, SeriesId } from '@getmicdrop/svelte-components';
9
+
10
+ // ============================================================================
11
+ // Payment & Orders
12
+ // ============================================================================
13
+
14
+ export interface PaymentIntentRequest {
15
+ IP?: string;
16
+ productQuantities: Record<string | number, number>;
17
+ }
18
+
19
+ export interface PaymentIntentResponse {
20
+ client_secret: string;
21
+ // The residual the buyer is charged via Stripe, in int cents (net of any
22
+ // applied gift card). This is the field the checkout Total keys off. The
23
+ // orders-service response has NO `amount` key — an earlier `amount` here was
24
+ // never populated, so Total rendered $0.00 on every paid order.
25
+ stripe_amount?: number;
26
+ amount_total: number;
27
+ subtotal?: number;
28
+ tax?: number;
29
+ tax_amount_exclusive?: number;
30
+ service_fee?: number;
31
+ discount?: number;
32
+ gift_card_amount?: number;
33
+ gift_card_code?: string;
34
+ stripe_publishable_key?: string;
35
+ // ISO-4217 currency (Stripe returns it lowercase). Feeds the checkout totals.
36
+ currency?: string;
37
+ }
38
+
39
+ export interface CompleteReservationResponse {
40
+ success: boolean;
41
+ message?: string;
42
+ error?: string;
43
+ }
44
+
45
+ export interface CancelReservationResponse {
46
+ success: boolean;
47
+ message?: string;
48
+ error?: string;
49
+ }
50
+
51
+ export interface CreateOrderRequest {
52
+ eventId: string | number;
53
+ promoCode?: string;
54
+ }
55
+
56
+ export interface CreateOrderResponse {
57
+ uuid: string;
58
+ }
59
+
60
+ export interface ValidatePaymentRequest {
61
+ id: string;
62
+ paymentIntentId: string;
63
+ tickets: Record<string | number, number>;
64
+ firstName: string;
65
+ lastName: string;
66
+ email: string;
67
+ paymentMethod: string;
68
+ mailingList?: boolean;
69
+ saleType?: string;
70
+ attendees?: AttendeeInfo[];
71
+ }
72
+
73
+ export interface AttendeeInfo {
74
+ ticketId: string | number;
75
+ firstName: string;
76
+ lastName: string;
77
+ email: string;
78
+ }
79
+
80
+ export interface ValidatePaymentResponse {
81
+ success: boolean;
82
+ status: string;
83
+ orderUUID?: string;
84
+ error?: string;
85
+ /**
86
+ * Fail-closed FLOOR fields. When the event is canceled/postponed between
87
+ * cart-creation and finalize, the backend gate refuses to capture the charge
88
+ * and sets one of these (alongside `success: false`). Either flag means the
89
+ * buyer was NOT charged; the checkout raises the charge-aware
90
+ * EventUnavailableModal instead of navigating to success. Optional because
91
+ * they are only present on the rejected-finalize path.
92
+ */
93
+ eventCanceled?: boolean;
94
+ eventPostponed?: boolean;
95
+ }
96
+
97
+ // ============================================================================
98
+ // Session Management
99
+ // ============================================================================
100
+
101
+ export interface ExtendSessionRequest {
102
+ orderUuid: string;
103
+ }
104
+
105
+ export interface ExtendSessionResponse {
106
+ success: boolean;
107
+ newExpiryTime?: string;
108
+ remainingExtensions?: number;
109
+ error?: string;
110
+ /**
111
+ * HTTP status code from the backend on failure. Populated on non-OK
112
+ * responses so callers can distinguish "session already expired"
113
+ * (typically 410 Gone) from "max extensions reached" or generic 5xx.
114
+ * Undefined on network errors and on success.
115
+ */
116
+ statusCode?: number;
117
+ }
118
+
119
+ export interface SessionStatus {
120
+ expiresAt?: string;
121
+ extensionCount?: number;
122
+ remainingExtensions?: number;
123
+ canExtend?: boolean;
124
+ reservationCount?: number;
125
+ error?: string;
126
+ // 404 from /orders/session/{uuid}: the cart's reservations are
127
+ // gone (expired or never existed). Callers polling on an interval
128
+ // MUST treat this as terminal and stop — see CartView.svelte.
129
+ notFound?: boolean;
130
+ // Live event status piggybacked on the session heartbeat so the public
131
+ // checkout can flip the buy button the moment an operator cancels/postpones,
132
+ // without a dedicated poll or socket. One of the auth-service Event statuses
133
+ // (draft|live|started|ended|canceled|postponed). Absent if the lookup failed.
134
+ eventStatus?: string;
135
+ }
136
+
137
+ // ============================================================================
138
+ // Promo Codes
139
+ // ============================================================================
140
+
141
+ export interface PromoValidationResponse {
142
+ valid: boolean;
143
+ revealHiddenTickets?: boolean;
144
+ revealTicketIds?: number[];
145
+ provideDiscount?: boolean;
146
+ discountType?: 'percentage' | 'fixed';
147
+ amount?: number;
148
+ code?: string;
149
+ error?: string;
150
+ }
151
+
152
+ /**
153
+ * RAW body of GET /api/v2/public/promo-codes/validate/{eventId}/{code}.
154
+ *
155
+ * The live endpoint reports the discount magnitude as `discount` and the code
156
+ * as `name` — NOT `amount`/`code`. validatePromoCode normalises this into the
157
+ * client-facing PromoValidationResponse (amount/code) so callers read one shape.
158
+ * The legacy `amount`/`code` keys stay optional here so an older payload (or a
159
+ * mocked one) still maps through the same fallback. Verified 2026-07-11 against
160
+ * two live promos (seeded GUARD20PCT + pre-existing EARLY20).
161
+ */
162
+ export interface RawPromoValidationBody {
163
+ valid?: boolean;
164
+ revealHiddenTickets?: boolean;
165
+ revealTicketIds?: number[];
166
+ provideDiscount?: boolean;
167
+ discountType?: 'percentage' | 'fixed';
168
+ /** Discount magnitude — real server field. */
169
+ discount?: number;
170
+ /** Legacy/mocked magnitude field — fallback only. */
171
+ amount?: number;
172
+ /** Promo code — real server field. */
173
+ name?: string;
174
+ /** Legacy/mocked code field — fallback only. */
175
+ code?: string;
176
+ appliesToAllTickets?: boolean;
177
+ applyToTicketIds?: number[];
178
+ isGlobal?: boolean;
179
+ ticketLimit?: number;
180
+ error?: string;
181
+ }
182
+
183
+ export interface HasPromoCodesResponse {
184
+ hasPromoCodes: boolean;
185
+ }
186
+
187
+ // ============================================================================
188
+ // Orders
189
+ // ============================================================================
190
+
191
+ export interface Order {
192
+ uuid: string;
193
+ id?: number;
194
+ customerEmail: string;
195
+ customerFirstName?: string;
196
+ customerLastName?: string;
197
+ status: string;
198
+ totalAmount: number;
199
+ subtotal?: number;
200
+ serviceFeesAmount: number;
201
+ taxAmount: number;
202
+ discount?: number;
203
+ paymentIntentId?: string;
204
+ paymentMethod?: string;
205
+ purchasedTickets: PurchasedTicket[];
206
+ createdAt?: string;
207
+ updatedAt?: string;
208
+ }
209
+
210
+ export interface PurchasedTicket {
211
+ uuid: string;
212
+ id?: number;
213
+ ticketNumber?: string;
214
+ orderId?: string | number;
215
+ attendeeFirstName?: string;
216
+ attendeeLastName?: string;
217
+ attendeeEmail?: string;
218
+ ticketName: string;
219
+ ticketTypeId?: number;
220
+ purchasePrice: number;
221
+ status?: string;
222
+ checkedIn?: boolean;
223
+ checkedInAt?: string;
224
+ }
225
+
226
+ // ============================================================================
227
+ // Events
228
+ // ============================================================================
229
+
230
+ export interface Event {
231
+ eventID: number;
232
+ id?: number;
233
+ name: string;
234
+ title?: string;
235
+ slug?: string;
236
+ description?: string;
237
+ date: string;
238
+ startDateTime?: string;
239
+ endDateTime?: string;
240
+ doorsOpenTime?: string;
241
+ timezone?: string;
242
+ venueId?: number;
243
+ venueName?: string;
244
+ venueAddress?: string;
245
+ location?: string;
246
+ imageUrl?: string;
247
+ imageURL?: string;
248
+ status?: string;
249
+ isPublished?: boolean;
250
+ isCancelled?: boolean;
251
+ availableTickets?: AvailableTicket[];
252
+ ticketsAvailable?: number;
253
+ ticketsSold?: number;
254
+ minPrice?: number;
255
+ maxPrice?: number;
256
+ ctaText?: string;
257
+ ctaState?: 'available' | 'sold_out' | 'coming_soon' | 'ended';
258
+ showPerformers?: boolean;
259
+ eventSeriesId?: number;
260
+ seriesInstanceNumber?: number;
261
+ // ── Passthrough seams (events convergence) ─────────────────────────────
262
+ // Carried verbatim from the wire by parseEvent so view-shape projections
263
+ // (utils/event-transform.js, public-calendar-flow/transform.ts) compose the
264
+ // canonical instead of reading wire fields directly. The object-valued
265
+ // fields are intentionally raw (see composition note in
266
+ // api/transformers/event.ts) — their consumers own the wire variance.
267
+ timeZone?: string;
268
+ eventSummary?: string;
269
+ password?: string;
270
+ hasPassword?: boolean;
271
+ disclaimer?: string;
272
+ ticketType?: number;
273
+ eventTicketingType?: number;
274
+ ageRestriction?: number;
275
+ displayAgeRestriction?: boolean;
276
+ displayStartTime?: boolean;
277
+ displayEndTime?: boolean;
278
+ displayDoorsTime?: boolean;
279
+ collectionId?: number;
280
+ ticketsRemaining?: number;
281
+ ticketsTotal?: number;
282
+ hasHiddenTickets?: boolean;
283
+ stage?: { name?: string } | null;
284
+ stageName?: string;
285
+ // Widget-filter dimensions on the public month feeds (saved-widget engine):
286
+ // stage/category/performer/collection data the embed adapts onto the SC
287
+ // FilterableEvent view (lib/widget-filters.js).
288
+ stageId?: number;
289
+ eventCategoryTypes?: number[] | null;
290
+ publicPerformers?: Array<{
291
+ id?: number;
292
+ displayName?: string;
293
+ image?: string;
294
+ }> | null;
295
+ collectionIds?: number[] | null;
296
+ venue?: Record<string, any>;
297
+ performers?: Record<string, any>[];
298
+ faqs?: Record<string, any>[];
299
+ showtimes?: Record<string, any>[];
300
+ purchasedTickets?: Record<string, any>[];
301
+ }
302
+
303
+ export interface AvailableTicket {
304
+ id: number;
305
+ name: string;
306
+ description?: string;
307
+ price: number;
308
+ quantity: number;
309
+ quantitySold?: number;
310
+ quantityAvailable?: number;
311
+ minPerOrder?: number;
312
+ maxPerOrder?: number;
313
+ saleStartDate?: string;
314
+ saleEndDate?: string;
315
+ isHidden?: boolean;
316
+ revealWithPromoCode?: boolean;
317
+ ticketType?: number; // 0 = GA, 1 = assigned
318
+ sectionId?: number;
319
+ sortOrder?: number;
320
+ }
321
+
322
+ export interface EventPerformersResponse {
323
+ performers: Performer[];
324
+ showPerformers: boolean;
325
+ }
326
+
327
+ export interface Performer {
328
+ id: number;
329
+ displayName: string;
330
+ avatar?: string;
331
+ order?: number;
332
+ }
333
+
334
+ // ============================================================================
335
+ // Venues
336
+ // ============================================================================
337
+
338
+ export interface Venue {
339
+ id: number;
340
+ name: string;
341
+ slug?: string;
342
+ address?: string;
343
+ googleLocationNameCache?: string;
344
+ city?: string;
345
+ state?: string;
346
+ zipCode?: string;
347
+ country?: string;
348
+ timezone?: string;
349
+ logoUrl?: string;
350
+ serviceFeePercentage?: number;
351
+ serviceFeeCents?: number;
352
+ taxPercentage?: number;
353
+ organizationId?: number;
354
+ }
355
+
356
+ // ============================================================================
357
+ // Series
358
+ // ============================================================================
359
+
360
+ export interface SeriesOccurrence {
361
+ eventId: EventId;
362
+ date: string;
363
+ startDateTime: string;
364
+ endDateTime?: string;
365
+ instanceNumber: number;
366
+ status: string;
367
+ ticketsAvailable?: number;
368
+ ctaState?: string;
369
+ }
370
+
371
+ export interface SeriesOccurrencesResponse {
372
+ seriesId: SeriesId;
373
+ occurrences: SeriesOccurrence[];
374
+ }
375
+
376
+ // ============================================================================
377
+ // Series Page
378
+ // ============================================================================
379
+
380
+ export interface SeriesPageData {
381
+ id: number;
382
+ title: string;
383
+ description: string;
384
+ eventSummary?: string;
385
+ image?: string;
386
+ timeZone: string;
387
+ venue: {
388
+ id: number;
389
+ name: string;
390
+ location?: string;
391
+ googleLocationNameCache?: string;
392
+ faq?: Array<{ question: string; answer: string }> | string;
393
+ disclaimer?: string;
394
+ };
395
+ performers: Array<{
396
+ displayName: string;
397
+ firstName?: string;
398
+ lastName?: string;
399
+ profileImage?: string;
400
+ }>;
401
+ occurrences: Array<{
402
+ id: number;
403
+ slug: string;
404
+ startDateTime: string;
405
+ endDateTime: string;
406
+ ctaState: {
407
+ text: string;
408
+ disabled: boolean;
409
+ reason?: string;
410
+ };
411
+ }>;
412
+ }
413
+
414
+ // ============================================================================
415
+ // Entity resolution (type-agnostic public id → concrete entity)
416
+ // ============================================================================
417
+
418
+ /**
419
+ * Response shape of `/api/v2/public/resolve/{id}`. The embed deep-link is
420
+ * type-agnostic (`#{id}-{slug}`), so the backend resolves which kind of entity
421
+ * the id points at; `data` is the corresponding event / series / collection
422
+ * payload (same shape the dedicated fetchers return for that type).
423
+ */
424
+ export interface ResolvedEntity {
425
+ type: 'event' | 'series' | 'collection';
426
+ id: string | number;
427
+ title?: string;
428
+ data: any;
429
+ }
430
+
431
+ // ============================================================================
432
+ // Public Collection
433
+ // ============================================================================
434
+
435
+ export interface PublicCollectionData {
436
+ id: number;
437
+ collectionTitle: string;
438
+ summary?: string;
439
+ description?: string;
440
+ coverImage?: string;
441
+ events: Array<{
442
+ id: number;
443
+ title: string;
444
+ slug?: string;
445
+ startDateTime?: string;
446
+ endDateTime?: string;
447
+ image?: string;
448
+ status?: string;
449
+ venue?: { name: string };
450
+ minPrice?: number;
451
+ }>;
452
+ // Password-gate variant: a protected collection responds with a gate signal
453
+ // instead of the collection body (either `passwordRequired: true` or an
454
+ // `error.code === 'PASSWORD_REQUIRED'`). Modelled here as optional wire
455
+ // fields so the view can read them without an `as any` escape.
456
+ passwordRequired?: boolean;
457
+ error?: { code?: string };
458
+ }
459
+
460
+ // ============================================================================
461
+ // API Configuration
462
+ // ============================================================================
463
+
464
+ export interface ApiConfig {
465
+ baseUrl?: string;
466
+ timeout?: number;
467
+ /** Number of additional attempts after the first try (default: 2 = 3 total tries). */
468
+ retries?: number;
469
+ /** Base delay before the first retry; doubles each attempt (default: 500ms). */
470
+ retryDelay?: number;
471
+ onError?: (_error: Error) => void;
472
+ }
473
+
474
+ // ============================================================================
475
+ // Generic API Response
476
+ // ============================================================================
477
+
478
+ export interface ApiResponse<T> {
479
+ success: boolean;
480
+ data?: T;
481
+ error?: string;
482
+ statusCode?: number;
483
+ }
@@ -1,7 +1,7 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as e from "svelte/internal/client";
3
- import { u as Y, ai as L, aj as O, b1 as V, b2 as H, ak as F, b3 as G, af as j, N as U, A as $, an as q, ae as W } from "./VenueCalendar-Dkr4qm4p.js";
4
- import { T as m } from "./Text-C-9C-Rav.js";
3
+ import { u as Y, aj as L, ak as O, b2 as V, b3 as H, al as F, b4 as G, ag as j, N as U, A as $, ao as q, af as W } from "./VenueCalendar-DLn8bG9x.js";
4
+ import { T as m } from "./Text-DDafFquO.js";
5
5
  var B = e.from_svg('<path d="M208,32H184V24a8,8,0,0,0-16,0v8H88V24a8,8,0,0,0-16,0v8H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM112,184a8,8,0,0,1-16,0V132.94l-4.42,2.22a8,8,0,0,1-7.16-14.32l16-8A8,8,0,0,1,112,120Zm56-8a8,8,0,0,1,0,16H136a8,8,0,0,1-6.4-12.8l28.78-38.37A8,8,0,1,0,145.07,132a8,8,0,1,1-13.85-8A24,24,0,0,1,176,136a23.76,23.76,0,0,1-4.84,14.45L152,176ZM48,80V48H72v8a8,8,0,0,0,16,0V48h80v8a8,8,0,0,0,16,0V48h24V80Z"></path>'), K = e.from_svg('<rect x="40" y="40" width="176" height="176" rx="8" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"></rect><line x1="176" y1="24" x2="176" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"></line><line x1="80" y1="24" x2="80" y2="56" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"></line><line x1="40" y1="88" x2="216" y2="88" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"></line><polyline points="88 128 104 120 104 184" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"></polyline><path d="M138.14,128a16,16,0,1,1,26.64,17.63L136,184h32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"></path>', 1), Z = e.from_svg('<svg aria-hidden="true" viewBox="0 0 256 256" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><!></svg>');
6
6
  function ne(r, t) {
7
7
  e.push(t, !0);
@@ -644,4 +644,4 @@ export {
644
644
  le as g,
645
645
  ve as m
646
646
  };
647
- //# sourceMappingURL=labels-DAFwZdnA.js.map
647
+ //# sourceMappingURL=labels-CgmLAnGa.js.map