@getmicdrop/venue-calendar 4.0.75 → 4.0.77
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CarouselView.legacy-BPT7omc0.js → CarouselView.legacy-BZM1NIrW.js} +3 -3
- package/dist/{CarouselView.legacy-BPT7omc0.js.map → CarouselView.legacy-BZM1NIrW.js.map} +1 -1
- package/dist/{CartView-C0r_cp8p.js → CartView-R-wfMEGJ.js} +3 -3
- package/dist/{CartView-C0r_cp8p.js.map → CartView-R-wfMEGJ.js.map} +1 -1
- package/dist/{Checkout-8DbAtQiV.js → Checkout-Bu4RWr3T.js} +4 -4
- package/dist/{Checkout-8DbAtQiV.js.map → Checkout-Bu4RWr3T.js.map} +1 -1
- package/dist/{Checkout-CF9-zZNm.js → Checkout-CWs9ggjh.js} +5 -5
- package/dist/{Checkout-CF9-zZNm.js.map → Checkout-CWs9ggjh.js.map} +1 -1
- package/dist/{Checkout.legacy-6GcwHwRx.js → Checkout.legacy-BurmqOhh.js} +5 -5
- package/dist/{Checkout.legacy-6GcwHwRx.js.map → Checkout.legacy-BurmqOhh.js.map} +1 -1
- package/dist/{CheckoutTimer-DVJ_6-b6.js → CheckoutTimer-D32w_L51.js} +2 -2
- package/dist/{CheckoutTimer-DVJ_6-b6.js.map → CheckoutTimer-D32w_L51.js.map} +1 -1
- package/dist/{CollectionView-B9RGeFGs.js → CollectionView-C3HMFk7f.js} +5 -5
- package/dist/{CollectionView-B9RGeFGs.js.map → CollectionView-C3HMFk7f.js.map} +1 -1
- package/dist/{CollectionView.legacy-VSrOb3bd.js → CollectionView.legacy-Cikr-7dj.js} +3 -3
- package/dist/{CollectionView.legacy-VSrOb3bd.js.map → CollectionView.legacy-Cikr-7dj.js.map} +1 -1
- package/dist/{Event-DqJ4DRMN.js → Event-C63_VaYN.js} +3 -3
- package/dist/{Event-DqJ4DRMN.js.map → Event-C63_VaYN.js.map} +1 -1
- package/dist/{EventPage-Bz9xGXaO.js → EventPage-CD3_pfly.js} +76 -76
- package/dist/EventPage-CD3_pfly.js.map +1 -0
- package/dist/{EventPage.legacy-BpX-RS41.js → EventPage.legacy-B6Jpjd4t.js} +5 -5
- package/dist/EventPage.legacy-B6Jpjd4t.js.map +1 -0
- package/dist/{FeaturedView.legacy-B1cTubbC.js → FeaturedView.legacy-DI3D8Maq.js} +2 -2
- package/dist/{FeaturedView.legacy-B1cTubbC.js.map → FeaturedView.legacy-DI3D8Maq.js.map} +1 -1
- package/dist/{GalleryCard-Cdbtjs1l.js → GalleryCard-JcJh6D7k.js} +2 -2
- package/dist/{GalleryCard-Cdbtjs1l.js.map → GalleryCard-JcJh6D7k.js.map} +1 -1
- package/dist/{GalleryView.legacy-QopX59Fh.js → GalleryView.legacy-CpuubUkE.js} +3 -3
- package/dist/{GalleryView.legacy-QopX59Fh.js.map → GalleryView.legacy-CpuubUkE.js.map} +1 -1
- package/dist/{GroupedListView.legacy-BsmcQDkV.js → GroupedListView.legacy-ub3sQQet.js} +2 -2
- package/dist/{GroupedListView.legacy-BsmcQDkV.js.map → GroupedListView.legacy-ub3sQQet.js.map} +1 -1
- package/dist/{SeriesPage-DWzk5z8x.js → SeriesPage-DsCT-b5d.js} +5 -5
- package/dist/{SeriesPage-DWzk5z8x.js.map → SeriesPage-DsCT-b5d.js.map} +1 -1
- package/dist/{SeriesPage.legacy-OSjnGJel.js → SeriesPage.legacy-ClORu_RM.js} +2 -2
- package/dist/{SeriesPage.legacy-OSjnGJel.js.map → SeriesPage.legacy-ClORu_RM.js.map} +1 -1
- package/dist/{Success-CDBbSLvO.js → Success-B0iD_nCd.js} +6 -6
- package/dist/{Success-CDBbSLvO.js.map → Success-B0iD_nCd.js.map} +1 -1
- package/dist/{Success.legacy-DfpeFwVD.js → Success.legacy-dpJxuRRz.js} +2 -2
- package/dist/{Success.legacy-DfpeFwVD.js.map → Success.legacy-dpJxuRRz.js.map} +1 -1
- package/dist/{VenueCalendar-DOqIJDc-.js → VenueCalendar-DG1yLSIC.js} +38 -38
- package/dist/VenueCalendar-DG1yLSIC.js.map +1 -0
- package/dist/{ViewTicketsEmbed-CrXTuIeR.js → ViewTicketsEmbed-BuiGc6Ni.js} +2 -2
- package/dist/{ViewTicketsEmbed-CrXTuIeR.js.map → ViewTicketsEmbed-BuiGc6Ni.js.map} +1 -1
- package/dist/api/api.cjs +1 -1
- package/dist/api/api.cjs.map +1 -1
- package/dist/api/api.mjs +77 -77
- package/dist/api/api.mjs.map +1 -1
- package/dist/api/gift-cards.d.ts +4 -0
- package/dist/{api-CKdFeHMX.js → api-COPhxJ0b.js} +2 -2
- package/dist/{api-CKdFeHMX.js.map → api-COPhxJ0b.js.map} +1 -1
- package/dist/{data-toggle-store.svelte-CHu7XnXb.js → data-toggle-store.svelte-BsJFWbMo.js} +2 -2
- package/dist/{data-toggle-store.svelte-CHu7XnXb.js.map → data-toggle-store.svelte-BsJFWbMo.js.map} +1 -1
- package/dist/{labels-CMydN8rh.js → labels-oO3EPreB.js} +2 -2
- package/dist/{labels-CMydN8rh.js.map → labels-oO3EPreB.js.map} +1 -1
- package/dist/seo/helpers.d.ts +14 -0
- package/dist/seo/index.d.ts +1 -1
- package/dist/seo/seo.cjs +1 -1
- package/dist/seo/seo.cjs.map +1 -1
- package/dist/seo/seo.mjs +4 -0
- package/dist/seo/seo.mjs.map +1 -1
- package/dist/{transform-C4nR4if0.js → transform-Cz6IlCjS.js} +2 -2
- package/dist/{transform-C4nR4if0.js.map → transform-Cz6IlCjS.js.map} +1 -1
- package/dist/venue-calendar.es.js +1 -1
- package/dist/venue-calendar.iife.js +6 -6
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +26 -26
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +168 -168
- package/dist/EventPage-Bz9xGXaO.js.map +0 -1
- package/dist/EventPage.legacy-BpX-RS41.js.map +0 -1
- package/dist/VenueCalendar-DOqIJDc-.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,168 +1,168 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@getmicdrop/venue-calendar",
|
|
3
|
-
"version": "4.0.
|
|
4
|
-
"description": "A customizable Svelte calendar component for displaying comedy events",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"types": "./dist/types/index.d.ts",
|
|
7
|
-
"main": "./dist/venue-calendar.umd.js",
|
|
8
|
-
"module": "./dist/venue-calendar.es.js",
|
|
9
|
-
"exports": {
|
|
10
|
-
".": {
|
|
11
|
-
"types": "./dist/types/index.d.ts",
|
|
12
|
-
"svelte": "./dist/venue-calendar.es.js",
|
|
13
|
-
"import": "./dist/venue-calendar.es.js",
|
|
14
|
-
"require": "./dist/venue-calendar.umd.js",
|
|
15
|
-
"default": "./dist/venue-calendar.es.js"
|
|
16
|
-
},
|
|
17
|
-
"./api": {
|
|
18
|
-
"types": "./dist/api/index.d.ts",
|
|
19
|
-
"import": "./dist/api/api.mjs",
|
|
20
|
-
"require": "./dist/api/api.cjs",
|
|
21
|
-
"default": "./dist/api/api.mjs"
|
|
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
|
-
"./theme": {
|
|
30
|
-
"import": "./src/lib/theme.js",
|
|
31
|
-
"default": "./src/lib/theme.js"
|
|
32
|
-
},
|
|
33
|
-
"./dist/venue-calendar.css": "./dist/venue-calendar.css"
|
|
34
|
-
},
|
|
35
|
-
"files": [
|
|
36
|
-
"dist",
|
|
37
|
-
"src/lib/theme.js",
|
|
38
|
-
"README.md"
|
|
39
|
-
],
|
|
40
|
-
"scripts": {
|
|
41
|
-
"dev": "vite dev",
|
|
42
|
-
"build": "vite build",
|
|
43
|
-
"build:lib": "VC_IIFE_ONLY=1 vite build --config vite.config.lib.js && vite build --config vite.config.lib.js",
|
|
44
|
-
"build:api": "vite build --config vite.config.api.js",
|
|
45
|
-
"build:seo": "vite build --config vite.config.seo.js",
|
|
46
|
-
"build:all": "npm run build:lib && npm run build:api && npm run build:seo",
|
|
47
|
-
"preview": "vite preview",
|
|
48
|
-
"prepare": "node ./scripts/prepare.js",
|
|
49
|
-
"prepublishOnly": "npm run build:all",
|
|
50
|
-
"_lint_comment": "Ratchet cap. 2026-05-31: ESLint had NO svelte parser configured, so the entire .svelte tree was unparsed (300 'Unexpected token <' errors) and effectively unlinted. Wired the svelte parser (eslint.config.js) + downgraded the recommended svelte rules to 'warn' for the turn-on wave (mirrors performers-portal); cap raised from 270 to the new baseline (0 errors). Drives down via follow-up cleanup; design-system:check:strict still gates NEW design-system violations against its own baseline file.",
|
|
51
|
-
"lint": "eslint src --max-warnings 1638",
|
|
52
|
-
"gate": "sh scripts/gate.sh",
|
|
53
|
-
"lint:fix": "eslint src --fix",
|
|
54
|
-
"lint:css": "stylelint \"src/**/*.{css,scss,svelte}\" --allow-empty-input",
|
|
55
|
-
"lint:css:fix": "stylelint \"src/**/*.{css,scss,svelte}\" --allow-empty-input --fix",
|
|
56
|
-
"knip": "knip",
|
|
57
|
-
"depcruise": "dependency-cruiser src --config .dependency-cruiser.cjs",
|
|
58
|
-
"design-system:check": "node scripts/design-system-check.mjs --report-only",
|
|
59
|
-
"design-system:check:strict": "node scripts/design-system-check.mjs --fail-on-new",
|
|
60
|
-
"design-system:baseline": "node scripts/design-system-check.mjs --baseline",
|
|
61
|
-
"check": "svelte-check --diagnostic-sources \"js,svelte\"",
|
|
62
|
-
"check:all": "svelte-check",
|
|
63
|
-
"test": "vitest run",
|
|
64
|
-
"test:watch": "vitest",
|
|
65
|
-
"test:ui": "vitest --ui",
|
|
66
|
-
"test:e2e": "playwright test",
|
|
67
|
-
"test:e2e:build": "npm run build:lib && playwright test",
|
|
68
|
-
"size": "size-limit",
|
|
69
|
-
"size:why": "size-limit --why"
|
|
70
|
-
},
|
|
71
|
-
"size-limit": [
|
|
72
|
-
{
|
|
73
|
-
"name": "iife (CDN bundle)",
|
|
74
|
-
"path": "dist/venue-calendar.iife.js",
|
|
75
|
-
"limit": "660 KB",
|
|
76
|
-
"gzip": true
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"name": "es (npm bundle)",
|
|
80
|
-
"path": "dist/venue-calendar.es.js",
|
|
81
|
-
"limit": "60 KB",
|
|
82
|
-
"gzip": true
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"name": "css",
|
|
86
|
-
"path": "dist/venue-calendar.css",
|
|
87
|
-
"limit": "50 KB",
|
|
88
|
-
"gzip": true
|
|
89
|
-
}
|
|
90
|
-
],
|
|
91
|
-
"keywords": [
|
|
92
|
-
"svelte",
|
|
93
|
-
"calendar",
|
|
94
|
-
"events",
|
|
95
|
-
"comedy",
|
|
96
|
-
"venue",
|
|
97
|
-
"component",
|
|
98
|
-
"micdrop"
|
|
99
|
-
],
|
|
100
|
-
"author": "MicDrop",
|
|
101
|
-
"license": "MIT",
|
|
102
|
-
"repository": {
|
|
103
|
-
"type": "git",
|
|
104
|
-
"url": "git+https://github.com/get-micdrop/venue-calendar.git"
|
|
105
|
-
},
|
|
106
|
-
"bugs": {
|
|
107
|
-
"url": "https://github.com/get-micdrop/venue-calendar/issues"
|
|
108
|
-
},
|
|
109
|
-
"homepage": "https://github.com/get-micdrop/venue-calendar#readme",
|
|
110
|
-
"peerDependencies": {
|
|
111
|
-
"svelte": "^5.0.0"
|
|
112
|
-
},
|
|
113
|
-
"devDependencies": {
|
|
114
|
-
"@eslint/js": "^9.39.1",
|
|
115
|
-
"@getmicdrop/svelte-components": "^6.24.
|
|
116
|
-
"@playwright/test": "^1.60.0",
|
|
117
|
-
"@size-limit/file": "^11.1.0",
|
|
118
|
-
"@sveltejs/adapter-auto": "^6.1.0",
|
|
119
|
-
"@sveltejs/kit": "^2.49.4",
|
|
120
|
-
"@sveltejs/vite-plugin-svelte": "^6.2.4",
|
|
121
|
-
"@tailwindcss/vite": "^4.0.0",
|
|
122
|
-
"@testing-library/jest-dom": "^6.9.1",
|
|
123
|
-
"@testing-library/svelte": "^5.3.1",
|
|
124
|
-
"@typescript-eslint/parser": "^8.59.2",
|
|
125
|
-
"@vitest/coverage-v8": "^4.0.16",
|
|
126
|
-
"baseline-browser-mapping": "^2.9.11",
|
|
127
|
-
"dependency-cruiser": "^17.4.0",
|
|
128
|
-
"esbuild": "^0.27.2",
|
|
129
|
-
"eslint": "^9.7.0",
|
|
130
|
-
"eslint-plugin-svelte": "^3.19.0",
|
|
131
|
-
"globals": "^16.5.0",
|
|
132
|
-
"husky": "^9.1.7",
|
|
133
|
-
"jsdom": "^28.0.0",
|
|
134
|
-
"knip": "^6.12.1",
|
|
135
|
-
"lint-staged": "^16.4.0",
|
|
136
|
-
"postcss-html": "^1.7.0",
|
|
137
|
-
"prettier": "^3.8.3",
|
|
138
|
-
"prettier-plugin-svelte": "^3.5.1",
|
|
139
|
-
"size-limit": "^11.1.0",
|
|
140
|
-
"stylelint": "^16.16.0",
|
|
141
|
-
"stylelint-config-standard": "^36.0.1",
|
|
142
|
-
"svelte": "^5.46.1",
|
|
143
|
-
"svelte-check": "^4.3.5",
|
|
144
|
-
"tailwindcss": "^4.0.0",
|
|
145
|
-
"typescript": "^5.9.3",
|
|
146
|
-
"vite": "^7.0.0",
|
|
147
|
-
"vite-plugin-dts": "^4.5.0",
|
|
148
|
-
"vitest": "^4.0.16"
|
|
149
|
-
},
|
|
150
|
-
"dependencies": {
|
|
151
|
-
"@stripe/stripe-js": "^8.0.0",
|
|
152
|
-
"carbon-icons-svelte": "^13.7.0",
|
|
153
|
-
"date-fns": "^4.1.0",
|
|
154
|
-
"js-cookie": "^3.0.5",
|
|
155
|
-
"libphonenumber-js": "^1.12.40",
|
|
156
|
-
"qrcode": "^1.5.4",
|
|
157
|
-
"svelte-stripe": "^2.0.0"
|
|
158
|
-
},
|
|
159
|
-
"lint-staged": {
|
|
160
|
-
"*.{js,ts,svelte}": [
|
|
161
|
-
"eslint --fix",
|
|
162
|
-
"prettier --write"
|
|
163
|
-
],
|
|
164
|
-
"*.{json,css,md}": [
|
|
165
|
-
"prettier --write"
|
|
166
|
-
]
|
|
167
|
-
}
|
|
168
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@getmicdrop/venue-calendar",
|
|
3
|
+
"version": "4.0.77",
|
|
4
|
+
"description": "A customizable Svelte calendar component for displaying comedy events",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"types": "./dist/types/index.d.ts",
|
|
7
|
+
"main": "./dist/venue-calendar.umd.js",
|
|
8
|
+
"module": "./dist/venue-calendar.es.js",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/types/index.d.ts",
|
|
12
|
+
"svelte": "./dist/venue-calendar.es.js",
|
|
13
|
+
"import": "./dist/venue-calendar.es.js",
|
|
14
|
+
"require": "./dist/venue-calendar.umd.js",
|
|
15
|
+
"default": "./dist/venue-calendar.es.js"
|
|
16
|
+
},
|
|
17
|
+
"./api": {
|
|
18
|
+
"types": "./dist/api/index.d.ts",
|
|
19
|
+
"import": "./dist/api/api.mjs",
|
|
20
|
+
"require": "./dist/api/api.cjs",
|
|
21
|
+
"default": "./dist/api/api.mjs"
|
|
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
|
+
"./theme": {
|
|
30
|
+
"import": "./src/lib/theme.js",
|
|
31
|
+
"default": "./src/lib/theme.js"
|
|
32
|
+
},
|
|
33
|
+
"./dist/venue-calendar.css": "./dist/venue-calendar.css"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"src/lib/theme.js",
|
|
38
|
+
"README.md"
|
|
39
|
+
],
|
|
40
|
+
"scripts": {
|
|
41
|
+
"dev": "vite dev",
|
|
42
|
+
"build": "vite build",
|
|
43
|
+
"build:lib": "VC_IIFE_ONLY=1 vite build --config vite.config.lib.js && vite build --config vite.config.lib.js",
|
|
44
|
+
"build:api": "vite build --config vite.config.api.js",
|
|
45
|
+
"build:seo": "vite build --config vite.config.seo.js",
|
|
46
|
+
"build:all": "npm run build:lib && npm run build:api && npm run build:seo",
|
|
47
|
+
"preview": "vite preview",
|
|
48
|
+
"prepare": "node ./scripts/prepare.js",
|
|
49
|
+
"prepublishOnly": "npm run build:all",
|
|
50
|
+
"_lint_comment": "Ratchet cap. 2026-05-31: ESLint had NO svelte parser configured, so the entire .svelte tree was unparsed (300 'Unexpected token <' errors) and effectively unlinted. Wired the svelte parser (eslint.config.js) + downgraded the recommended svelte rules to 'warn' for the turn-on wave (mirrors performers-portal); cap raised from 270 to the new baseline (0 errors). Drives down via follow-up cleanup; design-system:check:strict still gates NEW design-system violations against its own baseline file.",
|
|
51
|
+
"lint": "eslint src --max-warnings 1638",
|
|
52
|
+
"gate": "sh scripts/gate.sh",
|
|
53
|
+
"lint:fix": "eslint src --fix",
|
|
54
|
+
"lint:css": "stylelint \"src/**/*.{css,scss,svelte}\" --allow-empty-input",
|
|
55
|
+
"lint:css:fix": "stylelint \"src/**/*.{css,scss,svelte}\" --allow-empty-input --fix",
|
|
56
|
+
"knip": "knip",
|
|
57
|
+
"depcruise": "dependency-cruiser src --config .dependency-cruiser.cjs",
|
|
58
|
+
"design-system:check": "node scripts/design-system-check.mjs --report-only",
|
|
59
|
+
"design-system:check:strict": "node scripts/design-system-check.mjs --fail-on-new",
|
|
60
|
+
"design-system:baseline": "node scripts/design-system-check.mjs --baseline",
|
|
61
|
+
"check": "svelte-check --diagnostic-sources \"js,svelte\"",
|
|
62
|
+
"check:all": "svelte-check",
|
|
63
|
+
"test": "vitest run",
|
|
64
|
+
"test:watch": "vitest",
|
|
65
|
+
"test:ui": "vitest --ui",
|
|
66
|
+
"test:e2e": "playwright test",
|
|
67
|
+
"test:e2e:build": "npm run build:lib && playwright test",
|
|
68
|
+
"size": "size-limit",
|
|
69
|
+
"size:why": "size-limit --why"
|
|
70
|
+
},
|
|
71
|
+
"size-limit": [
|
|
72
|
+
{
|
|
73
|
+
"name": "iife (CDN bundle)",
|
|
74
|
+
"path": "dist/venue-calendar.iife.js",
|
|
75
|
+
"limit": "660 KB",
|
|
76
|
+
"gzip": true
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "es (npm bundle)",
|
|
80
|
+
"path": "dist/venue-calendar.es.js",
|
|
81
|
+
"limit": "60 KB",
|
|
82
|
+
"gzip": true
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "css",
|
|
86
|
+
"path": "dist/venue-calendar.css",
|
|
87
|
+
"limit": "50 KB",
|
|
88
|
+
"gzip": true
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"keywords": [
|
|
92
|
+
"svelte",
|
|
93
|
+
"calendar",
|
|
94
|
+
"events",
|
|
95
|
+
"comedy",
|
|
96
|
+
"venue",
|
|
97
|
+
"component",
|
|
98
|
+
"micdrop"
|
|
99
|
+
],
|
|
100
|
+
"author": "MicDrop",
|
|
101
|
+
"license": "MIT",
|
|
102
|
+
"repository": {
|
|
103
|
+
"type": "git",
|
|
104
|
+
"url": "git+https://github.com/get-micdrop/venue-calendar.git"
|
|
105
|
+
},
|
|
106
|
+
"bugs": {
|
|
107
|
+
"url": "https://github.com/get-micdrop/venue-calendar/issues"
|
|
108
|
+
},
|
|
109
|
+
"homepage": "https://github.com/get-micdrop/venue-calendar#readme",
|
|
110
|
+
"peerDependencies": {
|
|
111
|
+
"svelte": "^5.0.0"
|
|
112
|
+
},
|
|
113
|
+
"devDependencies": {
|
|
114
|
+
"@eslint/js": "^9.39.1",
|
|
115
|
+
"@getmicdrop/svelte-components": "^6.24.64",
|
|
116
|
+
"@playwright/test": "^1.60.0",
|
|
117
|
+
"@size-limit/file": "^11.1.0",
|
|
118
|
+
"@sveltejs/adapter-auto": "^6.1.0",
|
|
119
|
+
"@sveltejs/kit": "^2.49.4",
|
|
120
|
+
"@sveltejs/vite-plugin-svelte": "^6.2.4",
|
|
121
|
+
"@tailwindcss/vite": "^4.0.0",
|
|
122
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
123
|
+
"@testing-library/svelte": "^5.3.1",
|
|
124
|
+
"@typescript-eslint/parser": "^8.59.2",
|
|
125
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
126
|
+
"baseline-browser-mapping": "^2.9.11",
|
|
127
|
+
"dependency-cruiser": "^17.4.0",
|
|
128
|
+
"esbuild": "^0.27.2",
|
|
129
|
+
"eslint": "^9.7.0",
|
|
130
|
+
"eslint-plugin-svelte": "^3.19.0",
|
|
131
|
+
"globals": "^16.5.0",
|
|
132
|
+
"husky": "^9.1.7",
|
|
133
|
+
"jsdom": "^28.0.0",
|
|
134
|
+
"knip": "^6.12.1",
|
|
135
|
+
"lint-staged": "^16.4.0",
|
|
136
|
+
"postcss-html": "^1.7.0",
|
|
137
|
+
"prettier": "^3.8.3",
|
|
138
|
+
"prettier-plugin-svelte": "^3.5.1",
|
|
139
|
+
"size-limit": "^11.1.0",
|
|
140
|
+
"stylelint": "^16.16.0",
|
|
141
|
+
"stylelint-config-standard": "^36.0.1",
|
|
142
|
+
"svelte": "^5.46.1",
|
|
143
|
+
"svelte-check": "^4.3.5",
|
|
144
|
+
"tailwindcss": "^4.0.0",
|
|
145
|
+
"typescript": "^5.9.3",
|
|
146
|
+
"vite": "^7.0.0",
|
|
147
|
+
"vite-plugin-dts": "^4.5.0",
|
|
148
|
+
"vitest": "^4.0.16"
|
|
149
|
+
},
|
|
150
|
+
"dependencies": {
|
|
151
|
+
"@stripe/stripe-js": "^8.0.0",
|
|
152
|
+
"carbon-icons-svelte": "^13.7.0",
|
|
153
|
+
"date-fns": "^4.1.0",
|
|
154
|
+
"js-cookie": "^3.0.5",
|
|
155
|
+
"libphonenumber-js": "^1.12.40",
|
|
156
|
+
"qrcode": "^1.5.4",
|
|
157
|
+
"svelte-stripe": "^2.0.0"
|
|
158
|
+
},
|
|
159
|
+
"lint-staged": {
|
|
160
|
+
"*.{js,ts,svelte}": [
|
|
161
|
+
"eslint --fix",
|
|
162
|
+
"prettier --write"
|
|
163
|
+
],
|
|
164
|
+
"*.{json,css,md}": [
|
|
165
|
+
"prettier --write"
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventPage-Bz9xGXaO.js","sources":["../src/lib/navigation.ts","../src/components/Views/EventPage.svelte"],"sourcesContent":["/**\r\n * Public-calendar URL builders. Centralizes the route shapes so call sites\r\n * stop hand-rolling `goto(`/${id}/${slug}`)` template literals\r\n * (Atlas utility-url-builders convergence). One place per route.\r\n */\r\n\r\n/** Event (or occurrence) page: `/<id>/<slug>`. */\r\nexport function buildEventUrl(id: number | string, slug: string): string {\r\n return `/${id}/${slug}`;\r\n}\r\n\r\n/** Event page by slug only: `/<slug>`. */\r\nexport function buildEventBySlugUrl(slug: string): string {\r\n return `/${slug}`;\r\n}\r\n\r\n/** Checkout for an event: `/<id>/<slug>/checkout`. */\r\nexport function buildCheckoutUrl(id: number | string, slug: string): string {\r\n return `/${id}/${slug}/checkout`;\r\n}\r\n\r\n/** Checkout success page: `/<id>/<slug>/checkout/success`. */\r\nexport function buildCheckoutSuccessUrl(\r\n id: number | string,\r\n slug: string\r\n): string {\r\n return `${buildCheckoutUrl(id, slug)}/success`;\r\n}\r\n","<script module>\r\n\timport { createLogger } from '@getmicdrop/svelte-components';\r\n\tconst logger = createLogger('EventPage');\r\n</script>\r\n\r\n<script lang=\"ts\">\r\n\timport { onMount } from 'svelte';\r\n\timport { goto } from '$app/navigation';\r\n\timport { Locked } from 'carbon-icons-svelte';\r\n\timport { InputModal, parseEventId } from '@getmicdrop/svelte-components';\r\n\timport type { EventId } from '@getmicdrop/svelte-components';\r\n\timport { toast } from '@getmicdrop/svelte-components/toast';\r\n\timport AirbnbSplitMain from '$lib/public-calendar-flow/Event.svelte';\r\n\timport { transformApiEvent } from '$lib/public-calendar-flow/transform';\r\n\timport { validatePromoCode } from '$lib/api/promo';\r\n\timport { buildEventUrl, buildEventBySlugUrl, buildCheckoutUrl } from '$lib/navigation';\r\n\timport {\r\n\t\tpersistCheckoutState,\r\n\t\tinitiateOrder,\r\n\t\ttrackUTMSource,\r\n\t} from '$lib/utils/utils.js';\r\n\timport {\r\n\t\tfetchSeriesOccurrences,\r\n\t\tfetchEventDetails,\r\n\t\tcheckEventPassword,\r\n\t} from '$lib/api';\r\n\timport type {\r\n\t\tEventData,\r\n\t\tPromoCodeState,\r\n\t\tOrderTotals,\r\n\t\tSeriesOccurrence,\r\n\t} from '$lib/public-calendar-flow/types';\r\n\r\n\t// --- Legacy fallback ---\r\n\t// RETIREMENT: 2026-08-13 — see docs/LEGACY_RETIREMENT.md.\r\n\tlet useLegacy = $state(false);\r\n\tlet LegacyComponent: any = $state(null);\r\n\r\n\tif (typeof window !== 'undefined') {\r\n\t\tconst params = new URLSearchParams(window.location.search);\r\n\t\tif (params.get('legacy') === '1') {\r\n\t\t\tuseLegacy = true;\r\n\t\t}\r\n\t}\r\n\r\n\t$effect(() => {\r\n\t\tif (useLegacy && !LegacyComponent) {\r\n\t\t\tlogger.warn(\r\n\t\t\t\t'[VC] DEPRECATED: ?legacy=1 fallback for EventPage retires on 2026-08-13. See docs/LEGACY_RETIREMENT.md.'\r\n\t\t\t);\r\n\t\t\timport('./EventPage.legacy.svelte').then((m) => {\r\n\t\t\t\tLegacyComponent = m.default;\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tuseLegacy = false;\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t// --- Props (matches old EventPage external interface) ---\r\n\tinterface Props {\r\n\t\trawEvent?: any;\r\n\t\teventId?: string | number;\r\n\t\tslug?: string;\r\n\t\tcurrentEventId?: number | null;\r\n\t\tonNavigateBack?: () => void;\r\n\t\tonBuyTickets?: (eventId: EventId, slug: string) => void;\r\n\t\t/**\r\n\t\t * Optional checkout hand-off. The standalone get-micdrop.com route lets\r\n\t\t * this default to navigating to /{id}/{slug}/checkout; the embed passes a\r\n\t\t * callback that renders Checkout in-place instead (the cart is already\r\n\t\t * created when this fires). Receives (id, slug, rawEvent).\r\n\t\t */\r\n\t\tonNavigateToCart?: (id: string | number, slug: string, rawEvent: any) => void;\r\n\t\torganizationId?: string;\r\n\t\tlabels?: Record<string, string>;\r\n\t}\r\n\r\n\tlet {\r\n\t\trawEvent: rawEventProp = undefined,\r\n\t\teventId: eventIdProp = undefined,\r\n\t\tslug: slugProp = '',\r\n\t\tcurrentEventId: currentEventIdProp = undefined,\r\n\t\tonNavigateBack = undefined,\r\n\t\tonBuyTickets = undefined,\r\n\t\tonNavigateToCart = undefined,\r\n\t\torganizationId = '',\r\n\t\tlabels = {},\r\n\t}: Props = $props();\r\n\r\n\t// --- Data state ---\r\n\t/* svelte-ignore state_referenced_locally */\r\n\tlet rawEvent = $state<any>(rawEventProp ?? null);\r\n\t/* svelte-ignore state_referenced_locally */\r\n\tlet dataLoading = $state(!rawEventProp && !!eventIdProp);\r\n\r\n\t// Keep rawEvent in sync if rawEventProp changes reactively\r\n\t$effect(() => {\r\n\t\tif (rawEventProp) rawEvent = rawEventProp;\r\n\t});\r\n\tlet dataError = $state<string | null>(null);\r\n\r\n\t// Transform raw API data to EventData\r\n\tlet baseEventData = $derived(rawEvent ? transformApiEvent(rawEvent) : null);\r\n\tlet id = $derived(eventIdProp || baseEventData?.id || '');\r\n\tlet slug = $derived(slugProp || baseEventData?.slug || '');\r\n\r\n\t// Series occurrences (async enrichment)\r\n\tlet seriesOccurrences = $state<SeriesOccurrence[]>([]);\r\n\tlet eventData = $derived<EventData | null>(\r\n\t\tbaseEventData\r\n\t\t\t? {\r\n\t\t\t\t\t...baseEventData,\r\n\t\t\t\t\tseriesOccurrences: seriesOccurrences.length > 0\r\n\t\t\t\t\t\t? seriesOccurrences\r\n\t\t\t\t\t\t: baseEventData.seriesOccurrences || [],\r\n\t\t\t\t}\r\n\t\t\t: null\r\n\t);\r\n\r\n\t// --- Password protection state ---\r\n\tlet showPasswordModal = $state(false);\r\n\tlet isPasswordVerified = $state(false);\r\n\tlet passwordValue = $state('');\r\n\tlet passwordError = $state('');\r\n\tlet passwordLoading = $state(false);\r\n\r\n\tlet requiresPassword = $derived(!!rawEvent?.password && rawEvent.password.trim() !== '');\r\n\tlet isLocked = $derived(requiresPassword && !isPasswordVerified && !isEventAuthenticated(id));\r\n\r\n\tfunction isEventAuthenticated(evtId: string | number): boolean {\r\n\t\tif (typeof window === 'undefined') return false;\r\n\t\tconst authedEvents = JSON.parse(sessionStorage.getItem('authedEvents') || '[]'); // @storage-escape: authedEvents session-auth state (intentional raw sessionStorage)\r\n\t\treturn authedEvents.includes(String(evtId));\r\n\t}\r\n\r\n\tfunction setEventAuthenticated(evtId: string | number): void {\r\n\t\tif (typeof window === 'undefined') return;\r\n\t\tconst authedEvents = JSON.parse(sessionStorage.getItem('authedEvents') || '[]'); // @storage-escape: authedEvents session-auth state (intentional raw sessionStorage)\r\n\t\tconst evtIdStr = String(evtId);\r\n\t\tif (!authedEvents.includes(evtIdStr)) {\r\n\t\t\tauthedEvents.push(evtIdStr);\r\n\t\t\tsessionStorage.setItem('authedEvents', JSON.stringify(authedEvents)); // @storage-escape: authedEvents session-auth state (intentional raw sessionStorage)\r\n\t\t}\r\n\t}\r\n\r\n\tasync function handlePasswordSubmit(e: any): Promise<void> {\r\n\t\tconst password = e.detail?.value || passwordValue;\r\n\t\tif (!password || !id) return;\r\n\t\tpasswordLoading = true;\r\n\t\tpasswordError = '';\r\n\t\ttry {\r\n\t\t\tconst result = await checkEventPassword(String(id), password);\r\n\t\t\tif (result.valid) {\r\n\t\t\t\tsetEventAuthenticated(id);\r\n\t\t\t\tisPasswordVerified = true;\r\n\t\t\t\tshowPasswordModal = false;\r\n\t\t\t\tpasswordValue = '';\r\n\t\t\t} else {\r\n\t\t\t\tpasswordError = labels.incorrectPassword || 'Incorrect password. Please try again.';\r\n\t\t\t}\r\n\t\t} catch {\r\n\t\t\tpasswordError = labels.unableToVerifyPassword || 'Unable to verify password. Please try again.';\r\n\t\t} finally {\r\n\t\t\tpasswordLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction handlePasswordCancel(): void {\r\n\t\tshowPasswordModal = false;\r\n\t\tif (onNavigateBack) onNavigateBack();\r\n\t}\r\n\r\n\t// --- Promo state tracking for checkout persistence ---\r\n\tlet lastPromoCode = $state('');\r\n\tlet lastPromoDiscount = $state(0);\r\n\r\n\tasync function handlePromoApply(code: string): Promise<PromoCodeState> {\r\n\t\tconst result = await validatePromoCode(String(id), code);\r\n\t\tif (!result.valid) {\r\n\t\t\treturn {\r\n\t\t\t\tcode,\r\n\t\t\t\tisApplied: false,\r\n\t\t\t\tisValidating: false,\r\n\t\t\t\terror: result.error || 'Invalid promo code',\r\n\t\t\t\thint: '',\r\n\t\t\t\tdiscountAmount: 0,\r\n\t\t\t\tdiscountType: '',\r\n\t\t\t\tdiscountTicketIds: [],\r\n\t\t\t\trevealHiddenTickets: false,\r\n\t\t\t\trevealTicketIds: [],\r\n\t\t\t};\r\n\t\t}\r\n\t\tlastPromoCode = result.code || code;\r\n\t\tlastPromoDiscount = result.amount || 0;\r\n\t\treturn {\r\n\t\t\tcode: result.code || code,\r\n\t\t\tisApplied: true,\r\n\t\t\tisValidating: false,\r\n\t\t\terror: '',\r\n\t\t\thint: `${(result.code || code).toUpperCase()} applied`,\r\n\t\t\tdiscountAmount: result.amount || 0,\r\n\t\t\tdiscountType: result.discountType === 'percentage' ? '%' : result.discountType === 'fixed' ? '$' : '',\r\n\t\t\tdiscountTicketIds: [],\r\n\t\t\trevealHiddenTickets: result.revealHiddenTickets || false,\r\n\t\t\trevealTicketIds: result.revealTicketIds || [],\r\n\t\t};\r\n\t}\r\n\r\n\tfunction handlePromoRemove(): void {\r\n\t\tlastPromoCode = '';\r\n\t\tlastPromoDiscount = 0;\r\n\t}\r\n\r\n\t// --- Checkout callback ---\r\n\tasync function handleCheckout(orderTotals: OrderTotals): Promise<void> {\r\n\t\tif (!eventData) return;\r\n\r\n\t\t// Reconstruct quantities and donation amounts from OrderTotals lines\r\n\t\tconst quantities: Record<number, number> = {};\r\n\t\tconst donationAmounts: Record<number, number> = {};\r\n\r\n\t\tfor (const line of orderTotals.lines) {\r\n\t\t\tquantities[line.ticketId] = line.quantity;\r\n\t\t\tconst ticket = eventData.tickets.find((t) => t.id === line.ticketId);\r\n\t\t\tif (ticket?.isDonation) {\r\n\t\t\t\tdonationAmounts[line.ticketId] = line.unitPrice;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Persist checkout state for downstream checkout page\r\n\t\tpersistCheckoutState({\r\n\t\t\teventID: String(id),\r\n\t\t\tquantities,\r\n\t\t\tdonationAmounts,\r\n\t\t\tpromocode: lastPromoCode,\r\n\t\t\tpromoDiscountAmount: lastPromoDiscount,\r\n\t\t\ttickets: eventData.tickets.map((t) => ({\r\n\t\t\t\tID: t.id,\r\n\t\t\t\tname: t.name,\r\n\t\t\t\tprice: t.price,\r\n\t\t\t\ttype: String(t.ticketType || 0),\r\n\t\t\t\tvisibility: String(t.isHidden ? 1 : 0),\r\n\t\t\t\tsalesChannel: '0',\r\n\t\t\t})),\r\n\t\t});\r\n\r\n\t\t// Create cart (sets checkout-cartid cookie automatically)\r\n\t\tconst result = await initiateOrder({\r\n\t\t\teventID: id,\r\n\t\t\tquantities,\r\n\t\t\tpromoCode: lastPromoCode || undefined,\r\n\t\t});\r\n\t\tif (!result?.success) {\r\n\t\t\ttoast.error(result?.error || labels.failedToCompleteOrder || 'Failed to complete order. Please try again.');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Embed: render Checkout in-place. Standalone route: navigate to the\r\n\t\t// checkout page. The cart cookie is set either way by initiateOrder().\r\n\t\tif (onNavigateToCart) {\r\n\t\t\tonNavigateToCart(id, slug, rawEvent);\r\n\t\t} else {\r\n\t\t\tgoto(buildCheckoutUrl(id, slug));\r\n\t\t}\r\n\t}\r\n\r\n\t// --- Navigation callbacks ---\r\n\tfunction handleCollectionEventClick(event: { id?: number | string; slug: string }): void {\r\n\t\tif (event.id) {\r\n\t\t\tgoto(buildEventUrl(event.id, event.slug));\r\n\t\t} else {\r\n\t\t\tlogger.warn('Collection event missing id, navigating by slug only');\r\n\t\t\tgoto(buildEventBySlugUrl(event.slug));\r\n\t\t}\r\n\t}\r\n\r\n\tfunction handleShowtimeClick(occurrence: { id: number; slug: string }): void {\r\n\t\tif (onBuyTickets) {\r\n\t\t\tonBuyTickets(parseEventId(occurrence.id), occurrence.slug);\r\n\t\t} else {\r\n\t\t\tgoto(buildEventUrl(occurrence.id, occurrence.slug));\r\n\t\t}\r\n\t}\r\n\r\n\t// --- Lifecycle ---\r\n\tonMount(async () => {\r\n\t\t// Self-fetch mode (widget builder / color preview)\r\n\t\tif (!rawEvent && eventIdProp) {\r\n\t\t\ttry {\r\n\t\t\t\tconst fetched = await fetchEventDetails(eventIdProp);\r\n\t\t\t\trawEvent = fetched;\r\n\t\t\t} catch (err: any) {\r\n\t\t\t\tdataError = err.message || labels.failedToLoadEvent || 'Failed to load event';\r\n\t\t\t\tdataLoading = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdataLoading = false;\r\n\t\t}\r\n\r\n\t\tif (!rawEvent) return;\r\n\r\n\t\t// UTM tracking — use event ID, not venue ID\r\n\t\tconst evtId = rawEvent.ID || rawEvent.id;\r\n\t\tif (evtId) {\r\n\t\t\ttrackUTMSource(evtId);\r\n\t\t}\r\n\r\n\t\t// Fetch series occurrences\r\n\t\tconst seriesId = rawEvent.eventSeriesId || 0;\r\n\t\tconst vId = rawEvent.venueID || rawEvent.venueId || 0;\r\n\r\n\t\tif (seriesId > 0 && vId > 0) {\r\n\t\t\ttry {\r\n\t\t\t\tconst occurrences = await fetchSeriesOccurrences(seriesId, vId);\r\n\t\t\t\tif (Array.isArray(occurrences) && occurrences.length > 0) {\r\n\t\t\t\t\tseriesOccurrences = occurrences.map((occ: any) => ({\r\n\t\t\t\t\t\tid: occ.id,\r\n\t\t\t\t\t\tslug: occ.slug || '',\r\n\t\t\t\t\t\tstartDateTime: occ.startDateTime,\r\n\t\t\t\t\t\tendDateTime: occ.endDateTime || '',\r\n\t\t\t\t\t\tstatus: (occ.ctaState?.reason === 'sold_out' ? 'sold_out' : 'on_sale') as import('$lib/public-calendar-flow/types').EventStatus,\r\n\t\t\t\t\t\tctaText: occ.ctaState?.text || 'Get Tickets',\r\n\t\t\t\t\t\tctaDisabled: occ.ctaState?.disabled || false,\r\n\t\t\t\t\t}));\r\n\t\t\t\t}\r\n\t\t\t} catch {\r\n\t\t\t\t// Non-fatal: event page works without series data\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Password protection check\r\n\t\tif (requiresPassword && !isEventAuthenticated(id)) {\r\n\t\t\tshowPasswordModal = true;\r\n\t\t}\r\n\t});\r\n</script>\r\n\r\n{#if useLegacy && LegacyComponent}\r\n\t<LegacyComponent\r\n\t\trawEvent={rawEventProp}\r\n\t\teventId={eventIdProp}\r\n\t\tslug={slugProp}\r\n\t\tcurrentEventId={currentEventIdProp}\r\n\t\t{onNavigateBack}\r\n\t\t{onBuyTickets}\r\n\t\t{organizationId}\r\n\t\t{labels}\r\n\t/>\r\n{:else}\r\n\t{#if dataLoading}\r\n\t\t<div class=\"flex items-center justify-center py-12 text-center loading-container\">\r\n\t\t\t<p>{labels.loadingEvent || 'Loading event...'}</p>\r\n\t\t</div>\r\n\t{:else if dataError}\r\n\t\t<div class=\"flex flex-col items-center justify-center py-12 text-center gap-4\">\r\n\t\t\t<p class=\"error-text\">{labels.errorPrefix || 'Error:'} {dataError}</p>\r\n\t\t\t{#if onNavigateBack}\r\n\t\t\t\t<button class=\"go-back-btn px-4 py-2 rounded-lg text-white\" onclick={onNavigateBack}>{labels.goBack || 'Go back'}</button>\r\n\t\t\t{/if}\r\n\t\t</div>\r\n\t{:else if eventData}\r\n\t\t{#if isLocked}\r\n\t\t\t<div class=\"locked-wrapper\">\r\n\t\t\t\t<div class=\"locked-overlay absolute inset-0 z-20 flex flex-col items-center justify-center min-h-96\">\r\n\t\t\t\t\t<div class=\"text-center p-8\">\r\n\t\t\t\t\t\t<div class=\"locked-icon-wrapper w-20 h-20 mx-auto mb-4 rounded-full flex items-center justify-center\">\r\n\t\t\t\t\t\t\t<Locked size={32} />\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<h2 class=\"locked-title text-xl font-semibold mb-2\">{labels.passwordProtectedTitle || 'This event is password protected'}</h2>\r\n\t\t\t\t\t\t<p class=\"locked-description text-sm max-w-xs mx-auto mb-6 leading-relaxed\">{labels.passwordProtectedDescription || 'Enter the event password to view details and purchase tickets.'}</p>\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tclass=\"unlock-btn py-3 px-6 text-white rounded-lg text-sm font-semibold cursor-pointer\"\r\n\t\t\t\t\t\t\tonclick={() => showPasswordModal = true}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{labels.enterPassword || 'Enter password'}\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"blur-content\">\r\n\t\t\t\t\t<AirbnbSplitMain\r\n\t\t\t\t\t\tevent={eventData}\r\n\t\t\t\t\t\tonCheckout={handleCheckout}\r\n\t\t\t\t\t\tonPromoApply={handlePromoApply}\r\n\t\t\t\t\t\tonPromoRemove={handlePromoRemove}\r\n\t\t\t\t\t\tonCollectionEventClick={handleCollectionEventClick}\r\n\t\t\t\t\t\tonShowtimeClick={handleShowtimeClick}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t{:else}\r\n\t\t\t<AirbnbSplitMain\r\n\t\t\t\tevent={eventData}\r\n\t\t\t\tonCheckout={handleCheckout}\r\n\t\t\t\tonPromoApply={handlePromoApply}\r\n\t\t\t\tonPromoRemove={handlePromoRemove}\r\n\t\t\t\tonCollectionEventClick={handleCollectionEventClick}\r\n\t\t\t\tonShowtimeClick={handleShowtimeClick}\r\n\t\t\t/>\r\n\t\t{/if}\r\n\t{/if}\r\n\r\n\t<InputModal\r\n\t\tbind:open={showPasswordModal}\r\n\t\tsize=\"md\"\r\n\t\ttitle={labels.enterEventPassword || \"Enter event password\"}\r\n\t\tdescription={labels.passwordModalDescription || \"This event requires a password to view. Please enter the password provided by the event organizer.\"}\r\n\t\tinputLabel={labels.passwordLabel || \"Password\"}\r\n\t\tinputType=\"password\"\r\n\t\tbind:inputValue={passwordValue}\r\n\t\tinputRequired={true}\r\n\t\terrorMessage={passwordError}\r\n\t\tshowError={!!passwordError}\r\n\t\tprimaryButtonText={labels.unlockEvent || \"Unlock event\"}\r\n\t\tsecondaryButtonText={labels.goBack || \"Go back\"}\r\n\t\tloading={passwordLoading}\r\n\t\tonconfirm={handlePasswordSubmit}\r\n\t\toncancel={handlePasswordCancel}\r\n\t\tonclose={handlePasswordCancel}\r\n\t/>\r\n{/if}\r\n\r\n<style>\r\n\t.loading-container {\r\n\t\tcolor: hsl(var(--text-secondary, 215 16% 47%));\r\n\t}\r\n\r\n\t.error-text {\r\n\t\tcolor: hsl(var(--status-sold-out, 0 72% 51%));\r\n\t}\r\n\r\n\t.go-back-btn {\r\n\t\tbackground-color: hsl(var(--brand-primary, 224 76% 48%));\r\n\t}\r\n\r\n\t.locked-wrapper {\r\n\t\tposition: relative;\r\n\t}\r\n\r\n\t.blur-content {\r\n\t\tfilter: blur(8px);\r\n\t\tpointer-events: none;\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t.locked-overlay {\r\n\t\tbackground-color: hsl(var(--bg-primary, 0 0% 100%) / 95%);\r\n\t}\r\n\r\n\t.locked-icon-wrapper {\r\n\t\tbackground-color: hsl(var(--bg-secondary, 210 20% 98%));\r\n\t\tcolor: hsl(var(--text-tertiary, 220 9% 46%));\r\n\t}\r\n\r\n\t.locked-title {\r\n\t\tcolor: hsl(var(--text-primary, 222 47% 11%));\r\n\t}\r\n\r\n\t.locked-description {\r\n\t\tcolor: hsl(var(--text-secondary, 215 16% 47%));\r\n\t}\r\n\r\n\t.unlock-btn {\r\n\t\tbackground-color: hsl(var(--brand-primary, 224 76% 48%));\r\n\t\tborder: none;\r\n\t\ttransition: background-color 0.2s ease;\r\n\t}\r\n\r\n\t.unlock-btn:hover {\r\n\t\topacity: 0.9;\r\n\t}\r\n</style>\r\n"],"names":["buildEventUrl","id","slug","buildEventBySlugUrl","buildCheckoutUrl","logger","createLogger","useLegacy","$","LegacyComponent","m","rawEventProp","eventIdProp","slugProp","currentEventIdProp","onNavigateBack","onBuyTickets","onNavigateToCart","organizationId","labels","$$props","rawEvent","dataLoading","dataError","baseEventData","transformApiEvent","seriesOccurrences","eventData","showPasswordModal","isPasswordVerified","passwordValue","passwordError","passwordLoading","requiresPassword","isLocked","isEventAuthenticated","evtId","setEventAuthenticated","authedEvents","evtIdStr","handlePasswordSubmit","e","password","checkEventPassword","handlePasswordCancel","lastPromoCode","lastPromoDiscount","handlePromoApply","code","result","validatePromoCode","handlePromoRemove","handleCheckout","orderTotals","quantities","donationAmounts","line","t","persistCheckoutState","initiateOrder","toast","goto","handleCollectionEventClick","event","handleShowtimeClick","occurrence","parseEventId","onMount","fetched","fetchEventDetails","err","trackUTMSource","seriesId","vId","occurrences","fetchSeriesOccurrences","occ","LegacyComponent_1","$$anchor","div","root_3","p","div_1","root_4","p_1","button","root_5","$$args","$$render","consequent_2","text_1","div_2","root_7","div_3","div_4","div_5","Locked","h2","p_2","button_1","div_6","AirbnbSplitMain","node_6","consequent_4","alternate","consequent_1","consequent_3","consequent_5","InputModal","node_7","$$value","consequent","alternate_1"],"mappings":"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"}
|