@getmicdrop/venue-calendar 3.4.4 → 3.4.6

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 (22) hide show
  1. package/dist/{CarouselView.legacy-DGx2ORJ6.js → CarouselView.legacy-BF4y171t.js} +3 -3
  2. package/dist/{CarouselView.legacy-DGx2ORJ6.js.map → CarouselView.legacy-BF4y171t.js.map} +1 -1
  3. package/dist/{Checkout.legacy-DSw_rESu.js → Checkout.legacy-WK7jnO9d.js} +2 -2
  4. package/dist/{Checkout.legacy-DSw_rESu.js.map → Checkout.legacy-WK7jnO9d.js.map} +1 -1
  5. package/dist/{FeaturedView.legacy-BuUaFDhd.js → FeaturedView.legacy-CqUxv--s.js} +2 -2
  6. package/dist/{FeaturedView.legacy-BuUaFDhd.js.map → FeaturedView.legacy-CqUxv--s.js.map} +1 -1
  7. package/dist/{GalleryCard-kKmB1N9p.js → GalleryCard-qpI5153t.js} +2 -2
  8. package/dist/{GalleryCard-kKmB1N9p.js.map → GalleryCard-qpI5153t.js.map} +1 -1
  9. package/dist/{GalleryView.legacy-B1mCdb-5.js → GalleryView.legacy--Pgf6xBm.js} +3 -3
  10. package/dist/{GalleryView.legacy-B1mCdb-5.js.map → GalleryView.legacy--Pgf6xBm.js.map} +1 -1
  11. package/dist/{GroupedListView.legacy-BGojcanH.js → GroupedListView.legacy-Bb-SL1tx.js} +2 -2
  12. package/dist/{GroupedListView.legacy-BGojcanH.js.map → GroupedListView.legacy-Bb-SL1tx.js.map} +1 -1
  13. package/dist/{Success.legacy-Nz87oWe-.js → Success.legacy-D_Jip1Kt.js} +2 -2
  14. package/dist/{Success.legacy-Nz87oWe-.js.map → Success.legacy-D_Jip1Kt.js.map} +1 -1
  15. package/dist/{VenueCalendar-BPozmAbV.js → VenueCalendar-893zkdHf.js} +8 -8
  16. package/dist/{VenueCalendar-BPozmAbV.js.map → VenueCalendar-893zkdHf.js.map} +1 -1
  17. package/dist/venue-calendar.es.js +13 -1
  18. package/dist/venue-calendar.iife.js +1 -1
  19. package/dist/venue-calendar.iife.js.map +1 -1
  20. package/dist/venue-calendar.umd.js +1 -1
  21. package/dist/venue-calendar.umd.js.map +1 -1
  22. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as e from "svelte/internal/client";
