@getmicdrop/venue-calendar 4.0.80 → 4.0.82

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 (117) hide show
  1. package/README.md +173 -128
  2. package/dist/{CarouselView.legacy-D2EY3K5p.js → CarouselView.legacy-DAixPl6l.js} +3 -3
  3. package/dist/{CarouselView.legacy-D2EY3K5p.js.map → CarouselView.legacy-DAixPl6l.js.map} +1 -1
  4. package/dist/{CartView-CXsAlVHs.js → CartView-CsdqWB24.js} +277 -280
  5. package/dist/CartView-CsdqWB24.js.map +1 -0
  6. package/dist/Checkout-B15JygVy.js +1673 -0
  7. package/dist/Checkout-B15JygVy.js.map +1 -0
  8. package/dist/{Checkout-Bj85hSlQ.js → Checkout-CUwOrErt.js} +69 -73
  9. package/dist/Checkout-CUwOrErt.js.map +1 -0
  10. package/dist/{Checkout.legacy-D4Uh3sQB.js → Checkout.legacy-CrFgAYYe.js} +77 -81
  11. package/dist/{Checkout.legacy-D4Uh3sQB.js.map → Checkout.legacy-CrFgAYYe.js.map} +1 -1
  12. package/dist/CheckoutTimer-qLOtPDt3.js +141 -0
  13. package/dist/CheckoutTimer-qLOtPDt3.js.map +1 -0
  14. package/dist/CollectionView-D2bRelLR.js +338 -0
  15. package/dist/CollectionView-D2bRelLR.js.map +1 -0
  16. package/dist/{CollectionView.legacy-CsBYjvZv.js → CollectionView.legacy-DLb5fzi-.js} +25 -28
  17. package/dist/{CollectionView.legacy-CsBYjvZv.js.map → CollectionView.legacy-DLb5fzi-.js.map} +1 -1
  18. package/dist/Event-DZpU-Ec1.js +2240 -0
  19. package/dist/Event-DZpU-Ec1.js.map +1 -0
  20. package/dist/EventPage-CL0yuKWZ.js +577 -0
  21. package/dist/EventPage-CL0yuKWZ.js.map +1 -0
  22. package/dist/{EventPage.legacy-DDVZNT-7.js → EventPage.legacy-EujdNc3A.js} +408 -411
  23. package/dist/{EventPage.legacy-DDVZNT-7.js.map → EventPage.legacy-EujdNc3A.js.map} +1 -1
  24. package/dist/{FeaturedView.legacy-BfOfYXRN.js → FeaturedView.legacy-CbLBD-tn.js} +19 -19
  25. package/dist/{FeaturedView.legacy-BfOfYXRN.js.map → FeaturedView.legacy-CbLBD-tn.js.map} +1 -1
  26. package/dist/{GalleryCard-CZkN5_Jb.js → GalleryCard-BcIcYghD.js} +14 -14
  27. package/dist/{GalleryCard-CZkN5_Jb.js.map → GalleryCard-BcIcYghD.js.map} +1 -1
  28. package/dist/{GalleryView.legacy-CziaM40i.js → GalleryView.legacy-XpQUg-5_.js} +3 -3
  29. package/dist/{GalleryView.legacy-CziaM40i.js.map → GalleryView.legacy-XpQUg-5_.js.map} +1 -1
  30. package/dist/{GroupedListView.legacy-CPy5md80.js → GroupedListView.legacy-qvwIV5Qm.js} +18 -18
  31. package/dist/{GroupedListView.legacy-CPy5md80.js.map → GroupedListView.legacy-qvwIV5Qm.js.map} +1 -1
  32. package/dist/Heading-5CT9Nk0b.js +81 -0
  33. package/dist/Heading-5CT9Nk0b.js.map +1 -0
  34. package/dist/ModalHeader-CGaXzdcs.js +22 -0
  35. package/dist/ModalHeader-CGaXzdcs.js.map +1 -0
  36. package/dist/OrderSummarySkeleton-pqfhjvKT.js +632 -0
  37. package/dist/OrderSummarySkeleton-pqfhjvKT.js.map +1 -0
  38. package/dist/{ScarcityBadge-Bungh7jy.js → ScarcityBadge-BkRFHRif.js} +24 -28
  39. package/dist/{ScarcityBadge-Bungh7jy.js.map → ScarcityBadge-BkRFHRif.js.map} +1 -1
  40. package/dist/{SeriesPage-BzyObY3_.js → SeriesPage-NWCA_Aez.js} +17 -21
  41. package/dist/{SeriesPage-BzyObY3_.js.map → SeriesPage-NWCA_Aez.js.map} +1 -1
  42. package/dist/{SeriesPage.legacy-BA00IzDL.js → SeriesPage.legacy-BXSwM5jV.js} +70 -74
  43. package/dist/{SeriesPage.legacy-BA00IzDL.js.map → SeriesPage.legacy-BXSwM5jV.js.map} +1 -1
  44. package/dist/{Success-NB1gahZr.js → Success-B4CM_cy1.js} +186 -175
  45. package/dist/{Success-NB1gahZr.js.map → Success-B4CM_cy1.js.map} +1 -1
  46. package/dist/{Success.legacy-D6cvUMzi.js → Success.legacy-BWAmPmZz.js} +58 -62
  47. package/dist/{Success.legacy-D6cvUMzi.js.map → Success.legacy-BWAmPmZz.js.map} +1 -1
  48. package/dist/Text-WY42WIKI.js +158 -0
  49. package/dist/Text-WY42WIKI.js.map +1 -0
  50. package/dist/{VenueCalendar-CISH7WGT.js → VenueCalendar-DMSeDRSN.js} +8138 -22881
  51. package/dist/VenueCalendar-DMSeDRSN.js.map +1 -0
  52. package/dist/ViewTicketsEmbed-AlVzNvxE.js +2081 -0
  53. package/dist/ViewTicketsEmbed-AlVzNvxE.js.map +1 -0
  54. package/dist/__SKIP_NAVIGATION__-CmipjatL.js +18 -0
  55. package/dist/__SKIP_NAVIGATION__-CmipjatL.js.map +1 -0
  56. package/dist/api/api.cjs +1 -1
  57. package/dist/api/api.cjs.map +1 -1
  58. package/dist/api/api.mjs +482 -374
  59. package/dist/api/api.mjs.map +1 -1
  60. package/dist/api/cta.d.ts +2 -10
  61. package/dist/api/transformers/address.d.ts +18 -0
  62. package/dist/api/transformers/cart.d.ts +19 -0
  63. package/dist/api/transformers/collection.d.ts +12 -0
  64. package/dist/api/transformers/event.d.ts +50 -1
  65. package/dist/api/transformers/giftCard.d.ts +11 -0
  66. package/dist/api/transformers/index.d.ts +10 -3
  67. package/dist/api/transformers/performer.d.ts +8 -0
  68. package/dist/api/transformers/series.d.ts +12 -0
  69. package/dist/api/types.d.ts +423 -383
  70. package/dist/api-ChzBkXfo.js +6 -0
  71. package/dist/{api-BV4wcElQ.js.map → api-ChzBkXfo.js.map} +1 -1
  72. package/dist/colors-CmP-sSZD.js.map +1 -1
  73. package/dist/{data-toggle-store.svelte-DU0VWdcf.js → data-toggle-store.svelte-CtW4s3Vw.js} +6 -6
  74. package/dist/{data-toggle-store.svelte-DU0VWdcf.js.map → data-toggle-store.svelte-CtW4s3Vw.js.map} +1 -1
  75. package/dist/index-BsWecoW1.js +63 -0
  76. package/dist/index-BsWecoW1.js.map +1 -0
  77. package/dist/labels-BB1JG19g.js +966 -0
  78. package/dist/labels-BB1JG19g.js.map +1 -0
  79. package/dist/transform-BlXf-shc.js +276 -0
  80. package/dist/transform-BlXf-shc.js.map +1 -0
  81. package/dist/types/index.d.ts +45 -0
  82. package/dist/venue-calendar.css +1 -1
  83. package/dist/venue-calendar.es.js +31 -37
  84. package/dist/venue-calendar.es.js.map +1 -1
  85. package/dist/venue-calendar.iife.js +40 -107
  86. package/dist/venue-calendar.iife.js.map +1 -1
  87. package/dist/venue-calendar.umd.js +38 -125
  88. package/dist/venue-calendar.umd.js.map +1 -1
  89. package/package.json +170 -168
  90. package/dist/CartView-CXsAlVHs.js.map +0 -1
  91. package/dist/Checkout-BPAkGlf6.js +0 -1531
  92. package/dist/Checkout-BPAkGlf6.js.map +0 -1
  93. package/dist/Checkout-Bj85hSlQ.js.map +0 -1
  94. package/dist/CheckoutTimer-CSc35x4t.js +0 -35
  95. package/dist/CheckoutTimer-CSc35x4t.js.map +0 -1
  96. package/dist/CollectionView-BitCEQzn.js +0 -148
  97. package/dist/CollectionView-BitCEQzn.js.map +0 -1
  98. package/dist/Event-BAKC5X6r.js +0 -1910
  99. package/dist/Event-BAKC5X6r.js.map +0 -1
  100. package/dist/EventPage-DxiAuBVc.js +0 -336
  101. package/dist/EventPage-DxiAuBVc.js.map +0 -1
  102. package/dist/Heading-AFd3o0xt.js +0 -44
  103. package/dist/Heading-AFd3o0xt.js.map +0 -1
  104. package/dist/OrderSummarySkeleton-dDKUH741.js +0 -16
  105. package/dist/OrderSummarySkeleton-dDKUH741.js.map +0 -1
  106. package/dist/Text-CXR2fhx6.js +0 -54
  107. package/dist/Text-CXR2fhx6.js.map +0 -1
  108. package/dist/VenueCalendar-CISH7WGT.js.map +0 -1
  109. package/dist/ViewTicketsEmbed-Bo16Y0sx.js +0 -2039
  110. package/dist/ViewTicketsEmbed-Bo16Y0sx.js.map +0 -1
  111. package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js +0 -7
  112. package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js.map +0 -1
  113. package/dist/api-BV4wcElQ.js +0 -12
  114. package/dist/labels-B2ebkcUD.js +0 -659
  115. package/dist/labels-B2ebkcUD.js.map +0 -1
  116. package/dist/transform-B3tJXUnG.js +0 -275
  117. package/dist/transform-B3tJXUnG.js.map +0 -1
