@getmicdrop/venue-calendar 4.0.80 → 4.0.81
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/README.md +173 -128
- package/dist/{CarouselView.legacy-D2EY3K5p.js → CarouselView.legacy-Bn76lnuH.js} +3 -3
- package/dist/{CarouselView.legacy-D2EY3K5p.js.map → CarouselView.legacy-Bn76lnuH.js.map} +1 -1
- package/dist/{CartView-CXsAlVHs.js → CartView-lR1zLxmN.js} +277 -280
- package/dist/CartView-lR1zLxmN.js.map +1 -0
- package/dist/{Checkout-Bj85hSlQ.js → Checkout-D5mXj5zN.js} +69 -73
- package/dist/Checkout-D5mXj5zN.js.map +1 -0
- package/dist/Checkout-KyLZlwLk.js +1673 -0
- package/dist/Checkout-KyLZlwLk.js.map +1 -0
- package/dist/{Checkout.legacy-D4Uh3sQB.js → Checkout.legacy-Dl8Oh7y3.js} +77 -81
- package/dist/{Checkout.legacy-D4Uh3sQB.js.map → Checkout.legacy-Dl8Oh7y3.js.map} +1 -1
- package/dist/CheckoutTimer-Deo1mLnO.js +141 -0
- package/dist/CheckoutTimer-Deo1mLnO.js.map +1 -0
- package/dist/CollectionView-C1O9xfVC.js +338 -0
- package/dist/CollectionView-C1O9xfVC.js.map +1 -0
- package/dist/{CollectionView.legacy-CsBYjvZv.js → CollectionView.legacy-DK_mCA_g.js} +25 -28
- package/dist/{CollectionView.legacy-CsBYjvZv.js.map → CollectionView.legacy-DK_mCA_g.js.map} +1 -1
- package/dist/Event-B5WRygEf.js +2240 -0
- package/dist/Event-B5WRygEf.js.map +1 -0
- package/dist/EventPage-f1AOk4Jb.js +577 -0
- package/dist/EventPage-f1AOk4Jb.js.map +1 -0
- package/dist/{EventPage.legacy-DDVZNT-7.js → EventPage.legacy-Bk3PJyJs.js} +408 -411
- package/dist/{EventPage.legacy-DDVZNT-7.js.map → EventPage.legacy-Bk3PJyJs.js.map} +1 -1
- package/dist/{FeaturedView.legacy-BfOfYXRN.js → FeaturedView.legacy-BzCt1X1W.js} +19 -19
- package/dist/{FeaturedView.legacy-BfOfYXRN.js.map → FeaturedView.legacy-BzCt1X1W.js.map} +1 -1
- package/dist/{GalleryCard-CZkN5_Jb.js → GalleryCard-C1EKGErR.js} +14 -14
- package/dist/{GalleryCard-CZkN5_Jb.js.map → GalleryCard-C1EKGErR.js.map} +1 -1
- package/dist/{GalleryView.legacy-CziaM40i.js → GalleryView.legacy-BmQtZKl7.js} +3 -3
- package/dist/{GalleryView.legacy-CziaM40i.js.map → GalleryView.legacy-BmQtZKl7.js.map} +1 -1
- package/dist/{GroupedListView.legacy-CPy5md80.js → GroupedListView.legacy-D72fbNfA.js} +18 -18
- package/dist/{GroupedListView.legacy-CPy5md80.js.map → GroupedListView.legacy-D72fbNfA.js.map} +1 -1
- package/dist/Heading-Bwevh2c4.js +81 -0
- package/dist/Heading-Bwevh2c4.js.map +1 -0
- package/dist/ModalHeader-DKwE5ZYZ.js +22 -0
- package/dist/ModalHeader-DKwE5ZYZ.js.map +1 -0
- package/dist/OrderSummarySkeleton-DKWKZNLL.js +632 -0
- package/dist/OrderSummarySkeleton-DKWKZNLL.js.map +1 -0
- package/dist/{ScarcityBadge-Bungh7jy.js → ScarcityBadge-3cFxTOCh.js} +24 -28
- package/dist/{ScarcityBadge-Bungh7jy.js.map → ScarcityBadge-3cFxTOCh.js.map} +1 -1
- package/dist/{SeriesPage-BzyObY3_.js → SeriesPage-Cq4Q8Vah.js} +17 -21
- package/dist/{SeriesPage-BzyObY3_.js.map → SeriesPage-Cq4Q8Vah.js.map} +1 -1
- package/dist/{SeriesPage.legacy-BA00IzDL.js → SeriesPage.legacy-zvgW0S_y.js} +70 -74
- package/dist/{SeriesPage.legacy-BA00IzDL.js.map → SeriesPage.legacy-zvgW0S_y.js.map} +1 -1
- package/dist/{Success-NB1gahZr.js → Success-kyiEO6_Z.js} +186 -175
- package/dist/{Success-NB1gahZr.js.map → Success-kyiEO6_Z.js.map} +1 -1
- package/dist/{Success.legacy-D6cvUMzi.js → Success.legacy-BxKYmXgz.js} +58 -62
- package/dist/{Success.legacy-D6cvUMzi.js.map → Success.legacy-BxKYmXgz.js.map} +1 -1
- package/dist/Text-_bLxSPv-.js +158 -0
- package/dist/Text-_bLxSPv-.js.map +1 -0
- package/dist/{VenueCalendar-CISH7WGT.js → VenueCalendar-d8u6MKEu.js} +8138 -22881
- package/dist/VenueCalendar-d8u6MKEu.js.map +1 -0
- package/dist/ViewTicketsEmbed-DquJJVIK.js +2081 -0
- package/dist/ViewTicketsEmbed-DquJJVIK.js.map +1 -0
- package/dist/__SKIP_NAVIGATION__-CmipjatL.js +18 -0
- package/dist/__SKIP_NAVIGATION__-CmipjatL.js.map +1 -0
- package/dist/api/api.cjs +1 -1
- package/dist/api/api.cjs.map +1 -1
- package/dist/api/api.mjs +482 -374
- package/dist/api/api.mjs.map +1 -1
- package/dist/api/cta.d.ts +2 -10
- package/dist/api/transformers/address.d.ts +18 -0
- package/dist/api/transformers/cart.d.ts +19 -0
- package/dist/api/transformers/collection.d.ts +12 -0
- package/dist/api/transformers/event.d.ts +50 -1
- package/dist/api/transformers/giftCard.d.ts +11 -0
- package/dist/api/transformers/index.d.ts +10 -3
- package/dist/api/transformers/performer.d.ts +8 -0
- package/dist/api/transformers/series.d.ts +12 -0
- package/dist/api/types.d.ts +423 -383
- package/dist/api-BzICORqy.js +6 -0
- package/dist/{api-BV4wcElQ.js.map → api-BzICORqy.js.map} +1 -1
- package/dist/colors-CmP-sSZD.js.map +1 -1
- package/dist/{data-toggle-store.svelte-DU0VWdcf.js → data-toggle-store.svelte-BGbzblUJ.js} +6 -6
- package/dist/{data-toggle-store.svelte-DU0VWdcf.js.map → data-toggle-store.svelte-BGbzblUJ.js.map} +1 -1
- package/dist/index-BsWecoW1.js +63 -0
- package/dist/index-BsWecoW1.js.map +1 -0
- package/dist/labels-Bj_cocb1.js +966 -0
- package/dist/labels-Bj_cocb1.js.map +1 -0
- package/dist/transform-D7Oe8jUp.js +276 -0
- package/dist/transform-D7Oe8jUp.js.map +1 -0
- package/dist/types/index.d.ts +45 -0
- package/dist/venue-calendar.css +1 -1
- package/dist/venue-calendar.es.js +31 -37
- package/dist/venue-calendar.es.js.map +1 -1
- package/dist/venue-calendar.iife.js +40 -107
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +38 -125
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +170 -168
- package/dist/CartView-CXsAlVHs.js.map +0 -1
- package/dist/Checkout-BPAkGlf6.js +0 -1531
- package/dist/Checkout-BPAkGlf6.js.map +0 -1
- package/dist/Checkout-Bj85hSlQ.js.map +0 -1
- package/dist/CheckoutTimer-CSc35x4t.js +0 -35
- package/dist/CheckoutTimer-CSc35x4t.js.map +0 -1
- package/dist/CollectionView-BitCEQzn.js +0 -148
- package/dist/CollectionView-BitCEQzn.js.map +0 -1
- package/dist/Event-BAKC5X6r.js +0 -1910
- package/dist/Event-BAKC5X6r.js.map +0 -1
- package/dist/EventPage-DxiAuBVc.js +0 -336
- package/dist/EventPage-DxiAuBVc.js.map +0 -1
- package/dist/Heading-AFd3o0xt.js +0 -44
- package/dist/Heading-AFd3o0xt.js.map +0 -1
- package/dist/OrderSummarySkeleton-dDKUH741.js +0 -16
- package/dist/OrderSummarySkeleton-dDKUH741.js.map +0 -1
- package/dist/Text-CXR2fhx6.js +0 -54
- package/dist/Text-CXR2fhx6.js.map +0 -1
- package/dist/VenueCalendar-CISH7WGT.js.map +0 -1
- package/dist/ViewTicketsEmbed-Bo16Y0sx.js +0 -2039
- package/dist/ViewTicketsEmbed-Bo16Y0sx.js.map +0 -1
- package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js +0 -7
- package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js.map +0 -1
- package/dist/api-BV4wcElQ.js +0 -12
- package/dist/labels-B2ebkcUD.js +0 -659
- package/dist/labels-B2ebkcUD.js.map +0 -1
- package/dist/transform-B3tJXUnG.js +0 -275
- 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 {
|
|
5
|
-
import "
|
|
6
|
-
import "
|
|
7
|
-
import "
|
|
8
|
-
import "
|
|
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-d8u6MKEu.js";
|
|
5
|
+
import { g as S } from "./transform-D7Oe8jUp.js";
|
|
6
|
+
import { G as ge } from "./GalleryCard-C1EKGErR.js";
|
|
7
|
+
import ue from "./GroupedListView.legacy-D72fbNfA.js";
|
|
8
|
+
import { P as me } from "./CollectionView-C1O9xfVC.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
|
|
10
|
+
function Ie(G, c) {
|
|
14
11
|
e.push(c, !0), e.prop(c, "organizationId", 3, "");
|
|
15
|
-
let
|
|
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) ?
|
|
49
|
-
function
|
|
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(
|
|
92
|
+
e.set(h, !0), await V(M());
|
|
96
93
|
}), oe(() => {
|
|
97
94
|
e.set(h, !1);
|
|
98
95
|
});
|
|
99
|
-
var
|
|
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),
|
|
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
|
-
|
|
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(
|
|
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),
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
205
|
+
ue(r, {
|
|
209
206
|
get events() {
|
|
210
|
-
return e.get(
|
|
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
|
-
|
|
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,
|
|
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(
|
|
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(
|
|
235
|
+
e.reset(P), e.append(G, P), e.pop();
|
|
239
236
|
}
|
|
240
237
|
e.delegate(["click"]);
|
|
241
238
|
export {
|
|
242
|
-
|
|
239
|
+
Ie as default
|
|
243
240
|
};
|
|
244
|
-
//# sourceMappingURL=CollectionView.legacy-
|
|
241
|
+
//# sourceMappingURL=CollectionView.legacy-DK_mCA_g.js.map
|
package/dist/{CollectionView.legacy-CsBYjvZv.js.map → CollectionView.legacy-DK_mCA_g.js.map}
RENAMED
|
@@ -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":";;;;;;;;;;;;kBACA;gDAgBqB,EAAE;AAET,MAAAA,6BAAkB,MAAS,GACxBC,gCAAqB,SAAS,GAC3CC,qCAAmB,EAAI,GACvBC,IAAMC,EAAA,KAAAC,GAAA,UAAA,IAAA,OAAA,GAAA,GAGJC,IAAaF,EAAA,MAAO,IAAI,GACxBG,IAAYH,EAAA,MAAO,EAAI,GACvBI,IAAQJ,EAAA,MAAO,IAAI,GACnBK,IAAYL,EAAA,MAAO,EAAK,GACxBM,IAAmBN,EAAA,MAAO,EAAK,GAC/BO,IAAgBP,EAAA,MAAO,EAAE,GACzBQ,IAAgBR,EAAA,MAAO,EAAK,GAC5BS,IAAoBT,EAAA,MAAMA,EAAA,MAACH,EAAkB,CAAA,CAAA;WAGxCa,EAAeC,GAAO;;MAE3B,IAAIA,EAAM;AAAA,MACV,MAAMA,EAAM,SAASA,EAAM,QAAQ;AAAA,MACnC,MAAMA,EAAM,gBAAgBA,EAAM,cAAc,MAAM,GAAG,EAAE,CAAC,IAAI;AAAA,MAChE,OAAOA,EAAM,QAAQC,EAAYD,EAAM,KAAK,IAAI;AAAA,MAChD,UAAUA,EAAM,gBAAgBE,EAAeF,EAAM,aAAa,IAAI;AAAA,MACtE,QAAQA,EAAM,UAAU;AAAA,MACxB,MAAMA,EAAM,QAAQ;AAAA,MACpB,kBAAkBA,EAAM,oBAAoBA,EAAM;AAAA,MAClD,cAAcA,EAAM,gBAAgBA,EAAM;AAAA;EAE9C;WAGSG,EAAYH,GAAO;;MAExB,IAAIA,EAAM;AAAA,MACV,MAAMA,EAAM,SAASA,EAAM,QAAQ;AAAA,MACnC,MAAMA,EAAM,gBAAgBA,EAAM,cAAc,MAAM,GAAG,EAAE,CAAC,IAAI;AAAA,MAChE,eAAeA,EAAM,iBAAiB;AAAA,MACtC,OAAOA,EAAM,QAAQC,EAAYD,EAAM,KAAK,IAAI;AAAA,MAChD,QAAQA,EAAM,UAAU;AAAA,MACxB,MAAMA,EAAM,QAAQ;AAAA,MACpB,aAAaA,EAAM,eAAe;AAAA,MAClC,kBAAkBA,EAAM,oBAAoBA,EAAM;AAAA,MAClD,cAAcA,EAAM,gBAAgBA,EAAM;AAAA;EAE9C;WAESE,EAAeE,GAAK;AACtB,QAAA,CAAAA,UAAY;UACXC,IAAI,IAAO,KAAKD,CAAG;AAClB,WAAAE,GAAWD,GAAI,EACpB,MAAM,WACN,QAAQ,WACR,QAAQ,IAAI;AAAA,EAEhB;AAEI,MAAAE,0BACFhB,CAAU,IAAGiB,EAAenB,EAAA,IAACE,CAAU,EAAC,UAAM,CAAA,CAAA,IAAA,EAAA,GAG5CkB,IAAapB,EAAA,QAAA,MAAAA,EAAA,IAAYkB,CAAa,EAAC,IAAIR,CAAc,CAAA,GACzDW,IAAUrB,EAAA,QAAA,MAAAA,EAAA,IAAYkB,CAAa,EAAC,IAAIJ,CAAW,CAAA,GAGnDQ,oBAA2BxB,EAAgB,KAAAE,EAAA,IAAIkB,CAAa,EAAC,UAAU,CAAC;WAEnEC,EAAgBI,GAAQ;AACpB,WAAA,CAAA,GAAAA,CAAM,EAAE,KAAI,CAAEC,GAAGC,MACrB,CAAAD,EAAE,iBAAa,CAAKC,EAAE,gBAAsB,IAC5CD,EAAE,gBACFC,EAAE,gBAED,IAAA,KAAKD,EAAE,aAAa,EAAE,YAAO,IAC7B,KAAKC,EAAE,aAAa,EAAE,QAAO,IAHf,KADS,CAM9B;AAAA,EACH;WAESC,EAAiBC,GAAc;6BACf;AACf,YAAAC,IAAYD,EAAa,UAAUA;AACvB,MAAA1B,EAAA,kBAAA2B,EAAU,IAAIA,EAAU,QAAQ,EAAE;AAAA,IACtD;AAAA,EACF;iBAEeC,EAAeC,GAAK;cAC5BzB,CAAS;2BACK;AACjB,QAAAL,EAAA,IAAAI,GAAQL,EAAM,EAAC,0BAA0B,6BAA2B,EAAA,GACpEC,EAAA,IAAAG,GAAY,EAAK;;MAEnB;AAEA,MAAAH,EAAA,IAAAG,GAAY,EAAI,GAChBH,EAAA,IAAAI,GAAQ,IAAI,GACZJ,EAAA,IAAAQ,GAAgB,EAAK;UAEjB;cACIuB,IAAI,MAASC,GAAqB/B,EAAA,cAAe6B,CAAG;mBACrDzB,CAAS,EAAA;AAEV,YAAA0B,GAAM;cAEJA,EAAK,oBAAoBA,EAAK,OAAO,SAAS,qBAAqB;AACrE,YAAA/B,EAAA,IAAAM,GAAmB,EAAI,GACvBN,EAAA,IAAAG,GAAY,EAAK;;UAEnB;AACA,UAAAH,EAAA,IAAAE,GAAa6B,GAAI,EAAA,GACjB/B,EAAA,IAAAM,GAAmB,EAAK;AAAA,QAC1B,OAAO;AAED,cAAAwB,GAAK;AACP,YAAA9B,EAAA,IAAAM,GAAmB,EAAI,GACvBN,EAAA,IAAAQ,GAAgB,EAAI,GACpBR,EAAA,IAAAG,GAAY,EAAK;;UAEnB;AACA,UAAAH,EAAA,IAAAI,GAAQL,EAAM,EAAC,0BAA0B,6BAA2B,EAAA;AAAA,QACtE;AAAA,MACF,SAASkC,GAAK;AACR,YAAAjC,EAAA,IAAAK,CAAS,GAAE;AAEP,gBAAA6B,IAAMD,EAAI,WAAW;AAEzB,UAAAC,EAAI,SAAS,KAAK,KAClBA,EAAI,SAAS,KAAK,KAClBA,EAAI,SAAS,UAAU,IAEvBlC,EAAA,IAAAM,GAAmB,EAAI,UAEvBF,GAAQ8B,KAAO,6BAA2B,EAAA;AAAA,QAE9C;AAAA,MACF,UAAC;AACK,QAAAlC,EAAA,IAAAK,CAAS,KACXL,EAAA,IAAAG,GAAY,EAAK;AAAA,MAErB;AAAA;AAAA,EACF;WAESgC,EAAqBC,GAAG;AAE1B,IADLA,EAAE,eAAc,GACXpC,EAAA,IAAAO,CAAa,EAAC,KAAI,KACvBsB,QAAetB,CAAa,CAAA;AAAA,EAC9B;AAEA,EAAA8B,eAAoB;AAClB,IAAArC,EAAA,IAAAK,GAAY,EAAI,GACV,MAAAwB,EAAejC,GAAe;AAAA,EACtC,CAAC,GAED0C,SAAgB;AACd,IAAAtC,EAAA,IAAAK,GAAY,EAAK;AAAA,EACnB,CAAC;MAGFkC,IAAGC,GAAA,eAAHD,CAAG;;;AAEC,MAAAE,GAAcC,GAAA,EAAA,MAAA,UAAA,CAAA;AAAA;UAEdC,IAAGC,GAAA,GACDC,YADFF,CAAG,GAECG,YADFD,CAAG,eACDC,GAAE,EAAA;cAAFA,CAAE;AAGF,UAAAC,cAHAD,GAAE,CAAA,eAGFC,GAAC,EAAA;cAADA,CAAC;AAID,UAAAC,cAJAD,GAAC,CAAA,eAIDC,CAAI;;gCAGYjD,EAAM,EAAC,iBAAiB,gBAAgB,6BAE9CS,CAAa,IAChBT,EAAM,EAAC,qBACP,0CACA,EAAE;AAPP,QAAAkD,GAAaC,GAAA;AAAA;;;;;;;cACZ,QAAU;yBAAE3C,CAAa;AAAA;cAAzB,MAAU4C,GAAA;kBAAE5C,GAAa4C,GAAA,EAAA;AAAA;;;UAQ1BC,IAAMpD,EAAA,QAAAkD,GAAA,CAAA,eAANE,GAAM,EAAA;cAANA,CAAM,WAVRJ,CAAI,WARNH,CAAG,WADLF,CAAG;sBAGG5C,EAAM,EAAC,0BAA0B,4BAA4B,iBAG7DA,EAAM,EAAC,gCACN,oDAAoD,iBAalDA,EAAM,EAAC,kBAAkB,iBAAiB;AAAA,UAX/CC,EAAA,MAAA,UAAAgD,GAAeb,CAAoB,eATvCQ,CAAG;AAAA;UA0BHU,IAAGC,GAAA,GACDC,YADFF,CAAG,eACDE,CAAC;cAADA,CAAC,WADHF,CAAG,GACqBrD,EAAA,gBAAA,MAAAA,EAAA,SAAAwD,GAAA,IAAAzD,IAAO,eAAe,yBAAWK,CAAK,KAAA,EAAA,EAAA,CAAA,eAD9DiD,CAAG;AAAA;;;;AAMM,gBAAAI,IAAQzD,EAAA,QAAA,MAAGY,EAAWZ,EAAA,IAACE,CAAU,EAAC,UAAU,CAAA;cACnDwD,IAAGC,GAAA,GACDC,YADFF,CAAG,GAEDG,cADAD,GAAG,CAAA;kBADLF,CAAG;AACD,YAAA1D,EAAA,UAAA4D,kCAAqDH,CAAQ,KAAA,EAAA,GAAA,GAC7DzD,EAAA,cAAA6D,gBAASJ,CAAQ,CAAA,mBAAjBI,GAAG,OAAA7D,EAAA,IAAqBE,CAAU,EAAC,eAAe;AAAA,0BAFpDwD,CAAG;AAAA;;AAFD,UAAA1D,EAAA,IAAAE,CAAU,EAAC,cAAU4D,EAAAC,CAAA;AAAA;;UASzBC,IAAGhE,EAAA,QAAAiE,GAAA,CAAA,GACDC,YADFF,CAAG,eACDE,GAAE,EAAA;cAAFA,CAAE;wBAAFA,GAAE,CAAA;;;cAEAC,IAACC,GAAA,eAADD,GAAC,EAAA;kBAADA,CAAC,GAA6BnE,EAAA,gBAAA,MAAAA,EAAA,SAAAqE,GAAArE,EAAA,IAAAE,CAAU,EAAC,OAAO,CAAA,eAAhDiE,CAAC;AAAA;;AADC,UAAAnE,EAAA,IAAAE,CAAU,EAAC,WAAO4D,EAAAQ,CAAA;AAAA;;;;;cAIpBC,IAAGC,GAAA,eAAHD,GAAG,EAAA;kBAAHA,CAAG,GAAiCvE,EAAA,gBAAA,MAAAA,EAAA,SAAAyE,GAAAzE,EAAA,IAAAE,CAAU,EAAC,WAAW,CAAA,eAA1DqE,CAAG;AAAA;;AADD,UAAAvE,EAAA,IAAAE,CAAU,EAAC,eAAW4D,EAAAY,CAAA;AAAA;;cAL5BV,CAAG;AAWH,UAAAW,cAXAX,GAAG,CAAA,GAYDY,YADFD,CAAG,GAECE,YADFD,CAAG,eACDC,CAAE;cAAFA,CAAE;yBAAFA,GAAE,CAAA;;;cAGAC,IAAGC,GAAA,GAKDC,YALFF,CAAG;;AA6BD,cAAAG,cAxBAD,GAAM,CAAA;;kBALRF,CAAG;AAAH,YAAA9E,EAAA,cAAA8E,GAAG,cAGU/E,EAAM,EAAC,eAAe,cAAc,mBAE/CiF,GAAM,GAAA,mCAAA,MAAAE,GAAA;AAAA,cAG2B,4BAAAlF,EAAA,IAAAS,CAAiB,MAAK;AAAA,gBAHvDT,EAAA,cAAAgF,GAAM,cAKOjF,EAAM,EAAC,eAAe,cAAc,mBALjDiF,GAAM,gBAAAhF,EAAA,IAMSS,CAAiB,MAAK,SAAS,mBAkB9CwE,GAAM,GAAA,mCAAA,MAAAE,GAAA;AAAA,cAG2B,4BAAAnF,EAAA,IAAAS,CAAiB,MAAK;AAAA,gBAHvDT,EAAA,cAAAiF,GAAM,cAKOlF,EAAM,EAAC,YAAY,WAAW,mBAL3CkF,GAAM,gBAAAjF,EAAA,IAMSS,CAAiB,MAAK,MAAM;AAAA,mCA9B3CuE,GAAM,MAAAhF,EAAA,IAIWS,GAAoB,SAAS,CAAA,wBAoB9CwE,GAAM,MAAAjF,EAAA,IAIWS,GAAoB,MAAM,CAAA,eAjC7CqE,CAAG;AAAA;;gBADDxD,CAAe,KAAAwC,EAAAsB,EAAA;AAAA;;cAHrBR,CAAG;yBAAHA,GAAG,CAAA;;;;oCAiES7E,EAAM,EAAC,oBAAoB,oBAAoB,uBAC/CA,EAAM,EAAC,2BACd,oEAAoE;AAHvE,YAAAsF,GAAU3C,GAAA;AAAA;;;;;;;;;AAMV4C,UAAAA,GAAe5C,GAAA;AAAA;2BACNrB,CAAU;AAAA;8BACA;AAAA,0BACJK;AAAA;;cAGf6D,IAAGC,GAAA;iBAAHD,GAAG,IAAA,MAAAvF,EAAA,IACKoB,CAAa,GAAA,CAAIT,MAAOA,EAAM,IAAE,CAAA+B,GAAf/B,MAAK;AAC1B,YAAA8E,GAAW/C,GAAA;AAAA;6BAAE/B,CAAK;AAAA;4BAAgBe;AAAA;sBAFtC6D,CAAG,eAAHA,CAAG;AAAA;;AAbD,UAAAvF,EAAA,IAAAkB,CAAa,EAAC,WAAW,IAAC4C,EAAA4B,EAAA,IAAA1F,EAAA,IAMrBS,CAAiB,MAAK,SAAMqD,EAAA6B,IAAA,CAAA,IAAA7B,EAAA8B,IAAA,EAAA;AAAA;;cAtEvCjB,CAAG;AAV4B,QAAA3E,EAAA,SAAA6F,GAAA7F,EAAA,IAAAE,CAAU,EAAC,eAAe,GAYlBF,EAAA,SAAA8F,GAAA,WAAA9F,EAAA,IAAAkB,CAAa,EAAC,UAAM,EAAA,GAAA;AAAA;;;AAxDzD,MAAAlB,EAAA,IAAAG,CAAS,IAAA2D,EAAAiC,CAAA,IAAA/F,EAAA,IAEJM,CAAgB,IAAAwD,EAAAkC,GAAA,CAAA,IAAAhG,EAAA,IA0BhBI,CAAK,oBAILF,CAAU,KAAA4D,EAAAmC,GAAA,CAAA;AAAA;;UAjCrB1D,CAAG,eAAHA,CAAG;AAFI;;"}
|
|
1
|
+
{"version":3,"file":"CollectionView.legacy-DK_mCA_g.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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"}
|