3
- import { a as C, i as Z, P as A, b as B, c as f, S as G, d as L } from "./VenueCalendar-BPozmAbV.js";
3
+ import { a as C, i as Z, P as A, b as B, c as f, S as G, d as L } from "./VenueCalendar-893zkdHf.js";
4
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>'), O = e.from_html("<time> </time>"), U = e.from_html('<span class="meta-separator svelte-18a25gb" aria-hidden="true">•</span> <span> </span>', 1), j = 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
5
  function H(b, i) {
6
6
  e.push(i, !0);
@@ -81,4 +81,4 @@ e.delegate(["click", "keydown"]);
81
81
  export {
82
82
  H as G
83
83
  };
84
- //# sourceMappingURL=GalleryCard-kKmB1N9p.js.map
84
+ //# sourceMappingURL=GalleryCard-qpI5153t.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GalleryCard-kKmB1N9p.js","sources":["../src/components/Calendar/GalleryCard.svelte"],"sourcesContent":["<script>\n import ScarcityBadge from \"../ScarcityBadge.svelte\";\n import { formatBrowseDate, formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\n import { getBrowseStatus, isEventUnavailable } from \"$lib/utils/browse-status.js\";\n\n let { event, oneventClick } = $props();\n\n let browseStatus = $derived(getBrowseStatus(event));\n let isUnavailable = $derived(isEventUnavailable(browseStatus));\n\n // Build comprehensive aria-label for event card\n function getEventAriaLabel(event) {\n const parts = [event.name];\n if (event.startDateTime) {\n parts.push(`on ${formatFullDate(event.startDateTime, event.timeZone)}`);\n }\n if (event.startDateTime) {\n parts.push(`at ${formatEventTime(event.startDateTime, event.timeZone)}`);\n }\n if (browseStatus) {\n parts.push(browseStatus.text);\n } else if (event.status && event.status !== 'On Sale') {\n parts.push(event.status);\n }\n parts.push('Press Enter to view details');\n return parts.join(', ');\n }\n</script>\n\n<div\n class=\"gallery-card\"\n class:card-unavailable={isUnavailable}\n onclick={() => oneventClick?.(event)}\n onkeydown={(e) => (e.key === 'Enter' || e.key === ' ') && oneventClick?.(event)}\n tabindex=\"0\"\n role=\"button\"\n aria-label={getEventAriaLabel(event)}\n>\n <!-- Fixed height image container -->\n <div class=\"card-image-container\">\n <img\n src={event.image || PLACEHOLDER_IMAGE}\n alt=\"\"\n class=\"card-image\"\n loading=\"lazy\"\n aria-hidden=\"true\"\n />\n <!-- Status Badge overlay -->\n {#if browseStatus}\n <div class=\"badge-overlay\" aria-hidden=\"true\">\n <span class=\"status-badge status-{browseStatus.type}\">{browseStatus.text}</span>\n </div>\n {:else if event.ticketsTotal > 0 || event.ticketsRemaining === 0}\n <div class=\"badge-overlay\" aria-hidden=\"true\">\n <ScarcityBadge\n remaining={event.ticketsRemaining ?? 0}\n total={event.ticketsTotal ?? 0}\n context=\"browse\"\n />\n </div>\n {/if}\n </div>\n\n <!-- Event Details -->\n <div class=\"card-content\" aria-hidden=\"true\">\n <h3 class=\"card-title\">{event.name}</h3>\n <div class=\"card-meta\">\n {#if event.startDateTime}\n <time datetime={event.startDateTime}>\n {formatBrowseDate(event.startDateTime, event.timeZone)}\n </time>\n {/if}\n {#if event.startDateTime}\n <span class=\"meta-separator\" aria-hidden=\"true\">•</span>\n <span>{formatEventTime(event.startDateTime, event.timeZone)}</span>\n {/if}\n </div>\n </div>\n</div>\n\n<style>\n @reference \"../../app.css\";\n\n .gallery-card {\n @apply rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700;\n @apply overflow-hidden cursor-pointer;\n transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;\n }\n\n .gallery-card:hover {\n @apply border-gray-300 dark:border-gray-600;\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n }\n\n .gallery-card:focus {\n @apply outline-none;\n }\n\n .gallery-card:focus-visible {\n @apply outline-2 outline-blue-700 dark:outline-blue-500 outline-offset-2;\n }\n\n .gallery-card:active {\n transform: translateY(0);\n }\n\n /* Fixed height image container */\n .card-image-container {\n @apply relative w-full bg-gray-100 dark:bg-gray-700 overflow-hidden;\n height: 200px;\n }\n\n @media (max-width: 639px) {\n .card-image-container {\n height: 220px;\n }\n }\n\n @media (min-width: 1024px) {\n .card-image-container {\n height: 180px;\n }\n }\n\n .card-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n .badge-overlay {\n position: absolute;\n top: 8px;\n left: 8px;\n }\n\n .card-content {\n @apply p-3;\n }\n\n @media (min-width: 640px) {\n .card-content {\n @apply p-3.5;\n }\n }\n\n .card-title {\n @apply text-base font-semibold text-gray-900 dark:text-white mb-1.5;\n line-height: 1.3;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n @media (max-width: 639px) {\n .card-title {\n @apply text-lg;\n }\n }\n\n .card-meta {\n @apply text-sm text-gray-600 dark:text-gray-300 font-medium;\n }\n\n @media (max-width: 639px) {\n .card-meta {\n @apply text-base;\n }\n }\n\n .meta-separator {\n @apply text-gray-400 dark:text-gray-500 mx-1;\n }\n\n /* Unavailable event dimming */\n .card-unavailable {\n @apply opacity-60;\n }\n\n .card-unavailable .card-image {\n filter: grayscale(0.5);\n }\n\n /* Status badges — distinct visual treatments for each status */\n .status-badge {\n @apply inline-flex items-center text-xs font-bold px-2.5 py-1 rounded;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);\n letter-spacing: 0.02em;\n }\n\n .status-cancelled {\n @apply text-white;\n background: linear-gradient(135deg, rgb(127 29 29) 0%, rgb(185 28 28) 100%); /* rose-900 → red-700 */\n text-decoration: line-through;\n text-decoration-thickness: 1.5px;\n }\n\n .status-past {\n @apply text-gray-300;\n background: rgba(0, 0, 0, 0.7);\n backdrop-filter: blur(4px);\n }\n\n .status-sold_out {\n @apply text-white uppercase tracking-wider;\n background: linear-gradient(135deg, rgb(220 38 38) 0%, rgb(239 68 68) 100%); /* red-600 → red-400 */\n font-size: 0.65rem;\n }\n\n .status-sales_ended {\n @apply text-gray-200;\n background: rgba(55, 65, 81, 0.9); /* gray-700 */\n backdrop-filter: blur(4px);\n border: 1px solid rgba(156, 163, 175, 0.3);\n }\n\n .status-coming_soon {\n @apply text-white;\n background: linear-gradient(135deg, rgb(37 99 235) 0%, rgb(99 102 241) 100%); /* blue-600 → indigo-500 */\n }\n\n /* Reduced motion */\n @media (prefers-reduced-motion: reduce) {\n .gallery-card {\n transition: none;\n }\n\n .gallery-card:hover {\n transform: none;\n }\n }\n</style>\n"],"names":["browseStatus","getBrowseStatus","$$props","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":";;;;iBAAA;;AAQM,MAAAA,oBAAwBC,EAAeC,EAAA,KAAA,CAAA,GACvCC,IAAaC,EAAA,QAAA,MAAYC,EAAkBD,EAAA,IAACJ,CAAY,CAAA,CAAA;WAGnDM,EAAkBC,GAAO;UAC1BC,IAAK,CAAID,EAAM,IAAI;WACrBA,EAAM,iBACRC,EAAM,KAAI,MAAOC,EAAeF,EAAM,eAAeA,EAAM,QAAQ,CAAA,EAAA,GAEjEA,EAAM,iBACRC,EAAM,KAAI,MAAOE,EAAgBH,EAAM,eAAeA,EAAM,QAAQ,CAAA,EAAA,GAElEH,EAAA,IAAAJ,CAAY,IACdQ,EAAM,KAAIJ,EAAA,IAACJ,CAAY,EAAC,IAAI,IACnBO,EAAM,UAAUA,EAAM,WAAW,aAC1CC,EAAM,KAAKD,EAAM,MAAM,GAEzBC,EAAM,KAAK,6BAA6B,GACjCA,EAAM,KAAK,IAAI;AAAA,EACxB;MAGDG,IAAEC,EAAA;;AAUA,MAAAC,YAVFF,CAAE,GAWEG,YADFD,CAAG,iBACDC,GAAE,CAAA;;;UASAC,IAAGC,EAAA,GACDC,YADFF,CAAG,eACDE,GAAI,EAAA;cAAJA,CAAI,WADNF,CAAG;oBACDE,GAAI,GAAA,uBAAAb,EAAA,IAA6BJ,CAAY,EAAC,QAAI,EAAA,IAAA,gBAAA,GAAII,EAAA,SAAAc,GAAAd,EAAA,IAAAJ,CAAY,EAAC,IAAI;AAAA,sBADzEe,CAAG;AAAA;UAIHI,IAAGC,EAAA,eAAHD,CAAG;;AAEiB,YAAAE,IAAAjB,EAAA,QAAA,MAAAF,EAAA,MAAA,oBAAoB,CAAC,GACzBoB,IAAAlB,EAAA,QAAA,MAAAF,EAAA,MAAA,gBAAgB,CAAC;AAF/B,QAAAqB,EAAYC,GAAA;AAAA;;;;;;;;;cADdL,CAAG,eAAHA,CAAG;AAAA;;AALD,MAAAf,EAAA,IAAAJ,CAAY,oBAID,eAAe,KAACE,EAAA,MAAU,qBAAqB,MAACuB,EAAAC,GAAA,CAAA;AAAA;;UAbjEb,CAAG;AAyBH,MAAAc,cAzBAd,GAAG,CAAA,GA0BDe,YADFD,CAAG,eACDC,GAAE,EAAA;UAAFA,CAAE;AACF,MAAAC,cADAD,GAAE,CAAA,eACFC,CAAG;;;UAECC,IAAIC,EAAA,eAAJD,GAAI,EAAA;cAAJA,CAAI;;AAAJ,UAAA1B,EAAA,cAAA0B,uBAAqB,aAAa;;;gBAChCE,EAAgB9B,EAAA,MAAO,eAAaA,EAAA,MAAQ,QAAQ;AAAA;qBADtD4B,CAAI;AAAA;;cADI,iBAAaL,EAAAQ,CAAA;AAAA;;;;;mBAOrBC,IAAI9B,EAAA,QAAAA,EAAA,YAAA+B,CAAA,GAAA,CAAA,eAAJD,GAAI,EAAA;cAAJA,CAAI;cAAExB,EAAeR,EAAA,MAAO,eAAaA,EAAA,MAAQ,QAAQ;AAAA;;;cAFjD,iBAAauB,EAAAW,CAAA;AAAA;;UANzBP,CAAG,WAFLF,CAAG,WAnCLhB,CAAE;;AAAF,MAAA0B,IAAAjC,EAAA,UAAAO,0EAEyBR,CAAa,EAAA,CAAA,mBAFtCQ,GAAE,cAAAU,CAAA,mBAWEP,GAAE,OAAAZ,EAAA,MACU,SAASoC,CAAiB,yBAwBT,IAAI;AAAA;WA7BxBhC,EAAiBJ,EAAA,KAAA,CAAA;AAAA,0BAP9BS,GAAE,MAAAT,EAAA,eAAAA,EAAA,KAAA,CAAA,GAAFE,EAAA,UAAA,WAAAO,GAAE,CAIW4B,OAAOA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,QAAGrC,EAAA,eAAAA,EAAA,KAAA,CAAA,eAJtDS,CAAE;AAFK;;"}
1
+ {"version":3,"file":"GalleryCard-qpI5153t.js","sources":["../src/components/Calendar/GalleryCard.svelte"],"sourcesContent":["<script>\n import ScarcityBadge from \"../ScarcityBadge.svelte\";\n import { formatBrowseDate, formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\n import { getBrowseStatus, isEventUnavailable } from \"$lib/utils/browse-status.js\";\n\n let { event, oneventClick } = $props();\n\n let browseStatus = $derived(getBrowseStatus(event));\n let isUnavailable = $derived(isEventUnavailable(browseStatus));\n\n // Build comprehensive aria-label for event card\n function getEventAriaLabel(event) {\n const parts = [event.name];\n if (event.startDateTime) {\n parts.push(`on ${formatFullDate(event.startDateTime, event.timeZone)}`);\n }\n if (event.startDateTime) {\n parts.push(`at ${formatEventTime(event.startDateTime, event.timeZone)}`);\n }\n if (browseStatus) {\n parts.push(browseStatus.text);\n } else if (event.status && event.status !== 'On Sale') {\n parts.push(event.status);\n }\n parts.push('Press Enter to view details');\n return parts.join(', ');\n }\n</script>\n\n<div\n class=\"gallery-card\"\n class:card-unavailable={isUnavailable}\n onclick={() => oneventClick?.(event)}\n onkeydown={(e) => (e.key === 'Enter' || e.key === ' ') && oneventClick?.(event)}\n tabindex=\"0\"\n role=\"button\"\n aria-label={getEventAriaLabel(event)}\n>\n <!-- Fixed height image container -->\n <div class=\"card-image-container\">\n <img\n src={event.image || PLACEHOLDER_IMAGE}\n alt=\"\"\n class=\"card-image\"\n loading=\"lazy\"\n aria-hidden=\"true\"\n />\n <!-- Status Badge overlay -->\n {#if browseStatus}\n <div class=\"badge-overlay\" aria-hidden=\"true\">\n <span class=\"status-badge status-{browseStatus.type}\">{browseStatus.text}</span>\n </div>\n {:else if event.ticketsTotal > 0 || event.ticketsRemaining === 0}\n <div class=\"badge-overlay\" aria-hidden=\"true\">\n <ScarcityBadge\n remaining={event.ticketsRemaining ?? 0}\n total={event.ticketsTotal ?? 0}\n context=\"browse\"\n />\n </div>\n {/if}\n </div>\n\n <!-- Event Details -->\n <div class=\"card-content\" aria-hidden=\"true\">\n <h3 class=\"card-title\">{event.name}</h3>\n <div class=\"card-meta\">\n {#if event.startDateTime}\n <time datetime={event.startDateTime}>\n {formatBrowseDate(event.startDateTime, event.timeZone)}\n </time>\n {/if}\n {#if event.startDateTime}\n <span class=\"meta-separator\" aria-hidden=\"true\">•</span>\n <span>{formatEventTime(event.startDateTime, event.timeZone)}</span>\n {/if}\n </div>\n </div>\n</div>\n\n<style>\n @reference \"../../app.css\";\n\n .gallery-card {\n @apply rounded-lg border bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700;\n @apply overflow-hidden cursor-pointer;\n transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;\n }\n\n .gallery-card:hover {\n @apply border-gray-300 dark:border-gray-600;\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n }\n\n .gallery-card:focus {\n @apply outline-none;\n }\n\n .gallery-card:focus-visible {\n @apply outline-2 outline-blue-700 dark:outline-blue-500 outline-offset-2;\n }\n\n .gallery-card:active {\n transform: translateY(0);\n }\n\n /* Fixed height image container */\n .card-image-container {\n @apply relative w-full bg-gray-100 dark:bg-gray-700 overflow-hidden;\n height: 200px;\n }\n\n @media (max-width: 639px) {\n .card-image-container {\n height: 220px;\n }\n }\n\n @media (min-width: 1024px) {\n .card-image-container {\n height: 180px;\n }\n }\n\n .card-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n .badge-overlay {\n position: absolute;\n top: 8px;\n left: 8px;\n }\n\n .card-content {\n @apply p-3;\n }\n\n @media (min-width: 640px) {\n .card-content {\n @apply p-3.5;\n }\n }\n\n .card-title {\n @apply text-base font-semibold text-gray-900 dark:text-white mb-1.5;\n line-height: 1.3;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n @media (max-width: 639px) {\n .card-title {\n @apply text-lg;\n }\n }\n\n .card-meta {\n @apply text-sm text-gray-600 dark:text-gray-300 font-medium;\n }\n\n @media (max-width: 639px) {\n .card-meta {\n @apply text-base;\n }\n }\n\n .meta-separator {\n @apply text-gray-400 dark:text-gray-500 mx-1;\n }\n\n /* Unavailable event dimming */\n .card-unavailable {\n @apply opacity-60;\n }\n\n .card-unavailable .card-image {\n filter: grayscale(0.5);\n }\n\n /* Status badges — distinct visual treatments for each status */\n .status-badge {\n @apply inline-flex items-center text-xs font-bold px-2.5 py-1 rounded;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);\n letter-spacing: 0.02em;\n }\n\n .status-cancelled {\n @apply text-white;\n background: linear-gradient(135deg, rgb(127 29 29) 0%, rgb(185 28 28) 100%); /* rose-900 → red-700 */\n text-decoration: line-through;\n text-decoration-thickness: 1.5px;\n }\n\n .status-past {\n @apply text-gray-300;\n background: rgba(0, 0, 0, 0.7);\n backdrop-filter: blur(4px);\n }\n\n .status-sold_out {\n @apply text-white uppercase tracking-wider;\n background: linear-gradient(135deg, rgb(220 38 38) 0%, rgb(239 68 68) 100%); /* red-600 → red-400 */\n font-size: 0.65rem;\n }\n\n .status-sales_ended {\n @apply text-gray-200;\n background: rgba(55, 65, 81, 0.9); /* gray-700 */\n backdrop-filter: blur(4px);\n border: 1px solid rgba(156, 163, 175, 0.3);\n }\n\n .status-coming_soon {\n @apply text-white;\n background: linear-gradient(135deg, rgb(37 99 235) 0%, rgb(99 102 241) 100%); /* blue-600 → indigo-500 */\n }\n\n /* Reduced motion */\n @media (prefers-reduced-motion: reduce) {\n .gallery-card {\n transition: none;\n }\n\n .gallery-card:hover {\n transform: none;\n }\n }\n</style>\n"],"names":["browseStatus","getBrowseStatus","$$props","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":";;;;iBAAA;;AAQM,MAAAA,oBAAwBC,EAAeC,EAAA,KAAA,CAAA,GACvCC,IAAaC,EAAA,QAAA,MAAYC,EAAkBD,EAAA,IAACJ,CAAY,CAAA,CAAA;WAGnDM,EAAkBC,GAAO;UAC1BC,IAAK,CAAID,EAAM,IAAI;WACrBA,EAAM,iBACRC,EAAM,KAAI,MAAOC,EAAeF,EAAM,eAAeA,EAAM,QAAQ,CAAA,EAAA,GAEjEA,EAAM,iBACRC,EAAM,KAAI,MAAOE,EAAgBH,EAAM,eAAeA,EAAM,QAAQ,CAAA,EAAA,GAElEH,EAAA,IAAAJ,CAAY,IACdQ,EAAM,KAAIJ,EAAA,IAACJ,CAAY,EAAC,IAAI,IACnBO,EAAM,UAAUA,EAAM,WAAW,aAC1CC,EAAM,KAAKD,EAAM,MAAM,GAEzBC,EAAM,KAAK,6BAA6B,GACjCA,EAAM,KAAK,IAAI;AAAA,EACxB;MAGDG,IAAEC,EAAA;;AAUA,MAAAC,YAVFF,CAAE,GAWEG,YADFD,CAAG,iBACDC,GAAE,CAAA;;;UASAC,IAAGC,EAAA,GACDC,YADFF,CAAG,eACDE,GAAI,EAAA;cAAJA,CAAI,WADNF,CAAG;oBACDE,GAAI,GAAA,uBAAAb,EAAA,IAA6BJ,CAAY,EAAC,QAAI,EAAA,IAAA,gBAAA,GAAII,EAAA,SAAAc,GAAAd,EAAA,IAAAJ,CAAY,EAAC,IAAI;AAAA,sBADzEe,CAAG;AAAA;UAIHI,IAAGC,EAAA,eAAHD,CAAG;;AAEiB,YAAAE,IAAAjB,EAAA,QAAA,MAAAF,EAAA,MAAA,oBAAoB,CAAC,GACzBoB,IAAAlB,EAAA,QAAA,MAAAF,EAAA,MAAA,gBAAgB,CAAC;AAF/B,QAAAqB,EAAYC,GAAA;AAAA;;;;;;;;;cADdL,CAAG,eAAHA,CAAG;AAAA;;AALD,MAAAf,EAAA,IAAAJ,CAAY,oBAID,eAAe,KAACE,EAAA,MAAU,qBAAqB,MAACuB,EAAAC,GAAA,CAAA;AAAA;;UAbjEb,CAAG;AAyBH,MAAAc,cAzBAd,GAAG,CAAA,GA0BDe,YADFD,CAAG,eACDC,GAAE,EAAA;UAAFA,CAAE;AACF,MAAAC,cADAD,GAAE,CAAA,eACFC,CAAG;;;UAECC,IAAIC,EAAA,eAAJD,GAAI,EAAA;cAAJA,CAAI;;AAAJ,UAAA1B,EAAA,cAAA0B,uBAAqB,aAAa;;;gBAChCE,EAAgB9B,EAAA,MAAO,eAAaA,EAAA,MAAQ,QAAQ;AAAA;qBADtD4B,CAAI;AAAA;;cADI,iBAAaL,EAAAQ,CAAA;AAAA;;;;;mBAOrBC,IAAI9B,EAAA,QAAAA,EAAA,YAAA+B,CAAA,GAAA,CAAA,eAAJD,GAAI,EAAA;cAAJA,CAAI;cAAExB,EAAeR,EAAA,MAAO,eAAaA,EAAA,MAAQ,QAAQ;AAAA;;;cAFjD,iBAAauB,EAAAW,CAAA;AAAA;;UANzBP,CAAG,WAFLF,CAAG,WAnCLhB,CAAE;;AAAF,MAAA0B,IAAAjC,EAAA,UAAAO,0EAEyBR,CAAa,EAAA,CAAA,mBAFtCQ,GAAE,cAAAU,CAAA,mBAWEP,GAAE,OAAAZ,EAAA,MACU,SAASoC,CAAiB,yBAwBT,IAAI;AAAA;WA7BxBhC,EAAiBJ,EAAA,KAAA,CAAA;AAAA,0BAP9BS,GAAE,MAAAT,EAAA,eAAAA,EAAA,KAAA,CAAA,GAAFE,EAAA,UAAA,WAAAO,GAAE,CAIW4B,OAAOA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,QAAGrC,EAAA,eAAAA,EAAA,KAAA,CAAA,eAJtDS,CAAE;AAFK;;"}
@@ -1,8 +1,8 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as e from "svelte/internal/client";
3
3
  import { onMount as k, onDestroy as C } from "svelte";
4
- import { G as M } from "./GalleryCard-kKmB1N9p.js";
5
- import { f as w } from "./VenueCalendar-BPozmAbV.js";
4
+ import { G as M } from "./GalleryCard-qpI5153t.js";
5
+ import { f as w } from "./VenueCalendar-893zkdHf.js";
6
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
7
  function F(g, i) {
8
8
  e.push(i, !0);
@@ -49,4 +49,4 @@ function F(g, i) {
49
49
  export {
50
50
  F as default
51
51
  };
52
- //# sourceMappingURL=GalleryView.legacy-B1mCdb-5.js.map
52
+ //# sourceMappingURL=GalleryView.legacy--Pgf6xBm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GalleryView.legacy-B1mCdb-5.js","sources":["../src/components/Calendar/GalleryView.legacy.svelte"],"sourcesContent":["<script>\n import { onMount, onDestroy } from \"svelte\";\n import GalleryCard from \"./GalleryCard.svelte\";\n import { filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\n\n let { events = [], initialCount = 12, loadMoreCount = 12, oneventClick } = $props();\n\n let displayedCount = initialCount;\n let loadMoreTrigger;\n let observer;\n\n // Filter to today and future, sorted chronologically\n let futureEvents = $derived(filterTodayAndFuture(events));\n let displayedEvents = $derived(futureEvents.slice(0, displayedCount));\n let hasMore = $derived(displayedCount < futureEvents.length);\n\n function loadMore() {\n displayedCount += loadMoreCount;\n }\n\n onMount(() => {\n observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting && hasMore) {\n loadMore();\n }\n },\n { rootMargin: '100px' }\n );\n\n if (loadMoreTrigger) {\n observer.observe(loadMoreTrigger);\n }\n });\n\n onDestroy(() => {\n if (observer) {\n observer.disconnect();\n }\n });\n\n // Re-observe when trigger element changes\n $effect(() => {\n if (observer && loadMoreTrigger) {\n observer.disconnect();\n observer.observe(loadMoreTrigger);\n }\n });\n</script>\n\n<section class=\"gallery-view\" aria-label=\"Events gallery\">\n <h2 class=\"sr-only\">Upcoming events</h2>\n <ul class=\"gallery-grid\" role=\"list\">\n {#each displayedEvents as event}\n <li class=\"gallery-card-wrapper\">\n <GalleryCard {event} {oneventClick} />\n </li>\n {/each}\n </ul>\n\n <!-- Infinite scroll trigger -->\n {#if hasMore}\n <div bind:this={loadMoreTrigger} class=\"load-more-trigger\" role=\"status\" aria-live=\"polite\">\n <span class=\"loading-text\">Loading more events...</span>\n </div>\n {/if}\n</section>\n\n<style>\n @reference \"../../app.css\";\n\n .gallery-view {\n width: 100%;\n }\n\n .gallery-grid {\n @apply grid grid-cols-1 gap-4 bg-gray-50 dark:bg-gray-900 p-2;\n }\n\n /* 2 columns at sm (640px) */\n @media (min-width: 640px) {\n .gallery-grid {\n @apply grid-cols-2 gap-4 p-3;\n }\n }\n\n /* 3 columns at md (768px) */\n @media (min-width: 768px) {\n .gallery-grid {\n @apply grid-cols-3 gap-5 p-4;\n }\n }\n\n /* 4 columns at lg (1024px) */\n @media (min-width: 1024px) {\n .gallery-grid {\n @apply grid-cols-4 gap-6 p-5;\n }\n }\n\n /* Load more trigger */\n .load-more-trigger {\n @apply flex items-center justify-center gap-2 py-2 p-6;\n }\n\n .loading-text {\n @apply text-sm text-gray-500 dark:text-gray-400;\n }\n\n /* Gallery card wrapper for list items */\n .gallery-card-wrapper {\n @apply list-none;\n }\n\n /* Screen reader only text */\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n</style>\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,EAAO,MAAO;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,EAAS,MAAO;AACV,IAAAR,KACFA,EAAS,WAAU;AAAA,EAEvB,CAAC,GAGDN,EAAA,YAAO,MAAO;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
+ {"version":3,"file":"GalleryView.legacy--Pgf6xBm.js","sources":["../src/components/Calendar/GalleryView.legacy.svelte"],"sourcesContent":["<script>\n import { onMount, onDestroy } from \"svelte\";\n import GalleryCard from \"./GalleryCard.svelte\";\n import { filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\n\n let { events = [], initialCount = 12, loadMoreCount = 12, oneventClick } = $props();\n\n let displayedCount = initialCount;\n let loadMoreTrigger;\n let observer;\n\n // Filter to today and future, sorted chronologically\n let futureEvents = $derived(filterTodayAndFuture(events));\n let displayedEvents = $derived(futureEvents.slice(0, displayedCount));\n let hasMore = $derived(displayedCount < futureEvents.length);\n\n function loadMore() {\n displayedCount += loadMoreCount;\n }\n\n onMount(() => {\n observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting && hasMore) {\n loadMore();\n }\n },\n { rootMargin: '100px' }\n );\n\n if (loadMoreTrigger) {\n observer.observe(loadMoreTrigger);\n }\n });\n\n onDestroy(() => {\n if (observer) {\n observer.disconnect();\n }\n });\n\n // Re-observe when trigger element changes\n $effect(() => {\n if (observer && loadMoreTrigger) {\n observer.disconnect();\n observer.observe(loadMoreTrigger);\n }\n });\n</script>\n\n<section class=\"gallery-view\" aria-label=\"Events gallery\">\n <h2 class=\"sr-only\">Upcoming events</h2>\n <ul class=\"gallery-grid\" role=\"list\">\n {#each displayedEvents as event}\n <li class=\"gallery-card-wrapper\">\n <GalleryCard {event} {oneventClick} />\n </li>\n {/each}\n </ul>\n\n <!-- Infinite scroll trigger -->\n {#if hasMore}\n <div bind:this={loadMoreTrigger} class=\"load-more-trigger\" role=\"status\" aria-live=\"polite\">\n <span class=\"loading-text\">Loading more events...</span>\n </div>\n {/if}\n</section>\n\n<style>\n @reference \"../../app.css\";\n\n .gallery-view {\n width: 100%;\n }\n\n .gallery-grid {\n @apply grid grid-cols-1 gap-4 bg-gray-50 dark:bg-gray-900 p-2;\n }\n\n /* 2 columns at sm (640px) */\n @media (min-width: 640px) {\n .gallery-grid {\n @apply grid-cols-2 gap-4 p-3;\n }\n }\n\n /* 3 columns at md (768px) */\n @media (min-width: 768px) {\n .gallery-grid {\n @apply grid-cols-3 gap-5 p-4;\n }\n }\n\n /* 4 columns at lg (1024px) */\n @media (min-width: 1024px) {\n .gallery-grid {\n @apply grid-cols-4 gap-6 p-5;\n }\n }\n\n /* Load more trigger */\n .load-more-trigger {\n @apply flex items-center justify-center gap-2 py-2 p-6;\n }\n\n .loading-text {\n @apply text-sm text-gray-500 dark:text-gray-400;\n }\n\n /* Gallery card wrapper for list items */\n .gallery-card-wrapper {\n @apply list-none;\n }\n\n /* Screen reader only text */\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n</style>\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,EAAO,MAAO;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,EAAS,MAAO;AACV,IAAAR,KACFA,EAAS,WAAU;AAAA,EAEvB,CAAC,GAGDN,EAAA,YAAO,MAAO;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,7 +1,7 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as e from "svelte/internal/client";
3
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-BPozmAbV.js";
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-893zkdHf.js";
5
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
6
  function be(A, d) {
7
7
  e.push(d, !0);
@@ -145,4 +145,4 @@ e.delegate(["click", "keydown"]);
145
145
  export {
146
146
  be as default
147
147
  };
148
- //# sourceMappingURL=GroupedListView.legacy-BGojcanH.js.map
148
+ //# sourceMappingURL=GroupedListView.legacy-Bb-SL1tx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupedListView.legacy-BGojcanH.js","sources":["../src/components/Calendar/GroupedListView.legacy.svelte"],"sourcesContent":["<script>\n import { onMount, onDestroy } from \"svelte\";\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\n import { getDateParts, formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\n import { getBrowseStatus, isEventUnavailable, filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\n import ScarcityBadge from \"../ScarcityBadge.svelte\";\n\n let {\n events = [],\n initialCount = 10,\n loadMoreCount = 10,\n showDateColumn = true,\n filterFutureOnly = true,\n oneventClick\n } = $props();\n\n let displayedCount = initialCount;\n let loadMoreTrigger;\n let observer;\n\n // Filter to today and future (if enabled), then group by date\n let filteredEvents = $derived(filterFutureOnly ? filterTodayAndFuture(events) : events);\n let groupedEvents = $derived(groupEventsByDate(filteredEvents.slice(0, displayedCount)));\n let hasMore = $derived(displayedCount < filteredEvents.length);\n\n function loadMore() {\n displayedCount += loadMoreCount;\n }\n\n onMount(() => {\n observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting && hasMore) {\n loadMore();\n }\n },\n { rootMargin: '100px' }\n );\n\n if (loadMoreTrigger) {\n observer.observe(loadMoreTrigger);\n }\n });\n\n onDestroy(() => {\n if (observer) {\n observer.disconnect();\n }\n });\n\n // Re-observe when trigger element changes\n $effect(() => {\n if (observer && loadMoreTrigger) {\n observer.disconnect();\n observer.observe(loadMoreTrigger);\n }\n });\n\n function groupEventsByDate(eventList) {\n const groups = {};\n\n for (const event of eventList) {\n const dateKey = event.date; // YYYY-MM-DD format\n if (!groups[dateKey]) {\n groups[dateKey] = [];\n }\n groups[dateKey].push(event);\n }\n\n // Convert to array sorted by date\n return Object.entries(groups)\n .sort(([a], [b]) => new Date(a) - new Date(b))\n .map(([date, events]) => ({\n date,\n events,\n formattedDate: formatGroupDate(events),\n }));\n }\n\n function formatGroupDate(events) {\n // Use the first event in the group to get timezone-aware date parts\n const firstEvent = events[0];\n if (!firstEvent?.startDateTime) return { month: '', day: '', weekday: '' };\n const parts = getDateParts(firstEvent.startDateTime, firstEvent.timeZone);\n return {\n month: parts.month.toUpperCase(),\n day: String(parts.date).padStart(2, '0'),\n weekday: parts.day.toUpperCase(),\n };\n }\n\n function handleEventClick(event) {\n oneventClick?.(event);\n }\n\n function handleKeydown(e, event) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleEventClick(event);\n }\n }\n</script>\n\n<section class=\"grouped-list\" class:no-date-column={!showDateColumn} aria-label=\"Event listings\">\n <h2 class=\"sr-only\">Event list grouped by date</h2>\n {#each groupedEvents as group}\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}\">\n <!-- Date Column -->\n {#if showDateColumn}\n <div class=\"date-column\" aria-hidden=\"true\">\n <span class=\"date-month\">{group.formattedDate.month}</span>\n <span class=\"date-day\">{group.formattedDate.day}</span>\n <span class=\"date-weekday\">{group.formattedDate.weekday}</span>\n </div>\n {/if}\n\n <!-- Events Column -->\n <ul class=\"events-column\">\n {#each group.events as event, eventIndex}\n {@const eventStatus = getBrowseStatus(event)}\n {@const isUnavailable = isEventUnavailable(eventStatus)}\n <li class=\"event-list-item\">\n <div\n class=\"event-row\"\n class:event-row-first={eventIndex === 0}\n class:event-row-last={eventIndex === group.events.length - 1}\n class:row-unavailable={isUnavailable}\n onclick={() => handleEventClick(event)}\n onkeydown={(e) => handleKeydown(e, event)}\n tabindex=\"0\"\n role=\"button\"\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.`}\n >\n <!-- Event Image -->\n <div class=\"event-image-container\" aria-hidden=\"true\">\n <img\n src={event.image || PLACEHOLDER_IMAGE}\n alt=\"\"\n class=\"event-image\"\n loading=\"lazy\"\n />\n </div>\n\n <!-- Event Details (visually shown but also in aria-label, so hide from SR) -->\n <div class=\"event-details\" aria-hidden=\"true\">\n <h3 class=\"event-title\">{event.name}</h3>\n <time class=\"event-time\" datetime={event.startDateTime || group.date}>{event.startDateTime ? formatEventTime(event.startDateTime, event.timeZone) : ''}</time>\n {#if event.description}\n <p class=\"event-description\">{event.description}</p>\n {/if}\n </div>\n\n <!-- Status / Scarcity Badge -->\n <div class=\"event-badge-container\" aria-hidden=\"true\">\n {#if eventStatus}\n <span class=\"status-badge status-{eventStatus.type}\">{eventStatus.text}</span>\n {:else if event.ticketsTotal > 0 || event.ticketsRemaining === 0}\n <ScarcityBadge\n remaining={event.ticketsRemaining ?? 0}\n total={event.ticketsTotal ?? 0}\n context=\"browse\"\n />\n {/if}\n </div>\n </div>\n </li>\n {/each}\n </ul>\n </div>\n {/each}\n\n <!-- Infinite scroll trigger -->\n {#if hasMore}\n <div bind:this={loadMoreTrigger} class=\"load-more-trigger\" role=\"status\" aria-live=\"polite\">\n <span class=\"loading-text\">Loading more events...</span>\n </div>\n {/if}\n</section>\n\n<style>\n @reference \"../../app.css\";\n\n .grouped-list {\n @apply flex flex-col gap-0;\n }\n\n .date-group {\n @apply flex border-b border-gray-200 dark:border-gray-700;\n }\n\n .date-group:last-child {\n @apply border-b-0;\n }\n\n /* When no date column, remove left border styling */\n .no-date-column .date-group {\n @apply border-b-0;\n }\n\n .no-date-column .events-column {\n @apply border-l-0;\n }\n\n /* Date Column - Fixed width on left */\n .date-column {\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;\n }\n\n .date-month {\n @apply text-xs font-semibold text-gray-600 dark:text-gray-300 uppercase tracking-tight;\n }\n\n .date-day {\n @apply text-2xl font-bold text-gray-900 dark:text-white leading-tight;\n }\n\n .date-weekday {\n @apply text-xs font-semibold text-gray-600 dark:text-gray-300 uppercase tracking-tight;\n }\n\n /* Events Column - Flexible width */\n ul.events-column {\n @apply flex-1 flex flex-col;\n }\n\n /* Individual Event Row */\n .event-row {\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;\n }\n\n .event-row:last-child {\n @apply border-b-0;\n }\n\n .event-row:hover {\n @apply bg-gray-50 dark:bg-gray-700;\n }\n\n .event-row:focus {\n @apply outline-2 outline-blue-700 dark:outline-blue-400 -outline-offset-2;\n }\n\n .event-row:focus-visible {\n @apply outline-2 outline-blue-700 dark:outline-blue-400 -outline-offset-2;\n }\n\n /* Reset list styles */\n .events-column {\n @apply list-none p-0 m-0;\n }\n\n .event-list-item {\n @apply list-none;\n }\n\n /* Event Image */\n .event-image-container {\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;\n }\n\n .event-image {\n @apply w-full h-full object-contain;\n }\n\n /* Event Details */\n .event-details {\n @apply flex-1 flex flex-col gap-1.5 min-w-0;\n }\n\n .event-title {\n @apply text-lg font-semibold text-gray-900 dark:text-white m-0 leading-snug;\n }\n\n .event-time {\n @apply text-sm font-medium text-gray-600 dark:text-gray-300;\n }\n\n .event-description {\n @apply text-sm text-gray-600 dark:text-gray-300 mt-1.5 mb-0 line-clamp-2;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n /* Badge Container */\n .event-badge-container {\n @apply flex items-start pt-0.5;\n }\n\n /* Unavailable row dimming */\n .row-unavailable {\n @apply opacity-60;\n }\n\n .row-unavailable .event-image {\n filter: grayscale(0.5);\n }\n\n /* Status badges — distinct visual treatments matching gallery cards */\n .status-badge {\n @apply inline-flex items-center text-xs font-bold px-2.5 py-1 rounded whitespace-nowrap;\n letter-spacing: 0.02em;\n }\n\n .status-cancelled {\n @apply bg-red-100 text-red-800 dark:bg-red-900/40 dark:text-red-300;\n text-decoration: line-through;\n text-decoration-thickness: 1.5px;\n }\n\n .status-past {\n @apply bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400;\n }\n\n .status-sold_out {\n @apply bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-400 uppercase tracking-wider;\n font-size: 0.65rem;\n }\n\n .status-sales_ended {\n @apply bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400;\n border: 1px solid rgb(209 213 219); /* gray-300 */\n }\n\n :global(.dark) .status-sales_ended {\n border-color: rgb(75 85 99); /* gray-600 */\n }\n\n .status-coming_soon {\n @apply bg-indigo-100 text-indigo-700 dark:bg-indigo-900/40 dark:text-indigo-300;\n }\n\n /* Mobile Responsiveness */\n @media (max-width: 640px) {\n .date-column {\n @apply w-12 min-w-12 py-2.5 px-1.5;\n }\n\n .date-month {\n @apply text-xs;\n }\n\n .date-day {\n @apply text-lg;\n }\n\n .date-weekday {\n @apply text-xs;\n }\n\n .event-row {\n @apply p-3 gap-2.5;\n }\n\n .event-image-container {\n @apply w-20 h-16 min-w-20;\n }\n\n .event-title {\n @apply text-sm;\n }\n\n .event-time {\n @apply text-xs;\n }\n\n .event-description {\n @apply hidden;\n }\n\n .status-badge {\n @apply text-xs py-0.5 px-2;\n }\n }\n\n /* Reduced motion */\n @media (prefers-reduced-motion: reduce) {\n .event-row {\n @apply transition-none;\n }\n }\n\n /* Load more trigger */\n .load-more-trigger {\n @apply flex justify-center items-center p-6 text-gray-600 dark:text-gray-300;\n }\n\n .loading-text {\n @apply text-sm;\n }\n\n /* Screen reader only text */\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n</style>\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":"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"}
1
+ {"version":3,"file":"GroupedListView.legacy-Bb-SL1tx.js","sources":["../src/components/Calendar/GroupedListView.legacy.svelte"],"sourcesContent":["<script>\n import { onMount, onDestroy } from \"svelte\";\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\n import { getDateParts, formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\n import { getBrowseStatus, isEventUnavailable, filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\n import ScarcityBadge from \"../ScarcityBadge.svelte\";\n\n let {\n events = [],\n initialCount = 10,\n loadMoreCount = 10,\n showDateColumn = true,\n filterFutureOnly = true,\n oneventClick\n } = $props();\n\n let displayedCount = initialCount;\n let loadMoreTrigger;\n let observer;\n\n // Filter to today and future (if enabled), then group by date\n let filteredEvents = $derived(filterFutureOnly ? filterTodayAndFuture(events) : events);\n let groupedEvents = $derived(groupEventsByDate(filteredEvents.slice(0, displayedCount)));\n let hasMore = $derived(displayedCount < filteredEvents.length);\n\n function loadMore() {\n displayedCount += loadMoreCount;\n }\n\n onMount(() => {\n observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting && hasMore) {\n loadMore();\n }\n },\n { rootMargin: '100px' }\n );\n\n if (loadMoreTrigger) {\n observer.observe(loadMoreTrigger);\n }\n });\n\n onDestroy(() => {\n if (observer) {\n observer.disconnect();\n }\n });\n\n // Re-observe when trigger element changes\n $effect(() => {\n if (observer && loadMoreTrigger) {\n observer.disconnect();\n observer.observe(loadMoreTrigger);\n }\n });\n\n function groupEventsByDate(eventList) {\n const groups = {};\n\n for (const event of eventList) {\n const dateKey = event.date; // YYYY-MM-DD format\n if (!groups[dateKey]) {\n groups[dateKey] = [];\n }\n groups[dateKey].push(event);\n }\n\n // Convert to array sorted by date\n return Object.entries(groups)\n .sort(([a], [b]) => new Date(a) - new Date(b))\n .map(([date, events]) => ({\n date,\n events,\n formattedDate: formatGroupDate(events),\n }));\n }\n\n function formatGroupDate(events) {\n // Use the first event in the group to get timezone-aware date parts\n const firstEvent = events[0];\n if (!firstEvent?.startDateTime) return { month: '', day: '', weekday: '' };\n const parts = getDateParts(firstEvent.startDateTime, firstEvent.timeZone);\n return {\n month: parts.month.toUpperCase(),\n day: String(parts.date).padStart(2, '0'),\n weekday: parts.day.toUpperCase(),\n };\n }\n\n function handleEventClick(event) {\n oneventClick?.(event);\n }\n\n function handleKeydown(e, event) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleEventClick(event);\n }\n }\n</script>\n\n<section class=\"grouped-list\" class:no-date-column={!showDateColumn} aria-label=\"Event listings\">\n <h2 class=\"sr-only\">Event list grouped by date</h2>\n {#each groupedEvents as group}\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}\">\n <!-- Date Column -->\n {#if showDateColumn}\n <div class=\"date-column\" aria-hidden=\"true\">\n <span class=\"date-month\">{group.formattedDate.month}</span>\n <span class=\"date-day\">{group.formattedDate.day}</span>\n <span class=\"date-weekday\">{group.formattedDate.weekday}</span>\n </div>\n {/if}\n\n <!-- Events Column -->\n <ul class=\"events-column\">\n {#each group.events as event, eventIndex}\n {@const eventStatus = getBrowseStatus(event)}\n {@const isUnavailable = isEventUnavailable(eventStatus)}\n <li class=\"event-list-item\">\n <div\n class=\"event-row\"\n class:event-row-first={eventIndex === 0}\n class:event-row-last={eventIndex === group.events.length - 1}\n class:row-unavailable={isUnavailable}\n onclick={() => handleEventClick(event)}\n onkeydown={(e) => handleKeydown(e, event)}\n tabindex=\"0\"\n role=\"button\"\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.`}\n >\n <!-- Event Image -->\n <div class=\"event-image-container\" aria-hidden=\"true\">\n <img\n src={event.image || PLACEHOLDER_IMAGE}\n alt=\"\"\n class=\"event-image\"\n loading=\"lazy\"\n />\n </div>\n\n <!-- Event Details (visually shown but also in aria-label, so hide from SR) -->\n <div class=\"event-details\" aria-hidden=\"true\">\n <h3 class=\"event-title\">{event.name}</h3>\n <time class=\"event-time\" datetime={event.startDateTime || group.date}>{event.startDateTime ? formatEventTime(event.startDateTime, event.timeZone) : ''}</time>\n {#if event.description}\n <p class=\"event-description\">{event.description}</p>\n {/if}\n </div>\n\n <!-- Status / Scarcity Badge -->\n <div class=\"event-badge-container\" aria-hidden=\"true\">\n {#if eventStatus}\n <span class=\"status-badge status-{eventStatus.type}\">{eventStatus.text}</span>\n {:else if event.ticketsTotal > 0 || event.ticketsRemaining === 0}\n <ScarcityBadge\n remaining={event.ticketsRemaining ?? 0}\n total={event.ticketsTotal ?? 0}\n context=\"browse\"\n />\n {/if}\n </div>\n </div>\n </li>\n {/each}\n </ul>\n </div>\n {/each}\n\n <!-- Infinite scroll trigger -->\n {#if hasMore}\n <div bind:this={loadMoreTrigger} class=\"load-more-trigger\" role=\"status\" aria-live=\"polite\">\n <span class=\"loading-text\">Loading more events...</span>\n </div>\n {/if}\n</section>\n\n<style>\n @reference \"../../app.css\";\n\n .grouped-list {\n @apply flex flex-col gap-0;\n }\n\n .date-group {\n @apply flex border-b border-gray-200 dark:border-gray-700;\n }\n\n .date-group:last-child {\n @apply border-b-0;\n }\n\n /* When no date column, remove left border styling */\n .no-date-column .date-group {\n @apply border-b-0;\n }\n\n .no-date-column .events-column {\n @apply border-l-0;\n }\n\n /* Date Column - Fixed width on left */\n .date-column {\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;\n }\n\n .date-month {\n @apply text-xs font-semibold text-gray-600 dark:text-gray-300 uppercase tracking-tight;\n }\n\n .date-day {\n @apply text-2xl font-bold text-gray-900 dark:text-white leading-tight;\n }\n\n .date-weekday {\n @apply text-xs font-semibold text-gray-600 dark:text-gray-300 uppercase tracking-tight;\n }\n\n /* Events Column - Flexible width */\n ul.events-column {\n @apply flex-1 flex flex-col;\n }\n\n /* Individual Event Row */\n .event-row {\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;\n }\n\n .event-row:last-child {\n @apply border-b-0;\n }\n\n .event-row:hover {\n @apply bg-gray-50 dark:bg-gray-700;\n }\n\n .event-row:focus {\n @apply outline-2 outline-blue-700 dark:outline-blue-400 -outline-offset-2;\n }\n\n .event-row:focus-visible {\n @apply outline-2 outline-blue-700 dark:outline-blue-400 -outline-offset-2;\n }\n\n /* Reset list styles */\n .events-column {\n @apply list-none p-0 m-0;\n }\n\n .event-list-item {\n @apply list-none;\n }\n\n /* Event Image */\n .event-image-container {\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;\n }\n\n .event-image {\n @apply w-full h-full object-contain;\n }\n\n /* Event Details */\n .event-details {\n @apply flex-1 flex flex-col gap-1.5 min-w-0;\n }\n\n .event-title {\n @apply text-lg font-semibold text-gray-900 dark:text-white m-0 leading-snug;\n }\n\n .event-time {\n @apply text-sm font-medium text-gray-600 dark:text-gray-300;\n }\n\n .event-description {\n @apply text-sm text-gray-600 dark:text-gray-300 mt-1.5 mb-0 line-clamp-2;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n /* Badge Container */\n .event-badge-container {\n @apply flex items-start pt-0.5;\n }\n\n /* Unavailable row dimming */\n .row-unavailable {\n @apply opacity-60;\n }\n\n .row-unavailable .event-image {\n filter: grayscale(0.5);\n }\n\n /* Status badges — distinct visual treatments matching gallery cards */\n .status-badge {\n @apply inline-flex items-center text-xs font-bold px-2.5 py-1 rounded whitespace-nowrap;\n letter-spacing: 0.02em;\n }\n\n .status-cancelled {\n @apply bg-red-100 text-red-800 dark:bg-red-900/40 dark:text-red-300;\n text-decoration: line-through;\n text-decoration-thickness: 1.5px;\n }\n\n .status-past {\n @apply bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400;\n }\n\n .status-sold_out {\n @apply bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-400 uppercase tracking-wider;\n font-size: 0.65rem;\n }\n\n .status-sales_ended {\n @apply bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400;\n border: 1px solid rgb(209 213 219); /* gray-300 */\n }\n\n :global(.dark) .status-sales_ended {\n border-color: rgb(75 85 99); /* gray-600 */\n }\n\n .status-coming_soon {\n @apply bg-indigo-100 text-indigo-700 dark:bg-indigo-900/40 dark:text-indigo-300;\n }\n\n /* Mobile Responsiveness */\n @media (max-width: 640px) {\n .date-column {\n @apply w-12 min-w-12 py-2.5 px-1.5;\n }\n\n .date-month {\n @apply text-xs;\n }\n\n .date-day {\n @apply text-lg;\n }\n\n .date-weekday {\n @apply text-xs;\n }\n\n .event-row {\n @apply p-3 gap-2.5;\n }\n\n .event-image-container {\n @apply w-20 h-16 min-w-20;\n }\n\n .event-title {\n @apply text-sm;\n }\n\n .event-time {\n @apply text-xs;\n }\n\n .event-description {\n @apply hidden;\n }\n\n .status-badge {\n @apply text-xs py-0.5 px-2;\n }\n }\n\n /* Reduced motion */\n @media (prefers-reduced-motion: reduce) {\n .event-row {\n @apply transition-none;\n }\n }\n\n /* Load more trigger */\n .load-more-trigger {\n @apply flex justify-center items-center p-6 text-gray-600 dark:text-gray-300;\n }\n\n .loading-text {\n @apply text-sm;\n }\n\n /* Screen reader only text */\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n</style>\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":"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"}
@@ -1,7 +1,7 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as e from "svelte/internal/client";
3
3
  import { onMount as ne } from "svelte";
4
- import { t as ce, r as H, s as me, w as ge } from "./VenueCalendar-BPozmAbV.js";
4
+ import { t as ce, r as H, s as me, w as ge } from "./VenueCalendar-893zkdHf.js";
5
5
  import { A as r } from "./colors-BZoMuXdh.js";
6
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
7
  function Le(J, f) {
@@ -188,4 +188,4 @@ function Le(J, f) {
188
188
  export {
189
189
  Le as default
190
190
  };
191
- //# sourceMappingURL=Success.legacy-Nz87oWe-.js.map
191
+ //# sourceMappingURL=Success.legacy-D_Jip1Kt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Success.legacy-Nz87oWe-.js","sources":["../src/components/Views/Success.legacy.svelte"],"sourcesContent":["<script>\n import { onMount } from \"svelte\";\n import { transformEvent, getOrder } from \"$lib/utils/utils.js\";\n import { formatConfirmationDateTime } from \"$lib/utils/datetime.js\";\n import { CheckmarkFilled } from \"carbon-icons-svelte\";\n import { ACCENT, DARK } from \"$lib/constants/colors.ts\";\n\n let {\n data = {},\n eventUrl = '',\n browseUrl = '/',\n } = $props();\n\n const {\n organizationID,\n orgSlug,\n slug,\n event: rawEvent,\n orderId: providedOrderId,\n customerEmail: providedCustomerEmail,\n eventName: providedEventName,\n eventDateTime: providedEventDateTime,\n eventLocation: providedEventLocation,\n } = data || {};\n\n let event = null;\n if (rawEvent) {\n try {\n event = transformEvent(rawEvent);\n } catch (e) {\n console.warn(\"transformEvent failed in Success component:\", e);\n event = rawEvent;\n }\n }\n\n let order = null;\n let error = null;\n let Email = $state(\"\");\n let id = $state(\"\");\n let name = $state(\"\");\n let time = $state(\"\");\n let Location = $state(\"\");\n let orderId = providedOrderId || data?.orderId || \"\";\n\n // Animation states\n let showConfetti = $state(false);\n let showTicket = $state(false);\n let showDetails = $state(false);\n\n function formatDateTime(dateTimeString) {\n if (!dateTimeString) return \"\";\n // Use event timezone if available, otherwise fall back to UTC\n const tz = event?.timeZone || 'UTC';\n return formatConfirmationDateTime(dateTimeString, tz);\n }\n\n // Generate confetti particles\n const confettiColors = [\n ACCENT.coral,\n ACCENT.sky.light,\n ACCENT.sky[400],\n ACCENT.mint[600],\n ACCENT.yellow[300],\n ACCENT.plum,\n ACCENT.mint[500],\n ACCENT.yellow[500]\n ];\n const confettiParticles = Array.from({ length: 50 }, (_, i) => ({\n id: i,\n color: confettiColors[Math.floor(Math.random() * confettiColors.length)],\n left: Math.random() * 100,\n delay: Math.random() * 0.5,\n duration: 2 + Math.random() * 2,\n size: 6 + Math.random() * 8,\n rotation: Math.random() * 360\n }));\n\n onMount(async () => {\n // Start animations\n setTimeout(() => {\n showConfetti = true;\n }, 100);\n\n setTimeout(() => {\n showTicket = true;\n }, 300);\n\n setTimeout(() => {\n showDetails = true;\n }, 800);\n\n try {\n let orderData = null;\n try {\n if (typeof getOrder === \"function\" && orderId) {\n orderData = await getOrder(orderId);\n }\n } catch (e) {\n console.warn(\n \"getOrder failed in Success component, falling back to provided data:\",\n e\n );\n }\n\n if (orderData) {\n order = orderData;\n Email = orderData.customerEmail || providedCustomerEmail || \"\";\n id = orderData.id || orderId;\n name = orderData.eventName || event?.name || providedEventName || \"\";\n time = formatDateTime(\n orderData.eventDateTime ||\n event?.startDateTime ||\n providedEventDateTime\n );\n Location =\n orderData.eventLocation ||\n event?.location ||\n providedEventLocation ||\n \"\";\n } else {\n Email = providedCustomerEmail || \"\";\n id = orderId;\n name = providedEventName || event?.name || \"\";\n time = formatDateTime(providedEventDateTime || event?.startDateTime);\n Location = providedEventLocation || event?.location || \"\";\n }\n } catch (err) {\n console.error(\"Error fetching order data:\", err);\n error = err.message;\n Email = providedCustomerEmail || \"your-email@example.com\";\n id = orderId;\n name = event?.name || providedEventName || \"\";\n time = formatDateTime(event?.startDateTime || providedEventDateTime);\n Location = event?.location || providedEventLocation || \"\";\n }\n });\n</script>\n\n<div class=\"success-container\" role=\"main\" aria-labelledby=\"success-title\">\n <!-- Confetti -->\n {#if showConfetti}\n <div class=\"confetti-container\" aria-hidden=\"true\">\n {#each confettiParticles as particle (particle.id)}\n <div\n class=\"confetti\"\n style=\"\n left: {particle.left}%;\n background-color: {particle.color};\n animation-delay: {particle.delay}s;\n animation-duration: {particle.duration}s;\n width: {particle.size}px;\n height: {particle.size}px;\n transform: rotate({particle.rotation}deg);\n \"\n ></div>\n {/each}\n </div>\n {/if}\n\n <div class=\"content-wrapper\">\n <!-- Ticket Machine Animation -->\n <div class=\"ticket-machine\" class:animate={showTicket}>\n <!-- Machine slot -->\n <div class=\"machine-slot\">\n <div class=\"slot-inner\"></div>\n </div>\n\n <!-- Ticket coming out -->\n <div class=\"ticket\" class:slide-out={showTicket}>\n <div class=\"ticket-content\">\n <div class=\"ticket-header\">\n <div class=\"success-badge\" aria-hidden=\"true\">\n <CheckmarkFilled class=\"check-icon\" />\n </div>\n <h1 id=\"success-title\" class=\"success-title\">You're all set!</h1>\n <p class=\"success-subtitle\">Your tickets have been confirmed</p>\n </div>\n\n <div class=\"ticket-divider\">\n <div class=\"divider-notch left\"></div>\n <div class=\"divider-line\"></div>\n <div class=\"divider-notch right\"></div>\n </div>\n\n <dl class=\"ticket-details\" class:fade-in={showDetails} aria-label=\"Order details\">\n <div class=\"detail-row\">\n <dt class=\"detail-label\">Email</dt>\n <dd class=\"detail-value\">{Email || 'Loading...'}</dd>\n </div>\n\n {#if id}\n <div class=\"detail-row\">\n <dt class=\"detail-label\">Order ID</dt>\n <dd class=\"detail-value order-id\">#{id}</dd>\n </div>\n {/if}\n\n {#if name}\n <div class=\"detail-row\">\n <dt class=\"detail-label\">Event</dt>\n <dd class=\"detail-value event-name\">{name}</dd>\n </div>\n {/if}\n\n {#if time}\n <div class=\"detail-row\">\n <dt class=\"detail-label\">When</dt>\n <dd class=\"detail-value\"><time>{time}</time></dd>\n </div>\n {/if}\n\n {#if Location}\n <div class=\"detail-row\">\n <dt class=\"detail-label\">Where</dt>\n <dd class=\"detail-value\">{Location}</dd>\n </div>\n {/if}\n </dl>\n\n <div class=\"ticket-footer\">\n <p class=\"footer-text\">Check your email for your tickets</p>\n </div>\n </div>\n\n <!-- Ticket stub pattern -->\n <div class=\"ticket-stub\"></div>\n </div>\n </div>\n\n <!-- Navigation CTAs -->\n {#if eventUrl || browseUrl}\n <nav class=\"nav-ctas\" class:fade-in={showDetails} aria-label=\"Next steps\">\n {#if eventUrl}\n <a href={eventUrl} class=\"nav-link secondary\">Back to event</a>\n {/if}\n {#if browseUrl}\n <a href={browseUrl} class=\"nav-link primary\">Browse more events</a>\n {/if}\n </nav>\n {/if}\n </div>\n</div>\n\n<style>\n @reference \"../../app.css\";\n\n .success-container {\n @apply relative min-h-screen overflow-hidden flex items-center justify-center p-5;\n background: linear-gradient(180deg, theme('colors.white') 0%, theme('colors.gray.50') 100%);\n }\n\n :global(.dark) .success-container {\n background: linear-gradient(180deg, theme('colors.gray.900') 0%, theme('colors.gray.800') 100%);\n }\n\n /* Confetti */\n .confetti-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 100%;\n pointer-events: none;\n overflow: hidden;\n }\n\n .confetti {\n position: absolute;\n top: -20px;\n border-radius: 2px;\n animation: confetti-fall linear forwards;\n }\n\n @keyframes confetti-fall {\n 0% {\n transform: translateY(0) rotate(0deg);\n opacity: 1;\n }\n 100% {\n transform: translateY(100vh) rotate(720deg);\n opacity: 0;\n }\n }\n\n /* Content wrapper */\n .content-wrapper {\n position: relative;\n z-index: 10;\n width: 100%;\n max-width: 380px;\n }\n\n /* Ticket machine */\n .ticket-machine {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .machine-slot {\n width: 100%;\n height: 16px;\n background: linear-gradient(180deg, theme('colors.gray.700') 0%, theme('colors.gray.800') 100%);\n border-radius: 8px 8px 0 0;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n position: relative;\n z-index: 5;\n }\n\n .slot-inner {\n width: 80%;\n height: 4px;\n background: theme('colors.gray.900');\n border-radius: 2px;\n }\n\n /* Ticket */\n .ticket {\n width: 100%;\n background: white;\n border-radius: 0 0 16px 16px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n overflow: hidden;\n transform: translateY(-100%);\n opacity: 0;\n transition: transform 0.8s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.3s ease;\n }\n\n .ticket.slide-out {\n transform: translateY(0);\n opacity: 1;\n }\n\n .ticket-content {\n padding: 32px 24px 24px;\n }\n\n .ticket-header {\n text-align: center;\n margin-bottom: 24px;\n }\n\n .success-badge {\n width: 64px;\n height: 64px;\n background: linear-gradient(135deg, theme('colors.green.600') 0%, theme('colors.green.600') 100%);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 16px;\n animation: badge-pop 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) 0.5s both;\n }\n\n @keyframes badge-pop {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n }\n\n .success-badge :global(.check-icon) {\n width: 32px;\n height: 32px;\n color: white;\n }\n\n .success-title {\n @apply text-2xl font-semibold text-gray-900 dark:text-white mb-2;\n }\n\n .success-subtitle {\n @apply text-sm text-gray-600 dark:text-gray-300 m-0;\n }\n\n /* Ticket divider */\n .ticket-divider {\n @apply relative flex items-center mb-6;\n margin: 0 -24px 24px;\n padding: 0 24px;\n }\n\n .divider-notch {\n @apply w-4 h-4 rounded-full absolute bg-white dark:bg-gray-900;\n }\n\n .divider-notch.left {\n left: -8px;\n }\n\n .divider-notch.right {\n right: -8px;\n }\n\n .divider-line {\n @apply flex-1 h-0.5;\n background: repeating-linear-gradient(\n 90deg,\n theme('colors.gray.300') 0,\n theme('colors.gray.300') 8px,\n transparent 8px,\n transparent 16px\n );\n }\n\n :global(.dark) .divider-line {\n background: repeating-linear-gradient(\n 90deg,\n theme('colors.gray.600') 0,\n theme('colors.gray.600') 8px,\n transparent 8px,\n transparent 16px\n );\n }\n\n /* Ticket details */\n .ticket-details {\n @apply opacity-0;\n transform: translateY(10px);\n transition: opacity 0.4s ease, transform 0.4s ease;\n }\n\n .ticket-details.fade-in {\n @apply opacity-100;\n transform: translateY(0);\n }\n\n .detail-row {\n @apply flex flex-col gap-1 py-3 border-b border-gray-300/50 dark:border-gray-600/50;\n }\n\n .detail-row:last-child {\n @apply border-b-0;\n }\n\n .detail-label {\n @apply text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wide;\n }\n\n .detail-value {\n @apply text-sm font-medium text-gray-900 dark:text-white break-words;\n }\n\n .detail-value.order-id {\n @apply text-blue-700 dark:text-blue-500;\n font-family: 'SF Mono', 'Consolas', monospace;\n }\n\n .detail-value.event-name {\n @apply text-base font-semibold;\n }\n\n /* Ticket footer */\n .ticket-footer {\n @apply mt-6 p-4 rounded-lg text-center bg-gray-50/50 dark:bg-gray-800/50;\n }\n\n .footer-text {\n @apply text-sm text-gray-600 dark:text-gray-300 m-0;\n }\n\n /* Ticket stub pattern */\n .ticket-stub {\n @apply h-6;\n background: linear-gradient(\n 90deg,\n transparent 0,\n transparent 8px,\n theme('colors.gray.300/30') 8px,\n theme('colors.gray.300/30') 16px\n );\n background-size: 16px 100%;\n }\n\n :global(.dark) .ticket-stub {\n background: linear-gradient(\n 90deg,\n transparent 0,\n transparent 8px,\n theme('colors.gray.600/30') 8px,\n theme('colors.gray.600/30') 16px\n );\n background-size: 16px 100%;\n }\n\n /* Navigation CTAs */\n .nav-ctas {\n @apply flex flex-col gap-3 mt-6 opacity-0;\n transform: translateY(10px);\n transition: opacity 0.4s ease 0.2s, transform 0.4s ease 0.2s;\n }\n\n .nav-ctas.fade-in {\n @apply opacity-100;\n transform: translateY(0);\n }\n\n .nav-link {\n @apply flex items-center justify-center px-4 py-3 rounded-lg text-sm font-semibold no-underline transition-colors;\n }\n\n .nav-link.primary {\n background: hsl(var(--Brand-Primary, 220 90% 56%));\n color: hsl(var(--Text-OnPrimary, 0 0% 100%));\n }\n\n .nav-link.primary:hover {\n filter: brightness(0.95);\n }\n\n .nav-link.secondary {\n @apply bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-300;\n }\n\n .nav-link.secondary:hover {\n @apply bg-gray-200 dark:bg-gray-700;\n }\n\n /* Responsive */\n @media (max-width: 480px) {\n .success-container {\n padding: 16px;\n }\n\n .ticket-content {\n padding: 24px 20px 20px;\n }\n\n .success-title {\n font-size: 20px;\n }\n\n .success-badge {\n width: 56px;\n height: 56px;\n }\n\n .success-badge :global(.check-icon) {\n width: 28px;\n height: 28px;\n }\n }\n</style>\n"],"names":["data","$","$$props","eventUrl","browseUrl","organizationID","orgSlug","slug","rawEvent","providedOrderId","providedCustomerEmail","providedEventName","providedEventDateTime","providedEventLocation","event","transformEvent","e","order","Email","id","name","time","Location","orderId","showConfetti","showTicket","showDetails","formatDateTime","dateTimeString","tz","formatConfirmationDateTime","confettiColors","ACCENT","confettiParticles","_","i","onMount","orderData","getOrder","err","div","root","div_1","root_1","particle","$$anchor","div_2","root_2","$$render","consequent","div_3","node","div_4","div_5","div_6","div_7","div_8","CheckmarkFilled","node_1","dl","div_9","dd","div_10","root_3","dd_1","consequent_1","div_11","root_4","dd_2","consequent_2","div_12","root_5","dd_3","time_1","consequent_3","div_13","root_6","dd_4","consequent_4","nav","root_7","a","root_8","consequent_5","a_1","root_9","consequent_6","classes_3","consequent_7","classes","classes_1","classes_2","text"],"mappings":";;;;;;kBAAA;;MAQIA,IAAIC,EAAA,KAAAC,GAAA,QAAA,IAAA,OAAA,CAAA,EAAA,GACJC,6BAAW,EAAE,GACbC,8BAAY,GAAG;;IAIf,gBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAOC;AAAA,IACP,SAASC;AAAA,IACT,eAAeC;AAAA,IACf,WAAWC;AAAA,IACX,eAAeC;AAAA,IACf,eAAeC;AAAA,MACbb,EAAI,KAAA,CAAA;AAEJ,MAAAc,IAAQ;AACR,MAAAN;AACE,QAAA;AACF,MAAAM,IAAQC,GAAeP,CAAQ;AAAA,IACjC,SAASQ,GAAG;AACV,cAAQ,KAAK,+CAA+CA,CAAC,GAC7DF,IAAQN;AAAA,IACV;AAGE,MAAAS,IAAQ,MAERC,IAAQjB,EAAA,MAAO,EAAE,GACjBkB,IAAKlB,EAAA,MAAO,EAAE,GACdmB,IAAOnB,EAAA,MAAO,EAAE,GAChBoB,IAAOpB,EAAA,MAAO,EAAE,GAChBqB,IAAWrB,EAAA,MAAO,EAAE,GACpBsB,IAAUd,KAAmBT,EAAI,GAAE,WAAW,IAG9CwB,IAAevB,EAAA,MAAO,EAAK,GAC3BwB,IAAaxB,EAAA,MAAO,EAAK,GACzByB,IAAczB,EAAA,MAAO,EAAK;WAErB0B,EAAeC,GAAgB;AACjC,QAAA,CAAAA,UAAuB;AAEtB,UAAAC,IAAKf,GAAO,YAAY;WACvBgB,GAA2BF,GAAgBC,CAAE;AAAA,EACtD;QAGME,IAAc;AAAA,IAClBC,EAAO;AAAA,IACPA,EAAO,IAAI;AAAA,IACXA,EAAO,IAAI,GAAG;AAAA,IACdA,EAAO,KAAK,GAAG;AAAA,IACfA,EAAO,OAAO,GAAG;AAAA,IACjBA,EAAO;AAAA,IACPA,EAAO,KAAK,GAAG;AAAA,IACfA,EAAO,OAAO,GAAG;AAAA,KAEbC,IAAoB,MAAM,KAAI,EAAG,QAAQ,GAAE,GAAA,CAAKC,GAAGC,OAAC;AAAA,IACxD,IAAIA;AAAA,IACJ,OAAOJ,EAAe,KAAK,MAAM,KAAK,OAAM,IAAKA,EAAe,MAAM,CAAA;AAAA,IACtE,MAAM,KAAK,OAAM,IAAK;AAAA,IACtB,OAAO,KAAK,OAAM,IAAK;AAAA,IACvB,UAAU,IAAI,KAAK,OAAM,IAAK;AAAA,IAC9B,MAAM,IAAI,KAAK,OAAM,IAAK;AAAA,IAC1B,UAAU,KAAK,WAAW;AAAA;AAG5B,EAAAK,GAAO,YAAa;AAElB;AAAA,MAAiB,MAAA;AACf,QAAAnC,EAAA,IAAAuB,GAAe,EAAI;AAAA,MACrB;AAAA,MAAG;AAAA,OAEH;AAAA,MAAiB,MAAA;AACf,QAAAvB,EAAA,IAAAwB,GAAa,EAAI;AAAA,MACnB;AAAA,MAAG;AAAA,OAEH;AAAA,MAAiB,MAAA;AACf,QAAAxB,EAAA,IAAAyB,GAAc,EAAI;AAAA,MACpB;AAAA,MAAG;AAAA;AAEC,QAAA;AACE,UAAAW,IAAY;AACZ,UAAA;AACS,QAAA,OAAAC,KAAa,cAAcf,MACpCc,IAAS,MAASC,EAASf,CAAO;AAAA,MAEtC,SAASP,GAAG;AACV,gBAAQ,KACN,wEACAA,CAAA;AAAA,MAEJ;AAEI,MAAAqB,KACFpB,IAAQoB,GACRpC,EAAA,IAAAiB,GAAQmB,EAAU,iBAAiB3B,KAAyB,IAAE,EAAA,GAC9DT,EAAA,IAAAkB,GAAKkB,EAAU,MAAMd,GAAO,EAAA,SAC5BH,GAAOiB,EAAU,aAAavB,GAAO,QAAQH,KAAqB,IAAE,EAAA,SACpEU,GAAOM,EACLU,EAAU,iBACRvB,GAAO,iBACPF,CAAoB,GAAA,EAAA,SAExBU,GACEe,EAAU,iBACVvB,GAAO,YACPD,KACA,IAAE,EAAA,YAEJK,GAAQR,KAAyB,IAAE,EAAA,GACnCT,EAAA,IAAAkB,GAAKI,GAAO,EAAA,GACZtB,EAAA,IAAAmB,GAAOT,KAAqBG,GAAO,QAAQ,IAAE,EAAA,GAC7Cb,EAAA,IAAAoB,GAAOM,EAAef,KAAyBE,GAAO,aAAa,GAAA,EAAA,GACnEb,EAAA,IAAAqB,GAAWT,KAAyBC,GAAO,YAAY,IAAE,EAAA;AAAA,IAE7D,SAASyB,GAAK;AACZ,cAAQ,MAAM,8BAA8BA,CAAG,GACvCA,EAAI,eACZrB,GAAQR,KAAyB,0BAAwB,EAAA,GACzDT,EAAA,IAAAkB,GAAKI,GAAO,EAAA,GACZtB,EAAA,IAAAmB,GAAON,GAAO,QAAQH,KAAqB,IAAE,EAAA,GAC7CV,EAAA,IAAAoB,GAAOM,EAAeb,GAAO,iBAAiBF,CAAqB,GAAA,EAAA,GACnEX,EAAA,IAAAqB,GAAWR,GAAO,YAAYD,KAAyB,IAAE,EAAA;AAAA,IAC3D;AAAA,EACF,CAAC;MAGF2B,IAAGC,GAAA,eAAHD,CAAG;;;UAGCE,IAAGC,GAAA;aAAHD,GAAG,IAAA,MACKT,GAAiB,CAAIW,MAAUA,EAAS,IAAE,CAAAC,GAArBD,MAAQ;YACjCE,IAAEC,GAAA;4CAAFD,GAAE;AAAA,oBAGQ7C,EAAA,IAAA2C,CAAQ,EAAC,QAAI,EAAA;AAAA,gCACD3C,EAAA,IAAA2C,CAAQ,EAAC,SAAK,EAAA;AAAA,+BACf3C,EAAA,IAAA2C,CAAQ,EAAC,SAAK,EAAA;AAAA,kCACX3C,EAAA,IAAA2C,CAAQ,EAAC,YAAQ,EAAA;AAAA,qBAC9B3C,EAAA,IAAA2C,CAAQ,EAAC,QAAI,EAAA;AAAA,sBACZ3C,EAAA,IAAA2C,CAAQ,EAAC,QAAI,EAAA;AAAA,gCACH3C,EAAA,IAAA2C,CAAQ,EAAC,YAAQ,EAAA;AAAA,2BATvCE,CAAE;AAAA,kBAFNJ,CAAG,eAAHA,CAAG;AAAA;;YADDlB,CAAY,KAAAwB,EAAAC,CAAA;AAAA;;MAmBhBC,IAAGjD,EAAA,QAAAkD,GAAA,CAAA,GAEDC,YAFFF,CAAG;;AASC,MAAAG,sBAPFD,CAAG,GAAA,CAAA;;AAQC,MAAAE,YADFD,CAAG,GAECE,YADFD,CAAG,GAECE,YADFD,CAAG,eACDC,CAAG;AACD,EAAAC,GAAeC,GAAA,EAAA,OAAA,aAAA,CAAA,WADjBF,CAAG,sBADLD,CAAG;AAcH,MAAAI,cAdAJ,GAAG,CAAA;;AAeD,MAAAK,YADFD,CAAE,GAGEE,sBAFFD,CAAG,GAAA,CAAA,gBAEDC,GAAE,EAAA;UAAFA,CAAE,WAFJD,CAAG;oBAAHA,GAAG,CAAA;;;UAMDE,IAAGC,GAAA,GAEDC,sBAFFF,CAAG,GAAA,CAAA,eAEDE,CAAE;cAAFA,CAAE,WAFJF,CAAG,mDAEkC3C,CAAE,KAAA,EAAA,EAAA,CAAA,eAFvC2C,CAAG;AAAA;;YADD3C,CAAE,KAAA6B,EAAAiB,EAAA;AAAA;;;;;UAQJC,IAAGC,GAAA,GAEDC,sBAFFF,CAAG,GAAA,CAAA,eAEDE,GAAE,EAAA;cAAFA,CAAE,WAFJF,CAAG,+CAEmC9C,CAAI,CAAA,CAAA,eAF1C8C,CAAG;AAAA;;YADD9C,CAAI,KAAA4B,EAAAqB,EAAA;AAAA;;;;;UAQNC,IAAGC,GAAA,GAEDC,sBAFFF,CAAG,GAAA,CAAA,GAEwBG,YAAzBD,CAAE,eAAuBC,GAAI,EAAA;cAAJA,CAAI,WAA7BD,CAAE,WAFJF,CAAG,+CAE8BjD,CAAI,CAAA,CAAA,eAFrCiD,CAAG;AAAA;;YADDjD,CAAI,KAAA2B,EAAA0B,EAAA;AAAA;;;;;UAQNC,IAAGC,GAAA,GAEDC,sBAFFF,CAAG,GAAA,CAAA,eAEDE,GAAE,EAAA;cAAFA,CAAE,WAFJF,CAAG,+CAEwBrD,CAAQ,CAAA,CAAA,eAFnCqD,CAAG;AAAA;;YADDrD,CAAQ,KAAA0B,EAAA8B,EAAA;AAAA;;UA3BdnB,CAAE,sBAfJL,CAAG,sBADLD,CAAG,WAPLD,CAAG;qBAAHA,GAAG,CAAA;;;UAsED2B,IAAGC,GAAA;;sBAAHD,CAAG;;;cAECE,IAACC,GAAA;AAAD,UAAAjF,EAAA,gBAAA,MAAAA,EAAA,cAAAgF,WAAQ9E,EAAQ,CAAA,CAAA,eAAhB8E,CAAC;AAAA;;UADC9E,EAAQ,KAAA6C,EAAAmC,CAAA;AAAA;;;;;cAIVC,IAACC,GAAA;AAAD,UAAApF,EAAA,gBAAA,MAAAA,EAAA,cAAAmF,WAAQhF,EAAS,CAAA,CAAA,eAAjBgF,CAAC;AAAA;;UADChF,EAAS,KAAA4C,EAAAsC,EAAA;AAAA;;cAJfP,CAAG,GAAH9E,EAAA,gBAAA,MAAAsF,IAAAtF,EAAA,UAAA8E,4DAAoCrD,CAAW,EAAA,CAAA,CAAA,eAA/CqD,CAAG;AAAA;;AADD,OAAA5E,EAAQ,KAAIC,QAAS4C,EAAAwC,EAAA;AAAA;;UAvE3BtC,CAAG,WArBLV,CAAG;AAuBC,IAAAiD,IAAAxF,EAAA,UAAAmD,gEAA0C3B,CAAU,EAAA,CAAA,GAOlDiE,IAAAzF,EAAA,UAAAoD,4DAAoC5B,CAAU,EAAA,CAAA,GAgB1CkE,IAAA1F,EAAA,UAAA0D,kEAAyCjC,CAAW,EAAA,CAAA,GAGvBzB,EAAA,SAAA2F,IAAA3F,EAAA,IAAAiB,CAAK,KAAI,YAAY;AAAA,kBAjD5DsB,CAAG;AAFI;"}
1
+ {"version":3,"file":"Success.legacy-D_Jip1Kt.js","sources":["../src/components/Views/Success.legacy.svelte"],"sourcesContent":["<script>\n import { onMount } from \"svelte\";\n import { transformEvent, getOrder } from \"$lib/utils/utils.js\";\n import { formatConfirmationDateTime } from \"$lib/utils/datetime.js\";\n import { CheckmarkFilled } from \"carbon-icons-svelte\";\n import { ACCENT, DARK } from \"$lib/constants/colors.ts\";\n\n let {\n data = {},\n eventUrl = '',\n browseUrl = '/',\n } = $props();\n\n const {\n organizationID,\n orgSlug,\n slug,\n event: rawEvent,\n orderId: providedOrderId,\n customerEmail: providedCustomerEmail,\n eventName: providedEventName,\n eventDateTime: providedEventDateTime,\n eventLocation: providedEventLocation,\n } = data || {};\n\n let event = null;\n if (rawEvent) {\n try {\n event = transformEvent(rawEvent);\n } catch (e) {\n console.warn(\"transformEvent failed in Success component:\", e);\n event = rawEvent;\n }\n }\n\n let order = null;\n let error = null;\n let Email = $state(\"\");\n let id = $state(\"\");\n let name = $state(\"\");\n let time = $state(\"\");\n let Location = $state(\"\");\n let orderId = providedOrderId || data?.orderId || \"\";\n\n // Animation states\n let showConfetti = $state(false);\n let showTicket = $state(false);\n let showDetails = $state(false);\n\n function formatDateTime(dateTimeString) {\n if (!dateTimeString) return \"\";\n // Use event timezone if available, otherwise fall back to UTC\n const tz = event?.timeZone || 'UTC';\n return formatConfirmationDateTime(dateTimeString, tz);\n }\n\n // Generate confetti particles\n const confettiColors = [\n ACCENT.coral,\n ACCENT.sky.light,\n ACCENT.sky[400],\n ACCENT.mint[600],\n ACCENT.yellow[300],\n ACCENT.plum,\n ACCENT.mint[500],\n ACCENT.yellow[500]\n ];\n const confettiParticles = Array.from({ length: 50 }, (_, i) => ({\n id: i,\n color: confettiColors[Math.floor(Math.random() * confettiColors.length)],\n left: Math.random() * 100,\n delay: Math.random() * 0.5,\n duration: 2 + Math.random() * 2,\n size: 6 + Math.random() * 8,\n rotation: Math.random() * 360\n }));\n\n onMount(async () => {\n // Start animations\n setTimeout(() => {\n showConfetti = true;\n }, 100);\n\n setTimeout(() => {\n showTicket = true;\n }, 300);\n\n setTimeout(() => {\n showDetails = true;\n }, 800);\n\n try {\n let orderData = null;\n try {\n if (typeof getOrder === \"function\" && orderId) {\n orderData = await getOrder(orderId);\n }\n } catch (e) {\n console.warn(\n \"getOrder failed in Success component, falling back to provided data:\",\n e\n );\n }\n\n if (orderData) {\n order = orderData;\n Email = orderData.customerEmail || providedCustomerEmail || \"\";\n id = orderData.id || orderId;\n name = orderData.eventName || event?.name || providedEventName || \"\";\n time = formatDateTime(\n orderData.eventDateTime ||\n event?.startDateTime ||\n providedEventDateTime\n );\n Location =\n orderData.eventLocation ||\n event?.location ||\n providedEventLocation ||\n \"\";\n } else {\n Email = providedCustomerEmail || \"\";\n id = orderId;\n name = providedEventName || event?.name || \"\";\n time = formatDateTime(providedEventDateTime || event?.startDateTime);\n Location = providedEventLocation || event?.location || \"\";\n }\n } catch (err) {\n console.error(\"Error fetching order data:\", err);\n error = err.message;\n Email = providedCustomerEmail || \"your-email@example.com\";\n id = orderId;\n name = event?.name || providedEventName || \"\";\n time = formatDateTime(event?.startDateTime || providedEventDateTime);\n Location = event?.location || providedEventLocation || \"\";\n }\n });\n</script>\n\n<div class=\"success-container\" role=\"main\" aria-labelledby=\"success-title\">\n <!-- Confetti -->\n {#if showConfetti}\n <div class=\"confetti-container\" aria-hidden=\"true\">\n {#each confettiParticles as particle (particle.id)}\n <div\n class=\"confetti\"\n style=\"\n left: {particle.left}%;\n background-color: {particle.color};\n animation-delay: {particle.delay}s;\n animation-duration: {particle.duration}s;\n width: {particle.size}px;\n height: {particle.size}px;\n transform: rotate({particle.rotation}deg);\n \"\n ></div>\n {/each}\n </div>\n {/if}\n\n <div class=\"content-wrapper\">\n <!-- Ticket Machine Animation -->\n <div class=\"ticket-machine\" class:animate={showTicket}>\n <!-- Machine slot -->\n <div class=\"machine-slot\">\n <div class=\"slot-inner\"></div>\n </div>\n\n <!-- Ticket coming out -->\n <div class=\"ticket\" class:slide-out={showTicket}>\n <div class=\"ticket-content\">\n <div class=\"ticket-header\">\n <div class=\"success-badge\" aria-hidden=\"true\">\n <CheckmarkFilled class=\"check-icon\" />\n </div>\n <h1 id=\"success-title\" class=\"success-title\">You're all set!</h1>\n <p class=\"success-subtitle\">Your tickets have been confirmed</p>\n </div>\n\n <div class=\"ticket-divider\">\n <div class=\"divider-notch left\"></div>\n <div class=\"divider-line\"></div>\n <div class=\"divider-notch right\"></div>\n </div>\n\n <dl class=\"ticket-details\" class:fade-in={showDetails} aria-label=\"Order details\">\n <div class=\"detail-row\">\n <dt class=\"detail-label\">Email</dt>\n <dd class=\"detail-value\">{Email || 'Loading...'}</dd>\n </div>\n\n {#if id}\n <div class=\"detail-row\">\n <dt class=\"detail-label\">Order ID</dt>\n <dd class=\"detail-value order-id\">#{id}</dd>\n </div>\n {/if}\n\n {#if name}\n <div class=\"detail-row\">\n <dt class=\"detail-label\">Event</dt>\n <dd class=\"detail-value event-name\">{name}</dd>\n </div>\n {/if}\n\n {#if time}\n <div class=\"detail-row\">\n <dt class=\"detail-label\">When</dt>\n <dd class=\"detail-value\"><time>{time}</time></dd>\n </div>\n {/if}\n\n {#if Location}\n <div class=\"detail-row\">\n <dt class=\"detail-label\">Where</dt>\n <dd class=\"detail-value\">{Location}</dd>\n </div>\n {/if}\n </dl>\n\n <div class=\"ticket-footer\">\n <p class=\"footer-text\">Check your email for your tickets</p>\n </div>\n </div>\n\n <!-- Ticket stub pattern -->\n <div class=\"ticket-stub\"></div>\n </div>\n </div>\n\n <!-- Navigation CTAs -->\n {#if eventUrl || browseUrl}\n <nav class=\"nav-ctas\" class:fade-in={showDetails} aria-label=\"Next steps\">\n {#if eventUrl}\n <a href={eventUrl} class=\"nav-link secondary\">Back to event</a>\n {/if}\n {#if browseUrl}\n <a href={browseUrl} class=\"nav-link primary\">Browse more events</a>\n {/if}\n </nav>\n {/if}\n </div>\n</div>\n\n<style>\n @reference \"../../app.css\";\n\n .success-container {\n @apply relative min-h-screen overflow-hidden flex items-center justify-center p-5;\n background: linear-gradient(180deg, theme('colors.white') 0%, theme('colors.gray.50') 100%);\n }\n\n :global(.dark) .success-container {\n background: linear-gradient(180deg, theme('colors.gray.900') 0%, theme('colors.gray.800') 100%);\n }\n\n /* Confetti */\n .confetti-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 100%;\n pointer-events: none;\n overflow: hidden;\n }\n\n .confetti {\n position: absolute;\n top: -20px;\n border-radius: 2px;\n animation: confetti-fall linear forwards;\n }\n\n @keyframes confetti-fall {\n 0% {\n transform: translateY(0) rotate(0deg);\n opacity: 1;\n }\n 100% {\n transform: translateY(100vh) rotate(720deg);\n opacity: 0;\n }\n }\n\n /* Content wrapper */\n .content-wrapper {\n position: relative;\n z-index: 10;\n width: 100%;\n max-width: 380px;\n }\n\n /* Ticket machine */\n .ticket-machine {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .machine-slot {\n width: 100%;\n height: 16px;\n background: linear-gradient(180deg, theme('colors.gray.700') 0%, theme('colors.gray.800') 100%);\n border-radius: 8px 8px 0 0;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n position: relative;\n z-index: 5;\n }\n\n .slot-inner {\n width: 80%;\n height: 4px;\n background: theme('colors.gray.900');\n border-radius: 2px;\n }\n\n /* Ticket */\n .ticket {\n width: 100%;\n background: white;\n border-radius: 0 0 16px 16px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n overflow: hidden;\n transform: translateY(-100%);\n opacity: 0;\n transition: transform 0.8s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.3s ease;\n }\n\n .ticket.slide-out {\n transform: translateY(0);\n opacity: 1;\n }\n\n .ticket-content {\n padding: 32px 24px 24px;\n }\n\n .ticket-header {\n text-align: center;\n margin-bottom: 24px;\n }\n\n .success-badge {\n width: 64px;\n height: 64px;\n background: linear-gradient(135deg, theme('colors.green.600') 0%, theme('colors.green.600') 100%);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 16px;\n animation: badge-pop 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) 0.5s both;\n }\n\n @keyframes badge-pop {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n }\n\n .success-badge :global(.check-icon) {\n width: 32px;\n height: 32px;\n color: white;\n }\n\n .success-title {\n @apply text-2xl font-semibold text-gray-900 dark:text-white mb-2;\n }\n\n .success-subtitle {\n @apply text-sm text-gray-600 dark:text-gray-300 m-0;\n }\n\n /* Ticket divider */\n .ticket-divider {\n @apply relative flex items-center mb-6;\n margin: 0 -24px 24px;\n padding: 0 24px;\n }\n\n .divider-notch {\n @apply w-4 h-4 rounded-full absolute bg-white dark:bg-gray-900;\n }\n\n .divider-notch.left {\n left: -8px;\n }\n\n .divider-notch.right {\n right: -8px;\n }\n\n .divider-line {\n @apply flex-1 h-0.5;\n background: repeating-linear-gradient(\n 90deg,\n theme('colors.gray.300') 0,\n theme('colors.gray.300') 8px,\n transparent 8px,\n transparent 16px\n );\n }\n\n :global(.dark) .divider-line {\n background: repeating-linear-gradient(\n 90deg,\n theme('colors.gray.600') 0,\n theme('colors.gray.600') 8px,\n transparent 8px,\n transparent 16px\n );\n }\n\n /* Ticket details */\n .ticket-details {\n @apply opacity-0;\n transform: translateY(10px);\n transition: opacity 0.4s ease, transform 0.4s ease;\n }\n\n .ticket-details.fade-in {\n @apply opacity-100;\n transform: translateY(0);\n }\n\n .detail-row {\n @apply flex flex-col gap-1 py-3 border-b border-gray-300/50 dark:border-gray-600/50;\n }\n\n .detail-row:last-child {\n @apply border-b-0;\n }\n\n .detail-label {\n @apply text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wide;\n }\n\n .detail-value {\n @apply text-sm font-medium text-gray-900 dark:text-white break-words;\n }\n\n .detail-value.order-id {\n @apply text-blue-700 dark:text-blue-500;\n font-family: 'SF Mono', 'Consolas', monospace;\n }\n\n .detail-value.event-name {\n @apply text-base font-semibold;\n }\n\n /* Ticket footer */\n .ticket-footer {\n @apply mt-6 p-4 rounded-lg text-center bg-gray-50/50 dark:bg-gray-800/50;\n }\n\n .footer-text {\n @apply text-sm text-gray-600 dark:text-gray-300 m-0;\n }\n\n /* Ticket stub pattern */\n .ticket-stub {\n @apply h-6;\n background: linear-gradient(\n 90deg,\n transparent 0,\n transparent 8px,\n theme('colors.gray.300/30') 8px,\n theme('colors.gray.300/30') 16px\n );\n background-size: 16px 100%;\n }\n\n :global(.dark) .ticket-stub {\n background: linear-gradient(\n 90deg,\n transparent 0,\n transparent 8px,\n theme('colors.gray.600/30') 8px,\n theme('colors.gray.600/30') 16px\n );\n background-size: 16px 100%;\n }\n\n /* Navigation CTAs */\n .nav-ctas {\n @apply flex flex-col gap-3 mt-6 opacity-0;\n transform: translateY(10px);\n transition: opacity 0.4s ease 0.2s, transform 0.4s ease 0.2s;\n }\n\n .nav-ctas.fade-in {\n @apply opacity-100;\n transform: translateY(0);\n }\n\n .nav-link {\n @apply flex items-center justify-center px-4 py-3 rounded-lg text-sm font-semibold no-underline transition-colors;\n }\n\n .nav-link.primary {\n background: hsl(var(--Brand-Primary, 220 90% 56%));\n color: hsl(var(--Text-OnPrimary, 0 0% 100%));\n }\n\n .nav-link.primary:hover {\n filter: brightness(0.95);\n }\n\n .nav-link.secondary {\n @apply bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-300;\n }\n\n .nav-link.secondary:hover {\n @apply bg-gray-200 dark:bg-gray-700;\n }\n\n /* Responsive */\n @media (max-width: 480px) {\n .success-container {\n padding: 16px;\n }\n\n .ticket-content {\n padding: 24px 20px 20px;\n }\n\n .success-title {\n font-size: 20px;\n }\n\n .success-badge {\n width: 56px;\n height: 56px;\n }\n\n .success-badge :global(.check-icon) {\n width: 28px;\n height: 28px;\n }\n }\n</style>\n"],"names":["data","$","$$props","eventUrl","browseUrl","organizationID","orgSlug","slug","rawEvent","providedOrderId","providedCustomerEmail","providedEventName","providedEventDateTime","providedEventLocation","event","transformEvent","e","order","Email","id","name","time","Location","orderId","showConfetti","showTicket","showDetails","formatDateTime","dateTimeString","tz","formatConfirmationDateTime","confettiColors","ACCENT","confettiParticles","_","i","onMount","orderData","getOrder","err","div","root","div_1","root_1","particle","$$anchor","div_2","root_2","$$render","consequent","div_3","node","div_4","div_5","div_6","div_7","div_8","CheckmarkFilled","node_1","dl","div_9","dd","div_10","root_3","dd_1","consequent_1","div_11","root_4","dd_2","consequent_2","div_12","root_5","dd_3","time_1","consequent_3","div_13","root_6","dd_4","consequent_4","nav","root_7","a","root_8","consequent_5","a_1","root_9","consequent_6","classes_3","consequent_7","classes","classes_1","classes_2","text"],"mappings":";;;;;;kBAAA;;MAQIA,IAAIC,EAAA,KAAAC,GAAA,QAAA,IAAA,OAAA,CAAA,EAAA,GACJC,6BAAW,EAAE,GACbC,8BAAY,GAAG;;IAIf,gBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAOC;AAAA,IACP,SAASC;AAAA,IACT,eAAeC;AAAA,IACf,WAAWC;AAAA,IACX,eAAeC;AAAA,IACf,eAAeC;AAAA,MACbb,EAAI,KAAA,CAAA;AAEJ,MAAAc,IAAQ;AACR,MAAAN;AACE,QAAA;AACF,MAAAM,IAAQC,GAAeP,CAAQ;AAAA,IACjC,SAASQ,GAAG;AACV,cAAQ,KAAK,+CAA+CA,CAAC,GAC7DF,IAAQN;AAAA,IACV;AAGE,MAAAS,IAAQ,MAERC,IAAQjB,EAAA,MAAO,EAAE,GACjBkB,IAAKlB,EAAA,MAAO,EAAE,GACdmB,IAAOnB,EAAA,MAAO,EAAE,GAChBoB,IAAOpB,EAAA,MAAO,EAAE,GAChBqB,IAAWrB,EAAA,MAAO,EAAE,GACpBsB,IAAUd,KAAmBT,EAAI,GAAE,WAAW,IAG9CwB,IAAevB,EAAA,MAAO,EAAK,GAC3BwB,IAAaxB,EAAA,MAAO,EAAK,GACzByB,IAAczB,EAAA,MAAO,EAAK;WAErB0B,EAAeC,GAAgB;AACjC,QAAA,CAAAA,UAAuB;AAEtB,UAAAC,IAAKf,GAAO,YAAY;WACvBgB,GAA2BF,GAAgBC,CAAE;AAAA,EACtD;QAGME,IAAc;AAAA,IAClBC,EAAO;AAAA,IACPA,EAAO,IAAI;AAAA,IACXA,EAAO,IAAI,GAAG;AAAA,IACdA,EAAO,KAAK,GAAG;AAAA,IACfA,EAAO,OAAO,GAAG;AAAA,IACjBA,EAAO;AAAA,IACPA,EAAO,KAAK,GAAG;AAAA,IACfA,EAAO,OAAO,GAAG;AAAA,KAEbC,IAAoB,MAAM,KAAI,EAAG,QAAQ,GAAE,GAAA,CAAKC,GAAGC,OAAC;AAAA,IACxD,IAAIA;AAAA,IACJ,OAAOJ,EAAe,KAAK,MAAM,KAAK,OAAM,IAAKA,EAAe,MAAM,CAAA;AAAA,IACtE,MAAM,KAAK,OAAM,IAAK;AAAA,IACtB,OAAO,KAAK,OAAM,IAAK;AAAA,IACvB,UAAU,IAAI,KAAK,OAAM,IAAK;AAAA,IAC9B,MAAM,IAAI,KAAK,OAAM,IAAK;AAAA,IAC1B,UAAU,KAAK,WAAW;AAAA;AAG5B,EAAAK,GAAO,YAAa;AAElB;AAAA,MAAiB,MAAA;AACf,QAAAnC,EAAA,IAAAuB,GAAe,EAAI;AAAA,MACrB;AAAA,MAAG;AAAA,OAEH;AAAA,MAAiB,MAAA;AACf,QAAAvB,EAAA,IAAAwB,GAAa,EAAI;AAAA,MACnB;AAAA,MAAG;AAAA,OAEH;AAAA,MAAiB,MAAA;AACf,QAAAxB,EAAA,IAAAyB,GAAc,EAAI;AAAA,MACpB;AAAA,MAAG;AAAA;AAEC,QAAA;AACE,UAAAW,IAAY;AACZ,UAAA;AACS,QAAA,OAAAC,KAAa,cAAcf,MACpCc,IAAS,MAASC,EAASf,CAAO;AAAA,MAEtC,SAASP,GAAG;AACV,gBAAQ,KACN,wEACAA,CAAA;AAAA,MAEJ;AAEI,MAAAqB,KACFpB,IAAQoB,GACRpC,EAAA,IAAAiB,GAAQmB,EAAU,iBAAiB3B,KAAyB,IAAE,EAAA,GAC9DT,EAAA,IAAAkB,GAAKkB,EAAU,MAAMd,GAAO,EAAA,SAC5BH,GAAOiB,EAAU,aAAavB,GAAO,QAAQH,KAAqB,IAAE,EAAA,SACpEU,GAAOM,EACLU,EAAU,iBACRvB,GAAO,iBACPF,CAAoB,GAAA,EAAA,SAExBU,GACEe,EAAU,iBACVvB,GAAO,YACPD,KACA,IAAE,EAAA,YAEJK,GAAQR,KAAyB,IAAE,EAAA,GACnCT,EAAA,IAAAkB,GAAKI,GAAO,EAAA,GACZtB,EAAA,IAAAmB,GAAOT,KAAqBG,GAAO,QAAQ,IAAE,EAAA,GAC7Cb,EAAA,IAAAoB,GAAOM,EAAef,KAAyBE,GAAO,aAAa,GAAA,EAAA,GACnEb,EAAA,IAAAqB,GAAWT,KAAyBC,GAAO,YAAY,IAAE,EAAA;AAAA,IAE7D,SAASyB,GAAK;AACZ,cAAQ,MAAM,8BAA8BA,CAAG,GACvCA,EAAI,eACZrB,GAAQR,KAAyB,0BAAwB,EAAA,GACzDT,EAAA,IAAAkB,GAAKI,GAAO,EAAA,GACZtB,EAAA,IAAAmB,GAAON,GAAO,QAAQH,KAAqB,IAAE,EAAA,GAC7CV,EAAA,IAAAoB,GAAOM,EAAeb,GAAO,iBAAiBF,CAAqB,GAAA,EAAA,GACnEX,EAAA,IAAAqB,GAAWR,GAAO,YAAYD,KAAyB,IAAE,EAAA;AAAA,IAC3D;AAAA,EACF,CAAC;MAGF2B,IAAGC,GAAA,eAAHD,CAAG;;;UAGCE,IAAGC,GAAA;aAAHD,GAAG,IAAA,MACKT,GAAiB,CAAIW,MAAUA,EAAS,IAAE,CAAAC,GAArBD,MAAQ;YACjCE,IAAEC,GAAA;4CAAFD,GAAE;AAAA,oBAGQ7C,EAAA,IAAA2C,CAAQ,EAAC,QAAI,EAAA;AAAA,gCACD3C,EAAA,IAAA2C,CAAQ,EAAC,SAAK,EAAA;AAAA,+BACf3C,EAAA,IAAA2C,CAAQ,EAAC,SAAK,EAAA;AAAA,kCACX3C,EAAA,IAAA2C,CAAQ,EAAC,YAAQ,EAAA;AAAA,qBAC9B3C,EAAA,IAAA2C,CAAQ,EAAC,QAAI,EAAA;AAAA,sBACZ3C,EAAA,IAAA2C,CAAQ,EAAC,QAAI,EAAA;AAAA,gCACH3C,EAAA,IAAA2C,CAAQ,EAAC,YAAQ,EAAA;AAAA,2BATvCE,CAAE;AAAA,kBAFNJ,CAAG,eAAHA,CAAG;AAAA;;YADDlB,CAAY,KAAAwB,EAAAC,CAAA;AAAA;;MAmBhBC,IAAGjD,EAAA,QAAAkD,GAAA,CAAA,GAEDC,YAFFF,CAAG;;AASC,MAAAG,sBAPFD,CAAG,GAAA,CAAA;;AAQC,MAAAE,YADFD,CAAG,GAECE,YADFD,CAAG,GAECE,YADFD,CAAG,eACDC,CAAG;AACD,EAAAC,GAAeC,GAAA,EAAA,OAAA,aAAA,CAAA,WADjBF,CAAG,sBADLD,CAAG;AAcH,MAAAI,cAdAJ,GAAG,CAAA;;AAeD,MAAAK,YADFD,CAAE,GAGEE,sBAFFD,CAAG,GAAA,CAAA,gBAEDC,GAAE,EAAA;UAAFA,CAAE,WAFJD,CAAG;oBAAHA,GAAG,CAAA;;;UAMDE,IAAGC,GAAA,GAEDC,sBAFFF,CAAG,GAAA,CAAA,eAEDE,CAAE;cAAFA,CAAE,WAFJF,CAAG,mDAEkC3C,CAAE,KAAA,EAAA,EAAA,CAAA,eAFvC2C,CAAG;AAAA;;YADD3C,CAAE,KAAA6B,EAAAiB,EAAA;AAAA;;;;;UAQJC,IAAGC,GAAA,GAEDC,sBAFFF,CAAG,GAAA,CAAA,eAEDE,GAAE,EAAA;cAAFA,CAAE,WAFJF,CAAG,+CAEmC9C,CAAI,CAAA,CAAA,eAF1C8C,CAAG;AAAA;;YADD9C,CAAI,KAAA4B,EAAAqB,EAAA;AAAA;;;;;UAQNC,IAAGC,GAAA,GAEDC,sBAFFF,CAAG,GAAA,CAAA,GAEwBG,YAAzBD,CAAE,eAAuBC,GAAI,EAAA;cAAJA,CAAI,WAA7BD,CAAE,WAFJF,CAAG,+CAE8BjD,CAAI,CAAA,CAAA,eAFrCiD,CAAG;AAAA;;YADDjD,CAAI,KAAA2B,EAAA0B,EAAA;AAAA;;;;;UAQNC,IAAGC,GAAA,GAEDC,sBAFFF,CAAG,GAAA,CAAA,eAEDE,GAAE,EAAA;cAAFA,CAAE,WAFJF,CAAG,+CAEwBrD,CAAQ,CAAA,CAAA,eAFnCqD,CAAG;AAAA;;YADDrD,CAAQ,KAAA0B,EAAA8B,EAAA;AAAA;;UA3BdnB,CAAE,sBAfJL,CAAG,sBADLD,CAAG,WAPLD,CAAG;qBAAHA,GAAG,CAAA;;;UAsED2B,IAAGC,GAAA;;sBAAHD,CAAG;;;cAECE,IAACC,GAAA;AAAD,UAAAjF,EAAA,gBAAA,MAAAA,EAAA,cAAAgF,WAAQ9E,EAAQ,CAAA,CAAA,eAAhB8E,CAAC;AAAA;;UADC9E,EAAQ,KAAA6C,EAAAmC,CAAA;AAAA;;;;;cAIVC,IAACC,GAAA;AAAD,UAAApF,EAAA,gBAAA,MAAAA,EAAA,cAAAmF,WAAQhF,EAAS,CAAA,CAAA,eAAjBgF,CAAC;AAAA;;UADChF,EAAS,KAAA4C,EAAAsC,EAAA;AAAA;;cAJfP,CAAG,GAAH9E,EAAA,gBAAA,MAAAsF,IAAAtF,EAAA,UAAA8E,4DAAoCrD,CAAW,EAAA,CAAA,CAAA,eAA/CqD,CAAG;AAAA;;AADD,OAAA5E,EAAQ,KAAIC,QAAS4C,EAAAwC,EAAA;AAAA;;UAvE3BtC,CAAG,WArBLV,CAAG;AAuBC,IAAAiD,IAAAxF,EAAA,UAAAmD,gEAA0C3B,CAAU,EAAA,CAAA,GAOlDiE,IAAAzF,EAAA,UAAAoD,4DAAoC5B,CAAU,EAAA,CAAA,GAgB1CkE,IAAA1F,EAAA,UAAA0D,kEAAyCjC,CAAW,EAAA,CAAA,GAGvBzB,EAAA,SAAA2F,IAAA3F,EAAA,IAAAiB,CAAK,KAAI,YAAY;AAAA,kBAjD5DsB,CAAG;AAFI;"}
@@ -21514,13 +21514,13 @@ function Je(e, a) {
21514
21514
  }), t.user_effect(() => {
21515
21515
  t.get(b) && (t1 && clearTimeout(t1), t.set(U, !1));
21516
21516
  }), t.user_effect(() => {
21517
- t.get(_) && (import("./GalleryView.legacy-B1mCdb-5.js").then((J) => {
21517
+ t.get(_) && (import("./GalleryView.legacy--Pgf6xBm.js").then((J) => {
21518
21518
  t.set(H, J.default, !0);
21519
- }), import("./GroupedListView.legacy-BGojcanH.js").then((J) => {
21519
+ }), import("./GroupedListView.legacy-Bb-SL1tx.js").then((J) => {
21520
21520
  t.set(V, J.default, !0);
21521
- }), import("./CarouselView.legacy-DGx2ORJ6.js").then((J) => {
21521
+ }), import("./CarouselView.legacy-BF4y171t.js").then((J) => {
21522
21522
  t.set(m, J.default, !0);
21523
- }), import("./FeaturedView.legacy-BuUaFDhd.js").then((J) => {
21523
+ }), import("./FeaturedView.legacy-CqUxv--s.js").then((J) => {
21524
21524
  t.set(M, J.default, !0);
21525
21525
  }));
21526
21526
  }), f0(() => {
@@ -25225,7 +25225,7 @@ function Lt(e, a) {
25225
25225
  t.push(a, !0);
25226
25226
  let s = t.state(!1), r = t.state(null);
25227
25227
  typeof window < "u" && new URLSearchParams(window.location.search).get("legacy") === "1" && t.set(s, !0), t.user_effect(() => {
25228
- t.get(s) && !t.get(r) && import("./Checkout.legacy-DSw_rESu.js").then((B) => {
25228
+ t.get(s) && !t.get(r) && import("./Checkout.legacy-WK7jnO9d.js").then((B) => {
25229
25229
  t.set(r, B.default, !0);
25230
25230
  }).catch(() => {
25231
25231
  t.set(s, !1);
@@ -26260,7 +26260,7 @@ function xt(e, a) {
26260
26260
  t.push(a, !0);
26261
26261
  let s = t.state(!1), r = t.state(null);
26262
26262
  typeof window < "u" && new URLSearchParams(window.location.search).get("legacy") === "1" && t.set(s, !0), t.user_effect(() => {
26263
- t.get(s) && !t.get(r) && import("./Success.legacy-Nz87oWe-.js").then((V) => {
26263
+ t.get(s) && !t.get(r) && import("./Success.legacy-D_Jip1Kt.js").then((V) => {
26264
26264
  t.set(r, V.default, !0);
26265
26265
  }).catch(() => {
26266
26266
  t.set(s, !1);
@@ -27258,7 +27258,7 @@ function l3(e, a) {
27258
27258
  }
27259
27259
  t.get(v).availableTickets && t.get(v).availableTickets.forEach((G) => t.get(M)[G.ID] = 0);
27260
27260
  const N = Q5(t.get(v).eventID);
27261
- if (t.set(M, N.quantities || {}, !0), t.set(u, N.promocode || "", !0), t.set(y, N.promoDiscountAmount || 0, !0), t.get(v).venueID && (await H9(t.get(v).venueID), !t.get(p)))
27261
+ if (t.set(M, N.quantities || {}, !0), t.set(u, N.promocode || "", !0), t.set(y, N.promoDiscountAmount || 0, !0), t.get(v).eventID && (await H9(t.get(v).eventID), !t.get(p)))
27262
27262
  return;
27263
27263
  if (t.get(v).venueID)
27264
27264
  try {
@@ -27945,4 +27945,4 @@ export {
27945
27945
  Lt as y,
27946
27946
  s3 as z
27947
27947
  };
27948
- //# sourceMappingURL=VenueCalendar-BPozmAbV.js.map
27948
+ //# sourceMappingURL=VenueCalendar-893zkdHf.js.map