@getmicdrop/venue-calendar 3.5.5 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/api.cjs +1 -1
- package/dist/api/api.cjs.map +1 -1
- package/dist/api/api.mjs +275 -260
- package/dist/api/api.mjs.map +1 -1
- package/dist/api/client.d.ts +0 -1
- package/dist/api/orders.d.ts +1 -2
- package/dist/venue-calendar.css +1 -1
- package/dist/venue-calendar.es.js +33632 -37
- package/dist/venue-calendar.es.js.map +1 -1
- package/dist/venue-calendar.iife.js +30 -46
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +30 -46
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +15 -16
- package/src/lib/theme.js +46 -38
- package/dist/CarouselView.legacy-C9QYS3av.js +0 -64
- package/dist/CarouselView.legacy-C9QYS3av.js.map +0 -1
- package/dist/Checkout.legacy-CyiqW4Im.js +0 -1217
- package/dist/Checkout.legacy-CyiqW4Im.js.map +0 -1
- package/dist/CollectionView.legacy-CQeXXMOU.js +0 -374
- package/dist/CollectionView.legacy-CQeXXMOU.js.map +0 -1
- package/dist/FeaturedView.legacy-C3td2GLq.js +0 -128
- package/dist/FeaturedView.legacy-C3td2GLq.js.map +0 -1
- package/dist/GalleryView.legacy-BJwdUDNJ.js +0 -51
- package/dist/GalleryView.legacy-BJwdUDNJ.js.map +0 -1
- package/dist/GroupedListView.legacy-DWU0K8XY.js +0 -144
- package/dist/GroupedListView.legacy-DWU0K8XY.js.map +0 -1
- package/dist/SeriesPage.legacy-D-ZoVrPE.js +0 -187
- package/dist/SeriesPage.legacy-D-ZoVrPE.js.map +0 -1
- package/dist/Success.legacy-D9zlNOn7.js +0 -191
- package/dist/Success.legacy-D9zlNOn7.js.map +0 -1
- package/dist/VenueCalendar-DX2HF1GE.js +0 -37103
- package/dist/VenueCalendar-DX2HF1GE.js.map +0 -1
- package/dist/colors-BZoMuXdh.js +0 -62
- package/dist/colors-BZoMuXdh.js.map +0 -1
- package/dist/seo/HostSeoController.d.ts +0 -59
- package/dist/seo/buildCollectionJsonLd.d.ts +0 -7
- package/dist/seo/buildEventJsonLd.d.ts +0 -9
- package/dist/seo/buildSeriesJsonLd.d.ts +0 -6
- package/dist/seo/helpers.d.ts +0 -40
- package/dist/seo/index.d.ts +0 -9
- package/dist/seo/seo.cjs +0 -2
- package/dist/seo/seo.cjs.map +0 -1
- package/dist/seo/seo.mjs +0 -460
- package/dist/seo/seo.mjs.map +0 -1
- package/dist/seo/types.d.ts +0 -135
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getmicdrop/venue-calendar",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"description": "A customizable Svelte calendar component for displaying comedy events",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/types/index.d.ts",
|
|
@@ -20,12 +20,6 @@
|
|
|
20
20
|
"require": "./dist/api/api.cjs",
|
|
21
21
|
"default": "./dist/api/api.mjs"
|
|
22
22
|
},
|
|
23
|
-
"./seo": {
|
|
24
|
-
"types": "./dist/seo/index.d.ts",
|
|
25
|
-
"import": "./dist/seo/seo.mjs",
|
|
26
|
-
"require": "./dist/seo/seo.cjs",
|
|
27
|
-
"default": "./dist/seo/seo.mjs"
|
|
28
|
-
},
|
|
29
23
|
"./theme": {
|
|
30
24
|
"import": "./src/lib/theme.js",
|
|
31
25
|
"default": "./src/lib/theme.js"
|
|
@@ -42,10 +36,9 @@
|
|
|
42
36
|
"build": "vite build",
|
|
43
37
|
"build:lib": "vite build --config vite.config.lib.js",
|
|
44
38
|
"build:api": "vite build --config vite.config.api.js",
|
|
45
|
-
"build:
|
|
46
|
-
"build:all": "npm run build:lib && npm run build:api && npm run build:seo",
|
|
39
|
+
"build:all": "npm run build:lib && npm run build:api",
|
|
47
40
|
"preview": "vite preview",
|
|
48
|
-
"prepare": "svelte-kit sync || echo ''",
|
|
41
|
+
"prepare": "svelte-kit sync || echo '' && husky",
|
|
49
42
|
"prepublishOnly": "npm run build:all",
|
|
50
43
|
"lint": "eslint src",
|
|
51
44
|
"lint:fix": "eslint src --fix",
|
|
@@ -78,8 +71,7 @@
|
|
|
78
71
|
"svelte": "^5.0.0"
|
|
79
72
|
},
|
|
80
73
|
"devDependencies": {
|
|
81
|
-
"@eslint/js": "^
|
|
82
|
-
"@getmicdrop/svelte-components": "^5.21.2",
|
|
74
|
+
"@eslint/js": "^10.0.1",
|
|
83
75
|
"@sveltejs/adapter-auto": "^6.1.0",
|
|
84
76
|
"@sveltejs/kit": "^2.49.4",
|
|
85
77
|
"@sveltejs/vite-plugin-svelte": "^6.2.4",
|
|
@@ -88,9 +80,13 @@
|
|
|
88
80
|
"@testing-library/svelte": "^5.3.1",
|
|
89
81
|
"@vitest/coverage-v8": "^4.0.16",
|
|
90
82
|
"baseline-browser-mapping": "^2.9.11",
|
|
91
|
-
"eslint": "^
|
|
83
|
+
"eslint": "^10.2.0",
|
|
92
84
|
"globals": "^16.5.0",
|
|
85
|
+
"husky": "^9.1.7",
|
|
93
86
|
"jsdom": "^28.0.0",
|
|
87
|
+
"lint-staged": "^16.4.0",
|
|
88
|
+
"prettier": "^3.8.3",
|
|
89
|
+
"prettier-plugin-svelte": "^3.5.1",
|
|
94
90
|
"svelte": "^5.46.1",
|
|
95
91
|
"svelte-check": "^4.3.5",
|
|
96
92
|
"tailwindcss": "^4.0.0",
|
|
@@ -100,13 +96,16 @@
|
|
|
100
96
|
"vitest": "^4.0.16"
|
|
101
97
|
},
|
|
102
98
|
"dependencies": {
|
|
99
|
+
"@getmicdrop/svelte-components": "^5.28.3",
|
|
103
100
|
"@stripe/stripe-js": "^8.0.0",
|
|
104
101
|
"carbon-icons-svelte": "^13.7.0",
|
|
105
|
-
"date-fns": "^4.1.0",
|
|
106
102
|
"esbuild": "^0.27.2",
|
|
107
103
|
"js-cookie": "^3.0.5",
|
|
108
|
-
"libphonenumber-js": "^1.12.40",
|
|
109
|
-
"qrcode": "^1.5.4",
|
|
110
104
|
"svelte-stripe": "^2.0.0"
|
|
105
|
+
},
|
|
106
|
+
"lint-staged": {
|
|
107
|
+
"*.{js,ts,svelte,json,css,md}": [
|
|
108
|
+
"prettier --write"
|
|
109
|
+
]
|
|
111
110
|
}
|
|
112
111
|
}
|
package/src/lib/theme.js
CHANGED
|
@@ -131,31 +131,35 @@ export const themes = {
|
|
|
131
131
|
*/
|
|
132
132
|
export function applyTheme(theme, container = document.documentElement) {
|
|
133
133
|
const cssVarMap = {
|
|
134
|
-
brandPrimary: '--
|
|
135
|
-
textPrimary: '--
|
|
136
|
-
textSecondary: '--
|
|
137
|
-
textTertiary: '--
|
|
138
|
-
bgPrimary: '--
|
|
139
|
-
bgSecondary: '--
|
|
140
|
-
bgQuaternary: '--
|
|
141
|
-
strokePrimary: '--
|
|
142
|
-
strokeSecondary: '--
|
|
143
|
-
statusOnSale: '--
|
|
144
|
-
statusSellingFast: '--
|
|
145
|
-
statusSoldOut: '--
|
|
146
|
-
todayBg: '--
|
|
147
|
-
todayText: '--
|
|
148
|
-
eventDotOnSale: '--
|
|
149
|
-
eventDotSellingFast: '--
|
|
150
|
-
eventDotSoldOut: '--
|
|
151
|
-
hoverBg: '--
|
|
152
|
-
focusRing: '--
|
|
134
|
+
brandPrimary: '--Brand-Primary',
|
|
135
|
+
textPrimary: '--Text-Primary',
|
|
136
|
+
textSecondary: '--Text-Secondary',
|
|
137
|
+
textTertiary: '--Text-Tertiary',
|
|
138
|
+
bgPrimary: '--BG-Primary',
|
|
139
|
+
bgSecondary: '--BG-Secondary',
|
|
140
|
+
bgQuaternary: '--BG-Quaternary',
|
|
141
|
+
strokePrimary: '--Stroke-Primary',
|
|
142
|
+
strokeSecondary: '--Stroke-Secondary',
|
|
143
|
+
statusOnSale: '--Status-OnSale',
|
|
144
|
+
statusSellingFast: '--Status-SellingFast',
|
|
145
|
+
statusSoldOut: '--Status-SoldOut',
|
|
146
|
+
todayBg: '--Today-BG',
|
|
147
|
+
todayText: '--Today-Text',
|
|
148
|
+
eventDotOnSale: '--EventDot-OnSale',
|
|
149
|
+
eventDotSellingFast: '--EventDot-SellingFast',
|
|
150
|
+
eventDotSoldOut: '--EventDot-SoldOut',
|
|
151
|
+
hoverBg: '--Hover-BG',
|
|
152
|
+
focusRing: '--Focus-Ring',
|
|
153
153
|
};
|
|
154
154
|
|
|
155
155
|
Object.entries(theme).forEach(([key, value]) => {
|
|
156
156
|
const cssVar = cssVarMap[key];
|
|
157
157
|
if (cssVar) {
|
|
158
158
|
container.style.setProperty(cssVar, value);
|
|
159
|
+
// Backwards compat: also set the typo'd variable name
|
|
160
|
+
if (key === 'textTertiary') {
|
|
161
|
+
container.style.setProperty('--Text-Tartiary', value);
|
|
162
|
+
}
|
|
159
163
|
}
|
|
160
164
|
});
|
|
161
165
|
}
|
|
@@ -167,25 +171,25 @@ export function applyTheme(theme, container = document.documentElement) {
|
|
|
167
171
|
*/
|
|
168
172
|
export function generateThemeCSS(theme) {
|
|
169
173
|
const cssVarMap = {
|
|
170
|
-
brandPrimary: '--
|
|
171
|
-
textPrimary: '--
|
|
172
|
-
textSecondary: '--
|
|
173
|
-
textTertiary: '--
|
|
174
|
-
bgPrimary: '--
|
|
175
|
-
bgSecondary: '--
|
|
176
|
-
bgQuaternary: '--
|
|
177
|
-
strokePrimary: '--
|
|
178
|
-
strokeSecondary: '--
|
|
179
|
-
statusOnSale: '--
|
|
180
|
-
statusSellingFast: '--
|
|
181
|
-
statusSoldOut: '--
|
|
182
|
-
todayBg: '--
|
|
183
|
-
todayText: '--
|
|
184
|
-
eventDotOnSale: '--
|
|
185
|
-
eventDotSellingFast: '--
|
|
186
|
-
eventDotSoldOut: '--
|
|
187
|
-
hoverBg: '--
|
|
188
|
-
focusRing: '--
|
|
174
|
+
brandPrimary: '--Brand-Primary',
|
|
175
|
+
textPrimary: '--Text-Primary',
|
|
176
|
+
textSecondary: '--Text-Secondary',
|
|
177
|
+
textTertiary: '--Text-Tertiary',
|
|
178
|
+
bgPrimary: '--BG-Primary',
|
|
179
|
+
bgSecondary: '--BG-Secondary',
|
|
180
|
+
bgQuaternary: '--BG-Quaternary',
|
|
181
|
+
strokePrimary: '--Stroke-Primary',
|
|
182
|
+
strokeSecondary: '--Stroke-Secondary',
|
|
183
|
+
statusOnSale: '--Status-OnSale',
|
|
184
|
+
statusSellingFast: '--Status-SellingFast',
|
|
185
|
+
statusSoldOut: '--Status-SoldOut',
|
|
186
|
+
todayBg: '--Today-BG',
|
|
187
|
+
todayText: '--Today-Text',
|
|
188
|
+
eventDotOnSale: '--EventDot-OnSale',
|
|
189
|
+
eventDotSellingFast: '--EventDot-SellingFast',
|
|
190
|
+
eventDotSoldOut: '--EventDot-SoldOut',
|
|
191
|
+
hoverBg: '--Hover-BG',
|
|
192
|
+
focusRing: '--Focus-Ring',
|
|
189
193
|
};
|
|
190
194
|
|
|
191
195
|
const lines = [];
|
|
@@ -193,6 +197,10 @@ export function generateThemeCSS(theme) {
|
|
|
193
197
|
const cssVar = cssVarMap[key];
|
|
194
198
|
if (cssVar) {
|
|
195
199
|
lines.push(` ${cssVar}: ${value};`);
|
|
200
|
+
// Backwards compat: also emit the typo'd variable name
|
|
201
|
+
if (key === 'textTertiary') {
|
|
202
|
+
lines.push(` --Text-Tartiary: ${value};`);
|
|
203
|
+
}
|
|
196
204
|
}
|
|
197
205
|
});
|
|
198
206
|
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import "svelte/internal/disclose-version";
|
|
2
|
-
import * as e from "svelte/internal/client";
|
|
3
|
-
import { onMount as _ } from "svelte";
|
|
4
|
-
import { f as k, G as C } from "./VenueCalendar-DX2HF1GE.js";
|
|
5
|
-
var S = e.from_html('<button class="carousel-arrow absolute top-1/2 -translate-y-1/2 z-10 w-10 h-10 rounded-full flex items-center justify-center bg-card/90 border border-border shadow-lg cursor-pointer transition-opacity duration-200 hover:bg-card hover: focus-visible:outline-2 focus-visible:outline-brand-primary:outline-brand-primary focus-visible:outline-offset-2 svelte-1lcnwer" style="left: 8px" aria-label="Scroll left"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-5 h-5 text-text-secondary"><polyline points="15 18 9 12 15 6"></polyline></svg></button>'), j = e.from_html('<div class="carousel-item svelte-1lcnwer" role="listitem"><!></div>'), B = e.from_html('<button class="carousel-arrow absolute top-1/2 -translate-y-1/2 z-10 w-10 h-10 rounded-full flex items-center justify-center bg-card/90 border border-border shadow-lg cursor-pointer transition-opacity duration-200 hover:bg-card hover: focus-visible:outline-2 focus-visible:outline-brand-primary:outline-brand-primary focus-visible:outline-offset-2 svelte-1lcnwer" style="right: 8px" aria-label="Scroll right"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-5 h-5 text-text-secondary"><polyline points="9 18 15 12 9 6"></polyline></svg></button>'), W = e.from_html('<section class="w-full" aria-label="Events carousel"><h2 class="sr-only svelte-1lcnwer">Upcoming events</h2> <div class="relative"><!> <div class="carousel-scroll flex gap-4 overflow-x-auto p-2 sm:p-3 lg:p-4 svelte-1lcnwer" role="list"></div> <!></div></section>');
|
|
6
|
-
function G(b, i) {
|
|
7
|
-
e.push(i, !0);
|
|
8
|
-
let h = e.prop(i, "events", 19, () => []), o, d = e.state(!1), u = e.state(!1), n = e.state(!1), g = e.derived(() => k(h()));
|
|
9
|
-
function a() {
|
|
10
|
-
if (!o) return;
|
|
11
|
-
const { scrollLeft: t, scrollWidth: r, clientWidth: l } = o;
|
|
12
|
-
e.set(d, t > 1), e.set(u, t + l < r - 1), e.set(n, r > l + 1);
|
|
13
|
-
}
|
|
14
|
-
function v(t) {
|
|
15
|
-
if (!o) return;
|
|
16
|
-
const r = o.querySelector(".carousel-item");
|
|
17
|
-
if (!r) return;
|
|
18
|
-
const l = r.offsetWidth + 16;
|
|
19
|
-
o.scrollBy({ left: t * l, behavior: "smooth" });
|
|
20
|
-
}
|
|
21
|
-
_(() => {
|
|
22
|
-
a();
|
|
23
|
-
const t = new ResizeObserver(() => a());
|
|
24
|
-
return o && t.observe(o), () => t.disconnect();
|
|
25
|
-
});
|
|
26
|
-
var c = W(), f = e.sibling(e.child(c), 2), p = e.child(f);
|
|
27
|
-
{
|
|
28
|
-
var w = (t) => {
|
|
29
|
-
var r = S();
|
|
30
|
-
e.delegated("click", r, () => v(-1)), e.append(t, r);
|
|
31
|
-
};
|
|
32
|
-
e.if(p, (t) => {
|
|
33
|
-
e.get(n) && e.get(d) && t(w);
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
var s = e.sibling(p, 2);
|
|
37
|
-
e.each(s, 21, () => e.get(g), e.index, (t, r) => {
|
|
38
|
-
var l = j(), x = e.child(l);
|
|
39
|
-
C(x, {
|
|
40
|
-
get event() {
|
|
41
|
-
return e.get(r);
|
|
42
|
-
},
|
|
43
|
-
get oneventClick() {
|
|
44
|
-
return i.oneventClick;
|
|
45
|
-
}
|
|
46
|
-
}), e.reset(l), e.append(t, l);
|
|
47
|
-
}), e.reset(s), e.bind_this(s, (t) => o = t, () => o);
|
|
48
|
-
var m = e.sibling(s, 2);
|
|
49
|
-
{
|
|
50
|
-
var y = (t) => {
|
|
51
|
-
var r = B();
|
|
52
|
-
e.delegated("click", r, () => v(1)), e.append(t, r);
|
|
53
|
-
};
|
|
54
|
-
e.if(m, (t) => {
|
|
55
|
-
e.get(n) && e.get(u) && t(y);
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
e.reset(f), e.reset(c), e.event("scroll", s, a), e.append(b, c), e.pop();
|
|
59
|
-
}
|
|
60
|
-
e.delegate(["click"]);
|
|
61
|
-
export {
|
|
62
|
-
G as default
|
|
63
|
-
};
|
|
64
|
-
//# sourceMappingURL=CarouselView.legacy-C9QYS3av.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselView.legacy-C9QYS3av.js","sources":["../src/components/Calendar/CarouselView.legacy.svelte"],"sourcesContent":["<script>\r\n import { onMount } from \"svelte\";\r\n import GalleryCard from \"./GalleryCard.svelte\";\r\n import { filterTodayAndFuture } from \"$lib/utils/browse-status.js\";\r\n\r\n let { events = [], oneventClick } = $props();\r\n\r\n let scrollContainer;\r\n let canScrollLeft = $state(false);\r\n let canScrollRight = $state(false);\r\n let showArrows = $state(false);\r\n\r\n // Filter to today and future, sorted chronologically\r\n let futureEvents = $derived(filterTodayAndFuture(events));\r\n\r\n function updateScrollState() {\r\n if (!scrollContainer) return;\r\n const { scrollLeft, scrollWidth, clientWidth } = scrollContainer;\r\n canScrollLeft = scrollLeft > 1;\r\n canScrollRight = scrollLeft + clientWidth < scrollWidth - 1;\r\n showArrows = scrollWidth > clientWidth + 1;\r\n }\r\n\r\n function scrollByCard(direction) {\r\n if (!scrollContainer) return;\r\n // Get the width of the first card item\r\n const firstCard = scrollContainer.querySelector('.carousel-item');\r\n if (!firstCard) return;\r\n const cardWidth = firstCard.offsetWidth + 16; // card width + gap\r\n scrollContainer.scrollBy({ left: direction * cardWidth, behavior: 'smooth' });\r\n }\r\n\r\n onMount(() => {\r\n updateScrollState();\r\n // Use ResizeObserver to update on container resize\r\n const observer = new ResizeObserver(() => updateScrollState());\r\n if (scrollContainer) {\r\n observer.observe(scrollContainer);\r\n }\r\n return () => observer.disconnect();\r\n });\r\n</script>\r\n\r\n<section class=\"w-full\" aria-label=\"Events carousel\">\r\n <h2 class=\"sr-only\">Upcoming events</h2>\r\n\r\n <div class=\"relative\">\r\n <!-- Left arrow -->\r\n {#if showArrows && canScrollLeft}\r\n <button\r\n class=\"carousel-arrow absolute top-1/2 -translate-y-1/2 z-10 w-10 h-10 rounded-full flex items-center justify-center bg-card/90 border border-border shadow-lg cursor-pointer transition-opacity duration-200 hover:bg-card hover: focus-visible:outline-2 focus-visible:outline-brand-primary:outline-brand-primary focus-visible:outline-offset-2\"\r\n style=\"left: 8px\"\r\n onclick={() => scrollByCard(-1)}\r\n aria-label=\"Scroll left\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"w-5 h-5 text-text-secondary\"><polyline points=\"15 18 9 12 15 6\"></polyline></svg>\r\n </button>\r\n {/if}\r\n\r\n <!-- Scroll container -->\r\n <div\r\n class=\"carousel-scroll flex gap-4 overflow-x-auto p-2 sm:p-3 lg:p-4\"\r\n bind:this={scrollContainer}\r\n onscroll={updateScrollState}\r\n role=\"list\"\r\n >\r\n {#each futureEvents as event}\r\n <div class=\"carousel-item\" role=\"listitem\">\r\n <GalleryCard {event} {oneventClick} />\r\n </div>\r\n {/each}\r\n </div>\r\n\r\n <!-- Right arrow -->\r\n {#if showArrows && canScrollRight}\r\n <button\r\n class=\"carousel-arrow absolute top-1/2 -translate-y-1/2 z-10 w-10 h-10 rounded-full flex items-center justify-center bg-card/90 border border-border shadow-lg cursor-pointer transition-opacity duration-200 hover:bg-card hover: focus-visible:outline-2 focus-visible:outline-brand-primary:outline-brand-primary focus-visible:outline-offset-2\"\r\n style=\"right: 8px\"\r\n onclick={() => scrollByCard(1)}\r\n aria-label=\"Scroll right\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"w-5 h-5 text-text-secondary\"><polyline points=\"9 18 15 12 9 6\"></polyline></svg>\r\n </button>\r\n {/if}\r\n </div>\r\n</section>\r\n\r\n<style>\r\n .carousel-scroll {\r\n scroll-snap-type: x mandatory;\r\n -webkit-overflow-scrolling: touch;\r\n scrollbar-width: none;\r\n }\r\n\r\n .carousel-scroll::-webkit-scrollbar {\r\n display: none;\r\n }\r\n\r\n .carousel-item {\r\n scroll-snap-align: start;\r\n flex: 0 0 85%;\r\n }\r\n\r\n /* Tablet: 2 visible cards with peek */\r\n @media (min-width: 640px) {\r\n .carousel-item {\r\n flex: 0 0 calc(50% - 8px);\r\n }\r\n }\r\n\r\n /* Desktop: 3 visible cards with peek */\r\n @media (min-width: 1024px) {\r\n .carousel-item {\r\n flex: 0 0 calc(33.333% - 11px);\r\n }\r\n }\r\n\r\n /* Hide arrows on mobile -- touch scrolling is natural */\r\n @media (max-width: 639px) {\r\n .carousel-arrow {\r\n display: none;\r\n }\r\n }\r\n\r\n /* Reduced motion */\r\n @media (prefers-reduced-motion: reduce) {\r\n .carousel-scroll {\r\n scroll-behavior: auto;\r\n }\r\n }\r\n\r\n /* Screen reader only text */\r\n .sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n padding: 0;\r\n margin: -1px;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border-width: 0;\r\n }\r\n</style>\r\n"],"names":["events","$","$$props","scrollContainer","canScrollLeft","canScrollRight","showArrows","futureEvents","filterTodayAndFuture","updateScrollState","scrollLeft","scrollWidth","clientWidth","scrollByCard","direction","firstCard","cardWidth","onMount","observer","section","root","div","button","root_1","$$render","consequent","div_1","node","$$anchor","event","div_2","root_2","GalleryCard","node_1","$$value","button_1","root_3","consequent_1"],"mappings":";;;;;iBAAA;;MAKQA,IAAMC,EAAA,KAAAC,GAAA,UAAA,IAAA,MAAA,EAAA,GAERC,GACAC,IAAgBH,EAAA,MAAO,EAAK,GAC5BI,IAAiBJ,EAAA,MAAO,EAAK,GAC7BK,IAAaL,EAAA,MAAO,EAAK,GAGzBM,IAAYN,EAAA,QAAA,MAAYO,EAAqBR,EAAM,CAAA,CAAA;AAE9C,WAAAS,IAAoB;SACtBN,EAAe;AACZ,UAAA,EAAA,YAAAO,GAAY,aAAAC,GAAa,aAAAC,EAAW,IAAKT;UACjDC,GAAgBM,IAAa,CAAC,GAC9BT,EAAA,IAAAI,GAAiBK,IAAaE,IAAcD,IAAc,CAAC,GAC3DV,EAAA,IAAAK,GAAaK,IAAcC,IAAc,CAAC;AAAA,EAC5C;WAESC,EAAaC,GAAW;SAC1BX,EAAe;AAEd,UAAAY,IAAYZ,EAAgB,cAAc,gBAAgB;SAC3DY,EAAS;AACR,UAAAC,IAAYD,EAAU,cAAc;AAC1C,IAAAZ,EAAgB,SAAQ,EAAG,MAAMW,IAAYE,GAAW,UAAU,UAAQ;AAAA,EAC5E;AAEA,EAAAC,QAAc;AACZ,IAAAR,EAAiB;UAEXS,IAAQ,IAAO,eAAc,MAAOT,EAAiB,CAAA;AACvD,WAAAN,KACFe,EAAS,QAAQf,CAAe,GAErB,MAAAe,EAAS,WAAU;AAAA,EAClC,CAAC;MAGFC,IAAOC,EAAA,GAGLC,sBAHFF,CAAO,GAAA,CAAA,eAGLE,CAAG;;;UAGCC,IAAMC,EAAA;2BAAND,GAAM,MAGUT,EAAY,EAAG,CAAA,eAH/BS,CAAM;AAAA;;AADJ,MAAArB,EAAA,IAAAK,CAAU,WAAIF,CAAa,KAAAoB,EAAAC,CAAA;AAAA;;MAY/BC,IAAGzB,EAAA,QAAA0B,GAAA,CAAA;SAAHD,GAAG,IAAA,MAAAzB,EAAA,IAMKM,CAAY,GAAAN,EAAA,OAAA,CAAA2B,GAAIC,MAAK;QACzBC,IAAGC,EAAA,eAAHD,CAAG;AACD,IAAAE,EAAWC,GAAA;AAAA;qBAAEJ,CAAK;AAAA;;;;gBADpBC,CAAG,eAAHA,CAAG;AAAA,cAPPJ,CAAG,eAAHA,GAAG,CAAAQ,MAES/B,IAAe+B,GAAA,MAAf/B,CAAe;oBAF3BuB,GAAG,CAAA;;;UAeDS,IAAMC,EAAA;2BAAND,GAAM,MAGUtB,EAAa,CAAC,CAAA,eAH9BsB,CAAM;AAAA;;AADJ,MAAAlC,EAAA,IAAAK,CAAU,WAAID,CAAc,KAAAmB,EAAAa,CAAA;AAAA;;UA5BlChB,CAAG,WAHLF,CAAO,GAiBHlB,EAAA,MAAA,UAAAyB,GAGWjB,CAAiB,eApBhCU,CAAO;AAFA;;"}
|