@@ -1,18 +1,15 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as e from "svelte/internal/client";
3
3
  import { onMount as le, onDestroy as oe } from "svelte";
4
- import { a2 as ne, at as ce, aU as de, au as ve, aW as ge } from "./VenueCalendar-CISH7WGT.js";
5
- import "svelte/internal/flags/legacy";
6
- import "svelte/transition";
7
- import "svelte/easing";
8
- import "svelte/reactivity";
9
- import { g as S } from "./transform-B3tJXUnG.js";
10
- import { G as ue } from "./GalleryCard-CZkN5_Jb.js";
11
- import me from "./GroupedListView.legacy-CPy5md80.js";
4
+ import { a6 as ne, au as ce, aN as de, aP as ve } from "./VenueCalendar-DMSeDRSN.js";
5
+ import { g as S } from "./transform-BlXf-shc.js";
6
+ import { G as ge } from "./GalleryCard-BcIcYghD.js";
7
+ import ue from "./GroupedListView.legacy-qvwIV5Qm.js";
8
+ import { P as me } from "./CollectionView-D2bRelLR.js";
12
9
  var fe = e.from_html('<div class="password-container svelte-q3tjav"><div class="password-card svelte-q3tjav"><h2 class="password-title svelte-q3tjav"> </h2> <p class="password-description svelte-q3tjav"> </p> <form class="password-form svelte-q3tjav"><!> <button type="submit" class="password-submit svelte-q3tjav"> </button></form></div></div>'), pe = e.from_html('<div class="error-container svelte-q3tjav"><p class="error-text svelte-q3tjav"> </p></div>'), he = e.from_html('<div class="cover-image svelte-q3tjav"><div class="cover-blur svelte-q3tjav"></div> <img class="svelte-q3tjav"/></div>'), _e = e.from_html('<p class="collection-summary svelte-q3tjav"> </p>'), we = e.from_html('<div class="collection-description svelte-q3tjav"> </div>'), ye = e.from_html('<div class="view-switcher svelte-q3tjav" role="group"><button type="button"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect></svg></button> <button type="button"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line></svg></button></div>'), be = e.from_html('<div class="events-grid svelte-q3tjav"></div>'), xe = e.from_html('<!> <div class="collection-header svelte-q3tjav"><h1 class="collection-title svelte-q3tjav"> </h1> <!> <!></div> <div class="events-section svelte-q3tjav"><div class="events-section-header svelte-q3tjav"><h2 class="events-heading svelte-q3tjav"> </h2> <!></div> <!></div>', 1), Te = e.from_html('<div class="collection-view svelte-q3tjav"><!></div>');
