@getmicdrop/venue-calendar 3.8.1 → 3.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CarouselView.legacy-Cq6pUGD8.js → CarouselView.legacy-BED9P-az.js} +2 -2
- package/dist/{CarouselView.legacy-Cq6pUGD8.js.map → CarouselView.legacy-BED9P-az.js.map} +1 -1
- package/dist/{Checkout.legacy-DV0qmqTH.js → Checkout.legacy-B1Ui4zZN.js} +7 -7
- package/dist/Checkout.legacy-B1Ui4zZN.js.map +1 -0
- package/dist/{CollectionView.legacy-B4siScif.js → CollectionView.legacy-CXv5mTUk.js} +2 -2
- package/dist/{CollectionView.legacy-B4siScif.js.map → CollectionView.legacy-CXv5mTUk.js.map} +1 -1
- package/dist/{FeaturedView.legacy-BYpdGGQu.js → FeaturedView.legacy-C5yztREl.js} +2 -2
- package/dist/{FeaturedView.legacy-BYpdGGQu.js.map → FeaturedView.legacy-C5yztREl.js.map} +1 -1
- package/dist/{GalleryView.legacy-DL6g-7BJ.js → GalleryView.legacy-DoM4NcPc.js} +2 -2
- package/dist/{GalleryView.legacy-DL6g-7BJ.js.map → GalleryView.legacy-DoM4NcPc.js.map} +1 -1
- package/dist/{GroupedListView.legacy-C3RnpVDR.js → GroupedListView.legacy-Dmm_z1rM.js} +2 -2
- package/dist/{GroupedListView.legacy-C3RnpVDR.js.map → GroupedListView.legacy-Dmm_z1rM.js.map} +1 -1
- package/dist/{SeriesPage.legacy-D2sBzEwH.js → SeriesPage.legacy-Cgtr6qB_.js} +2 -2
- package/dist/{SeriesPage.legacy-D2sBzEwH.js.map → SeriesPage.legacy-Cgtr6qB_.js.map} +1 -1
- package/dist/{Success.legacy-60HZ-mps.js → Success.legacy-DHG9NwIq.js} +2 -2
- package/dist/{Success.legacy-60HZ-mps.js.map → Success.legacy-DHG9NwIq.js.map} +1 -1
- package/dist/{VenueCalendar-CMcqsZpD.js → VenueCalendar-DIQ8H0q7.js} +4426 -4478
- package/dist/{VenueCalendar-CMcqsZpD.js.map → VenueCalendar-DIQ8H0q7.js.map} +1 -1
- package/dist/venue-calendar.es.js +1 -1
- package/dist/venue-calendar.iife.js +38 -37
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +38 -37
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +1 -1
- package/dist/Checkout.legacy-DV0qmqTH.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeaturedView.legacy-
|
|
1
|
+
{"version":3,"file":"FeaturedView.legacy-C5yztREl.js","sources":["../src/components/Calendar/FeaturedView.legacy.svelte"],"sourcesContent":["<script>\r\n import { formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\r\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\r\n import { filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\r\n\r\n let {\r\n events = [],\r\n featuredItem = null,\r\n oneventClick,\r\n } = $props();\r\n\r\n // Filter to today and future, sorted chronologically\r\n let futureEvents = $derived(filterTodayAndFuture(events));\r\n\r\n let heroEvent = $derived(futureEvents.length > 0 ? futureEvents[0] : null);\r\n\r\n function handleClick() {\r\n if (heroEvent) {\r\n oneventClick?.(heroEvent);\r\n }\r\n }\r\n</script>\r\n\r\n<section class=\"w-full\" aria-label=\"Featured event\">\r\n {#if featuredItem}\r\n <!-- Series or Collection hero -->\r\n <div class=\"featured-hero rounded-lg border border-border bg-card overflow-hidden\">\r\n {#if featuredItem.image}\r\n <div class=\"hero-image-container relative w-full bg-muted overflow-hidden\">\r\n <img\r\n src={featuredItem.image}\r\n alt=\"\"\r\n class=\"hero-image\"\r\n aria-hidden=\"true\"\r\n />\r\n </div>\r\n {:else}\r\n <div class=\"hero-image-container relative w-full bg-muted overflow-hidden flex items-center justify-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" class=\"w-16 h-16 text-muted-foreground\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"2\"/><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"/><path d=\"m21 15-5-5L5 21\"/></svg>\r\n </div>\r\n {/if}\r\n\r\n <div class=\"p-4 sm:p-5\">\r\n <div class=\"inline-flex items-center gap-1.5 text-xs font-semibold text-brand-primary uppercase tracking-wide mb-2\">\r\n {#if featuredItem.type === 'series'}\r\n <span class=\"w-1.5 h-1.5 rounded-full bg-brand-primary\"></span>\r\n Series\r\n {:else}\r\n <span class=\"w-1.5 h-1.5 rounded-full bg-brand-primary\"></span>\r\n Collection\r\n {/if}\r\n {#if featuredItem.subtitle}\r\n <span class=\"text-muted-foreground\">·</span>\r\n {featuredItem.subtitle}\r\n {/if}\r\n </div>\r\n\r\n <h2 class=\"hero-title text-xl sm:text-2xl font-bold text-text-primary mb-2\">{featuredItem.title}</h2>\r\n\r\n {#if heroEvent}\r\n <p class=\"text-base text-text-secondary font-medium\">\r\n Next: {formatFullDate(heroEvent.startDateTime, heroEvent.timeZone)}\r\n {#if heroEvent.startDateTime}\r\n at {formatEventTime(heroEvent.startDateTime, heroEvent.timeZone)}\r\n {/if}\r\n </p>\r\n {/if}\r\n </div>\r\n </div>\r\n {:else if heroEvent}\r\n <!-- Single event hero -->\r\n <div\r\n class=\"featured-hero featured-hero-clickable rounded-lg border border-border bg-card overflow-hidden cursor-pointer hover:border-stroke-primary focus-visible:outline-2 focus-visible:outline-brand-primary:outline-brand-primary focus-visible:outline-offset-2\"\r\n onclick={handleClick}\r\n onkeydown={(e) => (e.key === 'Enter' || e.key === ' ') && handleClick()}\r\n tabindex=\"0\"\r\n role=\"button\"\r\n aria-label=\"{heroEvent.name}, {formatFullDate(heroEvent.startDateTime, heroEvent.timeZone)}. Press Enter to view details.\"\r\n >\r\n <div class=\"hero-image-container relative w-full bg-muted overflow-hidden\">\r\n <img\r\n src={heroEvent.image || PLACEHOLDER_IMAGE}\r\n alt=\"\"\r\n class=\"hero-image\"\r\n aria-hidden=\"true\"\r\n />\r\n </div>\r\n\r\n <div class=\"p-4 sm:p-5\" aria-hidden=\"true\">\r\n <h2 class=\"hero-title text-xl sm:text-2xl font-bold text-text-primary mb-2\">{heroEvent.name}</h2>\r\n\r\n <p class=\"text-base text-text-secondary font-medium\">\r\n {formatFullDate(heroEvent.startDateTime, heroEvent.timeZone)}\r\n {#if heroEvent.startDateTime}\r\n <span class=\"text-muted-foreground mx-1\">·</span>\r\n {formatEventTime(heroEvent.startDateTime, heroEvent.timeZone)}\r\n {/if}\r\n </p>\r\n\r\n {#if heroEvent.description}\r\n <p class=\"hero-description text-sm text-text-secondary mt-2\">{heroEvent.description}</p>\r\n {/if}\r\n </div>\r\n </div>\r\n {:else}\r\n <!-- Empty state -->\r\n <div class=\"flex items-center justify-center py-12 rounded-lg border border-border bg-bg-secondary\">\r\n <p class=\"text-sm text-muted-foreground\">No upcoming events to feature</p>\r\n </div>\r\n {/if}\r\n</section>\r\n\r\n<style>\r\n .hero-image-container {\r\n aspect-ratio: 16 / 9;\r\n }\r\n\r\n .hero-image {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n }\r\n\r\n .hero-title {\r\n line-height: 1.3;\r\n }\r\n\r\n .featured-hero-clickable {\r\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\r\n }\r\n\r\n .featured-hero-clickable:hover {\r\n box-shadow: 0 4px 12px color-mix(in srgb, black 10%, transparent);\r\n }\r\n\r\n .featured-hero-clickable:focus {\r\n outline: none;\r\n }\r\n\r\n .hero-description {\r\n display: -webkit-box;\r\n -webkit-line-clamp: 2;\r\n line-clamp: 2;\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n }\r\n\r\n /* Reduced motion */\r\n @media (prefers-reduced-motion: reduce) {\r\n .featured-hero-clickable {\r\n transition: none;\r\n }\r\n }\r\n</style>\r\n"],"names":["events","$","$$props","featuredItem","futureEvents","filterTodayAndFuture","heroEvent","handleClick","section","root","div","root_1","div_1","root_2","img","div_2","root_3","$$render","consequent","alternate","div_3","node_1","div_4","consequent_1","alternate_1","text","consequent_2","h2","p","root_7","formatEventTime","consequent_3","formatFullDate","consequent_4","text_1","div_5","root_9","div_6","img_1","div_7","h2_1","p_1","consequent_6","p_2","root_11","text_7","consequent_7","$0","PLACEHOLDER_IMAGE","text_4","e","div_8","root_12","consequent_8","alternate_2"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "svelte/internal/disclose-version";
|
|
2
2
|
import * as e from "svelte/internal/client";
|
|
3
3
|
import { onMount as C, onDestroy as M } from "svelte";
|
|
4
|
-
import { f as x, G as k } from "./VenueCalendar-
|
|
4
|
+
import { f as x, G as k } from "./VenueCalendar-DIQ8H0q7.js";
|
|
5
5
|
var w = e.from_html('<li class="list-none"><!></li>'), E = e.from_html('<div class="flex items-center justify-center gap-2 py-2 p-6" role="status" aria-live="polite"><span class="text-sm text-muted-foreground">Loading more events...</span></div>'), G = e.from_html('<section class="w-full" aria-label="Events gallery"><h2 class="sr-only svelte-lb0ck7">Upcoming events</h2> <ul class="grid grid-cols-1 gap-4 bg-bg-secondary p-2 sm:grid-cols-2 sm:gap-4 sm:p-3 md:grid-cols-3 md:gap-5 md:p-4 lg:grid-cols-4 lg:gap-6 lg:p-5" role="list"></ul> <!></section>');
|
|
6
6
|
function A(v, l) {
|
|
7
7
|
e.push(l, !0);
|
|
@@ -48,4 +48,4 @@ function A(v, l) {
|
|
|
48
48
|
export {
|
|
49
49
|
A as default
|
|
50
50
|
};
|
|
51
|
-
//# sourceMappingURL=GalleryView.legacy-
|
|
51
|
+
//# sourceMappingURL=GalleryView.legacy-DoM4NcPc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GalleryView.legacy-
|
|
1
|
+
{"version":3,"file":"GalleryView.legacy-DoM4NcPc.js","sources":["../src/components/Calendar/GalleryView.legacy.svelte"],"sourcesContent":["<script>\r\n import { onMount, onDestroy } from \"svelte\";\r\n import GalleryCard from \"./GalleryCard.svelte\";\r\n import { filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\r\n\r\n let { events = [], initialCount = 12, loadMoreCount = 12, oneventClick } = $props();\r\n\r\n let displayedCount = initialCount;\r\n let loadMoreTrigger;\r\n let observer;\r\n\r\n // Filter to today and future, sorted chronologically\r\n let futureEvents = $derived(filterTodayAndFuture(events));\r\n let displayedEvents = $derived(futureEvents.slice(0, displayedCount));\r\n let hasMore = $derived(displayedCount < futureEvents.length);\r\n\r\n function loadMore() {\r\n displayedCount += loadMoreCount;\r\n }\r\n\r\n onMount(() => {\r\n observer = new IntersectionObserver(\r\n (entries) => {\r\n if (entries[0].isIntersecting && hasMore) {\r\n loadMore();\r\n }\r\n },\r\n { rootMargin: '100px' }\r\n );\r\n\r\n if (loadMoreTrigger) {\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n\r\n onDestroy(() => {\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n });\r\n\r\n // Re-observe when trigger element changes\r\n $effect(() => {\r\n if (observer && loadMoreTrigger) {\r\n observer.disconnect();\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n</script>\r\n\r\n<section class=\"w-full\" aria-label=\"Events gallery\">\r\n <h2 class=\"sr-only\">Upcoming events</h2>\r\n <ul class=\"grid grid-cols-1 gap-4 bg-bg-secondary p-2 sm:grid-cols-2 sm:gap-4 sm:p-3 md:grid-cols-3 md:gap-5 md:p-4 lg:grid-cols-4 lg:gap-6 lg:p-5\" role=\"list\">\r\n {#each displayedEvents as event}\r\n <li class=\"list-none\">\r\n <GalleryCard {event} {oneventClick} />\r\n </li>\r\n {/each}\r\n </ul>\r\n\r\n <!-- Infinite scroll trigger -->\r\n {#if hasMore}\r\n <div bind:this={loadMoreTrigger} class=\"flex items-center justify-center gap-2 py-2 p-6\" role=\"status\" aria-live=\"polite\">\r\n <span class=\"text-sm text-muted-foreground\">Loading more events...</span>\r\n </div>\r\n {/if}\r\n</section>\r\n\r\n<style>\r\n /* Screen reader only text */\r\n .sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n padding: 0;\r\n margin: -1px;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border-width: 0;\r\n }\r\n</style>\r\n"],"names":["events","$","$$props","initialCount","loadMoreCount","displayedCount","loadMoreTrigger","observer","futureEvents","filterTodayAndFuture","displayedEvents","hasMore","loadMore","onMount","entries","onDestroy","section","root","ul","$$anchor","event","li","root_1","GalleryCard","node","div","root_2","$$value","$$render","consequent"],"mappings":";;;;;iBAAA;;MAKQA,IAAMC,EAAA,KAAAC,GAAA,UAAA,IAAA,MAAA,EAAA,GAAOC,iCAAe,EAAE,GAAEC,kCAAgB,EAAE,GAEpDC,IAAiBF,EAAY,GAC7BG,GACAC,GAGAC,IAAYP,EAAA,QAAA,MAAYQ,EAAqBT,EAAM,CAAA,CAAA,GACnDU,0BAA2BF,CAAY,EAAC,MAAM,GAAGH,CAAc,CAAA,GAC/DM,IAAOV,EAAA,QAAA,MAAYI,IAAcJ,EAAA,IAAGO,CAAY,EAAC,MAAM;AAElD,WAAAI,IAAW;AAClB,IAAAP,KAAkBD,EAAa;AAAA,EACjC;AAEA,EAAAS,QAAc;AACZ,IAAAN,QAAe;AAAA,MACZ,CAAAO,MAAY;AACP,QAAAA,EAAQ,CAAC,EAAE,kBAAcb,EAAA,IAAIU,CAAO,KACtCC,EAAQ;AAAA,MAEZ;AAAA,MACE,EAAA,YAAY,QAAO;AAAA,OAGnBN,KACFC,EAAS,QAAQD,CAAe;AAAA,EAEpC,CAAC,GAEDS,QAAgB;AACV,IAAAR,KACFA,EAAS,WAAU;AAAA,EAEvB,CAAC,GAGDN,EAAA,kBAAc;IACRM,KAAYD,MACdC,EAAS,WAAU,GACnBA,EAAS,QAAQD,CAAe;AAAA,EAEpC,CAAC;MAGFU,IAAOC,EAAA,GAELC,sBAFFF,CAAO,GAAA,CAAA;SAELE,GAAE,IAAA,MAAAjB,EAAA,IACMS,CAAe,GAAAT,EAAA,OAAA,CAAAkB,GAAIC,MAAK;QAC5BC,IAAEC,EAAA,eAAFD,CAAE;AACA,IAAAE,EAAWC,GAAA;AAAA;qBAAEJ,CAAK;AAAA;;;;gBADpBC,CAAE,eAAFA,CAAE;AAAA,cAFNH,CAAE;oBAAFA,GAAE,CAAA;;;UAUAO,IAAGC,EAAA;kBAAHD,GAAG,CAAAE,MAAYrB,IAAeqB,GAAA,MAAfrB,CAAe,eAA9BmB,CAAG;AAAA;;YADDd,CAAO,KAAAiB,EAAAC,CAAA;AAAA;;UAXbb,CAAO,eAAPA,CAAO;AAFA;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "svelte/internal/disclose-version";
|
|
2
2
|
import * as e from "svelte/internal/client";
|
|
3
3
|
import { onMount as te, onDestroy as ae } from "svelte";
|
|
4
|
-
import { f as re, g as se, a as ie, i as le, P as ne, b as F, c as L, S as oe } from "./VenueCalendar-
|
|
4
|
+
import { f as re, g as se, a as ie, i as le, P as ne, b as F, c as L, S as oe } from "./VenueCalendar-DIQ8H0q7.js";
|
|
5
5
|
var de = e.from_html('<div class="w-16 min-w-16 py-4 px-2.5 flex flex-col items-center justify-start bg-bg-secondary border-r border-border max-sm:w-12 max-sm:min-w-12 max-sm:py-2.5 max-sm:px-1.5" aria-hidden="true"><span class="text-xs font-semibold text-text-secondary uppercase tracking-tight"> </span> <span class="text-2xl max-sm:text-lg font-bold text-text-primary leading-tight"> </span> <span class="text-xs font-semibold text-text-secondary uppercase tracking-tight"> </span></div>'), me = e.from_html('<p class="event-description text-sm text-text-secondary mt-1.5 mb-0 line-clamp-2 max-sm:hidden svelte-r2wh13"> </p>'), ce = e.from_html("<span> </span>"), ge = e.from_html('<li class="list-none"><div tabindex="0" role="button"><div class="w-36 h-24 min-w-36 max-sm:w-20 max-sm:h-16 max-sm:min-w-20 rounded-lg overflow-hidden bg-bg-secondary flex items-center justify-center" aria-hidden="true"><img alt="" class="w-full h-full object-contain svelte-r2wh13" loading="lazy"/></div> <div class="flex-1 flex flex-col gap-1.5 min-w-0" aria-hidden="true"><h3 class="text-lg max-sm:text-sm font-semibold text-text-primary m-0 leading-snug"> </h3> <time class="text-sm max-sm:text-xs font-medium text-text-secondary"> </time> <!></div> <div class="flex items-start pt-0.5" aria-hidden="true"><!></div></div></li>'), fe = e.from_html('<div class="date-group flex border-b border-border last:border-b-0 svelte-r2wh13" role="group"><!> <ul class="events-column flex-1 flex flex-col list-none p-0 m-0 svelte-r2wh13"></ul></div>'), ve = e.from_html('<div class="flex justify-center items-center p-6 text-text-secondary" role="status" aria-live="polite"><span class="text-sm">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 he(P, m) {
|
|
7
7
|
e.push(m, !0);
|
|
@@ -141,4 +141,4 @@ e.delegate(["click", "keydown"]);
|
|
|
141
141
|
export {
|
|
142
142
|
he as default
|
|
143
143
|
};
|
|
144
|
-
//# sourceMappingURL=GroupedListView.legacy-
|
|
144
|
+
//# sourceMappingURL=GroupedListView.legacy-Dmm_z1rM.js.map
|
package/dist/{GroupedListView.legacy-C3RnpVDR.js.map → GroupedListView.legacy-Dmm_z1rM.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupedListView.legacy-C3RnpVDR.js","sources":["../src/components/Calendar/GroupedListView.legacy.svelte"],"sourcesContent":["<script>\r\n import { onMount, onDestroy } from \"svelte\";\r\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\r\n import { getDateParts, formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\r\n import { getBrowseStatus, isEventUnavailable, filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\r\n import ScarcityBadge from \"../ScarcityBadge.svelte\";\r\n\r\n let {\r\n events = [],\r\n initialCount = 10,\r\n loadMoreCount = 10,\r\n showDateColumn = true,\r\n filterFutureOnly = true,\r\n oneventClick\r\n } = $props();\r\n\r\n let displayedCount = initialCount;\r\n let loadMoreTrigger;\r\n let observer;\r\n\r\n // Filter to today and future (if enabled), then group by date\r\n let filteredEvents = $derived(filterFutureOnly ? filterTodayAndFuture(events) : events);\r\n let groupedEvents = $derived(groupEventsByDate(filteredEvents.slice(0, displayedCount)));\r\n let hasMore = $derived(displayedCount < filteredEvents.length);\r\n\r\n function loadMore() {\r\n displayedCount += loadMoreCount;\r\n }\r\n\r\n onMount(() => {\r\n observer = new IntersectionObserver(\r\n (entries) => {\r\n if (entries[0].isIntersecting && hasMore) {\r\n loadMore();\r\n }\r\n },\r\n { rootMargin: '100px' }\r\n );\r\n\r\n if (loadMoreTrigger) {\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n\r\n onDestroy(() => {\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n });\r\n\r\n // Re-observe when trigger element changes\r\n $effect(() => {\r\n if (observer && loadMoreTrigger) {\r\n observer.disconnect();\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n\r\n function groupEventsByDate(eventList) {\r\n const groups = {};\r\n\r\n for (const event of eventList) {\r\n const dateKey = event.date; // YYYY-MM-DD format\r\n if (!groups[dateKey]) {\r\n groups[dateKey] = [];\r\n }\r\n groups[dateKey].push(event);\r\n }\r\n\r\n // Convert to array sorted by date\r\n return Object.entries(groups)\r\n .sort(([a], [b]) => new Date(a) - new Date(b))\r\n .map(([date, events]) => ({\r\n date,\r\n events,\r\n formattedDate: formatGroupDate(events),\r\n }));\r\n }\r\n\r\n function formatGroupDate(events) {\r\n // Use the first event in the group to get timezone-aware date parts\r\n const firstEvent = events[0];\r\n if (!firstEvent?.startDateTime) return { month: '', day: '', weekday: '' };\r\n const parts = getDateParts(firstEvent.startDateTime, firstEvent.timeZone);\r\n return {\r\n month: parts.month.toUpperCase(),\r\n day: String(parts.date).padStart(2, '0'),\r\n weekday: parts.day.toUpperCase(),\r\n };\r\n }\r\n\r\n function handleEventClick(event) {\r\n oneventClick?.(event);\r\n }\r\n\r\n function handleKeydown(e, event) {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleEventClick(event);\r\n }\r\n }\r\n</script>\r\n\r\n<section class=\"flex flex-col gap-0\" class:no-date-column={!showDateColumn} aria-label=\"Event listings\">\r\n <h2 class=\"sr-only\">Event list grouped by date</h2>\r\n {#each groupedEvents as group}\r\n <div class=\"date-group flex border-b border-border last:border-b-0\" role=\"group\" aria-label=\"Events on {group.events[0]?.startDateTime ? formatFullDate(group.events[0].startDateTime, group.events[0].timeZone) : group.date}\">\r\n <!-- Date Column -->\r\n {#if showDateColumn}\r\n <div class=\"w-16 min-w-16 py-4 px-2.5 flex flex-col items-center justify-start bg-bg-secondary border-r border-border max-sm:w-12 max-sm:min-w-12 max-sm:py-2.5 max-sm:px-1.5\" aria-hidden=\"true\">\r\n <span class=\"text-xs font-semibold text-text-secondary uppercase tracking-tight\">{group.formattedDate.month}</span>\r\n <span class=\"text-2xl max-sm:text-lg font-bold text-text-primary leading-tight\">{group.formattedDate.day}</span>\r\n <span class=\"text-xs font-semibold text-text-secondary uppercase tracking-tight\">{group.formattedDate.weekday}</span>\r\n </div>\r\n {/if}\r\n\r\n <!-- Events Column -->\r\n <ul class=\"events-column flex-1 flex flex-col list-none p-0 m-0\">\r\n {#each group.events as event, eventIndex}\r\n {@const eventStatus = getBrowseStatus(event)}\r\n {@const isUnavailable = isEventUnavailable(eventStatus)}\r\n <li class=\"list-none\">\r\n <div\r\n class=\"event-row flex gap-4 max-sm:gap-2.5 p-5 max-sm:p-3 cursor-pointer transition-colors duration-150 bg-card border-b border-border/50 last:border-b-0 hover:bg-bg-secondary focus:outline-2 focus:outline-brand-primary focus:-outline-offset-2 focus-visible:outline-2 focus-visible:outline-brand-primary:outline-brand-primary focus-visible:-outline-offset-2\"\r\n class:row-unavailable={isUnavailable}\r\n onclick={() => handleEventClick(event)}\r\n onkeydown={(e) => handleKeydown(e, event)}\r\n tabindex=\"0\"\r\n role=\"button\"\r\n aria-label={`${event.name} on ${event.startDateTime ? formatFullDate(event.startDateTime, event.timeZone) : group.date} at ${event.startDateTime ? formatEventTime(event.startDateTime, event.timeZone) : ''}, ${eventStatus?.text || event.status || 'On Sale'}. Press Enter to view details.`}\r\n >\r\n <!-- Event Image -->\r\n <div class=\"w-36 h-24 min-w-36 max-sm:w-20 max-sm:h-16 max-sm:min-w-20 rounded-lg overflow-hidden bg-bg-secondary flex items-center justify-center\" aria-hidden=\"true\">\r\n <img\r\n src={event.image || PLACEHOLDER_IMAGE}\r\n alt=\"\"\r\n class=\"w-full h-full object-contain\"\r\n loading=\"lazy\"\r\n />\r\n </div>\r\n\r\n <!-- Event Details (visually shown but also in aria-label, so hide from SR) -->\r\n <div class=\"flex-1 flex flex-col gap-1.5 min-w-0\" aria-hidden=\"true\">\r\n <h3 class=\"text-lg max-sm:text-sm font-semibold text-text-primary m-0 leading-snug\">{event.name}</h3>\r\n <time class=\"text-sm max-sm:text-xs font-medium text-text-secondary\" datetime={event.startDateTime || group.date}>{event.startDateTime ? formatEventTime(event.startDateTime, event.timeZone) : ''}</time>\r\n {#if event.description}\r\n <p class=\"event-description text-sm text-text-secondary mt-1.5 mb-0 line-clamp-2 max-sm:hidden\">{event.description}</p>\r\n {/if}\r\n </div>\r\n\r\n <!-- Status / Scarcity Badge -->\r\n <div class=\"flex items-start pt-0.5\" aria-hidden=\"true\">\r\n {#if eventStatus}\r\n <span class=\"status-badge status-{eventStatus.type}\">{eventStatus.text}</span>\r\n {:else if event.ticketsTotal > 0 || event.ticketsRemaining === 0}\r\n <ScarcityBadge\r\n remaining={event.ticketsRemaining ?? 0}\r\n total={event.ticketsTotal ?? 0}\r\n context=\"browse\"\r\n />\r\n {/if}\r\n </div>\r\n </div>\r\n </li>\r\n {/each}\r\n </ul>\r\n </div>\r\n {/each}\r\n\r\n <!-- Infinite scroll trigger -->\r\n {#if hasMore}\r\n <div bind:this={loadMoreTrigger} class=\"flex justify-center items-center p-6 text-text-secondary\" role=\"status\" aria-live=\"polite\">\r\n <span class=\"text-sm\">Loading more events...</span>\r\n </div>\r\n {/if}\r\n</section>\r\n\r\n<style>\r\n /* When no date column, remove left border styling */\r\n .no-date-column .date-group {\r\n border-bottom: 0;\r\n }\r\n\r\n .no-date-column .events-column {\r\n border-left: 0;\r\n }\r\n\r\n .event-description {\r\n display: -webkit-box;\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n }\r\n\r\n /* Unavailable row dimming */\r\n .row-unavailable {\r\n opacity: 0.6;\r\n }\r\n\r\n .row-unavailable img {\r\n filter: grayscale(0.5);\r\n }\r\n\r\n /* Status badges -- distinct visual treatments matching gallery cards */\r\n .status-badge {\r\n display: inline-flex;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n line-height: 1rem;\r\n font-weight: 700;\r\n padding: 0.25rem 0.625rem;\r\n border-radius: 0.25rem;\r\n white-space: nowrap;\r\n letter-spacing: 0.02em;\r\n }\r\n\r\n .status-cancelled {\r\n background-color: hsl(var(--accent-danger) / 0.1);\r\n color: hsl(var(--accent-danger));\r\n text-decoration: line-through;\r\n text-decoration-thickness: 1.5px;\r\n\r\n \r\n }\r\n\r\n .status-past {\r\n background-color: hsl(var(--bg-tertiary));\r\n color: hsl(var(--text-tertiary));\r\n\r\n \r\n }\r\n\r\n .status-sold_out {\r\n background-color: hsl(var(--accent-danger) / 0.1);\r\n color: hsl(var(--accent-danger));\r\n text-transform: uppercase;\r\n letter-spacing: 0.05em;\r\n font-size: 0.65rem;\r\n\r\n \r\n }\r\n\r\n .status-sales_ended {\r\n background-color: hsl(var(--bg-tertiary));\r\n color: hsl(var(--text-tertiary));\r\n border: 1px solid hsl(var(--stroke-primary));\r\n\r\n \r\n }\r\n\r\n .status-coming_soon {\r\n background-color: hsl(var(--brand-primary) / 0.15);\r\n color: hsl(var(--brand-primary));\r\n\r\n \r\n }\r\n\r\n /* Reduced motion */\r\n @media (prefers-reduced-motion: reduce) {\r\n .event-row {\r\n transition: none;\r\n }\r\n }\r\n\r\n /* Screen reader only text */\r\n .sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n padding: 0;\r\n margin: -1px;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border-width: 0;\r\n }\r\n</style>\r\n"],"names":["events","$","$$props","initialCount","loadMoreCount","showDateColumn","filterFutureOnly","displayedCount","loadMoreTrigger","observer","filteredEvents","filterTodayAndFuture","groupedEvents","groupEventsByDate","hasMore","loadMore","onMount","entries","onDestroy","eventList","groups","event","dateKey","a","b","date","formatGroupDate","firstEvent","parts","getDateParts","handleEventClick","handleKeydown","e","section","root","node","group","div","root_1","div_1","root_2","span","span_1","span_2","$$render","consequent","ul","node_1","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-Dmm_z1rM.js","sources":["../src/components/Calendar/GroupedListView.legacy.svelte"],"sourcesContent":["<script>\r\n import { onMount, onDestroy } from \"svelte\";\r\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\r\n import { getDateParts, formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\r\n import { getBrowseStatus, isEventUnavailable, filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\r\n import ScarcityBadge from \"../ScarcityBadge.svelte\";\r\n\r\n let {\r\n events = [],\r\n initialCount = 10,\r\n loadMoreCount = 10,\r\n showDateColumn = true,\r\n filterFutureOnly = true,\r\n oneventClick\r\n } = $props();\r\n\r\n let displayedCount = initialCount;\r\n let loadMoreTrigger;\r\n let observer;\r\n\r\n // Filter to today and future (if enabled), then group by date\r\n let filteredEvents = $derived(filterFutureOnly ? filterTodayAndFuture(events) : events);\r\n let groupedEvents = $derived(groupEventsByDate(filteredEvents.slice(0, displayedCount)));\r\n let hasMore = $derived(displayedCount < filteredEvents.length);\r\n\r\n function loadMore() {\r\n displayedCount += loadMoreCount;\r\n }\r\n\r\n onMount(() => {\r\n observer = new IntersectionObserver(\r\n (entries) => {\r\n if (entries[0].isIntersecting && hasMore) {\r\n loadMore();\r\n }\r\n },\r\n { rootMargin: '100px' }\r\n );\r\n\r\n if (loadMoreTrigger) {\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n\r\n onDestroy(() => {\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n });\r\n\r\n // Re-observe when trigger element changes\r\n $effect(() => {\r\n if (observer && loadMoreTrigger) {\r\n observer.disconnect();\r\n observer.observe(loadMoreTrigger);\r\n }\r\n });\r\n\r\n function groupEventsByDate(eventList) {\r\n const groups = {};\r\n\r\n for (const event of eventList) {\r\n const dateKey = event.date; // YYYY-MM-DD format\r\n if (!groups[dateKey]) {\r\n groups[dateKey] = [];\r\n }\r\n groups[dateKey].push(event);\r\n }\r\n\r\n // Convert to array sorted by date\r\n return Object.entries(groups)\r\n .sort(([a], [b]) => new Date(a) - new Date(b))\r\n .map(([date, events]) => ({\r\n date,\r\n events,\r\n formattedDate: formatGroupDate(events),\r\n }));\r\n }\r\n\r\n function formatGroupDate(events) {\r\n // Use the first event in the group to get timezone-aware date parts\r\n const firstEvent = events[0];\r\n if (!firstEvent?.startDateTime) return { month: '', day: '', weekday: '' };\r\n const parts = getDateParts(firstEvent.startDateTime, firstEvent.timeZone);\r\n return {\r\n month: parts.month.toUpperCase(),\r\n day: String(parts.date).padStart(2, '0'),\r\n weekday: parts.day.toUpperCase(),\r\n };\r\n }\r\n\r\n function handleEventClick(event) {\r\n oneventClick?.(event);\r\n }\r\n\r\n function handleKeydown(e, event) {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleEventClick(event);\r\n }\r\n }\r\n</script>\r\n\r\n<section class=\"flex flex-col gap-0\" class:no-date-column={!showDateColumn} aria-label=\"Event listings\">\r\n <h2 class=\"sr-only\">Event list grouped by date</h2>\r\n {#each groupedEvents as group}\r\n <div class=\"date-group flex border-b border-border last:border-b-0\" role=\"group\" aria-label=\"Events on {group.events[0]?.startDateTime ? formatFullDate(group.events[0].startDateTime, group.events[0].timeZone) : group.date}\">\r\n <!-- Date Column -->\r\n {#if showDateColumn}\r\n <div class=\"w-16 min-w-16 py-4 px-2.5 flex flex-col items-center justify-start bg-bg-secondary border-r border-border max-sm:w-12 max-sm:min-w-12 max-sm:py-2.5 max-sm:px-1.5\" aria-hidden=\"true\">\r\n <span class=\"text-xs font-semibold text-text-secondary uppercase tracking-tight\">{group.formattedDate.month}</span>\r\n <span class=\"text-2xl max-sm:text-lg font-bold text-text-primary leading-tight\">{group.formattedDate.day}</span>\r\n <span class=\"text-xs font-semibold text-text-secondary uppercase tracking-tight\">{group.formattedDate.weekday}</span>\r\n </div>\r\n {/if}\r\n\r\n <!-- Events Column -->\r\n <ul class=\"events-column flex-1 flex flex-col list-none p-0 m-0\">\r\n {#each group.events as event, eventIndex}\r\n {@const eventStatus = getBrowseStatus(event)}\r\n {@const isUnavailable = isEventUnavailable(eventStatus)}\r\n <li class=\"list-none\">\r\n <div\r\n class=\"event-row flex gap-4 max-sm:gap-2.5 p-5 max-sm:p-3 cursor-pointer transition-colors duration-150 bg-card border-b border-border/50 last:border-b-0 hover:bg-bg-secondary focus:outline-2 focus:outline-brand-primary focus:-outline-offset-2 focus-visible:outline-2 focus-visible:outline-brand-primary:outline-brand-primary focus-visible:-outline-offset-2\"\r\n class:row-unavailable={isUnavailable}\r\n onclick={() => handleEventClick(event)}\r\n onkeydown={(e) => handleKeydown(e, event)}\r\n tabindex=\"0\"\r\n role=\"button\"\r\n aria-label={`${event.name} on ${event.startDateTime ? formatFullDate(event.startDateTime, event.timeZone) : group.date} at ${event.startDateTime ? formatEventTime(event.startDateTime, event.timeZone) : ''}, ${eventStatus?.text || event.status || 'On Sale'}. Press Enter to view details.`}\r\n >\r\n <!-- Event Image -->\r\n <div class=\"w-36 h-24 min-w-36 max-sm:w-20 max-sm:h-16 max-sm:min-w-20 rounded-lg overflow-hidden bg-bg-secondary flex items-center justify-center\" aria-hidden=\"true\">\r\n <img\r\n src={event.image || PLACEHOLDER_IMAGE}\r\n alt=\"\"\r\n class=\"w-full h-full object-contain\"\r\n loading=\"lazy\"\r\n />\r\n </div>\r\n\r\n <!-- Event Details (visually shown but also in aria-label, so hide from SR) -->\r\n <div class=\"flex-1 flex flex-col gap-1.5 min-w-0\" aria-hidden=\"true\">\r\n <h3 class=\"text-lg max-sm:text-sm font-semibold text-text-primary m-0 leading-snug\">{event.name}</h3>\r\n <time class=\"text-sm max-sm:text-xs font-medium text-text-secondary\" datetime={event.startDateTime || group.date}>{event.startDateTime ? formatEventTime(event.startDateTime, event.timeZone) : ''}</time>\r\n {#if event.description}\r\n <p class=\"event-description text-sm text-text-secondary mt-1.5 mb-0 line-clamp-2 max-sm:hidden\">{event.description}</p>\r\n {/if}\r\n </div>\r\n\r\n <!-- Status / Scarcity Badge -->\r\n <div class=\"flex items-start pt-0.5\" aria-hidden=\"true\">\r\n {#if eventStatus}\r\n <span class=\"status-badge status-{eventStatus.type}\">{eventStatus.text}</span>\r\n {:else if event.ticketsTotal > 0 || event.ticketsRemaining === 0}\r\n <ScarcityBadge\r\n remaining={event.ticketsRemaining ?? 0}\r\n total={event.ticketsTotal ?? 0}\r\n context=\"browse\"\r\n />\r\n {/if}\r\n </div>\r\n </div>\r\n </li>\r\n {/each}\r\n </ul>\r\n </div>\r\n {/each}\r\n\r\n <!-- Infinite scroll trigger -->\r\n {#if hasMore}\r\n <div bind:this={loadMoreTrigger} class=\"flex justify-center items-center p-6 text-text-secondary\" role=\"status\" aria-live=\"polite\">\r\n <span class=\"text-sm\">Loading more events...</span>\r\n </div>\r\n {/if}\r\n</section>\r\n\r\n<style>\r\n /* When no date column, remove left border styling */\r\n .no-date-column .date-group {\r\n border-bottom: 0;\r\n }\r\n\r\n .no-date-column .events-column {\r\n border-left: 0;\r\n }\r\n\r\n .event-description {\r\n display: -webkit-box;\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n }\r\n\r\n /* Unavailable row dimming */\r\n .row-unavailable {\r\n opacity: 0.6;\r\n }\r\n\r\n .row-unavailable img {\r\n filter: grayscale(0.5);\r\n }\r\n\r\n /* Status badges -- distinct visual treatments matching gallery cards */\r\n .status-badge {\r\n display: inline-flex;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n line-height: 1rem;\r\n font-weight: 700;\r\n padding: 0.25rem 0.625rem;\r\n border-radius: 0.25rem;\r\n white-space: nowrap;\r\n letter-spacing: 0.02em;\r\n }\r\n\r\n .status-cancelled {\r\n background-color: hsl(var(--accent-danger) / 0.1);\r\n color: hsl(var(--accent-danger));\r\n text-decoration: line-through;\r\n text-decoration-thickness: 1.5px;\r\n\r\n \r\n }\r\n\r\n .status-past {\r\n background-color: hsl(var(--bg-tertiary));\r\n color: hsl(var(--text-tertiary));\r\n\r\n \r\n }\r\n\r\n .status-sold_out {\r\n background-color: hsl(var(--accent-danger) / 0.1);\r\n color: hsl(var(--accent-danger));\r\n text-transform: uppercase;\r\n letter-spacing: 0.05em;\r\n font-size: 0.65rem;\r\n\r\n \r\n }\r\n\r\n .status-sales_ended {\r\n background-color: hsl(var(--bg-tertiary));\r\n color: hsl(var(--text-tertiary));\r\n border: 1px solid hsl(var(--stroke-primary));\r\n\r\n \r\n }\r\n\r\n .status-coming_soon {\r\n background-color: hsl(var(--brand-primary) / 0.15);\r\n color: hsl(var(--brand-primary));\r\n\r\n \r\n }\r\n\r\n /* Reduced motion */\r\n @media (prefers-reduced-motion: reduce) {\r\n .event-row {\r\n transition: none;\r\n }\r\n }\r\n\r\n /* Screen reader only text */\r\n .sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n padding: 0;\r\n margin: -1px;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border-width: 0;\r\n }\r\n</style>\r\n"],"names":["events","$","$$props","initialCount","loadMoreCount","showDateColumn","filterFutureOnly","displayedCount","loadMoreTrigger","observer","filteredEvents","filterTodayAndFuture","groupedEvents","groupEventsByDate","hasMore","loadMore","onMount","entries","onDestroy","eventList","groups","event","dateKey","a","b","date","formatGroupDate","firstEvent","parts","getDateParts","handleEventClick","handleKeydown","e","section","root","node","group","div","root_1","div_1","root_2","span","span_1","span_2","$$render","consequent","ul","node_1","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,6 +1,6 @@
|
|
|
1
1
|
import "svelte/internal/disclose-version";
|
|
2
2
|
import * as e from "svelte/internal/client";
|
|
3
|
-
import { P as ye, x as J, y as ue, z as pe } from "./VenueCalendar-
|
|
3
|
+
import { P as ye, x as J, y as ue, z as pe } from "./VenueCalendar-DIQ8H0q7.js";
|
|
4
4
|
import "svelte/internal/flags/legacy";
|
|
5
5
|
import "svelte/transition";
|
|
6
6
|
import "svelte/easing";
|
|
@@ -187,4 +187,4 @@ e.delegate(["click"]);
|
|
|
187
187
|
export {
|
|
188
188
|
Ue as default
|
|
189
189
|
};
|
|
190
|
-
//# sourceMappingURL=SeriesPage.legacy-
|
|
190
|
+
//# sourceMappingURL=SeriesPage.legacy-Cgtr6qB_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeriesPage.legacy-D2sBzEwH.js","sources":["../src/components/Views/SeriesPage.legacy.svelte"],"sourcesContent":["<script>\n import { getImageUrl } from '$lib/utils/utils.js';\n import {\n formatDate as scFormatDate,\n formatTime as scFormatTime,\n } from '@getmicdrop/svelte-components';\n import { PLACEHOLDER_IMAGE } from '$lib/utils/constants.js';\n\n let { series, onNavigateToOccurrence } = $props();\n\n let imageLoaded = $state(false);\n\n let seriesImage = $derived(\n series?.image ? getImageUrl(series.image) : PLACEHOLDER_IMAGE\n );\n\n let tz = $derived(series?.timeZone || 'America/Los_Angeles');\n\n function formatDate(iso) {\n return scFormatDate(iso, { timeZone: tz });\n }\n\n function formatTime(iso) {\n return scFormatTime(iso, { timeZone: tz });\n }\n\n function handleOccurrenceClick(occurrence) {\n if (!occurrence.ctaState?.disabled && onNavigateToOccurrence) {\n onNavigateToOccurrence(\n occurrence.id,\n occurrence.slug || '',\n occurrence.name || ''\n );\n }\n }\n</script>\n\n{#if series}\n <div class=\"series-page\">\n <!-- Hero Image -->\n <div class=\"hero\">\n <div class=\"hero-skeleton\" class:hidden={imageLoaded}></div>\n <img\n src={seriesImage}\n alt={series.title}\n class=\"hero-image\"\n onload={() => (imageLoaded = true)}\n />\n <div class=\"hero-overlay\">\n <div class=\"hero-content\">\n <span class=\"series-badge\">Recurring Event</span>\n <h1 class=\"series-title\">{series.title}</h1>\n <div class=\"series-venue\">\n <span>{series.venue?.name}</span>\n {#if series.venue?.googleLocationNameCache}\n <span class=\"venue-separator\">·</span>\n <span class=\"venue-location\"\n >{series.venue.googleLocationNameCache}</span\n >\n {/if}\n </div>\n </div>\n </div>\n </div>\n\n <!-- Content Grid -->\n <div class=\"content-grid\">\n <!-- Main Column -->\n <div class=\"main-column\">\n <!-- About Section -->\n <section class=\"section\">\n <h2 class=\"section-heading\">About this Series</h2>\n {#if series.eventSummary}\n <p class=\"series-summary\">{series.eventSummary}</p>\n {/if}\n {#if series.description}\n <div class=\"series-description\">{series.description}</div>\n {/if}\n </section>\n\n <!-- Upcoming Dates -->\n <section class=\"section\">\n <div class=\"dates-header\">\n <h2 class=\"section-heading\">Upcoming Dates</h2>\n <span class=\"dates-count\"\n >{series.occurrences?.length || 0} events</span\n >\n </div>\n\n {#if !series.occurrences?.length}\n <div class=\"empty-dates\">\n <p class=\"empty-text\">\n No upcoming dates scheduled at this time.\n </p>\n <p class=\"empty-subtext\">\n Check back soon for new announcements.\n </p>\n </div>\n {:else}\n <div class=\"dates-list\">\n {#each series.occurrences as occurrence}\n <div class=\"occurrence-card\">\n <div class=\"occurrence-info\">\n <div class=\"occurrence-date\">\n {formatDate(occurrence.startDateTime)}\n </div>\n <div class=\"occurrence-time\">\n {formatTime(occurrence.startDateTime)} - {formatTime(\n occurrence.endDateTime\n )}\n </div>\n </div>\n <div class=\"occurrence-action\">\n <button\n class=\"cta-button\"\n class:cta-disabled={occurrence.ctaState?.disabled}\n disabled={occurrence.ctaState?.disabled}\n onclick={() => handleOccurrenceClick(occurrence)}\n >\n {occurrence.ctaState?.text || 'Get tickets'}\n </button>\n </div>\n </div>\n {/each}\n </div>\n {/if}\n </section>\n\n <!-- Performers -->\n {#if series.performers?.length}\n <section class=\"section\">\n <h2 class=\"section-heading\">Performers</h2>\n <div class=\"performers-grid\">\n {#each series.performers as performer}\n <div class=\"performer-card\">\n <div class=\"performer-avatar\">\n {#if performer.profileImage}\n <img\n src={getImageUrl(performer.profileImage)}\n alt={performer.displayName ||\n `${performer.firstName} ${performer.lastName}`}\n class=\"performer-image\"\n />\n {:else}\n <div class=\"performer-placeholder\">\n <svg\n class=\"placeholder-icon\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n />\n </svg>\n </div>\n {/if}\n </div>\n <h3 class=\"performer-name\">\n {performer.displayName ||\n `${performer.firstName} ${performer.lastName}`}\n </h3>\n </div>\n {/each}\n </div>\n </section>\n {/if}\n </div>\n\n <!-- Sidebar -->\n <div class=\"sidebar\">\n <div class=\"sidebar-sticky\">\n {#if series.venue?.faq || series.venue?.disclaimer}\n <div class=\"sidebar-card\">\n {#if series.venue.faq}\n <div class=\"sidebar-section\">\n <h3 class=\"sidebar-heading\">FAQ</h3>\n <div class=\"faq-content\">\n {#if Array.isArray(series.venue.faq)}\n {#each series.venue.faq as item}\n <div class=\"faq-item\">\n <p class=\"faq-question\">{item.question}</p>\n <p class=\"faq-answer\">{item.answer}</p>\n </div>\n {/each}\n {:else}\n <p>{series.venue.faq}</p>\n {/if}\n </div>\n </div>\n {/if}\n\n {#if series.venue.disclaimer}\n <div class=\"sidebar-section\">\n <h3 class=\"sidebar-heading\">Important Info</h3>\n <div class=\"disclaimer-text\">{series.venue.disclaimer}</div>\n </div>\n {/if}\n </div>\n {/if}\n </div>\n </div>\n </div>\n </div>\n{/if}\n\n<style>\n .series-page {\n min-height: 100vh;\n padding-bottom: 5rem;\n background: hsl(var(--surface-primary, 0 0% 100%));\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n /* Hero */\n .hero {\n position: relative;\n width: 100%;\n overflow: hidden;\n height: 500px;\n }\n\n @media (max-width: 768px) {\n .hero {\n height: 256px;\n }\n }\n\n .hero-skeleton {\n position: absolute;\n inset: 0;\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n background: hsl(var(--surface-secondary, 0 0% 96%));\n }\n\n @keyframes pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n }\n\n .hero-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: transform 0.7s ease;\n }\n\n .hero:hover .hero-image {\n transform: scale(1.05);\n }\n\n .hero-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding: 1.5rem;\n background: linear-gradient(\n to top,\n color-mix(in srgb, black 90%, transparent),\n color-mix(in srgb, black 50%, transparent),\n transparent\n );\n }\n\n @media (min-width: 768px) {\n .hero-overlay {\n padding: 3rem;\n }\n }\n\n .hero-content {\n max-width: 64rem;\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n }\n\n .series-badge {\n display: inline-flex;\n align-items: center;\n padding: 0.25rem 0.75rem;\n margin-bottom: 1rem;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n border-radius: 9999px;\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n background: hsl(var(--brand-primary, 224 76% 48%));\n color: hsl(var(--text-on-primary, 0 0% 100%));\n }\n\n .series-title {\n font-size: 2.25rem;\n line-height: 1.1;\n font-weight: 700;\n margin-bottom: 0.75rem;\n letter-spacing: -0.025em;\n color: hsl(var(--bg-primary));\n text-shadow: 0 2px 8px color-mix(in srgb, black 30%, transparent);\n }\n\n @media (min-width: 768px) {\n .series-title {\n font-size: 3.75rem;\n line-height: 1;\n }\n }\n\n .series-venue {\n font-size: 1.125rem;\n line-height: 1.75rem;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n font-weight: 500;\n color: color-mix(in srgb, white 90%, transparent);\n }\n\n @media (min-width: 768px) {\n .series-venue {\n font-size: 1.25rem;\n line-height: 1.75rem;\n }\n }\n\n .venue-separator {\n display: none;\n opacity: 0.6;\n }\n\n @media (min-width: 768px) {\n .venue-separator {\n display: inline;\n }\n }\n\n .venue-location {\n opacity: 0.75;\n }\n\n /* Content Grid */\n .content-grid {\n max-width: 64rem;\n margin-left: auto;\n margin-right: auto;\n padding: 3rem 1.5rem;\n display: grid;\n grid-template-columns: 1fr;\n gap: 3rem;\n }\n\n @media (min-width: 768px) {\n .content-grid {\n padding-top: 5rem;\n padding-bottom: 5rem;\n }\n }\n\n @media (min-width: 1024px) {\n .content-grid {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n .main-column {\n display: flex;\n flex-direction: column;\n gap: 4rem;\n }\n\n @media (min-width: 1024px) {\n .main-column {\n grid-column: span 2 / span 2;\n }\n }\n\n .section {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n }\n\n .section-heading {\n font-size: 1.875rem;\n line-height: 2.25rem;\n font-weight: 700;\n letter-spacing: -0.025em;\n padding-bottom: 1rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n border-bottom: 1px solid hsl(var(--stroke-secondary, 0 0% 90%));\n }\n\n .series-summary {\n font-size: 1.25rem;\n line-height: 1.75rem;\n font-weight: 500;\n line-height: 1.625;\n color: hsl(var(--text-primary, 0 0% 20%));\n }\n\n .series-description {\n max-width: none;\n white-space: pre-line;\n line-height: 1.625;\n color: hsl(var(--text-secondary, 0 0% 40%));\n }\n\n /* Upcoming Dates */\n .dates-header {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n padding-bottom: 1rem;\n border-bottom: 1px solid hsl(var(--stroke-secondary, 0 0% 90%));\n }\n\n .dates-count {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 500;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .empty-dates {\n padding: 3rem;\n border-radius: 1rem;\n text-align: center;\n background: hsl(var(--surface-secondary, 0 0% 96%));\n border: 2px dashed hsl(var(--stroke-secondary, 0 0% 85%));\n }\n\n .empty-text {\n font-size: 1.125rem;\n line-height: 1.75rem;\n font-weight: 500;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .empty-subtext {\n margin-top: 0.5rem;\n color: hsl(var(--text-secondary, 0 0% 55%));\n }\n\n .dates-list {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n\n .occurrence-card {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: 1.5rem;\n border-radius: 1rem;\n transition: all 0.2s;\n background: hsl(var(--surface-primary, 0 0% 100%));\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 90%));\n }\n\n @media (min-width: 640px) {\n .occurrence-card {\n flex-direction: row;\n align-items: center;\n }\n }\n\n .occurrence-card:hover {\n border-color: hsl(var(--brand-primary, 224 76% 48%));\n box-shadow: 0 4px 12px color-mix(in srgb, black 8%, transparent);\n }\n\n .occurrence-info {\n margin-bottom: 1rem;\n }\n\n @media (min-width: 640px) {\n .occurrence-info {\n margin-bottom: 0;\n }\n }\n\n .occurrence-date {\n font-size: 1.25rem;\n line-height: 1.75rem;\n font-weight: 700;\n margin-bottom: 0.25rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .occurrence-time {\n font-weight: 500;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .occurrence-action {\n padding-left: 0;\n }\n\n @media (min-width: 640px) {\n .occurrence-action {\n padding-left: 1.5rem;\n }\n }\n\n .cta-button {\n width: 100%;\n padding: 0.75rem 1.5rem;\n border-radius: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n transition: transform 0.15s;\n background: hsl(var(--brand-primary, 224 76% 48%));\n color: hsl(var(--text-on-primary, 0 0% 100%));\n }\n\n @media (min-width: 640px) {\n .cta-button {\n width: auto;\n }\n }\n\n .cta-button:hover:not(:disabled) {\n transform: scale(1.05);\n }\n\n .cta-disabled {\n cursor: not-allowed;\n background: hsl(var(--surface-secondary, 0 0% 90%));\n color: hsl(var(--text-secondary, 0 0% 55%));\n }\n\n /* Performers */\n .performers-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 2rem;\n }\n\n @media (min-width: 640px) {\n .performers-grid {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n .performer-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n padding: 1rem;\n border-radius: 0.75rem;\n transition: background-color 0.15s;\n }\n\n .performer-card:hover {\n background: hsl(var(--surface-secondary, 0 0% 96%));\n }\n\n .performer-avatar {\n width: 7rem;\n height: 7rem;\n margin-bottom: 1rem;\n border-radius: 9999px;\n overflow: hidden;\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n background: hsl(var(--surface-secondary, 0 0% 92%));\n }\n\n .performer-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: transform 0.5s ease;\n }\n\n .performer-card:hover .performer-image {\n transform: scale(1.1);\n }\n\n .performer-placeholder {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: hsl(var(--text-secondary, 0 0% 60%));\n }\n\n .placeholder-icon {\n width: 3rem;\n height: 3rem;\n opacity: 0.5;\n }\n\n .performer-name {\n font-size: 1.125rem;\n line-height: 1.75rem;\n font-weight: 600;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n /* Sidebar */\n .sidebar {\n display: flex;\n flex-direction: column;\n gap: 2rem;\n }\n\n @media (min-width: 1024px) {\n .sidebar {\n grid-column: span 1 / span 1;\n }\n }\n\n .sidebar-sticky {\n position: sticky;\n top: 6rem;\n display: flex;\n flex-direction: column;\n gap: 2rem;\n }\n\n .sidebar-card {\n border-radius: 1rem;\n padding: 2rem;\n background: hsl(var(--surface-secondary, 0 0% 96%));\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 92%));\n }\n\n .sidebar-section {\n margin-bottom: 2rem;\n }\n\n .sidebar-section:last-child {\n margin-bottom: 0;\n }\n\n .sidebar-heading {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n margin-bottom: 1rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .faq-content {\n color: hsl(var(--text-secondary, 0 0% 40%));\n }\n\n .faq-item {\n margin-bottom: 0.75rem;\n }\n\n .faq-question {\n font-weight: 700;\n color: hsl(var(--text-primary, 0 0% 20%));\n }\n\n .faq-answer {\n font-size: 0.875rem;\n line-height: 1.25rem;\n }\n\n .disclaimer-text {\n font-size: 0.875rem;\n line-height: 1.625;\n padding: 1rem;\n border-radius: 0.5rem;\n background: hsl(var(--surface-primary, 0 0% 100%));\n color: hsl(var(--text-secondary, 0 0% 40%));\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 90%));\n }\n</style>\n"],"names":["imageLoaded","$","seriesImage","getImageUrl","$$props","PLACEHOLDER_IMAGE","tz","formatDate","iso","scFormatDate","formatTime","scFormatTime","handleOccurrenceClick","occurrence","div","root_1","div_1","div_2","img","div_3","div_4","h1","div_5","span","span_1","fragment_1","text_2","$$render","consequent","div_6","div_7","section","p","root_3","consequent_1","div_8","root_4","consequent_2","section_1","div_9","span_2","div_10","root_5","div_11","root_6","$$anchor","div_12","root_7","div_13","div_14","div_15","div_16","button","classes_1","text_8","alternate","consequent_3","section_2","root_8","div_17","performer","div_18","root_9","div_19","img_1","root_10","$0","div_20","root_11","consequent_4","alternate_1","h3","consequent_5","div_21","div_22","div_23","root_12","div_24","root_13","div_25","item","div_26","root_15","p_1","p_2","text_10","text_11","d","p_3","root_16","text_12","consequent_7","div_27","root_17","div_28","text_13","consequent_8","consequent_9","classes","text_1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SeriesPage.legacy-Cgtr6qB_.js","sources":["../src/components/Views/SeriesPage.legacy.svelte"],"sourcesContent":["<script>\n import { getImageUrl } from '$lib/utils/utils.js';\n import {\n formatDate as scFormatDate,\n formatTime as scFormatTime,\n } from '@getmicdrop/svelte-components';\n import { PLACEHOLDER_IMAGE } from '$lib/utils/constants.js';\n\n let { series, onNavigateToOccurrence } = $props();\n\n let imageLoaded = $state(false);\n\n let seriesImage = $derived(\n series?.image ? getImageUrl(series.image) : PLACEHOLDER_IMAGE\n );\n\n let tz = $derived(series?.timeZone || 'America/Los_Angeles');\n\n function formatDate(iso) {\n return scFormatDate(iso, { timeZone: tz });\n }\n\n function formatTime(iso) {\n return scFormatTime(iso, { timeZone: tz });\n }\n\n function handleOccurrenceClick(occurrence) {\n if (!occurrence.ctaState?.disabled && onNavigateToOccurrence) {\n onNavigateToOccurrence(\n occurrence.id,\n occurrence.slug || '',\n occurrence.name || ''\n );\n }\n }\n</script>\n\n{#if series}\n <div class=\"series-page\">\n <!-- Hero Image -->\n <div class=\"hero\">\n <div class=\"hero-skeleton\" class:hidden={imageLoaded}></div>\n <img\n src={seriesImage}\n alt={series.title}\n class=\"hero-image\"\n onload={() => (imageLoaded = true)}\n />\n <div class=\"hero-overlay\">\n <div class=\"hero-content\">\n <span class=\"series-badge\">Recurring Event</span>\n <h1 class=\"series-title\">{series.title}</h1>\n <div class=\"series-venue\">\n <span>{series.venue?.name}</span>\n {#if series.venue?.googleLocationNameCache}\n <span class=\"venue-separator\">·</span>\n <span class=\"venue-location\"\n >{series.venue.googleLocationNameCache}</span\n >\n {/if}\n </div>\n </div>\n </div>\n </div>\n\n <!-- Content Grid -->\n <div class=\"content-grid\">\n <!-- Main Column -->\n <div class=\"main-column\">\n <!-- About Section -->\n <section class=\"section\">\n <h2 class=\"section-heading\">About this Series</h2>\n {#if series.eventSummary}\n <p class=\"series-summary\">{series.eventSummary}</p>\n {/if}\n {#if series.description}\n <div class=\"series-description\">{series.description}</div>\n {/if}\n </section>\n\n <!-- Upcoming Dates -->\n <section class=\"section\">\n <div class=\"dates-header\">\n <h2 class=\"section-heading\">Upcoming Dates</h2>\n <span class=\"dates-count\"\n >{series.occurrences?.length || 0} events</span\n >\n </div>\n\n {#if !series.occurrences?.length}\n <div class=\"empty-dates\">\n <p class=\"empty-text\">\n No upcoming dates scheduled at this time.\n </p>\n <p class=\"empty-subtext\">\n Check back soon for new announcements.\n </p>\n </div>\n {:else}\n <div class=\"dates-list\">\n {#each series.occurrences as occurrence}\n <div class=\"occurrence-card\">\n <div class=\"occurrence-info\">\n <div class=\"occurrence-date\">\n {formatDate(occurrence.startDateTime)}\n </div>\n <div class=\"occurrence-time\">\n {formatTime(occurrence.startDateTime)} - {formatTime(\n occurrence.endDateTime\n )}\n </div>\n </div>\n <div class=\"occurrence-action\">\n <button\n class=\"cta-button\"\n class:cta-disabled={occurrence.ctaState?.disabled}\n disabled={occurrence.ctaState?.disabled}\n onclick={() => handleOccurrenceClick(occurrence)}\n >\n {occurrence.ctaState?.text || 'Get tickets'}\n </button>\n </div>\n </div>\n {/each}\n </div>\n {/if}\n </section>\n\n <!-- Performers -->\n {#if series.performers?.length}\n <section class=\"section\">\n <h2 class=\"section-heading\">Performers</h2>\n <div class=\"performers-grid\">\n {#each series.performers as performer}\n <div class=\"performer-card\">\n <div class=\"performer-avatar\">\n {#if performer.profileImage}\n <img\n src={getImageUrl(performer.profileImage)}\n alt={performer.displayName ||\n `${performer.firstName} ${performer.lastName}`}\n class=\"performer-image\"\n />\n {:else}\n <div class=\"performer-placeholder\">\n <svg\n class=\"placeholder-icon\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n />\n </svg>\n </div>\n {/if}\n </div>\n <h3 class=\"performer-name\">\n {performer.displayName ||\n `${performer.firstName} ${performer.lastName}`}\n </h3>\n </div>\n {/each}\n </div>\n </section>\n {/if}\n </div>\n\n <!-- Sidebar -->\n <div class=\"sidebar\">\n <div class=\"sidebar-sticky\">\n {#if series.venue?.faq || series.venue?.disclaimer}\n <div class=\"sidebar-card\">\n {#if series.venue.faq}\n <div class=\"sidebar-section\">\n <h3 class=\"sidebar-heading\">FAQ</h3>\n <div class=\"faq-content\">\n {#if Array.isArray(series.venue.faq)}\n {#each series.venue.faq as item}\n <div class=\"faq-item\">\n <p class=\"faq-question\">{item.question}</p>\n <p class=\"faq-answer\">{item.answer}</p>\n </div>\n {/each}\n {:else}\n <p>{series.venue.faq}</p>\n {/if}\n </div>\n </div>\n {/if}\n\n {#if series.venue.disclaimer}\n <div class=\"sidebar-section\">\n <h3 class=\"sidebar-heading\">Important Info</h3>\n <div class=\"disclaimer-text\">{series.venue.disclaimer}</div>\n </div>\n {/if}\n </div>\n {/if}\n </div>\n </div>\n </div>\n </div>\n{/if}\n\n<style>\n .series-page {\n min-height: 100vh;\n padding-bottom: 5rem;\n background: hsl(var(--surface-primary, 0 0% 100%));\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n /* Hero */\n .hero {\n position: relative;\n width: 100%;\n overflow: hidden;\n height: 500px;\n }\n\n @media (max-width: 768px) {\n .hero {\n height: 256px;\n }\n }\n\n .hero-skeleton {\n position: absolute;\n inset: 0;\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n background: hsl(var(--surface-secondary, 0 0% 96%));\n }\n\n @keyframes pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n }\n\n .hero-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: transform 0.7s ease;\n }\n\n .hero:hover .hero-image {\n transform: scale(1.05);\n }\n\n .hero-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding: 1.5rem;\n background: linear-gradient(\n to top,\n color-mix(in srgb, black 90%, transparent),\n color-mix(in srgb, black 50%, transparent),\n transparent\n );\n }\n\n @media (min-width: 768px) {\n .hero-overlay {\n padding: 3rem;\n }\n }\n\n .hero-content {\n max-width: 64rem;\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n }\n\n .series-badge {\n display: inline-flex;\n align-items: center;\n padding: 0.25rem 0.75rem;\n margin-bottom: 1rem;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n border-radius: 9999px;\n box-shadow:\n 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n background: hsl(var(--brand-primary, 224 76% 48%));\n color: hsl(var(--text-on-primary, 0 0% 100%));\n }\n\n .series-title {\n font-size: 2.25rem;\n line-height: 1.1;\n font-weight: 700;\n margin-bottom: 0.75rem;\n letter-spacing: -0.025em;\n color: hsl(var(--bg-primary));\n text-shadow: 0 2px 8px color-mix(in srgb, black 30%, transparent);\n }\n\n @media (min-width: 768px) {\n .series-title {\n font-size: 3.75rem;\n line-height: 1;\n }\n }\n\n .series-venue {\n font-size: 1.125rem;\n line-height: 1.75rem;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n font-weight: 500;\n color: color-mix(in srgb, white 90%, transparent);\n }\n\n @media (min-width: 768px) {\n .series-venue {\n font-size: 1.25rem;\n line-height: 1.75rem;\n }\n }\n\n .venue-separator {\n display: none;\n opacity: 0.6;\n }\n\n @media (min-width: 768px) {\n .venue-separator {\n display: inline;\n }\n }\n\n .venue-location {\n opacity: 0.75;\n }\n\n /* Content Grid */\n .content-grid {\n max-width: 64rem;\n margin-left: auto;\n margin-right: auto;\n padding: 3rem 1.5rem;\n display: grid;\n grid-template-columns: 1fr;\n gap: 3rem;\n }\n\n @media (min-width: 768px) {\n .content-grid {\n padding-top: 5rem;\n padding-bottom: 5rem;\n }\n }\n\n @media (min-width: 1024px) {\n .content-grid {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n .main-column {\n display: flex;\n flex-direction: column;\n gap: 4rem;\n }\n\n @media (min-width: 1024px) {\n .main-column {\n grid-column: span 2 / span 2;\n }\n }\n\n .section {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n }\n\n .section-heading {\n font-size: 1.875rem;\n line-height: 2.25rem;\n font-weight: 700;\n letter-spacing: -0.025em;\n padding-bottom: 1rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n border-bottom: 1px solid hsl(var(--stroke-secondary, 0 0% 90%));\n }\n\n .series-summary {\n font-size: 1.25rem;\n line-height: 1.75rem;\n font-weight: 500;\n line-height: 1.625;\n color: hsl(var(--text-primary, 0 0% 20%));\n }\n\n .series-description {\n max-width: none;\n white-space: pre-line;\n line-height: 1.625;\n color: hsl(var(--text-secondary, 0 0% 40%));\n }\n\n /* Upcoming Dates */\n .dates-header {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n padding-bottom: 1rem;\n border-bottom: 1px solid hsl(var(--stroke-secondary, 0 0% 90%));\n }\n\n .dates-count {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 500;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .empty-dates {\n padding: 3rem;\n border-radius: 1rem;\n text-align: center;\n background: hsl(var(--surface-secondary, 0 0% 96%));\n border: 2px dashed hsl(var(--stroke-secondary, 0 0% 85%));\n }\n\n .empty-text {\n font-size: 1.125rem;\n line-height: 1.75rem;\n font-weight: 500;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .empty-subtext {\n margin-top: 0.5rem;\n color: hsl(var(--text-secondary, 0 0% 55%));\n }\n\n .dates-list {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n\n .occurrence-card {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: 1.5rem;\n border-radius: 1rem;\n transition: all 0.2s;\n background: hsl(var(--surface-primary, 0 0% 100%));\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 90%));\n }\n\n @media (min-width: 640px) {\n .occurrence-card {\n flex-direction: row;\n align-items: center;\n }\n }\n\n .occurrence-card:hover {\n border-color: hsl(var(--brand-primary, 224 76% 48%));\n box-shadow: 0 4px 12px color-mix(in srgb, black 8%, transparent);\n }\n\n .occurrence-info {\n margin-bottom: 1rem;\n }\n\n @media (min-width: 640px) {\n .occurrence-info {\n margin-bottom: 0;\n }\n }\n\n .occurrence-date {\n font-size: 1.25rem;\n line-height: 1.75rem;\n font-weight: 700;\n margin-bottom: 0.25rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .occurrence-time {\n font-weight: 500;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .occurrence-action {\n padding-left: 0;\n }\n\n @media (min-width: 640px) {\n .occurrence-action {\n padding-left: 1.5rem;\n }\n }\n\n .cta-button {\n width: 100%;\n padding: 0.75rem 1.5rem;\n border-radius: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n transition: transform 0.15s;\n background: hsl(var(--brand-primary, 224 76% 48%));\n color: hsl(var(--text-on-primary, 0 0% 100%));\n }\n\n @media (min-width: 640px) {\n .cta-button {\n width: auto;\n }\n }\n\n .cta-button:hover:not(:disabled) {\n transform: scale(1.05);\n }\n\n .cta-disabled {\n cursor: not-allowed;\n background: hsl(var(--surface-secondary, 0 0% 90%));\n color: hsl(var(--text-secondary, 0 0% 55%));\n }\n\n /* Performers */\n .performers-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 2rem;\n }\n\n @media (min-width: 640px) {\n .performers-grid {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n .performer-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n padding: 1rem;\n border-radius: 0.75rem;\n transition: background-color 0.15s;\n }\n\n .performer-card:hover {\n background: hsl(var(--surface-secondary, 0 0% 96%));\n }\n\n .performer-avatar {\n width: 7rem;\n height: 7rem;\n margin-bottom: 1rem;\n border-radius: 9999px;\n overflow: hidden;\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n background: hsl(var(--surface-secondary, 0 0% 92%));\n }\n\n .performer-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: transform 0.5s ease;\n }\n\n .performer-card:hover .performer-image {\n transform: scale(1.1);\n }\n\n .performer-placeholder {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: hsl(var(--text-secondary, 0 0% 60%));\n }\n\n .placeholder-icon {\n width: 3rem;\n height: 3rem;\n opacity: 0.5;\n }\n\n .performer-name {\n font-size: 1.125rem;\n line-height: 1.75rem;\n font-weight: 600;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n /* Sidebar */\n .sidebar {\n display: flex;\n flex-direction: column;\n gap: 2rem;\n }\n\n @media (min-width: 1024px) {\n .sidebar {\n grid-column: span 1 / span 1;\n }\n }\n\n .sidebar-sticky {\n position: sticky;\n top: 6rem;\n display: flex;\n flex-direction: column;\n gap: 2rem;\n }\n\n .sidebar-card {\n border-radius: 1rem;\n padding: 2rem;\n background: hsl(var(--surface-secondary, 0 0% 96%));\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 92%));\n }\n\n .sidebar-section {\n margin-bottom: 2rem;\n }\n\n .sidebar-section:last-child {\n margin-bottom: 0;\n }\n\n .sidebar-heading {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n margin-bottom: 1rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .faq-content {\n color: hsl(var(--text-secondary, 0 0% 40%));\n }\n\n .faq-item {\n margin-bottom: 0.75rem;\n }\n\n .faq-question {\n font-weight: 700;\n color: hsl(var(--text-primary, 0 0% 20%));\n }\n\n .faq-answer {\n font-size: 0.875rem;\n line-height: 1.25rem;\n }\n\n .disclaimer-text {\n font-size: 0.875rem;\n line-height: 1.625;\n padding: 1rem;\n border-radius: 0.5rem;\n background: hsl(var(--surface-primary, 0 0% 100%));\n color: hsl(var(--text-secondary, 0 0% 40%));\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 90%));\n }\n</style>\n"],"names":["imageLoaded","$","seriesImage","getImageUrl","$$props","PLACEHOLDER_IMAGE","tz","formatDate","iso","scFormatDate","formatTime","scFormatTime","handleOccurrenceClick","occurrence","div","root_1","div_1","div_2","img","div_3","div_4","h1","div_5","span","span_1","fragment_1","text_2","$$render","consequent","div_6","div_7","section","p","root_3","consequent_1","div_8","root_4","consequent_2","section_1","div_9","span_2","div_10","root_5","div_11","root_6","$$anchor","div_12","root_7","div_13","div_14","div_15","div_16","button","classes_1","text_8","alternate","consequent_3","section_2","root_8","div_17","performer","div_18","root_9","div_19","img_1","root_10","$0","div_20","root_11","consequent_4","alternate_1","h3","consequent_5","div_21","div_22","div_23","root_12","div_24","root_13","div_25","item","div_26","root_15","p_1","p_2","text_10","text_11","d","p_3","root_16","text_12","consequent_7","div_27","root_17","div_28","text_13","consequent_8","consequent_9","classes","text_1"],"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, s as H, u as me, w as pe } from "./VenueCalendar-
|
|
4
|
+
import { t as ce, s as H, u as me, w as pe } from "./VenueCalendar-DIQ8H0q7.js";
|
|
5
5
|
import "svelte/internal/flags/legacy";
|
|
6
6
|
import "svelte/transition";
|
|
7
7
|
import "svelte/easing";
|
|
@@ -191,4 +191,4 @@ function Ue(J, f) {
|
|
|
191
191
|
export {
|
|
192
192
|
Ue as default
|
|
193
193
|
};
|
|
194
|
-
//# sourceMappingURL=Success.legacy-
|
|
194
|
+
//# sourceMappingURL=Success.legacy-DHG9NwIq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Success.legacy-60HZ-mps.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 { formatDateTime } from '@getmicdrop/svelte-components';\n import { CheckmarkFilled } from 'carbon-icons-svelte';\n import { ACCENT, DARK } from '$lib/constants/colors.ts';\n\n let { data = {}, eventUrl = '', browseUrl = '/' } = $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 formatEventDateTime(dateTimeString) {\n if (!dateTimeString) return '';\n // Use event timezone if available, otherwise fall back to UTC\n const tz = event?.timeZone || 'UTC';\n return formatDateTime(dateTimeString, {\n weekday: 'short',\n hour12: true,\n timeZone: tz,\n });\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 = formatEventDateTime(\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 = formatEventDateTime(\n providedEventDateTime || event?.startDateTime\n );\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 = formatEventDateTime(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\n class=\"ticket-details\"\n class:fade-in={showDetails}\n aria-label=\"Order details\"\n >\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 .success-container {\n position: relative;\n min-height: 100vh;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.25rem;\n background: linear-gradient(\n 180deg,\n hsl(var(--bg-primary)) 0%,\n hsl(var(--bg-secondary)) 100%\n );\n\n &:where(.dark, .dark *) {\n background: linear-gradient(\n 180deg,\n hsl(var(--bg-primary)) 0%,\n hsl(var(--bg-primary)) 100%\n );\n }\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(\n 180deg,\n hsl(var(--muted)) 0%,\n hsl(var(--bg-primary)) 100%\n );\n border-radius: 8px 8px 0 0;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px color-mix(in srgb, black 20%, transparent);\n position: relative;\n z-index: 5;\n }\n\n .slot-inner {\n width: 80%;\n height: 4px;\n background: hsl(var(--bg-primary));\n border-radius: 2px;\n }\n\n /* Ticket */\n .ticket {\n width: 100%;\n background: hsl(var(--bg-primary));\n border-radius: 0 0 16px 16px;\n box-shadow: 0 8px 32px color-mix(in srgb, black 12%, transparent);\n overflow: hidden;\n transform: translateY(-100%);\n opacity: 0;\n transition:\n transform 0.8s cubic-bezier(0.34, 1.56, 0.64, 1),\n 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(\n 135deg,\n hsl(var(--accent-success)) 0%,\n hsl(var(--accent-success)) 100%\n );\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: hsl(var(--bg-primary));\n }\n\n .success-title {\n font-size: 1.5rem;\n line-height: 2rem;\n font-weight: 600;\n color: hsl(var(--text-primary));\n margin-bottom: 0.5rem;\n }\n\n .success-subtitle {\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: hsl(var(--text-secondary));\n margin: 0;\n }\n\n /* Ticket divider */\n .ticket-divider {\n position: relative;\n display: flex;\n align-items: center;\n margin: 0 -24px 24px;\n padding: 0 24px;\n }\n\n .divider-notch {\n width: 1rem;\n height: 1rem;\n border-radius: 9999px;\n position: absolute;\n background-color: hsl(var(--bg-primary));\n }\n\n .divider-notch.left {\n left: -8px;\n }\n\n .divider-notch.right {\n right: -8px;\n }\n\n .divider-line {\n flex: 1 1 0%;\n height: 0.125rem;\n background: repeating-linear-gradient(\n 90deg,\n hsl(var(--stroke-primary)) 0,\n hsl(var(--stroke-primary)) 8px,\n transparent 8px,\n transparent 16px\n );\n\n &:where(.dark, .dark *) {\n background: repeating-linear-gradient(\n 90deg,\n hsl(var(--text-secondary)) 0,\n hsl(var(--text-secondary)) 8px,\n transparent 8px,\n transparent 16px\n );\n }\n }\n\n /* Ticket details */\n .ticket-details {\n opacity: 0;\n transform: translateY(10px);\n transition:\n opacity 0.4s ease,\n transform 0.4s ease;\n }\n\n .ticket-details.fade-in {\n opacity: 1;\n transform: translateY(0);\n }\n\n .detail-row {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n border-bottom: 1px solid hsl(var(--stroke-primary) / 0.5);\n }\n\n .detail-row:last-child {\n border-bottom: 0;\n }\n\n .detail-label {\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 600;\n color: hsl(var(--text-tertiary));\n text-transform: uppercase;\n letter-spacing: 0.025em;\n }\n\n .detail-value {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 500;\n color: hsl(var(--text-primary));\n overflow-wrap: break-word;\n }\n\n .detail-value.order-id {\n color: hsl(var(--brand-primary));\n font-family: 'SF Mono', 'Consolas', monospace;\n }\n\n .detail-value.event-name {\n font-size: 1rem;\n line-height: 1.5rem;\n font-weight: 600;\n }\n\n /* Ticket footer */\n .ticket-footer {\n margin-top: 1.5rem;\n padding: 1rem;\n border-radius: 0.5rem;\n text-align: center;\n background-color: hsl(var(--bg-secondary) / 0.5);\n }\n\n .footer-text {\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: hsl(var(--text-secondary));\n margin: 0;\n }\n\n /* Ticket stub pattern */\n .ticket-stub {\n height: 1.5rem;\n background: linear-gradient(\n 90deg,\n transparent 0,\n transparent 8px,\n hsl(var(--stroke-primary) / 0.3) 8px,\n hsl(var(--stroke-primary) / 0.3) 16px\n );\n background-size: 16px 100%;\n }\n\n /* Navigation CTAs */\n .nav-ctas {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n margin-top: 1.5rem;\n opacity: 0;\n transform: translateY(10px);\n transition:\n opacity 0.4s ease 0.2s,\n transform 0.4s ease 0.2s;\n }\n\n .nav-ctas.fade-in {\n opacity: 1;\n transform: translateY(0);\n }\n\n .nav-link {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0.75rem 1rem;\n border-radius: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n text-decoration: none;\n transition:\n background-color 0.15s,\n color 0.15s;\n }\n\n .nav-link.primary {\n background: hsl(var(--brand-primary, 220 90% 56%));\n color: hsl(var(--text-on-primary, 0 0% 100%));\n }\n\n .nav-link.primary:hover {\n filter: brightness(0.95);\n }\n\n .nav-link.secondary {\n background-color: hsl(var(--bg-tertiary));\n color: hsl(var(--text-secondary));\n }\n\n .nav-link.secondary:hover {\n background-color: hsl(var(--bg-quaternary));\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","formatEventDateTime","dateTimeString","tz","formatDateTime","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":"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"}
|
|
1
|
+
{"version":3,"file":"Success.legacy-DHG9NwIq.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 { formatDateTime } from '@getmicdrop/svelte-components';\n import { CheckmarkFilled } from 'carbon-icons-svelte';\n import { ACCENT, DARK } from '$lib/constants/colors.ts';\n\n let { data = {}, eventUrl = '', browseUrl = '/' } = $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 formatEventDateTime(dateTimeString) {\n if (!dateTimeString) return '';\n // Use event timezone if available, otherwise fall back to UTC\n const tz = event?.timeZone || 'UTC';\n return formatDateTime(dateTimeString, {\n weekday: 'short',\n hour12: true,\n timeZone: tz,\n });\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 = formatEventDateTime(\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 = formatEventDateTime(\n providedEventDateTime || event?.startDateTime\n );\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 = formatEventDateTime(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\n class=\"ticket-details\"\n class:fade-in={showDetails}\n aria-label=\"Order details\"\n >\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 .success-container {\n position: relative;\n min-height: 100vh;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.25rem;\n background: linear-gradient(\n 180deg,\n hsl(var(--bg-primary)) 0%,\n hsl(var(--bg-secondary)) 100%\n );\n\n &:where(.dark, .dark *) {\n background: linear-gradient(\n 180deg,\n hsl(var(--bg-primary)) 0%,\n hsl(var(--bg-primary)) 100%\n );\n }\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(\n 180deg,\n hsl(var(--muted)) 0%,\n hsl(var(--bg-primary)) 100%\n );\n border-radius: 8px 8px 0 0;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px color-mix(in srgb, black 20%, transparent);\n position: relative;\n z-index: 5;\n }\n\n .slot-inner {\n width: 80%;\n height: 4px;\n background: hsl(var(--bg-primary));\n border-radius: 2px;\n }\n\n /* Ticket */\n .ticket {\n width: 100%;\n background: hsl(var(--bg-primary));\n border-radius: 0 0 16px 16px;\n box-shadow: 0 8px 32px color-mix(in srgb, black 12%, transparent);\n overflow: hidden;\n transform: translateY(-100%);\n opacity: 0;\n transition:\n transform 0.8s cubic-bezier(0.34, 1.56, 0.64, 1),\n 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(\n 135deg,\n hsl(var(--accent-success)) 0%,\n hsl(var(--accent-success)) 100%\n );\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: hsl(var(--bg-primary));\n }\n\n .success-title {\n font-size: 1.5rem;\n line-height: 2rem;\n font-weight: 600;\n color: hsl(var(--text-primary));\n margin-bottom: 0.5rem;\n }\n\n .success-subtitle {\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: hsl(var(--text-secondary));\n margin: 0;\n }\n\n /* Ticket divider */\n .ticket-divider {\n position: relative;\n display: flex;\n align-items: center;\n margin: 0 -24px 24px;\n padding: 0 24px;\n }\n\n .divider-notch {\n width: 1rem;\n height: 1rem;\n border-radius: 9999px;\n position: absolute;\n background-color: hsl(var(--bg-primary));\n }\n\n .divider-notch.left {\n left: -8px;\n }\n\n .divider-notch.right {\n right: -8px;\n }\n\n .divider-line {\n flex: 1 1 0%;\n height: 0.125rem;\n background: repeating-linear-gradient(\n 90deg,\n hsl(var(--stroke-primary)) 0,\n hsl(var(--stroke-primary)) 8px,\n transparent 8px,\n transparent 16px\n );\n\n &:where(.dark, .dark *) {\n background: repeating-linear-gradient(\n 90deg,\n hsl(var(--text-secondary)) 0,\n hsl(var(--text-secondary)) 8px,\n transparent 8px,\n transparent 16px\n );\n }\n }\n\n /* Ticket details */\n .ticket-details {\n opacity: 0;\n transform: translateY(10px);\n transition:\n opacity 0.4s ease,\n transform 0.4s ease;\n }\n\n .ticket-details.fade-in {\n opacity: 1;\n transform: translateY(0);\n }\n\n .detail-row {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n border-bottom: 1px solid hsl(var(--stroke-primary) / 0.5);\n }\n\n .detail-row:last-child {\n border-bottom: 0;\n }\n\n .detail-label {\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 600;\n color: hsl(var(--text-tertiary));\n text-transform: uppercase;\n letter-spacing: 0.025em;\n }\n\n .detail-value {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 500;\n color: hsl(var(--text-primary));\n overflow-wrap: break-word;\n }\n\n .detail-value.order-id {\n color: hsl(var(--brand-primary));\n font-family: 'SF Mono', 'Consolas', monospace;\n }\n\n .detail-value.event-name {\n font-size: 1rem;\n line-height: 1.5rem;\n font-weight: 600;\n }\n\n /* Ticket footer */\n .ticket-footer {\n margin-top: 1.5rem;\n padding: 1rem;\n border-radius: 0.5rem;\n text-align: center;\n background-color: hsl(var(--bg-secondary) / 0.5);\n }\n\n .footer-text {\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: hsl(var(--text-secondary));\n margin: 0;\n }\n\n /* Ticket stub pattern */\n .ticket-stub {\n height: 1.5rem;\n background: linear-gradient(\n 90deg,\n transparent 0,\n transparent 8px,\n hsl(var(--stroke-primary) / 0.3) 8px,\n hsl(var(--stroke-primary) / 0.3) 16px\n );\n background-size: 16px 100%;\n }\n\n /* Navigation CTAs */\n .nav-ctas {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n margin-top: 1.5rem;\n opacity: 0;\n transform: translateY(10px);\n transition:\n opacity 0.4s ease 0.2s,\n transform 0.4s ease 0.2s;\n }\n\n .nav-ctas.fade-in {\n opacity: 1;\n transform: translateY(0);\n }\n\n .nav-link {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0.75rem 1rem;\n border-radius: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n text-decoration: none;\n transition:\n background-color 0.15s,\n color 0.15s;\n }\n\n .nav-link.primary {\n background: hsl(var(--brand-primary, 220 90% 56%));\n color: hsl(var(--text-on-primary, 0 0% 100%));\n }\n\n .nav-link.primary:hover {\n filter: brightness(0.95);\n }\n\n .nav-link.secondary {\n background-color: hsl(var(--bg-tertiary));\n color: hsl(var(--text-secondary));\n }\n\n .nav-link.secondary:hover {\n background-color: hsl(var(--bg-quaternary));\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","formatEventDateTime","dateTimeString","tz","formatDateTime","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":"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"}
|