@getmicdrop/venue-calendar 3.8.4 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +700 -661
  2. package/dist/AirbnbSplitMain-BfddFqOQ.js +2201 -0
  3. package/dist/AirbnbSplitMain-BfddFqOQ.js.map +1 -0
  4. package/dist/{CarouselView.legacy-G433jD--.js → CarouselView.legacy-BKXwmB2P.js} +11 -10
  5. package/dist/CarouselView.legacy-BKXwmB2P.js.map +1 -0
  6. package/dist/CartView-iIEjDwFN.js +1667 -0
  7. package/dist/CartView-iIEjDwFN.js.map +1 -0
  8. package/dist/Checkout-Cu0D8mFn.js +743 -0
  9. package/dist/Checkout-Cu0D8mFn.js.map +1 -0
  10. package/dist/{Checkout.legacy-HODJd0ax.js → Checkout.legacy-C6V9HmUZ.js} +374 -359
  11. package/dist/Checkout.legacy-C6V9HmUZ.js.map +1 -0
  12. package/dist/CheckoutMain-B17znLe0.js +1403 -0
  13. package/dist/CheckoutMain-B17znLe0.js.map +1 -0
  14. package/dist/CheckoutTimer-BsI1r6lY.js +34 -0
  15. package/dist/CheckoutTimer-BsI1r6lY.js.map +1 -0
  16. package/dist/CollectionView-CQgKWQHT.js +142 -0
  17. package/dist/CollectionView-CQgKWQHT.js.map +1 -0
  18. package/dist/{CollectionView.legacy-CmNcGUzq.js → CollectionView.legacy-B8SDspBL.js} +25 -24
  19. package/dist/CollectionView.legacy-B8SDspBL.js.map +1 -0
  20. package/dist/EventDetailsView-XXl8aQJ9.js +1187 -0
  21. package/dist/EventDetailsView-XXl8aQJ9.js.map +1 -0
  22. package/dist/{FeaturedView.legacy-9h2qZMOt.js → FeaturedView.legacy-Dse2jnrt.js} +15 -15
  23. package/dist/FeaturedView.legacy-Dse2jnrt.js.map +1 -0
  24. package/dist/GalleryCard-CDaYD8XI.js +92 -0
  25. package/dist/GalleryCard-CDaYD8XI.js.map +1 -0
  26. package/dist/{GalleryView.legacy-DiA_IVST.js → GalleryView.legacy-U_ripo22.js} +18 -17
  27. package/dist/GalleryView.legacy-U_ripo22.js.map +1 -0
  28. package/dist/{GroupedListView.legacy-Bo-kep9X.js → GroupedListView.legacy-BrickaeB.js} +25 -25
  29. package/dist/GroupedListView.legacy-BrickaeB.js.map +1 -0
  30. package/dist/Heading-AFd3o0xt.js +44 -0
  31. package/dist/Heading-AFd3o0xt.js.map +1 -0
  32. package/dist/OrderSummarySkeleton-dDKUH741.js +16 -0
  33. package/dist/OrderSummarySkeleton-dDKUH741.js.map +1 -0
  34. package/dist/SeriesPage-CNoI4R4M.js +56 -0
  35. package/dist/SeriesPage-CNoI4R4M.js.map +1 -0
  36. package/dist/SeriesPage.legacy-Cugebbf0.js +195 -0
  37. package/dist/SeriesPage.legacy-Cugebbf0.js.map +1 -0
  38. package/dist/Success-BQAu7uZn.js +715 -0
  39. package/dist/Success-BQAu7uZn.js.map +1 -0
  40. package/dist/Success.legacy-DSmTsdB_.js +195 -0
  41. package/dist/Success.legacy-DSmTsdB_.js.map +1 -0
  42. package/dist/Text-CXR2fhx6.js +54 -0
  43. package/dist/Text-CXR2fhx6.js.map +1 -0
  44. package/dist/{VenueCalendar-DkyugLs1.js → VenueCalendar-DzTrcN8J.js} +11242 -21624
  45. package/dist/VenueCalendar-DzTrcN8J.js.map +1 -0
  46. package/dist/ViewTicketsEmbed-DOTq6kSz.js +2038 -0
  47. package/dist/ViewTicketsEmbed-DOTq6kSz.js.map +1 -0
  48. package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js +7 -0
  49. package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js.map +1 -0
  50. package/dist/api/api.cjs +1 -1
  51. package/dist/api/api.cjs.map +1 -1
  52. package/dist/api/api.mjs +511 -279
  53. package/dist/api/api.mjs.map +1 -1
  54. package/dist/api/client.d.ts +3 -33
  55. package/dist/api/cta.d.ts +38 -0
  56. package/dist/api/events.d.ts +3 -1
  57. package/dist/api/gift-cards.d.ts +88 -0
  58. package/dist/api/index.d.ts +6 -0
  59. package/dist/api/types.d.ts +353 -349
  60. package/dist/api/waitlist.d.ts +23 -0
  61. package/dist/colors-BZoMuXdh.js.map +1 -1
  62. package/dist/labels-BPzDu-3y.js +1351 -0
  63. package/dist/labels-BPzDu-3y.js.map +1 -0
  64. package/dist/seo/HostSeoController.d.ts +9 -1
  65. package/dist/seo/seo.cjs +1 -1
  66. package/dist/seo/seo.cjs.map +1 -1
  67. package/dist/seo/seo.mjs +53 -50
  68. package/dist/seo/seo.mjs.map +1 -1
  69. package/dist/seo/types.d.ts +137 -136
  70. package/dist/transform-CZI_M7Wk.js +218 -0
  71. package/dist/transform-CZI_M7Wk.js.map +1 -0
  72. package/dist/types/index.d.ts +387 -387
  73. package/dist/venue-calendar.css +1 -1
  74. package/dist/venue-calendar.es.js +36 -28
  75. package/dist/venue-calendar.es.js.map +1 -1
  76. package/dist/venue-calendar.iife.js +43 -43
  77. package/dist/venue-calendar.iife.js.map +1 -1
  78. package/dist/venue-calendar.umd.js +40 -40
  79. package/dist/venue-calendar.umd.js.map +1 -1
  80. package/package.json +44 -6
  81. package/src/lib/theme.js +13 -0
  82. package/dist/CarouselView.legacy-G433jD--.js.map +0 -1
  83. package/dist/Checkout.legacy-HODJd0ax.js.map +0 -1
  84. package/dist/CollectionView.legacy-CmNcGUzq.js.map +0 -1
  85. package/dist/FeaturedView.legacy-9h2qZMOt.js.map +0 -1
  86. package/dist/GalleryView.legacy-DiA_IVST.js.map +0 -1
  87. package/dist/GroupedListView.legacy-Bo-kep9X.js.map +0 -1
  88. package/dist/SeriesPage.legacy-BjDBPDcq.js +0 -190
  89. package/dist/SeriesPage.legacy-BjDBPDcq.js.map +0 -1
  90. package/dist/Success.legacy-D86LAPHq.js +0 -194
  91. package/dist/Success.legacy-D86LAPHq.js.map +0 -1
  92. package/dist/VenueCalendar-DkyugLs1.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectionView.legacy-B8SDspBL.js","sources":["../src/components/Calendar/GroupedListView.svelte","../src/components/Views/CollectionView.legacy.svelte"],"sourcesContent":["<script>\n import { onMount, onDestroy } from \"svelte\";\n import { PLACEHOLDER_IMAGE } from \"$lib/utils/constants.js\";\n import { getDateParts, formatFullDate, formatEventTime } from \"$lib/utils/datetime.js\";\n import { getBrowseStatus, isEventUnavailable, filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\n import ScarcityBadge from \"../ScarcityBadge.svelte\";\n\n let {\n events = [],\n initialCount = 10,\n loadMoreCount = 10,\n showDateColumn = true,\n filterFutureOnly = true,\n oneventClick,\n labels = {},\n } = $props();\n\n let displayedCount = $state(initialCount);\n let loadMoreTrigger = $state();\n let observer;\n\n // Filter to today and future (if enabled), then group by date\n let filteredEvents = $derived(filterFutureOnly ? filterTodayAndFuture(events) : events);\n let groupedEvents = $derived(groupEventsByDate(filteredEvents.slice(0, displayedCount)));\n let hasMore = $derived(displayedCount < filteredEvents.length);\n\n function loadMore() {\n displayedCount += loadMoreCount;\n }\n\n onMount(() => {\n observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting && hasMore) {\n loadMore();\n }\n },\n { rootMargin: '100px' }\n );\n\n if (loadMoreTrigger) {\n observer.observe(loadMoreTrigger);\n }\n });\n\n onDestroy(() => {\n if (observer) {\n observer.disconnect();\n }\n });\n\n // Re-observe when trigger element changes\n $effect(() => {\n if (observer && loadMoreTrigger) {\n observer.disconnect();\n observer.observe(loadMoreTrigger);\n }\n });\n\n function groupEventsByDate(eventList) {\n const groups = {};\n\n for (const event of eventList) {\n const dateKey = event.date; // YYYY-MM-DD format\n if (!groups[dateKey]) {\n groups[dateKey] = [];\n }\n groups[dateKey].push(event);\n }\n\n // Convert to array sorted by date\n return Object.entries(groups)\n .sort(([a], [b]) => new Date(a) - new Date(b))\n .map(([date, events]) => ({\n date,\n events,\n formattedDate: formatGroupDate(events),\n }));\n }\n\n function formatGroupDate(events) {\n // Use the first event in the group to get timezone-aware date parts\n const firstEvent = events[0];\n if (!firstEvent?.startDateTime) return { month: '', day: '', weekday: '' };\n const parts = getDateParts(firstEvent.startDateTime, firstEvent.timeZone);\n return {\n month: parts.month.toUpperCase(),\n day: String(parts.date).padStart(2, '0'),\n weekday: parts.day.toUpperCase(),\n };\n }\n\n function handleEventClick(event) {\n oneventClick?.(event);\n }\n\n function handleKeydown(e, event) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleEventClick(event);\n }\n }\n</script>\n\n<section class=\"flex flex-col gap-0\" class:no-date-column={!showDateColumn} aria-label={labels.eventListings || 'Event listings'}>\n <h2 class=\"sr-only\">{labels.eventListGroupedByDate || 'Event list grouped by date'}</h2>\n {#each groupedEvents as group}\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}\">\n <!-- Date Column -->\n {#if showDateColumn}\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\">\n <span class=\"text-xs font-semibold text-text-secondary uppercase tracking-tight\">{group.formattedDate.month}</span>\n <span class=\"text-2xl max-sm:text-lg font-bold text-text-primary leading-tight\">{group.formattedDate.day}</span>\n <span class=\"text-xs font-semibold text-text-secondary uppercase tracking-tight\">{group.formattedDate.weekday}</span>\n </div>\n {/if}\n\n <!-- Events Column -->\n <ul class=\"events-column flex-1 flex flex-col list-none p-0 m-0\">\n {#each group.events as event, eventIndex}\n {@const eventStatus = getBrowseStatus(event)}\n {@const isUnavailable = isEventUnavailable(eventStatus)}\n <li class=\"list-none\">\n <div\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\"\n class:row-unavailable={isUnavailable}\n onclick={() => handleEventClick(event)}\n onkeydown={(e) => handleKeydown(e, event)}\n tabindex=\"0\"\n role=\"button\"\n aria-label={`${event.name} on ${event.startDateTime ? formatFullDate(event.startDateTime, event.timeZone) : group.date} at ${event.startDateTime ? formatEventTime(event.startDateTime, event.timeZone) : ''}, ${eventStatus?.text || event.status || labels.statusOnSale || 'On Sale'}. ${labels.pressEnterToView || 'Press Enter to view details'}`}\n >\n <!-- Event Image -->\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\">\n <img\n src={event.image || PLACEHOLDER_IMAGE}\n alt=\"\"\n class=\"w-full h-full object-contain\"\n loading=\"lazy\"\n />\n </div>\n\n <!-- Event Details (visually shown but also in aria-label, so hide from SR) -->\n <div class=\"flex-1 flex flex-col gap-1.5 min-w-0\" aria-hidden=\"true\">\n <h3 class=\"text-lg max-sm:text-sm font-semibold text-text-primary m-0 leading-snug\">{event.name}</h3>\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>\n {#if event.description}\n <p class=\"event-description text-sm text-text-secondary mt-1.5 mb-0 line-clamp-2 max-sm:hidden\">{event.description}</p>\n {/if}\n </div>\n\n <!-- Status / Scarcity Badge -->\n <div class=\"flex items-start pt-0.5\" aria-hidden=\"true\">\n {#if eventStatus}\n <span class=\"status-badge status-{eventStatus.type}\">{eventStatus.text}</span>\n {:else if event.ticketsTotal > 0 || event.ticketsRemaining === 0}\n <ScarcityBadge\n remaining={event.ticketsRemaining ?? 0}\n total={event.ticketsTotal ?? 0}\n context=\"browse\"\n {labels}\n />\n {/if}\n </div>\n </div>\n </li>\n {/each}\n </ul>\n </div>\n {/each}\n\n <!-- Infinite scroll trigger -->\n {#if hasMore}\n <div bind:this={loadMoreTrigger} class=\"flex justify-center items-center p-6 text-text-secondary\" role=\"status\" aria-live=\"polite\">\n <span class=\"text-sm\">{labels.loadingMoreEvents || 'Loading more events...'}</span>\n </div>\n {/if}\n</section>\n\n<style>\n /* When no date column, remove left border styling */\n .no-date-column .date-group {\n border-bottom: 0;\n }\n\n .no-date-column .events-column {\n border-left: 0;\n }\n\n .event-description {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n /* Unavailable row dimming */\n .row-unavailable {\n opacity: 0.6;\n }\n\n .row-unavailable img {\n filter: grayscale(0.5);\n }\n\n /* Status badges -- distinct visual treatments matching gallery cards */\n .status-badge {\n display: inline-flex;\n align-items: center;\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 700;\n padding: 0.25rem 0.625rem;\n border-radius: 0.25rem;\n white-space: nowrap;\n letter-spacing: 0.02em;\n }\n\n .status-cancelled {\n background-color: hsl(var(--accent-danger) / 10%);\n color: hsl(var(--accent-danger));\n text-decoration: line-through;\n text-decoration-thickness: 1.5px;\n\n \n }\n\n .status-past {\n background-color: hsl(var(--bg-tertiary));\n color: hsl(var(--text-tertiary));\n\n \n }\n\n .status-sold_out {\n background-color: hsl(var(--accent-danger) / 10%);\n color: hsl(var(--accent-danger));\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-size: 0.65rem;\n\n \n }\n\n .status-sales_ended {\n background-color: hsl(var(--bg-tertiary));\n color: hsl(var(--text-tertiary));\n border: 1px solid hsl(var(--stroke-primary));\n\n \n }\n\n .status-coming_soon {\n background-color: hsl(var(--brand-primary) / 15%);\n color: hsl(var(--brand-primary));\n\n \n }\n\n /* Reduced motion */\n @media (prefers-reduced-motion: reduce) {\n .event-row {\n transition: none;\n }\n }\n\n /* Screen reader only text */\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n</style>\n","<script>\n import { onMount, onDestroy } from 'svelte';\n import { fetchPublicCollection } from '../../lib/api/events.ts';\n import { getImageUrl } from '$lib/utils/utils.js';\n import { EmptyState } from '@getmicdrop/svelte-components';\n import GalleryCard from '../Calendar/GalleryCard.svelte';\n import GroupedListView from '../Calendar/GroupedListView.svelte';\n import SkeletonLoader from '../SkeletonLoader/SkeletonLoader.svelte';\n\n let {\n collectionId,\n organizationId = '',\n onNavigateToEvent,\n password: initialPassword = undefined,\n displayMode: initialDisplayMode = 'gallery',\n showViewSwitcher = true,\n labels = {},\n } = $props();\n\n let collection = $state(null);\n let isLoading = $state(true);\n let error = $state(null);\n let isMounted = $state(false);\n let passwordRequired = $state(false);\n let passwordInput = $state('');\n let passwordError = $state(false);\n let activeDisplayMode = $state(initialDisplayMode);\n\n // Transform collection events into the shape GalleryCard expects\n function toGalleryEvent(event) {\n return {\n id: event.id,\n name: event.title || event.name || '',\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\n image: event.image ? getImageUrl(event.image) : '',\n timeline: event.startDateTime ? formatTimeline(event.startDateTime) : '',\n status: event.status || 'on_sale',\n slug: event.slug || '',\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\n ticketsTotal: event.ticketsTotal ?? event.capacity,\n };\n }\n\n // Transform collection events into the shape GroupedListView expects\n function toListEvent(event) {\n return {\n id: event.id,\n name: event.title || event.name || '',\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\n startDateTime: event.startDateTime || '',\n image: event.image ? getImageUrl(event.image) : '',\n status: event.status || 'on_sale',\n slug: event.slug || '',\n description: event.description || '',\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\n ticketsTotal: event.ticketsTotal ?? event.capacity,\n };\n }\n\n function formatTimeline(iso) {\n if (!iso) return '';\n const date = new Date(iso);\n return date.toLocaleTimeString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n });\n }\n\n let displayEvents = $derived(\n collection ? sortByStartTime(collection.events || []) : []\n );\n\n let galleryEvents = $derived(displayEvents.map(toGalleryEvent));\n let listEvents = $derived(displayEvents.map(toListEvent));\n\n // Only show view switcher when there are 2+ events\n let canShowSwitcher = $derived(showViewSwitcher && displayEvents.length >= 2);\n\n function sortByStartTime(events) {\n return [...events].sort((a, b) => {\n if (!a.startDateTime && !b.startDateTime) return 0;\n if (!a.startDateTime) return 1;\n if (!b.startDateTime) return -1;\n return new Date(a.startDateTime).getTime() - new Date(b.startDateTime).getTime();\n });\n }\n\n function handleEventClick(galleryEvent) {\n if (onNavigateToEvent) {\n const eventData = galleryEvent.detail || galleryEvent;\n onNavigateToEvent(eventData.id, eventData.slug || '');\n }\n }\n\n async function loadCollection(pwd) {\n if (!isMounted) return;\n if (!collectionId) {\n error = labels.noCollectionIdProvided || 'No collection ID provided';\n isLoading = false;\n return;\n }\n\n isLoading = true;\n error = null;\n passwordError = false;\n\n try {\n const data = await fetchPublicCollection(collectionId, pwd);\n if (!isMounted) return;\n\n if (data) {\n // Check if the response indicates password is required\n if (data.passwordRequired || data.error?.code === 'PASSWORD_REQUIRED') {\n passwordRequired = true;\n isLoading = false;\n return;\n }\n collection = data;\n passwordRequired = false;\n } else {\n // A null response after providing a password likely means wrong password\n if (pwd) {\n passwordRequired = true;\n passwordError = true;\n isLoading = false;\n return;\n }\n error = labels.failedToLoadCollection || 'Failed to load collection';\n }\n } catch (err) {\n if (isMounted) {\n // Check for password-related error responses\n const msg = err.message || '';\n if (msg.includes('401') || msg.includes('403') || msg.includes('password')) {\n passwordRequired = true;\n } else {\n error = msg || 'Failed to load collection';\n }\n }\n } finally {\n if (isMounted) {\n isLoading = false;\n }\n }\n }\n\n function handlePasswordSubmit(e) {\n e.preventDefault();\n if (!passwordInput.trim()) return;\n loadCollection(passwordInput);\n }\n\n onMount(async () => {\n isMounted = true;\n await loadCollection(initialPassword);\n });\n\n onDestroy(() => {\n isMounted = false;\n });\n</script>\n\n<div class=\"collection-view\">\n {#if isLoading}\n <SkeletonLoader type=\"gallery\" />\n {:else if passwordRequired}\n <div class=\"password-container\">\n <div class=\"password-card\">\n <h2 class=\"password-title\">{labels.collectionPrivateTitle || 'This collection is private'}</h2>\n <p class=\"password-description\">{labels.collectionPrivateDescription || 'Please enter the password to view this collection.'}</p>\n <form onsubmit={handlePasswordSubmit} class=\"password-form\">\n <input\n type=\"password\"\n bind:value={passwordInput}\n placeholder={labels.enterPassword || \"Enter password\"}\n class=\"password-input\"\n class:password-input-error={passwordError}\n />\n {#if passwordError}\n <p class=\"password-error-text\">{labels.incorrectPassword || 'Incorrect password. Please try again.'}</p>\n {/if}\n <button type=\"submit\" class=\"password-submit\">{labels.viewCollection || 'View Collection'}</button>\n </form>\n </div>\n </div>\n {:else if error}\n <div class=\"error-container\">\n <p class=\"error-text\">{labels.errorPrefix || 'Error:'} {error}</p>\n </div>\n {:else if collection}\n <!-- Cover Image with Blur -->\n {#if collection.coverImage}\n {@const imageUrl = getImageUrl(collection.coverImage)}\n <div class=\"cover-image\">\n <div class=\"cover-blur\" style=\"background-image: url({imageUrl})\"></div>\n <img src={imageUrl} alt={collection.collectionTitle} />\n </div>\n {/if}\n\n <!-- Collection Header -->\n <div class=\"collection-header\">\n <h1 class=\"collection-title\">{collection.collectionTitle}</h1>\n {#if collection.summary}\n <p class=\"collection-summary\">{collection.summary}</p>\n {/if}\n {#if collection.description}\n <div class=\"collection-description\">{collection.description}</div>\n {/if}\n </div>\n\n <!-- Events Section -->\n <div class=\"events-section\">\n <div class=\"events-section-header\">\n <h2 class=\"events-heading\">Events ({displayEvents.length})</h2>\n\n {#if canShowSwitcher}\n <div class=\"view-switcher\" role=\"group\" aria-label={labels.viewOptions || \"Display mode\"}>\n <button\n type=\"button\"\n class=\"view-switcher-btn\"\n class:view-switcher-btn-active={activeDisplayMode === 'gallery'}\n onclick={() => activeDisplayMode = 'gallery'}\n aria-label={labels.galleryView || \"Gallery view\"}\n aria-pressed={activeDisplayMode === 'gallery'}\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect>\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect>\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect>\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect>\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"view-switcher-btn\"\n class:view-switcher-btn-active={activeDisplayMode === 'list'}\n onclick={() => activeDisplayMode = 'list'}\n aria-label={labels.listView || \"List view\"}\n aria-pressed={activeDisplayMode === 'list'}\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\n <line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\n <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\n <line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line>\n <line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n {/if}\n </div>\n\n {#if displayEvents.length === 0}\n <EmptyState\n message={labels.noUpcomingEvents || \"No upcoming events\"}\n subtext={labels.noUpcomingEventsSubtext || \"There are no events in this collection right now. Check back soon!\"}\n />\n {:else if activeDisplayMode === 'list'}\n <GroupedListView\n events={listEvents}\n filterFutureOnly={false}\n oneventClick={handleEventClick}\n />\n {:else}\n <div class=\"events-grid\">\n {#each galleryEvents as event (event.id)}\n <GalleryCard {event} oneventClick={handleEventClick} />\n {/each}\n </div>\n {/if}\n </div>\n {/if}\n</div>\n\n<style>\n .collection-view {\n width: 100%;\n max-width: 64rem;\n margin-left: auto;\n margin-right: auto;\n padding-left: 1rem;\n padding-right: 1rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .error-container,\n .password-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 50vh;\n text-align: center;\n }\n\n .error-text {\n color: hsl(var(--status-sold-out, 0 72% 51%));\n }\n\n /* Password gate */\n .password-card {\n border-radius: 0.5rem;\n padding: 2rem;\n max-width: 24rem;\n width: 100%;\n background: hsl(var(--surface-primary, 0 0% 100%));\n box-shadow: 0 2px 10px color-mix(in srgb, black 10%, transparent);\n }\n\n .password-title {\n font-size: 1.25rem;\n line-height: 1.75rem;\n font-weight: 700;\n margin-bottom: 0.5rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .password-description {\n font-size: 0.875rem;\n line-height: 1.25rem;\n margin-bottom: 1.5rem;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .password-form {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n }\n\n .password-input {\n width: 100%;\n padding: 0.5rem 0.75rem;\n border-radius: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 85%));\n color: hsl(var(--text-primary, 0 0% 10%));\n background: hsl(var(--surface-primary, 0 0% 100%));\n }\n\n .password-input:focus {\n outline: none;\n border-color: hsl(var(--brand-primary, 220 90% 56%));\n box-shadow: 0 0 0 2px hsl(var(--brand-primary, 220 90% 56%) / 20%);\n }\n\n .password-input-error {\n border-color: hsl(var(--status-sold-out, 0 72% 51%));\n }\n\n .password-error-text {\n font-size: 0.75rem;\n line-height: 1rem;\n color: hsl(var(--status-sold-out, 0 72% 51%));\n }\n\n .password-submit {\n padding: 0.5rem 1rem;\n border-radius: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 600;\n background: hsl(var(--brand-primary, 220 90% 56%));\n color: hsl(var(--text-on-primary, 0 0% 100%));\n }\n\n .password-submit:hover {\n filter: brightness(0.95);\n }\n\n /* Cover Image with blur background */\n .cover-image {\n position: relative;\n width: 100%;\n overflow: hidden;\n border-radius: 0.5rem;\n margin-bottom: 2rem;\n height: 350px;\n }\n\n .cover-blur {\n position: absolute;\n inset: 0;\n background-size: cover;\n background-position: center;\n filter: blur(24px) saturate(1.2);\n transform: scale(1.15);\n }\n\n .cover-image img {\n position: relative;\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n /* Header */\n .collection-header {\n margin-bottom: 2rem;\n }\n\n .collection-title {\n font-size: 1.875rem;\n line-height: 2.25rem;\n font-weight: 700;\n margin-bottom: 0.5rem;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .collection-summary {\n font-size: 1.125rem;\n line-height: 1.75rem;\n margin-bottom: 1rem;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .collection-description {\n line-height: 1.625;\n color: hsl(var(--text-secondary, 0 0% 35%));\n }\n\n /* Events Section */\n .events-section {\n margin-bottom: 2rem;\n }\n\n .events-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n }\n\n .events-heading {\n font-size: 1.5rem;\n line-height: 2rem;\n font-weight: 700;\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n /* View Switcher */\n .view-switcher {\n display: flex;\n gap: 0.25rem;\n padding: 0.25rem;\n border-radius: 0.5rem;\n background: hsl(var(--surface-secondary, 0 0% 96%));\n }\n\n .view-switcher-btn {\n padding: 0.375rem;\n border-radius: 0.375rem;\n transition: color 0.15s;\n color: hsl(var(--text-secondary, 0 0% 45%));\n }\n\n .view-switcher-btn:hover {\n color: hsl(var(--text-primary, 0 0% 10%));\n }\n\n .view-switcher-btn-active {\n color: hsl(var(--text-primary, 0 0% 10%));\n background: hsl(var(--surface-primary, 0 0% 100%));\n box-shadow: 0 1px 2px color-mix(in srgb, black 8%, transparent);\n }\n\n .events-grid {\n display: grid;\n gap: 1.5rem;\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\n }\n\n /* Responsive */\n @media (width <= 640px) {\n .cover-image {\n height: 250px;\n }\n\n .collection-title {\n font-size: 1.5rem;\n line-height: 2rem;\n }\n\n .events-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n @media (width <= 400px) {\n .events-grid {\n grid-template-columns: 1fr;\n }\n }\n</style>\n"],"names":["events","$","$$props","initialCount","loadMoreCount","showDateColumn","filterFutureOnly","labels","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","h2","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_6","consequent_1","div_5","span_3","root_5","text_7","ScarcityBadge","$$anchor","consequent_2","consequent_3","classes_1","$0","PLACEHOLDER_IMAGE","text_4","formatFullDate","formatEventTime","div_6","root_7","span_4","$$value","consequent_4","classes","initialPassword","initialDisplayMode","showViewSwitcher","collection","isLoading","error","isMounted","passwordRequired","passwordInput","passwordError","activeDisplayMode","toGalleryEvent","getImageUrl","formatTimeline","toListEvent","iso","displayEvents","sortByStartTime","galleryEvents","listEvents","canShowSwitcher","galleryEvent","eventData","loadCollection","pwd","data","fetchPublicCollection","err","msg","handlePasswordSubmit","SkeletonLoader","form","input","p_1","button","p_2","imageUrl","root_6","node_2","h1","p_3","consequent_5","div_7","root_8","consequent_6","div_8","div_9","h2_1","div_10","root_9","button_1","button_2","classes_2","consequent_7","EmptyState","GroupedListView","div_11","root_12","GalleryCard","consequent_8","consequent_9","alternate","text_5","text_8","consequent_10"],"mappings":"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"}