@getmicdrop/venue-calendar 3.4.8 → 3.5.1

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 (52) hide show
  1. package/dist/CarouselView.legacy-Cl3xu_XU.js +64 -0
  2. package/dist/CarouselView.legacy-Cl3xu_XU.js.map +1 -0
  3. package/dist/{Checkout.legacy-nETM-IMW.js → Checkout.legacy-DlbPyhUV.js} +177 -173
  4. package/dist/Checkout.legacy-DlbPyhUV.js.map +1 -0
  5. package/dist/CollectionView.legacy-Bfp-WKvt.js +374 -0
  6. package/dist/CollectionView.legacy-Bfp-WKvt.js.map +1 -0
  7. package/dist/FeaturedView.legacy-Bxh7UmRc.js +128 -0
  8. package/dist/FeaturedView.legacy-Bxh7UmRc.js.map +1 -0
  9. package/dist/GalleryView.legacy-BJZHlxYV.js +51 -0
  10. package/dist/GalleryView.legacy-BJZHlxYV.js.map +1 -0
  11. package/dist/GroupedListView.legacy-Db4vuzE3.js +144 -0
  12. package/dist/GroupedListView.legacy-Db4vuzE3.js.map +1 -0
  13. package/dist/SeriesPage.legacy-CEJrQrKV.js +187 -0
  14. package/dist/SeriesPage.legacy-CEJrQrKV.js.map +1 -0
  15. package/dist/Success.legacy-yuCk2lyi.js +191 -0
  16. package/dist/Success.legacy-yuCk2lyi.js.map +1 -0
  17. package/dist/{VenueCalendar-mBg8Hi0c.js → VenueCalendar-B419EPE7.js} +19441 -13189
  18. package/dist/VenueCalendar-B419EPE7.js.map +1 -0
  19. package/dist/colors-BZoMuXdh.js.map +1 -1
  20. package/dist/seo/HostSeoController.d.ts +59 -0
  21. package/dist/seo/buildCollectionJsonLd.d.ts +7 -0
  22. package/dist/seo/buildEventJsonLd.d.ts +9 -0
  23. package/dist/seo/buildSeriesJsonLd.d.ts +6 -0
  24. package/dist/seo/helpers.d.ts +40 -0
  25. package/dist/seo/index.d.ts +9 -0
  26. package/dist/seo/seo.cjs +2 -0
  27. package/dist/seo/seo.cjs.map +1 -0
  28. package/dist/seo/seo.mjs +460 -0
  29. package/dist/seo/seo.mjs.map +1 -0
  30. package/dist/seo/types.d.ts +135 -0
  31. package/dist/venue-calendar.css +1 -1
  32. package/dist/venue-calendar.es.js +25 -21
  33. package/dist/venue-calendar.iife.js +50 -35
  34. package/dist/venue-calendar.iife.js.map +1 -1
  35. package/dist/venue-calendar.umd.js +50 -35
  36. package/dist/venue-calendar.umd.js.map +1 -1
  37. package/package.json +12 -2
  38. package/src/lib/theme.js +38 -46
  39. package/dist/CarouselView.legacy-DOaevebR.js +0 -65
  40. package/dist/CarouselView.legacy-DOaevebR.js.map +0 -1
  41. package/dist/Checkout.legacy-nETM-IMW.js.map +0 -1
  42. package/dist/FeaturedView.legacy-ukM7qVzM.js +0 -128
  43. package/dist/FeaturedView.legacy-ukM7qVzM.js.map +0 -1
  44. package/dist/GalleryCard-BEkb_B91.js +0 -87
  45. package/dist/GalleryCard-BEkb_B91.js.map +0 -1
  46. package/dist/GalleryView.legacy-LhMmiGMD.js +0 -52
  47. package/dist/GalleryView.legacy-LhMmiGMD.js.map +0 -1
  48. package/dist/GroupedListView.legacy-Ce-hzjBr.js +0 -148
  49. package/dist/GroupedListView.legacy-Ce-hzjBr.js.map +0 -1
  50. package/dist/Success.legacy-CHqoM06M.js +0 -191
  51. package/dist/Success.legacy-CHqoM06M.js.map +0 -1
  52. package/dist/VenueCalendar-mBg8Hi0c.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeaturedView.legacy-ukM7qVzM.js","sources":["../src/components/Calendar/FeaturedView.legacy.svelte"],"sourcesContent":["<script>\r\n import { formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\r\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\r\n import { filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\r\n\r\n let {\r\n events = [],\r\n featuredItem = null,\r\n oneventClick,\r\n } = $props();\r\n\r\n // Filter to today and future, sorted chronologically\r\n let futureEvents = $derived(filterTodayAndFuture(events));\r\n\r\n let heroEvent = $derived(futureEvents.length > 0 ? futureEvents[0] : null);\r\n\r\n function handleClick() {\r\n if (heroEvent) {\r\n oneventClick?.(heroEvent);\r\n }\r\n }\r\n</script>\r\n\r\n<section class=\"featured-view\" aria-label=\"Featured event\">\r\n {#if featuredItem}\r\n <!-- Series or Collection hero -->\r\n <div class=\"featured-hero\">\r\n {#if featuredItem.image}\r\n <div class=\"hero-image-container\">\r\n <img\r\n src={featuredItem.image}\r\n alt=\"\"\r\n class=\"hero-image\"\r\n aria-hidden=\"true\"\r\n />\r\n </div>\r\n {:else}\r\n <div class=\"hero-image-container hero-image-placeholder\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" class=\"placeholder-icon\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"2\"/><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"/><path d=\"m21 15-5-5L5 21\"/></svg>\r\n </div>\r\n {/if}\r\n\r\n <div class=\"hero-content\">\r\n <div class=\"hero-badge\">\r\n {#if featuredItem.type === 'series'}\r\n <span class=\"badge-dot\"></span>\r\n Series\r\n {:else}\r\n <span class=\"badge-dot\"></span>\r\n Collection\r\n {/if}\r\n {#if featuredItem.subtitle}\r\n <span class=\"badge-separator\">·</span>\r\n {featuredItem.subtitle}\r\n {/if}\r\n </div>\r\n\r\n <h2 class=\"hero-title\">{featuredItem.title}</h2>\r\n\r\n {#if heroEvent}\r\n <p class=\"hero-meta\">\r\n Next: {formatFullDate(heroEvent.startDateTime, heroEvent.timeZone)}\r\n {#if heroEvent.startDateTime}\r\n at {formatEventTime(heroEvent.startDateTime, heroEvent.timeZone)}\r\n {/if}\r\n </p>\r\n {/if}\r\n </div>\r\n </div>\r\n {:else if heroEvent}\r\n <!-- Single event hero -->\r\n <div\r\n class=\"featured-hero featured-hero-clickable\"\r\n onclick={handleClick}\r\n onkeydown={(e) => (e.key === 'Enter' || e.key === ' ') && handleClick()}\r\n tabindex=\"0\"\r\n role=\"button\"\r\n aria-label=\"{heroEvent.name}, {formatFullDate(heroEvent.startDateTime, heroEvent.timeZone)}. Press Enter to view details.\"\r\n >\r\n <div class=\"hero-image-container\">\r\n <img\r\n src={heroEvent.image || PLACEHOLDER_IMAGE}\r\n alt=\"\"\r\n class=\"hero-image\"\r\n aria-hidden=\"true\"\r\n />\r\n </div>\r\n\r\n <div class=\"hero-content\" aria-hidden=\"true\">\r\n <h2 class=\"hero-title\">{heroEvent.name}</h2>\r\n\r\n <p class=\"hero-meta\">\r\n {formatFullDate(heroEvent.startDateTime, heroEvent.timeZone)}\r\n {#if heroEvent.startDateTime}\r\n <span class=\"meta-separator\">·</span>\r\n {formatEventTime(heroEvent.startDateTime, heroEvent.timeZone)}\r\n {/if}\r\n </p>\r\n\r\n {#if heroEvent.description}\r\n <p class=\"hero-description\">{heroEvent.description}</p>\r\n {/if}\r\n </div>\r\n </div>\r\n {:else}\r\n <!-- Empty state -->\r\n <div class=\"featured-empty\">\r\n <p class=\"empty-text\">No upcoming events to feature</p>\r\n </div>\r\n {/if}\r\n</section>\r\n\r\n<style>\r\n @reference \"../../app.css\";\r\n\r\n .featured-view {\r\n width: 100%;\r\n }\r\n\r\n .featured-hero {\r\n @apply rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 overflow-hidden;\r\n }\r\n\r\n .featured-hero-clickable {\r\n @apply cursor-pointer;\r\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\r\n }\r\n\r\n .featured-hero-clickable:hover {\r\n @apply border-gray-300 dark:border-gray-600;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\r\n }\r\n\r\n .featured-hero-clickable:focus {\r\n @apply outline-none;\r\n }\r\n\r\n .featured-hero-clickable:focus-visible {\r\n @apply outline-2 outline-blue-700 dark:outline-blue-500 outline-offset-2;\r\n }\r\n\r\n .hero-image-container {\r\n @apply relative w-full bg-gray-100 dark:bg-gray-700 overflow-hidden;\r\n aspect-ratio: 16 / 9;\r\n }\r\n\r\n .hero-image-placeholder {\r\n @apply flex items-center justify-center;\r\n }\r\n\r\n .placeholder-icon {\r\n @apply w-16 h-16 text-gray-300 dark:text-gray-600;\r\n }\r\n\r\n .hero-image {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n }\r\n\r\n .hero-content {\r\n @apply p-4;\r\n }\r\n\r\n @media (min-width: 640px) {\r\n .hero-content {\r\n @apply p-5;\r\n }\r\n }\r\n\r\n .hero-badge {\r\n @apply inline-flex items-center gap-1.5 text-xs font-semibold text-blue-700 dark:text-blue-400 uppercase tracking-wide mb-2;\r\n }\r\n\r\n .badge-dot {\r\n @apply w-1.5 h-1.5 rounded-full bg-blue-600 dark:bg-blue-400;\r\n }\r\n\r\n .badge-separator {\r\n @apply text-gray-400 dark:text-gray-500;\r\n }\r\n\r\n .hero-title {\r\n @apply text-xl font-bold text-gray-900 dark:text-white mb-2;\r\n line-height: 1.3;\r\n }\r\n\r\n @media (min-width: 640px) {\r\n .hero-title {\r\n @apply text-2xl;\r\n }\r\n }\r\n\r\n .hero-meta {\r\n @apply text-base text-gray-600 dark:text-gray-300 font-medium;\r\n }\r\n\r\n .meta-separator {\r\n @apply text-gray-400 dark:text-gray-500 mx-1;\r\n }\r\n\r\n .hero-description {\r\n @apply text-sm text-gray-600 dark:text-gray-400 mt-2;\r\n display: -webkit-box;\r\n -webkit-line-clamp: 2;\r\n line-clamp: 2;\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n }\r\n\r\n .featured-empty {\r\n @apply flex items-center justify-center py-12 rounded-lg border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900;\r\n }\r\n\r\n .empty-text {\r\n @apply text-sm text-gray-500 dark:text-gray-400;\r\n }\r\n\r\n /* Reduced motion */\r\n @media (prefers-reduced-motion: reduce) {\r\n .featured-hero-clickable {\r\n transition: none;\r\n }\r\n }\r\n</style>\r\n"],"names":["events","$","$$props","featuredItem","futureEvents","filterTodayAndFuture","heroEvent","handleClick","section","root","div","root_1","div_1","root_2","img","div_2","root_3","$$render","consequent","alternate","div_3","node_1","div_4","consequent_1","alternate_1","text","consequent_2","h2","p","root_7","formatEventTime","consequent_3","formatFullDate","consequent_4","text_1","div_5","root_9","div_6","img_1","div_7","h2_1","p_1","consequent_6","p_2","root_11","text_7","consequent_7","$0","PLACEHOLDER_IMAGE","text_4","e","div_8","root_12","consequent_8","alternate_2"],"mappings":"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"}
@@ -1,87 +0,0 @@
1
- import "svelte/internal/disclose-version";
2
- import * as e from "svelte/internal/client";
3
- import { a as Z, i as A, P as B, b as G, c as f, S as L, d as O } from "./VenueCalendar-mBg8Hi0c.js";
4
- var P = e.from_html('<div class="badge-overlay svelte-18a25gb" aria-hidden="true"><span> </span></div>'), R = e.from_html('<div class="badge-overlay svelte-18a25gb" aria-hidden="true"><!></div>'), U = e.from_html("<time> </time>"), j = e.from_html('<span class="meta-separator svelte-18a25gb" aria-hidden="true">•</span> <span> </span>', 1), z = e.from_html('<div tabindex="0" role="button"><div class="card-image-container svelte-18a25gb"><img alt="" class="card-image svelte-18a25gb" loading="lazy" aria-hidden="true"/> <!></div> <div class="card-content svelte-18a25gb" aria-hidden="true"><h3 class="card-title svelte-18a25gb"> </h3> <div class="card-meta svelte-18a25gb"><!> <!></div></div></div>');
5
- function I(h, i) {
6
- e.push(i, !0);
7
- let v = e.prop(i, "labels", 19, () => ({})), n = e.derived(() => Z(i.event)), x = e.derived(() => A(e.get(n)));
8
- function T(t) {
9
- const a = [t.name];
10
- return t.startDateTime && a.push(`on ${G(t.startDateTime, t.timeZone)}`), t.startDateTime && a.push(`at ${f(t.startDateTime, t.timeZone)}`), e.get(n) ? a.push(e.get(n).text) : t.status && t.status !== (v().statusOnSale || "On Sale") && a.push(t.status), a.push(v().pressEnterToView || "Press Enter to view details"), a.join(", ");
11
- }
12
- var s = z();
13
- let g;
14
- var d = e.child(s), o = e.child(d), k = e.sibling(o, 2);
15
- {
16
- var D = (t) => {
17
- var a = P(), r = e.child(a), l = e.child(r, !0);
18
- e.reset(r), e.reset(a), e.template_effect(() => {
19
- e.set_class(r, 1, `status-badge status-${e.get(n).type ?? ""}`, "svelte-18a25gb"), e.set_text(l, e.get(n).text);
20
- }), e.append(t, a);
21
- }, y = (t) => {
22
- var a = R(), r = e.child(a);
23
- {
24
- let l = e.derived(() => i.event.ticketsRemaining ?? 0), m = e.derived(() => i.event.ticketsTotal ?? 0);
25
- L(r, {
26
- get remaining() {
27
- return e.get(l);
28
- },
29
- get total() {
30
- return e.get(m);
31
- },
32
- context: "browse",
33
- get labels() {
34
- return v();
35
- }
36
- });
37
- }
38
- e.reset(a), e.append(t, a);
39
- };
40
- e.if(k, (t) => {
41
- e.get(n) ? t(D) : (i.event.ticketsTotal > 0 || i.event.ticketsRemaining === 0) && t(y, 1);
42
- });
43
- }
44
- e.reset(d);
45
- var u = e.sibling(d, 2), c = e.child(u), E = e.child(c, !0);
46
- e.reset(c);
47
- var _ = e.sibling(c, 2), b = e.child(_);
48
- {
49
- var w = (t) => {
50
- var a = U(), r = e.child(a, !0);
51
- e.reset(a), e.template_effect(
52
- (l) => {
53
- e.set_attribute(a, "datetime", i.event.startDateTime), e.set_text(r, l);
54
- },
55
- [
56
- () => O(i.event.startDateTime, i.event.timeZone)
57
- ]
58
- ), e.append(t, a);
59
- };
60
- e.if(b, (t) => {
61
- i.event.startDateTime && t(w);
62
- });
63
- }
64
- var S = e.sibling(b, 2);
65
- {
66
- var C = (t) => {
67
- var a = j(), r = e.sibling(e.first_child(a), 2), l = e.child(r, !0);
68
- e.reset(r), e.template_effect((m) => e.set_text(l, m), [
69
- () => f(i.event.startDateTime, i.event.timeZone)
70
- ]), e.append(t, a);
71
- };
72
- e.if(S, (t) => {
73
- i.event.startDateTime && t(C);
74
- });
75
- }
76
- e.reset(_), e.reset(u), e.reset(s), e.template_effect(
77
- (t) => {
78
- g = e.set_class(s, 1, "gallery-card svelte-18a25gb", null, g, { "card-unavailable": e.get(x) }), e.set_attribute(s, "aria-label", t), e.set_attribute(o, "src", i.event.image || B), e.set_text(E, i.event.name);
79
- },
80
- [() => T(i.event)]
81
- ), e.delegated("click", s, () => i.oneventClick?.(i.event)), e.delegated("keydown", s, (t) => (t.key === "Enter" || t.key === " ") && i.oneventClick?.(i.event)), e.append(h, s), e.pop();
82
- }
83
- e.delegate(["click", "keydown"]);
84
- export {
85
- I as G
86
- };
87
- //# sourceMappingURL=GalleryCard-BEkb_B91.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GalleryCard-BEkb_B91.js","sources":["../src/components/Calendar/GalleryCard.svelte"],"sourcesContent":["<script>\r\n import ScarcityBadge from \"../ScarcityBadge.svelte\";\r\n import { formatBrowseDate, formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\r\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\r\n import { getBrowseStatus, isEventUnavailable } from \"$lib/utils/browse-status.js\";\r\n\r\n let { event, oneventClick, labels = {} } = $props();\r\n\r\n let browseStatus = $derived(getBrowseStatus(event));\r\n let isUnavailable = $derived(isEventUnavailable(browseStatus));\r\n\r\n // Build comprehensive aria-label for event card\r\n function getEventAriaLabel(event) {\r\n const parts = [event.name];\r\n if (event.startDateTime) {\r\n parts.push(`on ${formatFullDate(event.startDateTime, event.timeZone)}`);\r\n }\r\n if (event.startDateTime) {\r\n parts.push(`at ${formatEventTime(event.startDateTime, event.timeZone)}`);\r\n }\r\n if (browseStatus) {\r\n parts.push(browseStatus.text);\r\n } else if (event.status && event.status !== (labels.statusOnSale || 'On Sale')) {\r\n parts.push(event.status);\r\n }\r\n parts.push(labels.pressEnterToView || 'Press Enter to view details');\r\n return parts.join(', ');\r\n }\r\n</script>\r\n\r\n<div\r\n class=\"gallery-card\"\r\n class:card-unavailable={isUnavailable}\r\n onclick={() => oneventClick?.(event)}\r\n onkeydown={(e) => (e.key === 'Enter' || e.key === ' ') && oneventClick?.(event)}\r\n tabindex=\"0\"\r\n role=\"button\"\r\n aria-label={getEventAriaLabel(event)}\r\n>\r\n <!-- Fixed height image container -->\r\n <div class=\"card-image-container\">\r\n <img\r\n src={event.image || PLACEHOLDER_IMAGE}\r\n alt=\"\"\r\n class=\"card-image\"\r\n loading=\"lazy\"\r\n aria-hidden=\"true\"\r\n />\r\n <!-- Status Badge overlay -->\r\n {#if browseStatus}\r\n <div class=\"badge-overlay\" aria-hidden=\"true\">\r\n <span class=\"status-badge status-{browseStatus.type}\">{browseStatus.text}</span>\r\n </div>\r\n {:else if event.ticketsTotal > 0 || event.ticketsRemaining === 0}\r\n <div class=\"badge-overlay\" aria-hidden=\"true\">\r\n <ScarcityBadge\r\n remaining={event.ticketsRemaining ?? 0}\r\n total={event.ticketsTotal ?? 0}\r\n context=\"browse\"\r\n {labels}\r\n />\r\n </div>\r\n {/if}\r\n </div>\r\n\r\n <!-- Event Details -->\r\n <div class=\"card-content\" aria-hidden=\"true\">\r\n <h3 class=\"card-title\">{event.name}</h3>\r\n <div class=\"card-meta\">\r\n {#if event.startDateTime}\r\n <time datetime={event.startDateTime}>\r\n {formatBrowseDate(event.startDateTime, event.timeZone)}\r\n </time>\r\n {/if}\r\n {#if event.startDateTime}\r\n <span class=\"meta-separator\" aria-hidden=\"true\">•</span>\r\n <span>{formatEventTime(event.startDateTime, event.timeZone)}</span>\r\n {/if}\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<style>\r\n @reference \"../../app.css\";\r\n\r\n .gallery-card {\r\n @apply rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700;\r\n @apply overflow-hidden cursor-pointer;\r\n transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;\r\n }\r\n\r\n .gallery-card:hover {\r\n @apply border-gray-300 dark:border-gray-600;\r\n transform: translateY(-2px);\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\r\n }\r\n\r\n .gallery-card:focus {\r\n @apply outline-none;\r\n }\r\n\r\n .gallery-card:focus-visible {\r\n @apply outline-2 outline-blue-700 dark:outline-blue-500 outline-offset-2;\r\n }\r\n\r\n .gallery-card:active {\r\n transform: translateY(0);\r\n }\r\n\r\n /* Fixed height image container */\r\n .card-image-container {\r\n @apply relative w-full bg-gray-100 dark:bg-gray-700 overflow-hidden;\r\n height: 200px;\r\n }\r\n\r\n @media (max-width: 639px) {\r\n .card-image-container {\r\n height: 220px;\r\n }\r\n }\r\n\r\n @media (min-width: 1024px) {\r\n .card-image-container {\r\n height: 180px;\r\n }\r\n }\r\n\r\n .card-image {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n }\r\n\r\n .badge-overlay {\r\n position: absolute;\r\n top: 8px;\r\n left: 8px;\r\n }\r\n\r\n .card-content {\r\n @apply p-3;\r\n }\r\n\r\n @media (min-width: 640px) {\r\n .card-content {\r\n @apply p-3.5;\r\n }\r\n }\r\n\r\n .card-title {\r\n @apply text-base font-semibold text-gray-900 dark:text-white mb-1.5;\r\n line-height: 1.3;\r\n display: -webkit-box;\r\n -webkit-line-clamp: 2;\r\n line-clamp: 2;\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n }\r\n\r\n @media (max-width: 639px) {\r\n .card-title {\r\n @apply text-lg;\r\n }\r\n }\r\n\r\n .card-meta {\r\n @apply text-sm text-gray-600 dark:text-gray-300 font-medium;\r\n }\r\n\r\n @media (max-width: 639px) {\r\n .card-meta {\r\n @apply text-base;\r\n }\r\n }\r\n\r\n .meta-separator {\r\n @apply text-gray-400 dark:text-gray-500 mx-1;\r\n }\r\n\r\n /* Unavailable event dimming */\r\n .card-unavailable {\r\n @apply opacity-60;\r\n }\r\n\r\n .card-unavailable .card-image {\r\n filter: grayscale(0.5);\r\n }\r\n\r\n /* Status badges — distinct visual treatments for each status */\r\n .status-badge {\r\n @apply inline-flex items-center text-xs font-bold px-2.5 py-1 rounded;\r\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);\r\n letter-spacing: 0.02em;\r\n }\r\n\r\n .status-cancelled {\r\n @apply text-white;\r\n background: linear-gradient(135deg, rgb(127 29 29) 0%, rgb(185 28 28) 100%); /* rose-900 → red-700 */\r\n text-decoration: line-through;\r\n text-decoration-thickness: 1.5px;\r\n }\r\n\r\n .status-past {\r\n @apply text-gray-300;\r\n background: rgba(0, 0, 0, 0.7);\r\n backdrop-filter: blur(4px);\r\n }\r\n\r\n .status-sold_out {\r\n @apply text-white uppercase tracking-wider;\r\n background: linear-gradient(135deg, rgb(220 38 38) 0%, rgb(239 68 68) 100%); /* red-600 → red-400 */\r\n font-size: 0.65rem;\r\n }\r\n\r\n .status-sales_ended {\r\n @apply text-gray-200;\r\n background: rgba(55, 65, 81, 0.9); /* gray-700 */\r\n backdrop-filter: blur(4px);\r\n border: 1px solid rgba(156, 163, 175, 0.3);\r\n }\r\n\r\n .status-coming_soon {\r\n @apply text-white;\r\n background: linear-gradient(135deg, rgb(37 99 235) 0%, rgb(99 102 241) 100%); /* blue-600 → indigo-500 */\r\n }\r\n\r\n /* Reduced motion */\r\n @media (prefers-reduced-motion: reduce) {\r\n .gallery-card {\r\n transition: none;\r\n }\r\n\r\n .gallery-card:hover {\r\n transform: none;\r\n }\r\n }\r\n</style>\r\n"],"names":["labels","$","$$props","browseStatus","getBrowseStatus","isUnavailable","isEventUnavailable","getEventAriaLabel","event","parts","formatFullDate","formatEventTime","div","root","div_1","img","div_2","root_1","span","text","div_3","root_2","$0","$1","ScarcityBadge","node_1","$$render","consequent_1","div_4","h3","div_5","time","root_3","formatBrowseDate","consequent_2","span_1","fragment","consequent_3","classes","PLACEHOLDER_IMAGE","e"],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import "svelte/internal/disclose-version";
2
- import * as e from "svelte/internal/client";
3
- import { onMount as k, onDestroy as C } from "svelte";
4
- import { G as M } from "./GalleryCard-BEkb_B91.js";
5
- import { f as w } from "./VenueCalendar-mBg8Hi0c.js";
6
- var x = e.from_html('<li class="gallery-card-wrapper svelte-lb0ck7"><!></li>'), E = e.from_html('<div class="load-more-trigger svelte-lb0ck7" role="status" aria-live="polite"><span class="loading-text svelte-lb0ck7">Loading more events...</span></div>'), G = e.from_html('<section class="gallery-view svelte-lb0ck7" aria-label="Events gallery"><h2 class="sr-only svelte-lb0ck7">Upcoming events</h2> <ul class="gallery-grid svelte-lb0ck7" role="list"></ul> <!></section>');
7
- function F(g, i) {
8
- e.push(i, !0);
9
- let p = e.prop(i, "events", 19, () => []), u = e.prop(i, "initialCount", 3, 12), f = e.prop(i, "loadMoreCount", 3, 12), a = u(), l, t, d = e.derived(() => w(p())), m = e.derived(() => e.get(d).slice(0, a)), c = e.derived(() => a < e.get(d).length);
10
- function b() {
11
- a += f();
12
- }
13
- k(() => {
14
- t = new IntersectionObserver(
15
- (r) => {
16
- r[0].isIntersecting && e.get(c) && b();
17
- },
18
- { rootMargin: "100px" }
19
- ), l && t.observe(l);
20
- }), C(() => {
21
- t && t.disconnect();
22
- }), e.user_effect(() => {
23
- t && l && (t.disconnect(), t.observe(l));
24
- });
25
- var s = G(), v = e.sibling(e.child(s), 2);
26
- e.each(v, 21, () => e.get(m), e.index, (r, n) => {
27
- var o = x(), _ = e.child(o);
28
- M(_, {
29
- get event() {
30
- return e.get(n);
31
- },
32
- get oneventClick() {
33
- return i.oneventClick;
34
- }
35
- }), e.reset(o), e.append(r, o);
36
- }), e.reset(v);
37
- var h = e.sibling(v, 2);
38
- {
39
- var y = (r) => {
40
- var n = E();
41
- e.bind_this(n, (o) => l = o, () => l), e.append(r, n);
42
- };
43
- e.if(h, (r) => {
44
- e.get(c) && r(y);
45
- });
46
- }
47
- e.reset(s), e.append(g, s), e.pop();
48
- }
49
- export {
50
- F as default
51
- };
52
- //# sourceMappingURL=GalleryView.legacy-LhMmiGMD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GalleryView.legacy-LhMmiGMD.js","sources":["../src/components/Calendar/GalleryView.legacy.svelte"],"sourcesContent":["<script>\r\n import { onMount, onDestroy } from \"svelte\";\r\n import GalleryCard from \"./GalleryCard.svelte\";\r\n import { filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\r\n\r\n let { events = [], initialCount = 12, loadMoreCount = 12, oneventClick } = $props();\r\n\r\n let displayedCount = initialCount;\r\n let loadMoreTrigger;\r\n let observer;\r\n\r\n // Filter to today and future, sorted chronologically\r\n let futureEvents = $derived(filterTodayAndFuture(events));\r\n let displayedEvents = $derived(futureEvents.slice(0, displayedCount));\r\n let hasMore = $derived(displayedCount < futureEvents.length);\r\n\r\n function loadMore() {\r\n displayedCount += loadMoreCount;\r\n }\r\n\r\n onMount(() => {\r\n observer = new IntersectionObserver(\r\n (entries) => {\r\n if (entries[0].isIntersecting && hasMore) {\r\n loadMore();\r\n }\r\n },\r\n { rootMargin: '100px' }\r\n );\r\n\r\n if (loadMoreTrigger) {\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n\r\n onDestroy(() => {\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n });\r\n\r\n // Re-observe when trigger element changes\r\n $effect(() => {\r\n if (observer && loadMoreTrigger) {\r\n observer.disconnect();\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n</script>\r\n\r\n<section class=\"gallery-view\" aria-label=\"Events gallery\">\r\n <h2 class=\"sr-only\">Upcoming events</h2>\r\n <ul class=\"gallery-grid\" role=\"list\">\r\n {#each displayedEvents as event}\r\n <li class=\"gallery-card-wrapper\">\r\n <GalleryCard {event} {oneventClick} />\r\n </li>\r\n {/each}\r\n </ul>\r\n\r\n <!-- Infinite scroll trigger -->\r\n {#if hasMore}\r\n <div bind:this={loadMoreTrigger} class=\"load-more-trigger\" role=\"status\" aria-live=\"polite\">\r\n <span class=\"loading-text\">Loading more events...</span>\r\n </div>\r\n {/if}\r\n</section>\r\n\r\n<style>\r\n @reference \"../../app.css\";\r\n\r\n .gallery-view {\r\n width: 100%;\r\n }\r\n\r\n .gallery-grid {\r\n @apply grid grid-cols-1 gap-4 bg-gray-50 dark:bg-gray-900 p-2;\r\n }\r\n\r\n /* 2 columns at sm (640px) */\r\n @media (min-width: 640px) {\r\n .gallery-grid {\r\n @apply grid-cols-2 gap-4 p-3;\r\n }\r\n }\r\n\r\n /* 3 columns at md (768px) */\r\n @media (min-width: 768px) {\r\n .gallery-grid {\r\n @apply grid-cols-3 gap-5 p-4;\r\n }\r\n }\r\n\r\n /* 4 columns at lg (1024px) */\r\n @media (min-width: 1024px) {\r\n .gallery-grid {\r\n @apply grid-cols-4 gap-6 p-5;\r\n }\r\n }\r\n\r\n /* Load more trigger */\r\n .load-more-trigger {\r\n @apply flex items-center justify-center gap-2 py-2 p-6;\r\n }\r\n\r\n .loading-text {\r\n @apply text-sm text-gray-500 dark:text-gray-400;\r\n }\r\n\r\n /* Gallery card wrapper for list items */\r\n .gallery-card-wrapper {\r\n @apply list-none;\r\n }\r\n\r\n /* Screen reader only text */\r\n .sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n padding: 0;\r\n margin: -1px;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border-width: 0;\r\n }\r\n</style>\r\n"],"names":["events","$","$$props","initialCount","loadMoreCount","displayedCount","loadMoreTrigger","observer","futureEvents","filterTodayAndFuture","displayedEvents","hasMore","loadMore","onMount","entries","onDestroy","section","root","ul","$$anchor","event","li","root_1","GalleryCard","node","div","root_2","$$value","$$render","consequent"],"mappings":";;;;;;iBAAA;;MAKQA,IAAMC,EAAA,KAAAC,GAAA,UAAA,IAAA,MAAA,EAAA,GAAOC,iCAAe,EAAE,GAAEC,kCAAgB,EAAE,GAEpDC,IAAiBF,EAAY,GAC7BG,GACAC,GAGAC,IAAYP,EAAA,QAAA,MAAYQ,EAAqBT,EAAM,CAAA,CAAA,GACnDU,0BAA2BF,CAAY,EAAC,MAAM,GAAGH,CAAc,CAAA,GAC/DM,IAAOV,EAAA,QAAA,MAAYI,IAAcJ,EAAA,IAAGO,CAAY,EAAC,MAAM;AAElD,WAAAI,IAAW;AAClB,IAAAP,KAAkBD,EAAa;AAAA,EACjC;AAEA,EAAAS,QAAc;AACZ,IAAAN,QAAe;AAAA,MACZ,CAAAO,MAAY;AACP,QAAAA,EAAQ,CAAC,EAAE,kBAAcb,EAAA,IAAIU,CAAO,KACtCC,EAAQ;AAAA,MAEZ;AAAA,MACE,EAAA,YAAY,QAAO;AAAA,OAGnBN,KACFC,EAAS,QAAQD,CAAe;AAAA,EAEpC,CAAC,GAEDS,QAAgB;AACV,IAAAR,KACFA,EAAS,WAAU;AAAA,EAEvB,CAAC,GAGDN,EAAA,kBAAc;IACRM,KAAYD,MACdC,EAAS,WAAU,GACnBA,EAAS,QAAQD,CAAe;AAAA,EAEpC,CAAC;MAGFU,IAAOC,EAAA,GAELC,sBAFFF,CAAO,GAAA,CAAA;SAELE,GAAE,IAAA,MAAAjB,EAAA,IACMS,CAAe,GAAAT,EAAA,OAAA,CAAAkB,GAAIC,MAAK;QAC5BC,IAAEC,EAAA,eAAFD,CAAE;AACA,IAAAE,EAAWC,GAAA;AAAA;qBAAEJ,CAAK;AAAA;;;;gBADpBC,CAAE,eAAFA,CAAE;AAAA,cAFNH,CAAE;oBAAFA,GAAE,CAAA;;;UAUAO,IAAGC,EAAA;kBAAHD,GAAG,CAAAE,MAAYrB,IAAeqB,GAAA,MAAfrB,CAAe,eAA9BmB,CAAG;AAAA;;YADDd,CAAO,KAAAiB,EAAAC,CAAA;AAAA;;UAXbb,CAAO,eAAPA,CAAO;AAFA;"}
@@ -1,148 +0,0 @@
1
- import "svelte/internal/disclose-version";
2
- import * as e from "svelte/internal/client";
3
- import { onMount as ae, onDestroy as re } from "svelte";
4
- import { f as se, g as ie, a as le, i as ne, P as oe, b as P, c as U, S as de } from "./VenueCalendar-mBg8Hi0c.js";
5
- var ve = e.from_html('<div class="date-column svelte-r2wh13" aria-hidden="true"><span class="date-month svelte-r2wh13"> </span> <span class="date-day svelte-r2wh13"> </span> <span class="date-weekday svelte-r2wh13"> </span></div>'), ce = e.from_html('<p class="event-description svelte-r2wh13"> </p>'), ge = e.from_html("<span> </span>"), me = e.from_html('<li class="event-list-item svelte-r2wh13"><div tabindex="0" role="button"><div class="event-image-container svelte-r2wh13" aria-hidden="true"><img alt="" class="event-image svelte-r2wh13" loading="lazy"/></div> <div class="event-details svelte-r2wh13" aria-hidden="true"><h3 class="event-title svelte-r2wh13"> </h3> <time class="event-time svelte-r2wh13"> </time> <!></div> <div class="event-badge-container svelte-r2wh13" aria-hidden="true"><!></div></div></li>'), he = e.from_html('<div class="date-group svelte-r2wh13" role="group"><!> <ul class="events-column svelte-r2wh13"></ul></div>'), fe = e.from_html('<div class="load-more-trigger svelte-r2wh13" role="status" aria-live="polite"><span class="loading-text svelte-r2wh13">Loading more events...</span></div>'), ue = e.from_html('<section aria-label="Event listings"><h2 class="sr-only svelte-r2wh13">Event list grouped by date</h2> <!> <!></section>');
6
- function be(A, d) {
7
- e.push(d, !0);
8
- let T = e.prop(d, "events", 19, () => []), B = e.prop(d, "initialCount", 3, 10), G = e.prop(d, "loadMoreCount", 3, 10), E = e.prop(d, "showDateColumn", 3, !0), R = e.prop(d, "filterFutureOnly", 3, !0), y = B(), m, v, C = e.derived(() => R() ? se(T()) : T()), I = e.derived(() => j(e.get(C).slice(0, y))), M = e.derived(() => y < e.get(C).length);
9
- function K() {
10
- y += G();
11
- }
12
- ae(() => {
13
- v = new IntersectionObserver(
14
- (r) => {
15
- r[0].isIntersecting && e.get(M) && K();
16
- },
17
- { rootMargin: "100px" }
18
- ), m && v.observe(m);
19
- }), re(() => {
20
- v && v.disconnect();
21
- }), e.user_effect(() => {
22
- v && m && (v.disconnect(), v.observe(m));
23
- });
24
- function j(r) {
25
- const a = {};
26
- for (const s of r) {
27
- const n = s.date;
28
- a[n] || (a[n] = []), a[n].push(s);
29
- }
30
- return Object.entries(a).sort(([s], [n]) => new Date(s) - new Date(n)).map(([s, n]) => ({ date: s, events: n, formattedDate: z(n) }));
31
- }
32
- function z(r) {
33
- const a = r[0];
34
- if (!a?.startDateTime) return { month: "", day: "", weekday: "" };
35
- const s = ie(a.startDateTime, a.timeZone);
36
- return {
37
- month: s.month.toUpperCase(),
38
- day: String(s.date).padStart(2, "0"),
39
- weekday: s.day.toUpperCase()
40
- };
41
- }
42
- function S(r) {
43
- d.oneventClick?.(r);
44
- }
45
- function H(r, a) {
46
- (r.key === "Enter" || r.key === " ") && (r.preventDefault(), S(a));
47
- }
48
- var _ = ue();
49
- let O;
50
- var Z = e.sibling(e.child(_), 2);
51
- e.each(Z, 17, () => e.get(I), e.index, (r, a) => {
52
- var s = he(), n = e.child(s);
53
- {
54
- var J = (c) => {
55
- var t = ve(), h = e.child(t), g = e.child(h, !0);
56
- e.reset(h);
57
- var f = e.sibling(h, 2), u = e.child(f, !0);
58
- e.reset(f);
59
- var o = e.sibling(f, 2), w = e.child(o, !0);
60
- e.reset(o), e.reset(t), e.template_effect(() => {
61
- e.set_text(g, e.get(a).formattedDate.month), e.set_text(u, e.get(a).formattedDate.day), e.set_text(w, e.get(a).formattedDate.weekday);
62
- }), e.append(c, t);
63
- };
64
- e.if(n, (c) => {
65
- E() && c(J);
66
- });
67
- }
68
- var F = e.sibling(n, 2);
69
- e.each(F, 21, () => e.get(a).events, e.index, (c, t, h) => {
70
- const g = e.derived(() => le(e.get(t))), f = e.derived(() => ne(e.get(g)));
71
- var u = me(), o = e.child(u);
72
- let w;
73
- var D = e.child(o), N = e.child(D);
74
- e.reset(D);
75
- var x = e.sibling(D, 2), k = e.child(x), Q = e.child(k, !0);
76
- e.reset(k);
77
- var b = e.sibling(k, 2), W = e.child(b, !0);
78
- e.reset(b);
79
- var X = e.sibling(b, 2);
80
- {
81
- var Y = (i) => {
82
- var l = ce(), p = e.child(l, !0);
83
- e.reset(l), e.template_effect(() => e.set_text(p, e.get(t).description)), e.append(i, l);
84
- };
85
- e.if(X, (i) => {
86
- e.get(t).description && i(Y);
87
- });
88
- }
89
- e.reset(x);
90
- var L = e.sibling(x, 2), $ = e.child(L);
91
- {
92
- var ee = (i) => {
93
- var l = ge(), p = e.child(l, !0);
94
- e.reset(l), e.template_effect(() => {
95
- e.set_class(l, 1, `status-badge status-${e.get(g).type ?? ""}`, "svelte-r2wh13"), e.set_text(p, e.get(g).text);
96
- }), e.append(i, l);
97
- }, te = (i) => {
98
- {
99
- let l = e.derived(() => e.get(t).ticketsRemaining ?? 0), p = e.derived(() => e.get(t).ticketsTotal ?? 0);
100
- de(i, {
101
- get remaining() {
102
- return e.get(l);
103
- },
104
- get total() {
105
- return e.get(p);
106
- },
107
- context: "browse"
108
- });
109
- }
110
- };
111
- e.if($, (i) => {
112
- e.get(g) ? i(ee) : (e.get(t).ticketsTotal > 0 || e.get(t).ticketsRemaining === 0) && i(te, 1);
113
- });
114
- }
115
- e.reset(L), e.reset(o), e.reset(u), e.template_effect(
116
- (i, l) => {
117
- w = e.set_class(o, 1, "event-row svelte-r2wh13", null, w, {
118
- "event-row-first": h === 0,
119
- "event-row-last": h === e.get(a).events.length - 1,
120
- "row-unavailable": e.get(f)
121
- }), e.set_attribute(o, "aria-label", i), e.set_attribute(N, "src", e.get(t).image || oe), e.set_text(Q, e.get(t).name), e.set_attribute(b, "datetime", e.get(t).startDateTime || e.get(a).date), e.set_text(W, l);
122
- },
123
- [
124
- () => `${e.get(t).name} on ${e.get(t).startDateTime ? P(e.get(t).startDateTime, e.get(t).timeZone) : e.get(a).date} at ${e.get(t).startDateTime ? U(e.get(t).startDateTime, e.get(t).timeZone) : ""}, ${e.get(g)?.text || e.get(t).status || "On Sale"}. Press Enter to view details.`,
125
- () => e.get(t).startDateTime ? U(e.get(t).startDateTime, e.get(t).timeZone) : ""
126
- ]
127
- ), e.delegated("click", o, () => S(e.get(t))), e.delegated("keydown", o, (i) => H(i, e.get(t))), e.append(c, u);
128
- }), e.reset(F), e.reset(s), e.template_effect((c) => e.set_attribute(s, "aria-label", `Events on ${c ?? ""}`), [
129
- () => e.get(a).events[0]?.startDateTime ? P(e.get(a).events[0].startDateTime, e.get(a).events[0].timeZone) : e.get(a).date
130
- ]), e.append(r, s);
131
- });
132
- var V = e.sibling(Z, 2);
133
- {
134
- var q = (r) => {
135
- var a = fe();
136
- e.bind_this(a, (s) => m = s, () => m), e.append(r, a);
137
- };
138
- e.if(V, (r) => {
139
- e.get(M) && r(q);
140
- });
141
- }
142
- e.reset(_), e.template_effect(() => O = e.set_class(_, 1, "grouped-list svelte-r2wh13", null, O, { "no-date-column": !E() })), e.append(A, _), e.pop();
143
- }
144
- e.delegate(["click", "keydown"]);
145
- export {
146
- be as default
147
- };
148
- //# sourceMappingURL=GroupedListView.legacy-Ce-hzjBr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GroupedListView.legacy-Ce-hzjBr.js","sources":["../src/components/Calendar/GroupedListView.legacy.svelte"],"sourcesContent":["<script>\r\n import { onMount, onDestroy } from \"svelte\";\r\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\r\n import { getDateParts, formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\r\n import { getBrowseStatus, isEventUnavailable, filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\r\n import ScarcityBadge from \"../ScarcityBadge.svelte\";\r\n\r\n let {\r\n events = [],\r\n initialCount = 10,\r\n loadMoreCount = 10,\r\n showDateColumn = true,\r\n filterFutureOnly = true,\r\n oneventClick\r\n } = $props();\r\n\r\n let displayedCount = initialCount;\r\n let loadMoreTrigger;\r\n let observer;\r\n\r\n // Filter to today and future (if enabled), then group by date\r\n let filteredEvents = $derived(filterFutureOnly ? filterTodayAndFuture(events) : events);\r\n let groupedEvents = $derived(groupEventsByDate(filteredEvents.slice(0, displayedCount)));\r\n let hasMore = $derived(displayedCount < filteredEvents.length);\r\n\r\n function loadMore() {\r\n displayedCount += loadMoreCount;\r\n }\r\n\r\n onMount(() => {\r\n observer = new IntersectionObserver(\r\n (entries) => {\r\n if (entries[0].isIntersecting && hasMore) {\r\n loadMore();\r\n }\r\n },\r\n { rootMargin: '100px' }\r\n );\r\n\r\n if (loadMoreTrigger) {\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n\r\n onDestroy(() => {\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n });\r\n\r\n // Re-observe when trigger element changes\r\n $effect(() => {\r\n if (observer && loadMoreTrigger) {\r\n observer.disconnect();\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n\r\n function groupEventsByDate(eventList) {\r\n const groups = {};\r\n\r\n for (const event of eventList) {\r\n const dateKey = event.date; // YYYY-MM-DD format\r\n if (!groups[dateKey]) {\r\n groups[dateKey] = [];\r\n }\r\n groups[dateKey].push(event);\r\n }\r\n\r\n // Convert to array sorted by date\r\n return Object.entries(groups)\r\n .sort(([a], [b]) => new Date(a) - new Date(b))\r\n .map(([date, events]) => ({\r\n date,\r\n events,\r\n formattedDate: formatGroupDate(events),\r\n }));\r\n }\r\n\r\n function formatGroupDate(events) {\r\n // Use the first event in the group to get timezone-aware date parts\r\n const firstEvent = events[0];\r\n if (!firstEvent?.startDateTime) return { month: '', day: '', weekday: '' };\r\n const parts = getDateParts(firstEvent.startDateTime, firstEvent.timeZone);\r\n return {\r\n month: parts.month.toUpperCase(),\r\n day: String(parts.date).padStart(2, '0'),\r\n weekday: parts.day.toUpperCase(),\r\n };\r\n }\r\n\r\n function handleEventClick(event) {\r\n oneventClick?.(event);\r\n }\r\n\r\n function handleKeydown(e, event) {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleEventClick(event);\r\n }\r\n }\r\n</script>\r\n\r\n<section class=\"grouped-list\" class:no-date-column={!showDateColumn} aria-label=\"Event listings\">\r\n <h2 class=\"sr-only\">Event list grouped by date</h2>\r\n {#each groupedEvents as group}\r\n <div class=\"date-group\" role=\"group\" aria-label=\"Events on {group.events[0]?.startDateTime ? formatFullDate(group.events[0].startDateTime, group.events[0].timeZone) : group.date}\">\r\n <!-- Date Column -->\r\n {#if showDateColumn}\r\n <div class=\"date-column\" aria-hidden=\"true\">\r\n <span class=\"date-month\">{group.formattedDate.month}</span>\r\n <span class=\"date-day\">{group.formattedDate.day}</span>\r\n <span class=\"date-weekday\">{group.formattedDate.weekday}</span>\r\n </div>\r\n {/if}\r\n\r\n <!-- Events Column -->\r\n <ul class=\"events-column\">\r\n {#each group.events as event, eventIndex}\r\n {@const eventStatus = getBrowseStatus(event)}\r\n {@const isUnavailable = isEventUnavailable(eventStatus)}\r\n <li class=\"event-list-item\">\r\n <div\r\n class=\"event-row\"\r\n class:event-row-first={eventIndex === 0}\r\n class:event-row-last={eventIndex === group.events.length - 1}\r\n class:row-unavailable={isUnavailable}\r\n onclick={() => handleEventClick(event)}\r\n onkeydown={(e) => handleKeydown(e, event)}\r\n tabindex=\"0\"\r\n role=\"button\"\r\n aria-label={`${event.name} on ${event.startDateTime ? formatFullDate(event.startDateTime, event.timeZone) : group.date} at ${event.startDateTime ? formatEventTime(event.startDateTime, event.timeZone) : ''}, ${eventStatus?.text || event.status || 'On Sale'}. Press Enter to view details.`}\r\n >\r\n <!-- Event Image -->\r\n <div class=\"event-image-container\" aria-hidden=\"true\">\r\n <img\r\n src={event.image || PLACEHOLDER_IMAGE}\r\n alt=\"\"\r\n class=\"event-image\"\r\n loading=\"lazy\"\r\n />\r\n </div>\r\n\r\n <!-- Event Details (visually shown but also in aria-label, so hide from SR) -->\r\n <div class=\"event-details\" aria-hidden=\"true\">\r\n <h3 class=\"event-title\">{event.name}</h3>\r\n <time class=\"event-time\" datetime={event.startDateTime || group.date}>{event.startDateTime ? formatEventTime(event.startDateTime, event.timeZone) : ''}</time>\r\n {#if event.description}\r\n <p class=\"event-description\">{event.description}</p>\r\n {/if}\r\n </div>\r\n\r\n <!-- Status / Scarcity Badge -->\r\n <div class=\"event-badge-container\" aria-hidden=\"true\">\r\n {#if eventStatus}\r\n <span class=\"status-badge status-{eventStatus.type}\">{eventStatus.text}</span>\r\n {:else if event.ticketsTotal > 0 || event.ticketsRemaining === 0}\r\n <ScarcityBadge\r\n remaining={event.ticketsRemaining ?? 0}\r\n total={event.ticketsTotal ?? 0}\r\n context=\"browse\"\r\n />\r\n {/if}\r\n </div>\r\n </div>\r\n </li>\r\n {/each}\r\n </ul>\r\n </div>\r\n {/each}\r\n\r\n <!-- Infinite scroll trigger -->\r\n {#if hasMore}\r\n <div bind:this={loadMoreTrigger} class=\"load-more-trigger\" role=\"status\" aria-live=\"polite\">\r\n <span class=\"loading-text\">Loading more events...</span>\r\n </div>\r\n {/if}\r\n</section>\r\n\r\n<style>\r\n @reference \"../../app.css\";\r\n\r\n .grouped-list {\r\n @apply flex flex-col gap-0;\r\n }\r\n\r\n .date-group {\r\n @apply flex border-b border-gray-200 dark:border-gray-700;\r\n }\r\n\r\n .date-group:last-child {\r\n @apply border-b-0;\r\n }\r\n\r\n /* When no date column, remove left border styling */\r\n .no-date-column .date-group {\r\n @apply border-b-0;\r\n }\r\n\r\n .no-date-column .events-column {\r\n @apply border-l-0;\r\n }\r\n\r\n /* Date Column - Fixed width on left */\r\n .date-column {\r\n @apply w-16 min-w-16 py-4 px-2.5 flex flex-col items-center justify-start bg-gray-50 dark:bg-gray-900 border-r border-gray-200 dark:border-gray-700;\r\n }\r\n\r\n .date-month {\r\n @apply text-xs font-semibold text-gray-600 dark:text-gray-300 uppercase tracking-tight;\r\n }\r\n\r\n .date-day {\r\n @apply text-2xl font-bold text-gray-900 dark:text-white leading-tight;\r\n }\r\n\r\n .date-weekday {\r\n @apply text-xs font-semibold text-gray-600 dark:text-gray-300 uppercase tracking-tight;\r\n }\r\n\r\n /* Events Column - Flexible width */\r\n ul.events-column {\r\n @apply flex-1 flex flex-col;\r\n }\r\n\r\n /* Individual Event Row */\r\n .event-row {\r\n @apply flex gap-4 p-5 cursor-pointer transition-colors duration-150 bg-white dark:bg-gray-800 border-b border-gray-200/50 dark:border-gray-700/50;\r\n }\r\n\r\n .event-row:last-child {\r\n @apply border-b-0;\r\n }\r\n\r\n .event-row:hover {\r\n @apply bg-gray-50 dark:bg-gray-700;\r\n }\r\n\r\n .event-row:focus {\r\n @apply outline-2 outline-blue-700 dark:outline-blue-400 -outline-offset-2;\r\n }\r\n\r\n .event-row:focus-visible {\r\n @apply outline-2 outline-blue-700 dark:outline-blue-400 -outline-offset-2;\r\n }\r\n\r\n /* Reset list styles */\r\n .events-column {\r\n @apply list-none p-0 m-0;\r\n }\r\n\r\n .event-list-item {\r\n @apply list-none;\r\n }\r\n\r\n /* Event Image */\r\n .event-image-container {\r\n @apply w-36 h-24 min-w-36 rounded-lg overflow-hidden bg-gray-50 dark:bg-gray-900 flex items-center justify-center;\r\n }\r\n\r\n .event-image {\r\n @apply w-full h-full object-contain;\r\n }\r\n\r\n /* Event Details */\r\n .event-details {\r\n @apply flex-1 flex flex-col gap-1.5 min-w-0;\r\n }\r\n\r\n .event-title {\r\n @apply text-lg font-semibold text-gray-900 dark:text-white m-0 leading-snug;\r\n }\r\n\r\n .event-time {\r\n @apply text-sm font-medium text-gray-600 dark:text-gray-300;\r\n }\r\n\r\n .event-description {\r\n @apply text-sm text-gray-600 dark:text-gray-300 mt-1.5 mb-0 line-clamp-2;\r\n display: -webkit-box;\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n }\r\n\r\n /* Badge Container */\r\n .event-badge-container {\r\n @apply flex items-start pt-0.5;\r\n }\r\n\r\n /* Unavailable row dimming */\r\n .row-unavailable {\r\n @apply opacity-60;\r\n }\r\n\r\n .row-unavailable .event-image {\r\n filter: grayscale(0.5);\r\n }\r\n\r\n /* Status badges — distinct visual treatments matching gallery cards */\r\n .status-badge {\r\n @apply inline-flex items-center text-xs font-bold px-2.5 py-1 rounded whitespace-nowrap;\r\n letter-spacing: 0.02em;\r\n }\r\n\r\n .status-cancelled {\r\n @apply bg-red-100 text-red-800 dark:bg-red-900/40 dark:text-red-300;\r\n text-decoration: line-through;\r\n text-decoration-thickness: 1.5px;\r\n }\r\n\r\n .status-past {\r\n @apply bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400;\r\n }\r\n\r\n .status-sold_out {\r\n @apply bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-400 uppercase tracking-wider;\r\n font-size: 0.65rem;\r\n }\r\n\r\n .status-sales_ended {\r\n @apply bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400;\r\n border: 1px solid rgb(209 213 219); /* gray-300 */\r\n }\r\n\r\n :global(.dark) .status-sales_ended {\r\n border-color: rgb(75 85 99); /* gray-600 */\r\n }\r\n\r\n .status-coming_soon {\r\n @apply bg-indigo-100 text-indigo-700 dark:bg-indigo-900/40 dark:text-indigo-300;\r\n }\r\n\r\n /* Mobile Responsiveness */\r\n @media (max-width: 640px) {\r\n .date-column {\r\n @apply w-12 min-w-12 py-2.5 px-1.5;\r\n }\r\n\r\n .date-month {\r\n @apply text-xs;\r\n }\r\n\r\n .date-day {\r\n @apply text-lg;\r\n }\r\n\r\n .date-weekday {\r\n @apply text-xs;\r\n }\r\n\r\n .event-row {\r\n @apply p-3 gap-2.5;\r\n }\r\n\r\n .event-image-container {\r\n @apply w-20 h-16 min-w-20;\r\n }\r\n\r\n .event-title {\r\n @apply text-sm;\r\n }\r\n\r\n .event-time {\r\n @apply text-xs;\r\n }\r\n\r\n .event-description {\r\n @apply hidden;\r\n }\r\n\r\n .status-badge {\r\n @apply text-xs py-0.5 px-2;\r\n }\r\n }\r\n\r\n /* Reduced motion */\r\n @media (prefers-reduced-motion: reduce) {\r\n .event-row {\r\n @apply transition-none;\r\n }\r\n }\r\n\r\n /* Load more trigger */\r\n .load-more-trigger {\r\n @apply flex justify-center items-center p-6 text-gray-600 dark:text-gray-300;\r\n }\r\n\r\n .loading-text {\r\n @apply text-sm;\r\n }\r\n\r\n /* Screen reader only text */\r\n .sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n padding: 0;\r\n margin: -1px;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border-width: 0;\r\n }\r\n</style>\r\n"],"names":["events","$","$$props","initialCount","loadMoreCount","showDateColumn","filterFutureOnly","displayedCount","loadMoreTrigger","observer","filteredEvents","filterTodayAndFuture","groupedEvents","groupEventsByDate","hasMore","loadMore","onMount","entries","onDestroy","eventList","groups","event","dateKey","a","b","date","formatGroupDate","firstEvent","parts","getDateParts","handleEventClick","handleKeydown","e","section","root","node","group","div","root_1","div_1","root_2","span","span_1","span_2","$$render","consequent","ul","node_1","eventIndex","eventStatus","getBrowseStatus","isUnavailable","isEventUnavailable","li","root_3","div_2","div_3","img","div_4","h3","time","p","root_4","text_5","consequent_1","div_5","span_3","root_5","text_6","ScarcityBadge","$$anchor","consequent_2","consequent_3","classes_1","$0","PLACEHOLDER_IMAGE","text_3","formatFullDate","formatEventTime","div_6","root_7","$$value","consequent_4","classes"],"mappings":";;;;;kBAAA;;MAQIA,IAAMC,EAAA,KAAAC,GAAA,UAAA,IAAA,MAAA,EAAA,GACNC,iCAAe,EAAE,GACjBC,kCAAgB,EAAE,GAClBC,mCAAiB,EAAI,GACrBC,qCAAmB,EAAI,GAIrBC,IAAiBJ,EAAY,GAC7BK,GACAC,GAGAC,oBAA0BJ,MAAmBK,GAAqBX,EAAM,KAAIA,GAAM,GAClFY,IAAaX,EAAA,QAAA,MAAYY,EAAiBZ,EAAA,IAACS,CAAc,EAAC,MAAM,GAAGH,CAAc,CAAA,CAAA,GACjFO,IAAOb,EAAA,QAAA,MAAYM,IAAcN,EAAA,IAAGS,CAAc,EAAC,MAAM;AAEpD,WAAAK,IAAW;AAClB,IAAAR,KAAkBH,EAAa;AAAA,EACjC;AAEA,EAAAY,SAAc;AACZ,IAAAP,QAAe;AAAA,MACZ,CAAAQ,MAAY;AACP,QAAAA,EAAQ,CAAC,EAAE,kBAAchB,EAAA,IAAIa,CAAO,KACtCC,EAAQ;AAAA,MAEZ;AAAA,MACE,EAAA,YAAY,QAAO;AAAA,OAGnBP,KACFC,EAAS,QAAQD,CAAe;AAAA,EAEpC,CAAC,GAEDU,SAAgB;AACV,IAAAT,KACFA,EAAS,WAAU;AAAA,EAEvB,CAAC,GAGDR,EAAA,kBAAc;IACRQ,KAAYD,MACdC,EAAS,WAAU,GACnBA,EAAS,QAAQD,CAAe;AAAA,EAEpC,CAAC;WAEQK,EAAkBM,GAAW;UAC9BC,IAAM,CAAA;eAEDC,KAASF,GAAW;YACvBG,IAAUD,EAAM;MACjBD,EAAOE,CAAO,MACjBF,EAAOE,CAAO,IAAA,CAAA,IAEhBF,EAAOE,CAAO,EAAE,KAAKD,CAAK;AAAA,IAC5B;AAGO,WAAA,OAAO,QAAQD,CAAM,EACzB,KAAI,CAAA,CAAGG,CAAC,GAAA,CAAIC,CAAC,MAAA,IAAU,KAAKD,CAAC,IAAA,IAAQ,KAAKC,CAAC,CAAA,EAC3C,IAAG,CAAA,CAAGC,GAAMzB,CAAM,OAAA,EACjB,MAAAyB,GACA,QAAAzB,GACA,eAAe0B,EAAgB1B,CAAM,EAAA,EAAA;AAAA,EAE3C;WAES0B,EAAgB1B,GAAQ;UAEzB2B,IAAa3B,EAAO,CAAC;AACtB,QAAA,CAAA2B,GAAY,cAAa,QAAA,EAAW,OAAO,IAAI,KAAK,IAAI,SAAS,GAAE;UAClEC,IAAQC,GAAaF,EAAW,eAAeA,EAAW,QAAQ;;MAEtE,OAAOC,EAAM,MAAM,YAAW;AAAA,MAC9B,KAAK,OAAOA,EAAM,IAAI,EAAE,SAAS,GAAG,GAAG;AAAA,MACvC,SAASA,EAAM,IAAI,YAAW;AAAA;EAElC;WAESE,EAAiBT,GAAO;qBAChBA,CAAK;AAAA,EACtB;AAES,WAAAU,EAAcC,GAAGX,GAAO;KAC3BW,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAc,GAChBF,EAAiBT,CAAK;AAAA,EAE1B;MAGDY,IAAOC,GAAA;;4BAAPD,CAAO,GAAA,CAAA;AAEC,EAAAhC,EAAA,KAAAkC,GAAA,IAAA,MAAAlC,EAAA,IAAAW,CAAa,gBAAIwB,MAAK;QAC1BC,IAAGC,GAAA,eAAHD,CAAG;;;YAGCE,IAAGC,GAAA,GACDC,YADFF,CAAG,eACDE,GAAI,EAAA;gBAAJA,CAAI;AACJ,YAAAC,cADAD,GAAI,CAAA,eACJC,GAAI,EAAA;gBAAJA,CAAI;AACJ,YAAAC,cADAD,GAAI,CAAA,eACJC,GAAI,EAAA;gBAAJA,CAAI,WAHNJ,CAAG;8BACwBH,CAAK,EAAC,cAAc,KAAK,uBAC3BA,CAAK,EAAC,cAAc,GAAG,uBACnBA,CAAK,EAAC,cAAc,OAAO;AAAA,wBAHxDG,CAAG;AAAA;;QADDlC,EAAc,KAAAuC,EAAAC,CAAA;AAAA;;QASlBC,IAAE7C,EAAA,QAAA8C,GAAA,CAAA;AAAF,IAAA9C,EAAA,KAAA6C,GAAE,IAAA,MAAA7C,EAAA,IACMmC,CAAK,EAAC,qBAAUf,GAAK2B,MAAA;YAClBC,IAAWhD,EAAA,QAAA,MAAGiD,GAAejD,EAAA,IAACoB,CAAK,CAAA,CAAA,GACnC8B,IAAalD,EAAA,QAAA,MAAGmD,GAAkBnD,EAAA,IAACgD,CAAW,CAAA,CAAA;UACrDI,IAAEC,GAAA,GACAC,YADFF,CAAE;;AAaE,UAAAG,YAZFD,CAAG,GAaCE,YADFD,CAAG;cAAHA,CAAG;AAUH,UAAAE,cAVAF,GAAG,CAAA,GAWDG,YADFD,CAAG,eACDC,GAAE,EAAA;cAAFA,CAAE;AACF,UAAAC,cADAD,GAAE,CAAA,eACFC,GAAI,EAAA;cAAJA,CAAI;wBAAJA,GAAI,CAAA;;;cAEFC,IAACC,GAAA,eAADD,GAAC,EAAA;kBAADA,CAAC,GAA4B5D,EAAA,gBAAA,MAAAA,EAAA,SAAA8D,GAAA9D,EAAA,IAAAoB,CAAK,EAAC,WAAW,CAAA,eAA9CwC,CAAC;AAAA;;AADC,UAAA5D,EAAA,IAAAoB,CAAK,EAAC,eAAWuB,EAAAoB,CAAA;AAAA;;cAHvBN,CAAG;AASH,UAAAO,cATAP,GAAG,CAAA,eASHO,CAAG;;;cAECC,IAAIC,GAAA,eAAJD,GAAI,EAAA;kBAAJA,CAAI;wBAAJA,GAAI,GAAA,uBAAAjE,EAAA,IAA6BgD,CAAW,EAAC,QAAI,EAAA,IAAA,eAAA,GAAIhD,EAAA,SAAAmE,GAAAnE,EAAA,IAAAgD,CAAW,EAAC,IAAI;AAAA,0BAArEiB,CAAI;AAAA;;0CAGQ7C,CAAK,EAAC,oBAAoB,CAAC,6BAC/BA,CAAK,EAAC,gBAAgB,CAAC;AAF/B,YAAAgD,GAAaC,GAAA;AAAA;;;;;;;;;;;gBAHXrB,CAAW,IAAAL,EAAA2B,EAAA,KAAAtE,EAAA,IAENoB,CAAK,EAAC,eAAe,KAACpB,EAAA,IAAIoB,CAAK,EAAC,qBAAqB,MAACuB,EAAA4B,IAAA,CAAA;AAAA;;cAHjEP,CAAG,WA/BLV,CAAG,WADLF,CAAE;;0BACAE,GAAG,GAAA,2BAAA,MAAAkB,GAAA;AAAA,YAEqB,mBAAAzB,MAAe;AAAA,YAChB,kBAAAA,YAAeZ,CAAK,EAAC,OAAO,SAAS;AAAA,qCACpCe,CAAa;AAAA,8BAJrCI,GAAG,cAAAmB,CAAA,GAaCzE,EAAA,cAAAwD,GAAG,OAAAxD,EAAA,IACGoB,CAAK,EAAC,SAASsD,EAAiB,GASd1E,EAAA,SAAA2E,GAAA3E,EAAA,IAAAoB,CAAK,EAAC,IAAI,GAClCpB,EAAA,cAAA2D,qBAAkCvC,CAAK,EAAC,iBAAapB,EAAA,IAAImC,CAAK,EAAC,IAAI;;;UAfvD,MAAA,GAAAnC,EAAA,IAAAoB,CAAK,EAAC,IAAI,OAAApB,EAAA,IAAOoB,CAAK,EAAC,gBAAgBwD,QAAexD,CAAK,EAAC,eAAapB,EAAA,IAAEoB,CAAK,EAAC,QAAQ,IAAIpB,EAAA,IAAAmC,CAAK,EAAC,IAAI,OAAAnC,EAAA,IAAOoB,CAAK,EAAC,gBAAgByD,QAAgBzD,CAAK,EAAC,eAAapB,EAAA,IAAEoB,CAAK,EAAC,QAAQ,IAAI,EAAE,KAAApB,EAAA,IAAKgD,CAAW,GAAE,cAAQ5B,CAAK,EAAC,UAAU,SAAS;AAAA,UAetL,MAAApB,EAAA,IAAAoB,CAAK,EAAC,gBAAgByD,QAAgBzD,CAAK,EAAC,eAAapB,EAAA,IAAEoB,CAAK,EAAC,QAAQ,IAAI;AAAA;8BAxBvJkC,GAAG,MAKazB,EAAgB7B,EAAA,IAACoB,CAAK,CAAA,CAAA,GALtCpB,EAAA,UAAA,WAAAsD,IAMavB,MAAMD,EAAcC,SAAGX,CAAK,CAAA,CAAA,eAP3CgC,CAAE;AAAA,gBAJNP,CAAE,WAXJT,CAAG,4CAAHA,GAAG,cAAA,aAAAqC,KAAA,EAAA,EAAA,GAAA;AAAA,MAAwD,MAAAzE,EAAA,IAAAmC,CAAK,EAAC,OAAO,CAAC,GAAG,gBAAgByC,EAAc5E,EAAA,IAACmC,CAAK,EAAC,OAAO,CAAC,EAAE,eAAanC,EAAA,IAAEmC,CAAK,EAAC,OAAO,CAAC,EAAE,QAAQ,IAAInC,EAAA,IAAAmC,CAAK,EAAC;AAAA,oBAA5KC,CAAG;AAAA;;;;UAmEH0C,IAAGC,GAAA;kBAAHD,GAAG,CAAAE,MAAYzE,IAAeyE,GAAA,MAAfzE,CAAe,eAA9BuE,CAAG;AAAA;;YADDjE,CAAO,KAAA8B,EAAAsC,CAAA;AAAA;;UArEbjD,CAAO,GAAPhC,EAAA,gBAAA,MAAAkF,IAAAlF,EAAA,UAAAgC,kEAAoD5B,EAAc,EAAA,CAAA,CAAA,eAAlE4B,CAAO;AAFA;;"}
@@ -1,191 +0,0 @@
1
- import "svelte/internal/disclose-version";
2
- import * as e from "svelte/internal/client";
3
- import { onMount as ne } from "svelte";
4
- import { t as ce, r as H, s as me, w as ge } from "./VenueCalendar-mBg8Hi0c.js";
5
- import { A as r } from "./colors-BZoMuXdh.js";
6
- var pe = e.from_html('<div class="confetti svelte-g1e40p"></div>'), fe = e.from_html('<div class="confetti-container svelte-g1e40p" aria-hidden="true"></div>'), ue = e.from_html('<div class="detail-row svelte-g1e40p"><dt class="detail-label svelte-g1e40p">Order ID</dt> <dd class="detail-value order-id svelte-g1e40p"> </dd></div>'), _e = e.from_html('<div class="detail-row svelte-g1e40p"><dt class="detail-label svelte-g1e40p">Event</dt> <dd class="detail-value event-name svelte-g1e40p"> </dd></div>'), he = e.from_html('<div class="detail-row svelte-g1e40p"><dt class="detail-label svelte-g1e40p">When</dt> <dd class="detail-value svelte-g1e40p"><time class="svelte-g1e40p"> </time></dd></div>'), be = e.from_html('<div class="detail-row svelte-g1e40p"><dt class="detail-label svelte-g1e40p">Where</dt> <dd class="detail-value svelte-g1e40p"> </dd></div>'), ke = e.from_html('<a class="nav-link secondary svelte-g1e40p">Back to event</a>'), ye = e.from_html('<a class="nav-link primary svelte-g1e40p">Browse more events</a>'), we = e.from_html('<nav aria-label="Next steps"><!> <!></nav>'), xe = e.from_html(`<div class="success-container svelte-g1e40p" role="main" aria-labelledby="success-title"><!> <div class="content-wrapper svelte-g1e40p"><div><div class="machine-slot svelte-g1e40p"><div class="slot-inner svelte-g1e40p"></div></div> <div><div class="ticket-content svelte-g1e40p"><div class="ticket-header svelte-g1e40p"><div class="success-badge svelte-g1e40p" aria-hidden="true"><!></div> <h1 id="success-title" class="success-title svelte-g1e40p">You're all set!</h1> <p class="success-subtitle svelte-g1e40p">Your tickets have been confirmed</p></div> <div class="ticket-divider svelte-g1e40p"><div class="divider-notch left svelte-g1e40p"></div> <div class="divider-line svelte-g1e40p"></div> <div class="divider-notch right svelte-g1e40p"></div></div> <dl aria-label="Order details"><div class="detail-row svelte-g1e40p"><dt class="detail-label svelte-g1e40p">Email</dt> <dd class="detail-value svelte-g1e40p"> </dd></div> <!> <!> <!> <!></dl> <div class="ticket-footer svelte-g1e40p"><p class="footer-text svelte-g1e40p">Check your email for your tickets</p></div></div> <div class="ticket-stub svelte-g1e40p"></div></div></div> <!></div></div>`);
7
- function Le(J, f) {
8
- e.push(f, !0);
9
- let O = e.prop(f, "data", 19, () => ({})), h = e.prop(f, "eventUrl", 3, ""), b = e.prop(f, "browseUrl", 3, "/");
10
- const {
11
- organizationID: Ee,
12
- orgSlug: Te,
13
- slug: De,
14
- event: k,
15
- orderId: K,
16
- customerEmail: y,
17
- eventName: w,
18
- eventDateTime: x,
19
- eventLocation: E
20
- } = O() || {};
21
- let i = null;
22
- if (k)
23
- try {
24
- i = ce(k);
25
- } catch (t) {
26
- console.warn("transformEvent failed in Success component:", t), i = k;
27
- }
28
- let Q = null, u = e.state(""), o = e.state(""), n = e.state(""), c = e.state(""), m = e.state(""), g = K || O()?.orderId || "", U = e.state(!1), T = e.state(!1), D = e.state(!1);
29
- function C(t) {
30
- if (!t) return "";
31
- const a = i?.timeZone || "UTC";
32
- return ge(t, a);
33
- }
34
- const A = [
35
- r.coral,
36
- r.sky.light,
37
- r.sky[400],
38
- r.mint[600],
39
- r.yellow[300],
40
- r.plum,
41
- r.mint[500],
42
- r.yellow[500]
43
- ], R = Array.from({ length: 50 }, (t, a) => ({
44
- id: a,
45
- color: A[Math.floor(Math.random() * A.length)],
46
- left: Math.random() * 100,
47
- delay: Math.random() * 0.5,
48
- duration: 2 + Math.random() * 2,
49
- size: 6 + Math.random() * 8,
50
- rotation: Math.random() * 360
51
- }));
52
- ne(async () => {
53
- setTimeout(
54
- () => {
55
- e.set(U, !0);
56
- },
57
- 100
58
- ), setTimeout(
59
- () => {
60
- e.set(T, !0);
61
- },
62
- 300
63
- ), setTimeout(
64
- () => {
65
- e.set(D, !0);
66
- },
67
- 800
68
- );
69
- try {
70
- let t = null;
71
- try {
72
- typeof H == "function" && g && (t = await H(g));
73
- } catch (a) {
74
- console.warn("getOrder failed in Success component, falling back to provided data:", a);
75
- }
76
- t ? (Q = t, e.set(u, t.customerEmail || y || "", !0), e.set(o, t.id || g, !0), e.set(n, t.eventName || i?.name || w || "", !0), e.set(c, C(t.eventDateTime || i?.startDateTime || x), !0), e.set(m, t.eventLocation || i?.location || E || "", !0)) : (e.set(u, y || "", !0), e.set(o, g, !0), e.set(n, w || i?.name || "", !0), e.set(c, C(x || i?.startDateTime), !0), e.set(m, E || i?.location || "", !0));
77
- } catch (t) {
78
- console.error("Error fetching order data:", t), t.message, e.set(u, y || "your-email@example.com", !0), e.set(o, g, !0), e.set(n, i?.name || w || "", !0), e.set(c, C(i?.startDateTime || x), !0), e.set(m, i?.location || E || "", !0);
79
- }
80
- });
81
- var M = xe(), S = e.child(M);
82
- {
83
- var V = (t) => {
84
- var a = fe();
85
- e.each(a, 21, () => R, (l) => l.id, (l, s) => {
86
- var v = pe();
87
- e.template_effect(() => e.set_style(v, `
88
- left: ${e.get(s).left ?? ""}%;
89
- background-color: ${e.get(s).color ?? ""};
90
- animation-delay: ${e.get(s).delay ?? ""}s;
91
- animation-duration: ${e.get(s).duration ?? ""}s;
92
- width: ${e.get(s).size ?? ""}px;
93
- height: ${e.get(s).size ?? ""}px;
94
- transform: rotate(${e.get(s).rotation ?? ""}deg);
95
- `)), e.append(l, v);
96
- }), e.reset(a), e.append(t, a);
97
- };
98
- e.if(S, (t) => {
99
- e.get(U) && t(V);
100
- });
101
- }
102
- var $ = e.sibling(S, 2), _ = e.child($);
103
- let B;
104
- var I = e.sibling(e.child(_), 2);
105
- let W;
106
- var Y = e.child(I), z = e.child(Y), F = e.child(z), X = e.child(F);
107
- me(X, { class: "check-icon" }), e.reset(F), e.next(4), e.reset(z);
108
- var L = e.sibling(z, 4);
109
- let P;
110
- var N = e.child(L), Z = e.sibling(e.child(N), 2), ee = e.child(Z, !0);
111
- e.reset(Z), e.reset(N);
112
- var j = e.sibling(N, 2);
113
- {
114
- var te = (t) => {
115
- var a = ue(), l = e.sibling(e.child(a), 2), s = e.child(l);
116
- e.reset(l), e.reset(a), e.template_effect(() => e.set_text(s, `#${e.get(o) ?? ""}`)), e.append(t, a);
117
- };
118
- e.if(j, (t) => {
119
- e.get(o) && t(te);
120
- });
121
- }
122
- var q = e.sibling(j, 2);
123
- {
124
- var ae = (t) => {
125
- var a = _e(), l = e.sibling(e.child(a), 2), s = e.child(l, !0);
126
- e.reset(l), e.reset(a), e.template_effect(() => e.set_text(s, e.get(n))), e.append(t, a);
127
- };
128
- e.if(q, (t) => {
129
- e.get(n) && t(ae);
130
- });
131
- }
132
- var G = e.sibling(q, 2);
133
- {
134
- var se = (t) => {
135
- var a = he(), l = e.sibling(e.child(a), 2), s = e.child(l), v = e.child(s, !0);
136
- e.reset(s), e.reset(l), e.reset(a), e.template_effect(() => e.set_text(v, e.get(c))), e.append(t, a);
137
- };
138
- e.if(G, (t) => {
139
- e.get(c) && t(se);
140
- });
141
- }
142
- var le = e.sibling(G, 2);
143
- {
144
- var ie = (t) => {
145
- var a = be(), l = e.sibling(e.child(a), 2), s = e.child(l, !0);
146
- e.reset(l), e.reset(a), e.template_effect(() => e.set_text(s, e.get(m))), e.append(t, a);
147
- };
148
- e.if(le, (t) => {
149
- e.get(m) && t(ie);
150
- });
151
- }
152
- e.reset(L), e.next(2), e.reset(Y), e.next(2), e.reset(I), e.reset(_);
153
- var re = e.sibling(_, 2);
154
- {
155
- var de = (t) => {
156
- var a = we();
157
- let l;
158
- var s = e.child(a);
159
- {
160
- var v = (d) => {
161
- var p = ke();
162
- e.template_effect(() => e.set_attribute(p, "href", h())), e.append(d, p);
163
- };
164
- e.if(s, (d) => {
165
- h() && d(v);
166
- });
167
- }
168
- var ve = e.sibling(s, 2);
169
- {
170
- var oe = (d) => {
171
- var p = ye();
172
- e.template_effect(() => e.set_attribute(p, "href", b())), e.append(d, p);
173
- };
174
- e.if(ve, (d) => {
175
- b() && d(oe);
176
- });
177
- }
178
- e.reset(a), e.template_effect(() => l = e.set_class(a, 1, "nav-ctas svelte-g1e40p", null, l, { "fade-in": e.get(D) })), e.append(t, a);
179
- };
180
- e.if(re, (t) => {
181
- (h() || b()) && t(de);
182
- });
183
- }
184
- e.reset($), e.reset(M), e.template_effect(() => {
185
- B = e.set_class(_, 1, "ticket-machine svelte-g1e40p", null, B, { animate: e.get(T) }), W = e.set_class(I, 1, "ticket svelte-g1e40p", null, W, { "slide-out": e.get(T) }), P = e.set_class(L, 1, "ticket-details svelte-g1e40p", null, P, { "fade-in": e.get(D) }), e.set_text(ee, e.get(u) || "Loading...");
186
- }), e.append(J, M), e.pop();
187
- }
188
- export {
189
- Le as default
190
- };
191
- //# sourceMappingURL=Success.legacy-CHqoM06M.js.map