13
- function Ve(U, c) {
10
+ function Ie(G, c) {
14
11
  e.push(c, !0), e.prop(c, "organizationId", 3, "");
15
- let G = e.prop(c, "password", 3, void 0), M = e.prop(c, "displayMode", 3, "gallery"), N = e.prop(c, "showViewSwitcher", 3, !0), o = e.prop(c, "labels", 19, () => ({})), n = e.state(null), f = e.state(!0), p = e.state(null), h = e.state(!1), w = e.state(!1), k = e.state(""), E = e.state(!1), d = e.state(e.proxy(M()));
12
+ let M = e.prop(c, "password", 3, void 0), N = e.prop(c, "displayMode", 3, "gallery"), U = e.prop(c, "showViewSwitcher", 3, !0), o = e.prop(c, "labels", 19, () => ({})), n = e.state(null), f = e.state(!0), p = e.state(null), h = e.state(!1), w = e.state(!1), k = e.state(""), E = e.state(!1), d = e.state(e.proxy(N()));
16
13
  function A(t) {
17
14
  return {
18
15
  id: t.id,
@@ -45,8 +42,8 @@ function Ve(U, c) {
45
42
  const i = new Date(t);
46
43
  return ne(i, { hour: "numeric", minute: "2-digit", hour12: !0 });
47
44
  }
48
- let y = e.derived(() => e.get(n) ? Q(e.get(n).events || []) : []), O = e.derived(() => e.get(y).map(A)), W = e.derived(() => e.get(y).map(B)), z = e.derived(() => N() && e.get(y).length >= 2);
49
- function Q(t) {
45
+ let y = e.derived(() => e.get(n) ? W(e.get(n).events || []) : []), O = e.derived(() => e.get(y).map(A)), z = e.derived(() => e.get(y).map(B)), Q = e.derived(() => U() && e.get(y).length >= 2);
46
+ function W(t) {
50
47
  return [...t].sort((i, l) => !i.startDateTime && !l.startDateTime ? 0 : i.startDateTime ? l.startDateTime ? new Date(i.startDateTime).getTime() - new Date(l.startDateTime).getTime() : -1 : 1);
51
48
  }
52
49
  function R(t) {
@@ -92,23 +89,23 @@ function Ve(U, c) {
92
89
  t.preventDefault(), e.get(k).trim() && V(e.get(k));
93
90
  }
94
91
  le(async () => {
95
- e.set(h, !0), await V(G());
92
+ e.set(h, !0), await V(M());
96
93
  }), oe(() => {
97
94
  e.set(h, !1);
98
95
  });
99
- var C = Te(), J = e.child(C);
96
+ var P = Te(), J = e.child(P);
100
97
  {
101
98
  var K = (t) => {
102
99
  de(t, { type: "gallery" });
103
100
  }, X = (t) => {
104
101
  var i = fe(), l = e.child(i), v = e.child(l), b = e.child(v, !0);
105
102
  e.reset(v);
106
- var g = e.sibling(v, 2), P = e.child(g, !0);
103
+ var g = e.sibling(v, 2), C = e.child(g, !0);
107
104
  e.reset(g);
108
105
  var _ = e.sibling(g, 2), D = e.child(_);
109
106
  {
110
107
  let q = e.derived(() => o().enterPassword || "Enter password"), x = e.derived(() => e.get(E) ? o().incorrectPassword || "Incorrect password. Please try again." : "");
111
- ve(D, {
108
+ me(D, {
112
109
  get placeholder() {
113
110
  return e.get(q);
114
111
  },
@@ -126,7 +123,7 @@ function Ve(U, c) {
126
123
  }
127
124
  var j = e.sibling(D, 2), I = e.child(j, !0);
128
125
  e.reset(j), e.reset(_), e.reset(l), e.reset(i), e.template_effect(() => {
129
- e.set_text(b, o().collectionPrivateTitle || "This collection is private"), e.set_text(P, o().collectionPrivateDescription || "Please enter the password to view this collection."), e.set_text(I, o().viewCollection || "View Collection");
126
+ e.set_text(b, o().collectionPrivateTitle || "This collection is private"), e.set_text(C, o().collectionPrivateDescription || "Please enter the password to view this collection."), e.set_text(I, o().viewCollection || "View Collection");
130
127
  }), e.event("submit", _, H), e.append(t, i);
131
128
  }, Y = (t) => {
132
129
  var i = pe(), l = e.child(i), v = e.child(l);
@@ -145,7 +142,7 @@ function Ve(U, c) {
145
142
  e.get(n).coverImage && r(v);
146
143
  });
147
144
  }
148
- var b = e.sibling(l, 2), g = e.child(b), P = e.child(g, !0);
145
+ var b = e.sibling(l, 2), g = e.child(b), C = e.child(g, !0);
149
146
  e.reset(g);
150
147
  var _ = e.sibling(g, 2);
151
148
  {
@@ -186,7 +183,7 @@ function Ve(U, c) {
186
183
  }), e.delegated("click", s, () => e.set(d, "gallery")), e.delegated("click", m, () => e.set(d, "list")), e.append(r, a);
187
184
  };
188
185
  e.if(ee, (r) => {
189
- e.get(z) && r(te);
186
+ e.get(Q) && r(te);
190
187
  });
191
188
  }
192
189
  e.reset(x);
@@ -195,7 +192,7 @@ function Ve(U, c) {
195
192
  var re = (r) => {
196
193
  {
197
194
  let a = e.derived(() => o().noUpcomingEvents || "No upcoming events"), s = e.derived(() => o().noUpcomingEventsSubtext || "There are no events in this collection right now. Check back soon!");
198
- ge(r, {
195
+ ve(r, {
199
196
  get message() {
200
197
  return e.get(a);
201
198
  },
@@ -205,9 +202,9 @@ function Ve(U, c) {
205
202
  });
206
203
  }
207
204
  }, ae = (r) => {
208
- me(r, {
205
+ ue(r, {
209
206
  get events() {
210
- return e.get(W);
207
+ return e.get(z);
211
208
  },
212
209
  filterFutureOnly: !1,
213
210
  oneventClick: R
@@ -215,7 +212,7 @@ function Ve(U, c) {
215
212
  }, se = (r) => {
216
213
  var a = be();
217
214
  e.each(a, 21, () => e.get(O), (s) => s.id, (s, u) => {
218
- ue(s, {
215
+ ge(s, {
219
216
  get event() {
220
217
  return e.get(u);
221
218
  },
@@ -224,21 +221,21 @@ function Ve(U, c) {
224
221
  }), e.reset(a), e.append(r, a);
225
222
  };
226
223
  e.if(ie, (r) => {
227
- e.get(y).length === 0 ? r(re) : e.get(d) === "list" ? r(ae, 1) : r(se, !1);
224
+ e.get(y).length === 0 ? r(re) : e.get(d) === "list" ? r(ae, 1) : r(se, -1);
228
225
  });
229
226
  }
230
227
  e.reset(q), e.template_effect(() => {
231
- e.set_text(P, e.get(n).collectionTitle), e.set_text($, `Events (${e.get(y).length ?? ""})`);
228
+ e.set_text(C, e.get(n).collectionTitle), e.set_text($, `Events (${e.get(y).length ?? ""})`);
232
229
  }), e.append(t, i);
233
230
  };
234
231
  e.if(J, (t) => {
235
232
  e.get(f) ? t(K) : e.get(w) ? t(X, 1) : e.get(p) ? t(Y, 2) : e.get(n) && t(Z, 3);
236
233
  });
237
234
  }
238
- e.reset(C), e.append(U, C), e.pop();
235
+ e.reset(P), e.append(G, P), e.pop();
239
236
  }
240
237
  e.delegate(["click"]);
241
238
  export {
242
- Ve as default
239
+ Ie as default
243
240
  };
244
- //# sourceMappingURL=CollectionView.legacy-CsBYjvZv.js.map
241
+ //# sourceMappingURL=CollectionView.legacy-DLb5fzi-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionView.legacy-CsBYjvZv.js","sources":["../src/components/Views/CollectionView.legacy.svelte"],"sourcesContent":["<!-- native-element-exception: VC is an embeddable widget — native <button>s are intentional here (widget-controlled styling on calendar cells, date selectors, checkout/nav CTAs). -->\r\n<script>\r\n // @ts-nocheck legacy fallback (legacy=1 path), slated for deletion after VC finalization — not type-maintained\r\n import { onMount, onDestroy } from 'svelte';\r\n import { fetchPublicCollection } from '../../lib/api/events.ts';\r\n import { getImageUrl } from '$lib/utils/utils.js';\r\n import {\r\n EmptyState,\r\n PasswordInput,\r\n formatTime,\r\n } from '@getmicdrop/svelte-components';\r\n import GalleryCard from '../Calendar/GalleryCard.svelte';\r\n import GroupedListView from '../Calendar/GroupedListView.legacy.svelte';\r\n import SkeletonLoader from '../SkeletonLoader/SkeletonLoader.svelte';\r\n\r\n let {\r\n collectionId,\r\n organizationId = '',\r\n onNavigateToEvent,\r\n password: initialPassword = undefined,\r\n displayMode: initialDisplayMode = 'gallery',\r\n showViewSwitcher = true,\r\n labels = {},\r\n } = $props();\r\n\r\n let collection = $state(null);\r\n let isLoading = $state(true);\r\n let error = $state(null);\r\n let isMounted = $state(false);\r\n let passwordRequired = $state(false);\r\n let passwordInput = $state('');\r\n let passwordError = $state(false);\r\n let activeDisplayMode = $state(initialDisplayMode);\r\n\r\n // Transform collection events into the shape GalleryCard expects\r\n function toGalleryEvent(event) {\r\n return {\r\n id: event.id,\r\n name: event.title || event.name || '',\r\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\r\n image: event.image ? getImageUrl(event.image) : '',\r\n timeline: event.startDateTime ? formatTimeline(event.startDateTime) : '',\r\n status: event.status || 'on_sale',\r\n slug: event.slug || '',\r\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\r\n ticketsTotal: event.ticketsTotal ?? event.capacity,\r\n };\r\n }\r\n\r\n // Transform collection events into the shape GroupedListView expects\r\n function toListEvent(event) {\r\n return {\r\n id: event.id,\r\n name: event.title || event.name || '',\r\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\r\n startDateTime: event.startDateTime || '',\r\n image: event.image ? getImageUrl(event.image) : '',\r\n status: event.status || 'on_sale',\r\n slug: event.slug || '',\r\n description: event.description || '',\r\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\r\n ticketsTotal: event.ticketsTotal ?? event.capacity,\r\n };\r\n }\r\n\r\n function formatTimeline(iso) {\r\n if (!iso) return '';\r\n const date = new Date(iso);\r\n return formatTime(date, {\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n hour12: true,\r\n });\r\n }\r\n\r\n let displayEvents = $derived(\r\n collection ? sortByStartTime(collection.events || []) : []\r\n );\r\n\r\n let galleryEvents = $derived(displayEvents.map(toGalleryEvent));\r\n let listEvents = $derived(displayEvents.map(toListEvent));\r\n\r\n // Only show view switcher when there are 2+ events\r\n let canShowSwitcher = $derived(showViewSwitcher && displayEvents.length >= 2);\r\n\r\n function sortByStartTime(events) {\r\n return [...events].sort((a, b) => {\r\n if (!a.startDateTime && !b.startDateTime) return 0;\r\n if (!a.startDateTime) return 1;\r\n if (!b.startDateTime) return -1;\r\n return (\r\n new Date(a.startDateTime).getTime() -\r\n new Date(b.startDateTime).getTime()\r\n );\r\n });\r\n }\r\n\r\n function handleEventClick(galleryEvent) {\r\n if (onNavigateToEvent) {\r\n const eventData = galleryEvent.detail || galleryEvent;\r\n onNavigateToEvent(eventData.id, eventData.slug || '');\r\n }\r\n }\r\n\r\n async function loadCollection(pwd) {\r\n if (!isMounted) return;\r\n if (!collectionId) {\r\n error = labels.noCollectionIdProvided || 'No collection ID provided';\r\n isLoading = false;\r\n return;\r\n }\r\n\r\n isLoading = true;\r\n error = null;\r\n passwordError = false;\r\n\r\n try {\r\n const data = await fetchPublicCollection(collectionId, pwd);\r\n if (!isMounted) return;\r\n\r\n if (data) {\r\n // Check if the response indicates password is required\r\n if (data.passwordRequired || data.error?.code === 'PASSWORD_REQUIRED') {\r\n passwordRequired = true;\r\n isLoading = false;\r\n return;\r\n }\r\n collection = data;\r\n passwordRequired = false;\r\n } else {\r\n // A null response after providing a password likely means wrong password\r\n if (pwd) {\r\n passwordRequired = true;\r\n passwordError = true;\r\n isLoading = false;\r\n return;\r\n }\r\n error = labels.failedToLoadCollection || 'Failed to load collection';\r\n }\r\n } catch (err) {\r\n if (isMounted) {\r\n // Check for password-related error responses\r\n const msg = err.message || '';\r\n if (\r\n msg.includes('401') ||\r\n msg.includes('403') ||\r\n msg.includes('password')\r\n ) {\r\n passwordRequired = true;\r\n } else {\r\n error = msg || 'Failed to load collection';\r\n }\r\n }\r\n } finally {\r\n if (isMounted) {\r\n isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n function handlePasswordSubmit(e) {\r\n e.preventDefault();\r\n if (!passwordInput.trim()) return;\r\n loadCollection(passwordInput);\r\n }\r\n\r\n onMount(async () => {\r\n isMounted = true;\r\n await loadCollection(initialPassword);\r\n });\r\n\r\n onDestroy(() => {\r\n isMounted = false;\r\n });\r\n</script>\r\n\r\n<div class=\"collection-view\">\r\n {#if isLoading}\r\n <SkeletonLoader type=\"gallery\" />\r\n {:else if passwordRequired}\r\n <div class=\"password-container\">\r\n <div class=\"password-card\">\r\n <h2 class=\"password-title\">\r\n {labels.collectionPrivateTitle || 'This collection is private'}\r\n </h2>\r\n <p class=\"password-description\">\r\n {labels.collectionPrivateDescription ||\r\n 'Please enter the password to view this collection.'}\r\n </p>\r\n <form onsubmit={handlePasswordSubmit} class=\"password-form\">\r\n <PasswordInput\r\n bind:value={passwordInput}\r\n placeholder={labels.enterPassword || 'Enter password'}\r\n autocomplete=\"current-password\"\r\n error={passwordError\r\n ? labels.incorrectPassword ||\r\n 'Incorrect password. Please try again.'\r\n : ''}\r\n />\r\n <button type=\"submit\" class=\"password-submit\"\r\n >{labels.viewCollection || 'View Collection'}</button\r\n >\r\n </form>\r\n </div>\r\n </div>\r\n {:else if error}\r\n <div class=\"error-container\">\r\n <p class=\"error-text\">{labels.errorPrefix || 'Error:'} {error}</p>\r\n </div>\r\n {:else if collection}\r\n <!-- Cover Image with Blur -->\r\n {#if collection.coverImage}\r\n {@const imageUrl = getImageUrl(collection.coverImage)}\r\n <div class=\"cover-image\">\r\n <div class=\"cover-blur\" style=\"background-image: url({imageUrl})\"></div>\r\n <img src={imageUrl} alt={collection.collectionTitle} />\r\n </div>\r\n {/if}\r\n\r\n <!-- Collection Header -->\r\n <div class=\"collection-header\">\r\n <h1 class=\"collection-title\">{collection.collectionTitle}</h1>\r\n {#if collection.summary}\r\n <p class=\"collection-summary\">{collection.summary}</p>\r\n {/if}\r\n {#if collection.description}\r\n <div class=\"collection-description\">{collection.description}</div>\r\n {/if}\r\n </div>\r\n\r\n <!-- Events Section -->\r\n <div class=\"events-section\">\r\n <div class=\"events-section-header\">\r\n <h2 class=\"events-heading\">Events ({displayEvents.length})</h2>\r\n\r\n {#if canShowSwitcher}\r\n <div\r\n class=\"view-switcher\"\r\n role=\"group\"\r\n aria-label={labels.viewOptions || 'Display mode'}\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"view-switcher-btn\"\r\n class:view-switcher-btn-active={activeDisplayMode === 'gallery'}\r\n onclick={() => (activeDisplayMode = 'gallery')}\r\n aria-label={labels.galleryView || 'Gallery view'}\r\n aria-pressed={activeDisplayMode === 'gallery'}\r\n >\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect>\r\n </svg>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"view-switcher-btn\"\r\n class:view-switcher-btn-active={activeDisplayMode === 'list'}\r\n onclick={() => (activeDisplayMode = 'list')}\r\n aria-label={labels.listView || 'List view'}\r\n aria-pressed={activeDisplayMode === 'list'}\r\n >\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\r\n <line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\r\n <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\r\n <line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line>\r\n <line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line>\r\n <line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\r\n </svg>\r\n </button>\r\n </div>\r\n {/if}\r\n </div>\r\n\r\n {#if displayEvents.length === 0}\r\n <EmptyState\r\n message={labels.noUpcomingEvents || 'No upcoming events'}\r\n subtext={labels.noUpcomingEventsSubtext ||\r\n 'There are no events in this collection right now. Check back soon!'}\r\n />\r\n {:else if activeDisplayMode === 'list'}\r\n <GroupedListView\r\n events={listEvents}\r\n filterFutureOnly={false}\r\n oneventClick={handleEventClick}\r\n />\r\n {:else}\r\n <div class=\"events-grid\">\r\n {#each galleryEvents as event (event.id)}\r\n <GalleryCard {event} oneventClick={handleEventClick} />\r\n {/each}\r\n </div>\r\n {/if}\r\n </div>\r\n {/if}\r\n</div>\r\n\r\n<style>\r\n .collection-view {\r\n width: 100%;\r\n max-width: 64rem;\r\n margin-left: auto;\r\n margin-right: auto;\r\n padding-left: 1rem;\r\n padding-right: 1rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .error-container,\r\n .password-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n min-height: 50vh;\r\n text-align: center;\r\n }\r\n\r\n .error-text {\r\n color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n /* Password gate */\r\n .password-card {\r\n border-radius: 0.5rem;\r\n padding: 2rem;\r\n max-width: 24rem;\r\n width: 100%;\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n box-shadow: 0 2px 10px color-mix(in srgb, black 10%, transparent);\r\n }\r\n\r\n .password-title {\r\n font-size: 1.25rem;\r\n line-height: 1.75rem;\r\n font-weight: 700;\r\n margin-bottom: 0.5rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .password-description {\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n margin-bottom: 1.5rem;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .password-form {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.75rem;\r\n }\r\n\r\n .password-input {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n border-radius: 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 85%));\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n }\r\n\r\n .password-input:focus {\r\n outline: none;\r\n border-color: hsl(var(--brand-primary, 220 90% 56%));\r\n box-shadow: 0 0 0 2px hsl(var(--brand-primary, 220 90% 56%) / 20%);\r\n }\r\n\r\n .password-input-error {\r\n border-color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n .password-error-text {\r\n font-size: 0.75rem;\r\n line-height: 1rem;\r\n color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n .password-submit {\r\n padding: 0.5rem 1rem;\r\n border-radius: 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n font-weight: 600;\r\n background: hsl(var(--brand-primary, 220 90% 56%));\r\n color: hsl(var(--text-on-primary, 0 0% 100%));\r\n }\r\n\r\n .password-submit:hover {\r\n filter: brightness(0.95);\r\n }\r\n\r\n /* Cover Image with blur background */\r\n .cover-image {\r\n position: relative;\r\n width: 100%;\r\n overflow: hidden;\r\n border-radius: 0.5rem;\r\n margin-bottom: 2rem;\r\n height: 350px;\r\n }\r\n\r\n .cover-blur {\r\n position: absolute;\r\n inset: 0;\r\n background-size: cover;\r\n background-position: center;\r\n filter: blur(24px) saturate(1.2);\r\n transform: scale(1.15);\r\n }\r\n\r\n .cover-image img {\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n }\r\n\r\n /* Header */\r\n .collection-header {\r\n margin-bottom: 2rem;\r\n }\r\n\r\n .collection-title {\r\n font-size: 1.875rem;\r\n line-height: 2.25rem;\r\n font-weight: 700;\r\n margin-bottom: 0.5rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .collection-summary {\r\n font-size: 1.125rem;\r\n line-height: 1.75rem;\r\n margin-bottom: 1rem;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .collection-description {\r\n line-height: 1.625;\r\n color: hsl(var(--text-secondary, 0 0% 35%));\r\n }\r\n\r\n /* Events Section */\r\n .events-section {\r\n margin-bottom: 2rem;\r\n }\r\n\r\n .events-section-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 1rem;\r\n }\r\n\r\n .events-heading {\r\n font-size: 1.5rem;\r\n line-height: 2rem;\r\n font-weight: 700;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n /* View Switcher */\r\n .view-switcher {\r\n display: flex;\r\n gap: 0.25rem;\r\n padding: 0.25rem;\r\n border-radius: 0.5rem;\r\n background: hsl(var(--surface-secondary, 0 0% 96%));\r\n }\r\n\r\n .view-switcher-btn {\r\n padding: 0.375rem;\r\n border-radius: 0.375rem;\r\n transition: color 0.15s;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .view-switcher-btn:hover {\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .view-switcher-btn-active {\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n box-shadow: 0 1px 2px color-mix(in srgb, black 8%, transparent);\r\n }\r\n\r\n .events-grid {\r\n display: grid;\r\n gap: 1.5rem;\r\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\r\n }\r\n\r\n /* Responsive */\r\n @media (width <= 640px) {\r\n .cover-image {\r\n height: 250px;\r\n }\r\n\r\n .collection-title {\r\n font-size: 1.5rem;\r\n line-height: 2rem;\r\n }\r\n\r\n .events-grid {\r\n grid-template-columns: repeat(2, 1fr);\r\n }\r\n }\r\n\r\n @media (width <= 400px) {\r\n .events-grid {\r\n grid-template-columns: 1fr;\r\n }\r\n }\r\n</style>"],"names":["initialPassword","initialDisplayMode","showViewSwitcher","labels","$","$$props","collection","isLoading","error","isMounted","passwordRequired","passwordInput","passwordError","activeDisplayMode","toGalleryEvent","event","getImageUrl","formatTimeline","toListEvent","iso","date","formatTime","displayEvents","sortByStartTime","galleryEvents","listEvents","canShowSwitcher","events","a","b","handleEventClick","galleryEvent","eventData","loadCollection","pwd","data","fetchPublicCollection","err","msg","handlePasswordSubmit","e","onMount","onDestroy","div","root","SkeletonLoader","$$anchor","div_1","root_2","div_2","h2","p","form","PasswordInput","node_1","$$value","button","div_3","root_3","p_1","text_3","imageUrl","div_4","root_5","div_5","img","$$render","consequent_3","div_6","node_2","h1","p_2","root_6","text_5","consequent_4","div_7","root_7","text_6","consequent_5","div_8","div_9","h2_1","div_10","root_8","button_1","button_2","classes","classes_1","consequent_6","EmptyState","GroupedListView","div_11","root_11","GalleryCard","consequent_7","consequent_8","alternate","text_4","text_7","consequent","consequent_1","consequent_9"],"mappings":"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"}
1
+ {"version":3,"file":"CollectionView.legacy-DLb5fzi-.js","sources":["../src/components/Views/CollectionView.legacy.svelte"],"sourcesContent":["<!-- native-element-exception: VC is an embeddable widget — native <button>s are intentional here (widget-controlled styling on calendar cells, date selectors, checkout/nav CTAs). -->\r\n<script>\r\n // @ts-nocheck legacy fallback (legacy=1 path), slated for deletion after VC finalization — not type-maintained\r\n import { onMount, onDestroy } from 'svelte';\r\n import { fetchPublicCollection } from '../../lib/api/events.ts';\r\n import { getImageUrl } from '$lib/utils/utils.js';\r\n import {\r\n EmptyState,\r\n PasswordInput,\r\n formatTime,\r\n } from '@getmicdrop/svelte-components';\r\n import GalleryCard from '../Calendar/GalleryCard.svelte';\r\n import GroupedListView from '../Calendar/GroupedListView.legacy.svelte';\r\n import SkeletonLoader from '../SkeletonLoader/SkeletonLoader.svelte';\r\n\r\n let {\r\n collectionId,\r\n organizationId = '',\r\n onNavigateToEvent,\r\n password: initialPassword = undefined,\r\n displayMode: initialDisplayMode = 'gallery',\r\n showViewSwitcher = true,\r\n labels = {},\r\n } = $props();\r\n\r\n let collection = $state(null);\r\n let isLoading = $state(true);\r\n let error = $state(null);\r\n let isMounted = $state(false);\r\n let passwordRequired = $state(false);\r\n let passwordInput = $state('');\r\n let passwordError = $state(false);\r\n let activeDisplayMode = $state(initialDisplayMode);\r\n\r\n // Transform collection events into the shape GalleryCard expects\r\n function toGalleryEvent(event) {\r\n return {\r\n id: event.id,\r\n name: event.title || event.name || '',\r\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\r\n image: event.image ? getImageUrl(event.image) : '',\r\n timeline: event.startDateTime ? formatTimeline(event.startDateTime) : '',\r\n status: event.status || 'on_sale',\r\n slug: event.slug || '',\r\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\r\n ticketsTotal: event.ticketsTotal ?? event.capacity,\r\n };\r\n }\r\n\r\n // Transform collection events into the shape GroupedListView expects\r\n function toListEvent(event) {\r\n return {\r\n id: event.id,\r\n name: event.title || event.name || '',\r\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\r\n startDateTime: event.startDateTime || '',\r\n image: event.image ? getImageUrl(event.image) : '',\r\n status: event.status || 'on_sale',\r\n slug: event.slug || '',\r\n description: event.description || '',\r\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\r\n ticketsTotal: event.ticketsTotal ?? event.capacity,\r\n };\r\n }\r\n\r\n function formatTimeline(iso) {\r\n if (!iso) return '';\r\n const date = new Date(iso);\r\n return formatTime(date, {\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n hour12: true,\r\n });\r\n }\r\n\r\n let displayEvents = $derived(\r\n collection ? sortByStartTime(collection.events || []) : []\r\n );\r\n\r\n let galleryEvents = $derived(displayEvents.map(toGalleryEvent));\r\n let listEvents = $derived(displayEvents.map(toListEvent));\r\n\r\n // Only show view switcher when there are 2+ events\r\n let canShowSwitcher = $derived(showViewSwitcher && displayEvents.length >= 2);\r\n\r\n function sortByStartTime(events) {\r\n return [...events].sort((a, b) => {\r\n if (!a.startDateTime && !b.startDateTime) return 0;\r\n if (!a.startDateTime) return 1;\r\n if (!b.startDateTime) return -1;\r\n return (\r\n new Date(a.startDateTime).getTime() -\r\n new Date(b.startDateTime).getTime()\r\n );\r\n });\r\n }\r\n\r\n function handleEventClick(galleryEvent) {\r\n if (onNavigateToEvent) {\r\n const eventData = galleryEvent.detail || galleryEvent;\r\n onNavigateToEvent(eventData.id, eventData.slug || '');\r\n }\r\n }\r\n\r\n async function loadCollection(pwd) {\r\n if (!isMounted) return;\r\n if (!collectionId) {\r\n error = labels.noCollectionIdProvided || 'No collection ID provided';\r\n isLoading = false;\r\n return;\r\n }\r\n\r\n isLoading = true;\r\n error = null;\r\n passwordError = false;\r\n\r\n try {\r\n const data = await fetchPublicCollection(collectionId, pwd);\r\n if (!isMounted) return;\r\n\r\n if (data) {\r\n // Check if the response indicates password is required\r\n if (data.passwordRequired || data.error?.code === 'PASSWORD_REQUIRED') {\r\n passwordRequired = true;\r\n isLoading = false;\r\n return;\r\n }\r\n collection = data;\r\n passwordRequired = false;\r\n } else {\r\n // A null response after providing a password likely means wrong password\r\n if (pwd) {\r\n passwordRequired = true;\r\n passwordError = true;\r\n isLoading = false;\r\n return;\r\n }\r\n error = labels.failedToLoadCollection || 'Failed to load collection';\r\n }\r\n } catch (err) {\r\n if (isMounted) {\r\n // Check for password-related error responses\r\n const msg = err.message || '';\r\n if (\r\n msg.includes('401') ||\r\n msg.includes('403') ||\r\n msg.includes('password')\r\n ) {\r\n passwordRequired = true;\r\n } else {\r\n error = msg || 'Failed to load collection';\r\n }\r\n }\r\n } finally {\r\n if (isMounted) {\r\n isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n function handlePasswordSubmit(e) {\r\n e.preventDefault();\r\n if (!passwordInput.trim()) return;\r\n loadCollection(passwordInput);\r\n }\r\n\r\n onMount(async () => {\r\n isMounted = true;\r\n await loadCollection(initialPassword);\r\n });\r\n\r\n onDestroy(() => {\r\n isMounted = false;\r\n });\r\n</script>\r\n\r\n<div class=\"collection-view\">\r\n {#if isLoading}\r\n <SkeletonLoader type=\"gallery\" />\r\n {:else if passwordRequired}\r\n <div class=\"password-container\">\r\n <div class=\"password-card\">\r\n <h2 class=\"password-title\">\r\n {labels.collectionPrivateTitle || 'This collection is private'}\r\n </h2>\r\n <p class=\"password-description\">\r\n {labels.collectionPrivateDescription ||\r\n 'Please enter the password to view this collection.'}\r\n </p>\r\n <form onsubmit={handlePasswordSubmit} class=\"password-form\">\r\n <PasswordInput\r\n bind:value={passwordInput}\r\n placeholder={labels.enterPassword || 'Enter password'}\r\n autocomplete=\"current-password\"\r\n error={passwordError\r\n ? labels.incorrectPassword ||\r\n 'Incorrect password. Please try again.'\r\n : ''}\r\n />\r\n <button type=\"submit\" class=\"password-submit\"\r\n >{labels.viewCollection || 'View Collection'}</button\r\n >\r\n </form>\r\n </div>\r\n </div>\r\n {:else if error}\r\n <div class=\"error-container\">\r\n <p class=\"error-text\">{labels.errorPrefix || 'Error:'} {error}</p>\r\n </div>\r\n {:else if collection}\r\n <!-- Cover Image with Blur -->\r\n {#if collection.coverImage}\r\n {@const imageUrl = getImageUrl(collection.coverImage)}\r\n <div class=\"cover-image\">\r\n <div class=\"cover-blur\" style=\"background-image: url({imageUrl})\"></div>\r\n <img src={imageUrl} alt={collection.collectionTitle} />\r\n </div>\r\n {/if}\r\n\r\n <!-- Collection Header -->\r\n <div class=\"collection-header\">\r\n <h1 class=\"collection-title\">{collection.collectionTitle}</h1>\r\n {#if collection.summary}\r\n <p class=\"collection-summary\">{collection.summary}</p>\r\n {/if}\r\n {#if collection.description}\r\n <div class=\"collection-description\">{collection.description}</div>\r\n {/if}\r\n </div>\r\n\r\n <!-- Events Section -->\r\n <div class=\"events-section\">\r\n <div class=\"events-section-header\">\r\n <h2 class=\"events-heading\">Events ({displayEvents.length})</h2>\r\n\r\n {#if canShowSwitcher}\r\n <div\r\n class=\"view-switcher\"\r\n role=\"group\"\r\n aria-label={labels.viewOptions || 'Display mode'}\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"view-switcher-btn\"\r\n class:view-switcher-btn-active={activeDisplayMode === 'gallery'}\r\n onclick={() => (activeDisplayMode = 'gallery')}\r\n aria-label={labels.galleryView || 'Gallery view'}\r\n aria-pressed={activeDisplayMode === 'gallery'}\r\n >\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect>\r\n </svg>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"view-switcher-btn\"\r\n class:view-switcher-btn-active={activeDisplayMode === 'list'}\r\n onclick={() => (activeDisplayMode = 'list')}\r\n aria-label={labels.listView || 'List view'}\r\n aria-pressed={activeDisplayMode === 'list'}\r\n >\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\r\n <line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\r\n <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\r\n <line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line>\r\n <line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line>\r\n <line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\r\n </svg>\r\n </button>\r\n </div>\r\n {/if}\r\n </div>\r\n\r\n {#if displayEvents.length === 0}\r\n <EmptyState\r\n message={labels.noUpcomingEvents || 'No upcoming events'}\r\n subtext={labels.noUpcomingEventsSubtext ||\r\n 'There are no events in this collection right now. Check back soon!'}\r\n />\r\n {:else if activeDisplayMode === 'list'}\r\n <GroupedListView\r\n events={listEvents}\r\n filterFutureOnly={false}\r\n oneventClick={handleEventClick}\r\n />\r\n {:else}\r\n <div class=\"events-grid\">\r\n {#each galleryEvents as event (event.id)}\r\n <GalleryCard {event} oneventClick={handleEventClick} />\r\n {/each}\r\n </div>\r\n {/if}\r\n </div>\r\n {/if}\r\n</div>\r\n\r\n<style>\r\n .collection-view {\r\n width: 100%;\r\n max-width: 64rem;\r\n margin-left: auto;\r\n margin-right: auto;\r\n padding-left: 1rem;\r\n padding-right: 1rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .error-container,\r\n .password-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n min-height: 50vh;\r\n text-align: center;\r\n }\r\n\r\n .error-text {\r\n color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n /* Password gate */\r\n .password-card {\r\n border-radius: 0.5rem;\r\n padding: 2rem;\r\n max-width: 24rem;\r\n width: 100%;\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n box-shadow: 0 2px 10px color-mix(in srgb, black 10%, transparent);\r\n }\r\n\r\n .password-title {\r\n font-size: 1.25rem;\r\n line-height: 1.75rem;\r\n font-weight: 700;\r\n margin-bottom: 0.5rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .password-description {\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n margin-bottom: 1.5rem;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .password-form {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.75rem;\r\n }\r\n\r\n .password-input {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n border-radius: 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 85%));\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n }\r\n\r\n .password-input:focus {\r\n outline: none;\r\n border-color: hsl(var(--brand-primary, 220 90% 56%));\r\n box-shadow: 0 0 0 2px hsl(var(--brand-primary, 220 90% 56%) / 20%);\r\n }\r\n\r\n .password-input-error {\r\n border-color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n .password-error-text {\r\n font-size: 0.75rem;\r\n line-height: 1rem;\r\n color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n .password-submit {\r\n padding: 0.5rem 1rem;\r\n border-radius: 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n font-weight: 600;\r\n background: hsl(var(--brand-primary, 220 90% 56%));\r\n color: hsl(var(--text-on-primary, 0 0% 100%));\r\n }\r\n\r\n .password-submit:hover {\r\n filter: brightness(0.95);\r\n }\r\n\r\n /* Cover Image with blur background */\r\n .cover-image {\r\n position: relative;\r\n width: 100%;\r\n overflow: hidden;\r\n border-radius: 0.5rem;\r\n margin-bottom: 2rem;\r\n height: 350px;\r\n }\r\n\r\n .cover-blur {\r\n position: absolute;\r\n inset: 0;\r\n background-size: cover;\r\n background-position: center;\r\n filter: blur(24px) saturate(1.2);\r\n transform: scale(1.15);\r\n }\r\n\r\n .cover-image img {\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n }\r\n\r\n /* Header */\r\n .collection-header {\r\n margin-bottom: 2rem;\r\n }\r\n\r\n .collection-title {\r\n font-size: 1.875rem;\r\n line-height: 2.25rem;\r\n font-weight: 700;\r\n margin-bottom: 0.5rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .collection-summary {\r\n font-size: 1.125rem;\r\n line-height: 1.75rem;\r\n margin-bottom: 1rem;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .collection-description {\r\n line-height: 1.625;\r\n color: hsl(var(--text-secondary, 0 0% 35%));\r\n }\r\n\r\n /* Events Section */\r\n .events-section {\r\n margin-bottom: 2rem;\r\n }\r\n\r\n .events-section-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 1rem;\r\n }\r\n\r\n .events-heading {\r\n font-size: 1.5rem;\r\n line-height: 2rem;\r\n font-weight: 700;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n /* View Switcher */\r\n .view-switcher {\r\n display: flex;\r\n gap: 0.25rem;\r\n padding: 0.25rem;\r\n border-radius: 0.5rem;\r\n background: hsl(var(--surface-secondary, 0 0% 96%));\r\n }\r\n\r\n .view-switcher-btn {\r\n padding: 0.375rem;\r\n border-radius: 0.375rem;\r\n transition: color 0.15s;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .view-switcher-btn:hover {\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .view-switcher-btn-active {\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n box-shadow: 0 1px 2px color-mix(in srgb, black 8%, transparent);\r\n }\r\n\r\n .events-grid {\r\n display: grid;\r\n gap: 1.5rem;\r\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\r\n }\r\n\r\n /* Responsive */\r\n @media (width <= 640px) {\r\n .cover-image {\r\n height: 250px;\r\n }\r\n\r\n .collection-title {\r\n font-size: 1.5rem;\r\n line-height: 2rem;\r\n }\r\n\r\n .events-grid {\r\n grid-template-columns: repeat(2, 1fr);\r\n }\r\n }\r\n\r\n @media (width <= 400px) {\r\n .events-grid {\r\n grid-template-columns: 1fr;\r\n }\r\n }\r\n</style>"],"names":["$","$$props","initialPassword","initialDisplayMode","showViewSwitcher","labels","collection","isLoading","error","isMounted","passwordRequired","passwordInput","passwordError","activeDisplayMode","toGalleryEvent","event","getImageUrl","formatTimeline","toListEvent","iso","date","formatTime","displayEvents","sortByStartTime","galleryEvents","listEvents","canShowSwitcher","events","a","b","handleEventClick","galleryEvent","eventData","loadCollection","pwd","data","fetchPublicCollection","err","msg","handlePasswordSubmit","e","onMount","onDestroy","div","root_8","SkeletonLoader","$$anchor","div_1","root","div_2","h2","p","form","PasswordInput","node_1","$$value","button","div_3","root_1","p_1","text_3","imageUrl","div_4","root_2","div_5","img","$$render","consequent_3","div_6","node_2","h1","p_2","root_3","text_5","consequent_4","div_7","root_4","text_6","consequent_5","div_8","div_9","h2_1","div_10","root_5","button_1","button_2","classes","classes_1","consequent_6","EmptyState","GroupedListView","div_11","root_6","GalleryCard","consequent_7","consequent_8","alternate","text_4","text_7","consequent","consequent_1","consequent_9"],"mappings":"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"}