@getmicdrop/venue-calendar 4.0.81 → 4.0.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/{CarouselView.legacy-Bn76lnuH.js → CarouselView.legacy-DAixPl6l.js} +3 -3
  2. package/dist/{CarouselView.legacy-Bn76lnuH.js.map → CarouselView.legacy-DAixPl6l.js.map} +1 -1
  3. package/dist/{CartView-lR1zLxmN.js → CartView-CsdqWB24.js} +6 -6
  4. package/dist/{CartView-lR1zLxmN.js.map → CartView-CsdqWB24.js.map} +1 -1
  5. package/dist/{Checkout-KyLZlwLk.js → Checkout-B15JygVy.js} +7 -7
  6. package/dist/{Checkout-KyLZlwLk.js.map → Checkout-B15JygVy.js.map} +1 -1
  7. package/dist/{Checkout-D5mXj5zN.js → Checkout-CUwOrErt.js} +4 -4
  8. package/dist/{Checkout-D5mXj5zN.js.map → Checkout-CUwOrErt.js.map} +1 -1
  9. package/dist/{Checkout.legacy-Dl8Oh7y3.js → Checkout.legacy-CrFgAYYe.js} +6 -6
  10. package/dist/{Checkout.legacy-Dl8Oh7y3.js.map → Checkout.legacy-CrFgAYYe.js.map} +1 -1
  11. package/dist/{CheckoutTimer-Deo1mLnO.js → CheckoutTimer-qLOtPDt3.js} +4 -4
  12. package/dist/{CheckoutTimer-Deo1mLnO.js.map → CheckoutTimer-qLOtPDt3.js.map} +1 -1
  13. package/dist/{CollectionView-C1O9xfVC.js → CollectionView-D2bRelLR.js} +5 -5
  14. package/dist/{CollectionView-C1O9xfVC.js.map → CollectionView-D2bRelLR.js.map} +1 -1
  15. package/dist/{CollectionView.legacy-DK_mCA_g.js → CollectionView.legacy-DLb5fzi-.js} +6 -6
  16. package/dist/{CollectionView.legacy-DK_mCA_g.js.map → CollectionView.legacy-DLb5fzi-.js.map} +1 -1
  17. package/dist/{Event-B5WRygEf.js → Event-DZpU-Ec1.js} +6 -6
  18. package/dist/{Event-B5WRygEf.js.map → Event-DZpU-Ec1.js.map} +1 -1
  19. package/dist/{EventPage-f1AOk4Jb.js → EventPage-CL0yuKWZ.js} +7 -7
  20. package/dist/{EventPage-f1AOk4Jb.js.map → EventPage-CL0yuKWZ.js.map} +1 -1
  21. package/dist/{EventPage.legacy-Bk3PJyJs.js → EventPage.legacy-EujdNc3A.js} +7 -7
  22. package/dist/{EventPage.legacy-Bk3PJyJs.js.map → EventPage.legacy-EujdNc3A.js.map} +1 -1
  23. package/dist/{FeaturedView.legacy-BzCt1X1W.js → FeaturedView.legacy-CbLBD-tn.js} +2 -2
  24. package/dist/{FeaturedView.legacy-BzCt1X1W.js.map → FeaturedView.legacy-CbLBD-tn.js.map} +1 -1
  25. package/dist/{GalleryCard-C1EKGErR.js → GalleryCard-BcIcYghD.js} +3 -3
  26. package/dist/{GalleryCard-C1EKGErR.js.map → GalleryCard-BcIcYghD.js.map} +1 -1
  27. package/dist/{GalleryView.legacy-BmQtZKl7.js → GalleryView.legacy-XpQUg-5_.js} +3 -3
  28. package/dist/{GalleryView.legacy-BmQtZKl7.js.map → GalleryView.legacy-XpQUg-5_.js.map} +1 -1
  29. package/dist/{GroupedListView.legacy-D72fbNfA.js → GroupedListView.legacy-qvwIV5Qm.js} +3 -3
  30. package/dist/{GroupedListView.legacy-D72fbNfA.js.map → GroupedListView.legacy-qvwIV5Qm.js.map} +1 -1
  31. package/dist/{Heading-Bwevh2c4.js → Heading-5CT9Nk0b.js} +2 -2
  32. package/dist/{Heading-Bwevh2c4.js.map → Heading-5CT9Nk0b.js.map} +1 -1
  33. package/dist/{ModalHeader-DKwE5ZYZ.js → ModalHeader-CGaXzdcs.js} +2 -2
  34. package/dist/{ModalHeader-DKwE5ZYZ.js.map → ModalHeader-CGaXzdcs.js.map} +1 -1
  35. package/dist/{OrderSummarySkeleton-DKWKZNLL.js → OrderSummarySkeleton-pqfhjvKT.js} +2 -2
  36. package/dist/{OrderSummarySkeleton-DKWKZNLL.js.map → OrderSummarySkeleton-pqfhjvKT.js.map} +1 -1
  37. package/dist/{ScarcityBadge-3cFxTOCh.js → ScarcityBadge-BkRFHRif.js} +2 -2
  38. package/dist/{ScarcityBadge-3cFxTOCh.js.map → ScarcityBadge-BkRFHRif.js.map} +1 -1
  39. package/dist/{SeriesPage-Cq4Q8Vah.js → SeriesPage-NWCA_Aez.js} +5 -5
  40. package/dist/{SeriesPage-Cq4Q8Vah.js.map → SeriesPage-NWCA_Aez.js.map} +1 -1
  41. package/dist/{SeriesPage.legacy-zvgW0S_y.js → SeriesPage.legacy-BXSwM5jV.js} +3 -3
  42. package/dist/{SeriesPage.legacy-zvgW0S_y.js.map → SeriesPage.legacy-BXSwM5jV.js.map} +1 -1
  43. package/dist/{Success-kyiEO6_Z.js → Success-B4CM_cy1.js} +8 -8
  44. package/dist/{Success-kyiEO6_Z.js.map → Success-B4CM_cy1.js.map} +1 -1
  45. package/dist/{Success.legacy-BxKYmXgz.js → Success.legacy-BWAmPmZz.js} +2 -2
  46. package/dist/{Success.legacy-BxKYmXgz.js.map → Success.legacy-BWAmPmZz.js.map} +1 -1
  47. package/dist/{Text-_bLxSPv-.js → Text-WY42WIKI.js} +2 -2
  48. package/dist/{Text-_bLxSPv-.js.map → Text-WY42WIKI.js.map} +1 -1
  49. package/dist/{VenueCalendar-d8u6MKEu.js → VenueCalendar-DMSeDRSN.js} +18 -18
  50. package/dist/VenueCalendar-DMSeDRSN.js.map +1 -0
  51. package/dist/{ViewTicketsEmbed-DquJJVIK.js → ViewTicketsEmbed-AlVzNvxE.js} +4 -4
  52. package/dist/{ViewTicketsEmbed-DquJJVIK.js.map → ViewTicketsEmbed-AlVzNvxE.js.map} +1 -1
  53. package/dist/{api-BzICORqy.js → api-ChzBkXfo.js} +2 -2
  54. package/dist/{api-BzICORqy.js.map → api-ChzBkXfo.js.map} +1 -1
  55. package/dist/{data-toggle-store.svelte-BGbzblUJ.js → data-toggle-store.svelte-CtW4s3Vw.js} +2 -2
  56. package/dist/{data-toggle-store.svelte-BGbzblUJ.js.map → data-toggle-store.svelte-CtW4s3Vw.js.map} +1 -1
  57. package/dist/{labels-Bj_cocb1.js → labels-BB1JG19g.js} +3 -3
  58. package/dist/{labels-Bj_cocb1.js.map → labels-BB1JG19g.js.map} +1 -1
  59. package/dist/{transform-D7Oe8jUp.js → transform-BlXf-shc.js} +2 -2
  60. package/dist/{transform-D7Oe8jUp.js.map → transform-BlXf-shc.js.map} +1 -1
  61. package/dist/venue-calendar.es.js +1 -1
  62. package/dist/venue-calendar.iife.js +2 -2
  63. package/dist/venue-calendar.iife.js.map +1 -1
  64. package/dist/venue-calendar.umd.js +2 -2
  65. package/dist/venue-calendar.umd.js.map +1 -1
  66. package/package.json +1 -1
  67. package/dist/VenueCalendar-d8u6MKEu.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionView-C1O9xfVC.js","sources":["../node_modules/@getmicdrop/svelte-components/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte","../node_modules/@getmicdrop/svelte-components/dist/recipes/inputs/PasswordInput.svelte","../src/components/Views/CollectionView.svelte"],"sourcesContent":["<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n import { safeSlide } from \"../../../utils/transitions.js\";\r\n import { lazyOnce } from \"../../../utils/lazyOnce.js\";\r\n import { cubicOut } from \"svelte/easing\";\r\n import { untrack } from \"svelte\";\r\n\r\n const defaultLabels = {\r\n tooWeak: 'Too weak',\r\n weak: 'Weak',\r\n good: 'Good',\r\n strong: 'Strong',\r\n };\r\n\r\n interface Props {\r\n password?: string;\r\n strengthText?: string;\r\n score?: number;\r\n textColor?: string;\r\n children?: Snippet;\r\n labels?: Partial<typeof defaultLabels>;\r\n }\r\n\r\n let {\r\n password = \"\",\r\n strengthText = $bindable(\"\"),\r\n score = $bindable(-1),\r\n textColor = $bindable(\"\"),\r\n children,\r\n labels: userLabels = {},\r\n }: Props = $props();\r\n\r\n let labels = $derived({ ...defaultLabels, ...userLabels });\r\n\r\n let debouncedPassword = $state(\"\");\r\n // Use a plain variable for timer to avoid reactive dependency\r\n let timer: ReturnType<typeof setTimeout> | undefined;\r\n\r\n // Lazily load the (~10 KB) strength library only once a password exists.\r\n // Until it resolves, `strengthFn` is null and the indicator shows its\r\n // neutral (no-result) state — the debounce window absorbs the load latency.\r\n //\r\n // lazyOnce memoizes the import on success but RESETS on rejection: a\r\n // transient chunk-load failure must not be cached, or the indicator would\r\n // stay bricked until a page reload. On failure the next keystroke retries.\r\n let strengthFn: typeof import('check-password-strength').passwordStrength | null = $state(null);\r\n const loadStrengthModule = lazyOnce(() => import('check-password-strength'));\r\n function ensureStrengthFn() {\r\n void loadStrengthModule()\r\n .then((m) => {\r\n strengthFn = m.passwordStrength;\r\n })\r\n .catch(() => {\r\n // Swallow — strengthFn stays null (neutral state) and lazyOnce\r\n // has already dropped its memo, so a later keystroke retries.\r\n });\r\n }\r\n\r\n // Kick off the load on the first keystroke, before the debounce fires.\r\n // Retries naturally on subsequent keystrokes after a transient failure\r\n // because lazyOnce does not cache the rejection.\r\n $effect(() => {\r\n if (password && !strengthFn) ensureStrengthFn();\r\n });\r\n\r\n let customOptions = $derived([\r\n {\r\n id: 0,\r\n value: labels.tooWeak,\r\n minDiversity: 0,\r\n minLength: 0,\r\n },\r\n {\r\n id: 1,\r\n value: labels.weak,\r\n minDiversity: 1,\r\n minLength: 6,\r\n },\r\n {\r\n id: 2,\r\n value: labels.good,\r\n minDiversity: 2,\r\n minLength: 8,\r\n },\r\n {\r\n id: 3,\r\n value: labels.strong,\r\n minDiversity: 3,\r\n minLength: 10,\r\n },\r\n ] as const);\r\n\r\n // Debounce password updates - timer is not reactive to avoid dependency cycle\r\n $effect(() => {\r\n clearTimeout(timer);\r\n if (password.length === 0) {\r\n debouncedPassword = \"\";\r\n } else {\r\n timer = setTimeout(() => {\r\n debouncedPassword = password;\r\n }, 400); // 400ms delay as requested\r\n }\r\n return () => clearTimeout(timer);\r\n });\r\n\r\n let strength = $derived(debouncedPassword && strengthFn\r\n ? strengthFn(debouncedPassword, customOptions as any)\r\n : null);\r\n\r\n // Derive score based on password length and strength\r\n let computedScore = $derived(debouncedPassword.length > 12 ? 3 : (strength?.id ?? -1));\r\n\r\n // Sync computed values to bindable props using effects with untrack\r\n $effect(() => {\r\n const newScore = computedScore;\r\n if (untrack(() => score) !== newScore) {\r\n score = newScore;\r\n }\r\n });\r\n\r\n // Derive text and color from computedScore (not from bindable score)\r\n let computedStrengthText = $derived(\r\n computedScore === 0 ? labels.tooWeak :\r\n computedScore === 1 ? labels.weak :\r\n computedScore === 2 ? labels.good :\r\n computedScore === 3 ? labels.strong : \"\"\r\n );\r\n\r\n // No color until a real strength result exists. computedScore is -1 while\r\n // the lazily-loaded strength library is still in flight (and during the\r\n // debounce window), so emitting danger here would flash a red \"Password\r\n // strength\" line with empty text in consumers (e.g. PasswordInput).\r\n let computedTextColor = $derived(\r\n computedScore < 0 ? \"\" :\r\n computedScore <= 1 ? \"text-accent-danger\" : \"text-accent-success\"\r\n );\r\n\r\n $effect(() => {\r\n const newText = computedStrengthText;\r\n if (untrack(() => strengthText) !== newText) {\r\n strengthText = newText;\r\n }\r\n });\r\n\r\n let strengthColor = $derived(computedScore <= 1 ? \"bg-accent-danger\" : \"bg-accent-success\");\r\n\r\n $effect(() => {\r\n const newColor = computedTextColor;\r\n if (untrack(() => textColor) !== newColor) {\r\n textColor = newColor;\r\n }\r\n });\r\n\r\n // Calculate how many bars to fill (1-3)\r\n let filledBars = $derived(computedScore === 0 ? 1 : computedScore === 1 ? 2 : computedScore >= 2 ? 3 : 0);\r\n</script>\r\n\r\n{#if debouncedPassword.length > 0}\r\n <div\r\n transition:safeSlide={{ duration: 600, easing: cubicOut }}\r\n class=\"pt-2 space-y-2\"\r\n >\r\n <!-- 3 segment bars -->\r\n <div class=\"flex gap-1.5\">\r\n <!-- eslint-disable-next-line svelte/require-each-key -- keyed-each migration deferred -->\r\n {#each [0, 1, 2] as barIndex}\r\n <div\r\n class=\"h-1 flex-1 rounded-full transition-colors duration-300 {barIndex <\r\n filledBars\r\n ? strengthColor\r\n : 'bg-bg-tertiary'}\"\r\n ></div>\r\n {/each}\r\n </div>\r\n {@render children?.()}\r\n </div>\r\n{/if}\r\n","<script lang=\"ts\">\r\n /**\r\n * PasswordInput - Password field with show/hide toggle and strength indicator\r\n *\r\n * Combines Input (password type) with PasswordStrengthIndicator for\r\n * a complete password entry experience.\r\n *\r\n * @example\r\n * <PasswordInput\r\n * label=\"New Password\"\r\n * bind:value={password}\r\n * showStrength\r\n * error={$errors.password}\r\n * required\r\n * />\r\n *\r\n * @example Consumer-owned validation (e.g. Zod): opt out of the built-in\r\n * `required` constraint so the consuming form is the single source of truth.\r\n * <PasswordInput\r\n * label=\"Password\"\r\n * bind:value={password}\r\n * required\r\n * disableBuiltInValidation\r\n * error={$errors.password}\r\n * />\r\n */\r\n import Input from '../../primitives/Input/Input.svelte';\r\n import PasswordStrengthIndicator from './PasswordStrengthIndicator/PasswordStrengthIndicator.svelte';\r\n\r\n const defaultLabels = {\r\n passwordStrength: 'Password strength:',\r\n };\r\n\r\n interface Props {\r\n /** Password value */\r\n value?: string;\r\n /** Label text */\r\n label?: string;\r\n /** Placeholder text */\r\n placeholder?: string;\r\n /** Input name attribute */\r\n name?: string;\r\n /** Input id attribute */\r\n id?: string;\r\n /** Whether the field is required */\r\n required?: boolean;\r\n /**\r\n * Opt out of the component's built-in `required` validation so the\r\n * consumer owns validation entirely (e.g. a Zod schema on the form).\r\n * When `true`, the `required` constraint is NOT forwarded to the\r\n * underlying field (no `aria-required`, no required asterisk). The\r\n * visual error/hint still render via `error`/`hint`. Defaults to\r\n * `false`, preserving the existing built-in behavior exactly.\r\n */\r\n disableBuiltInValidation?: boolean;\r\n /** Whether the field is disabled */\r\n disabled?: boolean;\r\n /** Error message to display */\r\n error?: string;\r\n /** Hint text shown below input */\r\n hint?: string;\r\n /** Show password strength indicator */\r\n showStrength?: boolean;\r\n /** Size variant */\r\n size?: 'sm' | 'md' | 'lg';\r\n /** Minimum password length */\r\n minlength?: number | null;\r\n /** Maximum password length */\r\n maxlength?: number | null;\r\n /** Autocomplete attribute */\r\n autocomplete?: string;\r\n /** Whether to show the password toggle button */\r\n showPasswordToggle?: boolean;\r\n /** Additional class for the wrapper div */\r\n class?: string;\r\n // Optional callbacks (matching Input component signatures)\r\n // eslint-disable-next-line no-unused-vars -- intentionally retained (prop/slot/forward-compat or Svelte-5 reactive binding eslint cannot see)\n oninput?: (value: string) => void;\r\n onblur?: () => void;\r\n onfocus?: () => void;\r\n /** Override user-visible strings */\r\n labels?: Partial<typeof defaultLabels>;\r\n }\r\n\r\n let {\r\n value = $bindable(''),\r\n label = '',\r\n placeholder = '',\r\n name = '',\r\n id = '',\r\n required = false,\r\n disableBuiltInValidation = false,\r\n disabled = false,\r\n error = '',\r\n hint = '',\r\n showStrength = false,\r\n size = 'md',\r\n minlength = null,\r\n maxlength = null,\r\n autocomplete = 'new-password',\r\n showPasswordToggle = true,\r\n class: className = '',\r\n oninput,\r\n onblur,\r\n onfocus,\r\n labels: userLabels = {},\r\n }: Props = $props();\r\n\r\n let labels = $derived({ ...defaultLabels, ...userLabels });\r\n\r\n // When the consumer opts out of built-in validation, do NOT forward the\r\n // `required` constraint to the underlying field — the consuming form owns\r\n // validation entirely. Default (false) forwards `required` as-is, exactly\r\n // preserving existing behavior.\r\n let effectiveRequired = $derived(disableBuiltInValidation ? false : required);\r\n\r\n // Password strength tracking\r\n let strengthScore = $state(-1);\r\n let strengthText = $state('');\r\n let strengthColor = $state('');\r\n</script>\r\n\r\n<div class={className}>\r\n <Input\r\n type=\"password\"\r\n {id}\r\n {name}\r\n {placeholder}\r\n {label}\r\n required={effectiveRequired}\r\n {disabled}\r\n {size}\r\n {minlength}\r\n {maxlength}\r\n {autocomplete}\r\n {showPasswordToggle}\r\n errorText={error}\r\n hintText={hint}\r\n bind:value\r\n oninputchange={oninput}\r\n {onblur}\r\n {onfocus}\r\n />\r\n\r\n {#if showStrength && value}\r\n <PasswordStrengthIndicator\r\n password={value}\r\n bind:score={strengthScore}\r\n bind:strengthText\r\n bind:textColor={strengthColor}\r\n >\r\n <p class=\"text-xs {strengthColor}\">\r\n {labels.passwordStrength} {strengthText}\r\n </p>\r\n </PasswordStrengthIndicator>\r\n {/if}\r\n</div>\r\n","<!-- 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<!-- @route-escape: widget-intentional. -->\r\n<script lang=\"ts\">\r\n\timport { onMount, onDestroy } from 'svelte';\r\n\timport { goto } from '$app/navigation';\r\n\timport EventExperience from '$lib/public-calendar-flow/Event.svelte';\r\n\timport { transformCollectionData } from '$lib/public-calendar-flow/transform';\r\n\timport { fetchPublicCollection } from '$lib/api/events';\r\n\timport type { PublicCollectionData } from '$lib/api/types';\r\n\timport { createLogger, PasswordInput } from '@getmicdrop/svelte-components';\r\n\r\n\tconst logger = createLogger('CollectionView');\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 CollectionView retires on 2026-08-13. See docs/LEGACY_RETIREMENT.md.'\r\n\t\t\t);\r\n\t\t\timport('./CollectionView.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 CollectionView external interface) ---\r\n\tinterface Props {\r\n\t\tcollectionId: string | number;\r\n\t\torganizationId?: string;\r\n\t\tonNavigateToEvent?: (id: number, slug: string) => void;\r\n\t\tpassword?: string;\r\n\t\tdisplayMode?: string;\r\n\t\tshowViewSwitcher?: boolean;\r\n\t\tlabels?: Record<string, string>;\r\n\t}\r\n\r\n\tlet {\r\n\t\tcollectionId,\r\n\t\torganizationId = '',\r\n\t\tonNavigateToEvent = undefined,\r\n\t\tpassword = undefined,\r\n\t\tdisplayMode = 'gallery',\r\n\t\tshowViewSwitcher = true,\r\n\t\tlabels = {},\r\n\t}: Props = $props();\r\n\r\n\t// --- State ---\r\n\tlet collection = $state<PublicCollectionData | null>(null);\r\n\tlet isLoading = $state(true);\r\n\tlet error = $state<string | null>(null);\r\n\tlet isMounted = $state(false);\r\n\tlet passwordRequired = $state(false);\r\n\tlet passwordInput = $state('');\r\n\tlet passwordError = $state(false);\r\n\r\n\t// --- Derived ---\r\n\tlet eventData = $derived(collection ? transformCollectionData(collection) : null);\r\n\r\n\t// --- Load collection data ---\r\n\tasync function loadCollection(pwd?: string): Promise<void> {\r\n\t\tif (!isMounted) return;\r\n\t\tif (!collectionId) {\r\n\t\t\terror = labels.noCollectionIdProvided || 'No collection ID provided';\r\n\t\t\tisLoading = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tisLoading = true;\r\n\t\terror = null;\r\n\t\tpasswordError = false;\r\n\r\n\t\ttry {\r\n\t\t\tconst data = await fetchPublicCollection(collectionId, pwd);\r\n\t\t\tif (!isMounted) return;\r\n\r\n\t\t\tif (data) {\r\n\t\t\t\tif ((data as any).passwordRequired || (data as any).error?.code === 'PASSWORD_REQUIRED') {\r\n\t\t\t\t\tpasswordRequired = true;\r\n\t\t\t\t\tisLoading = false;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tcollection = data;\r\n\t\t\t\tpasswordRequired = false;\r\n\t\t\t} else {\r\n\t\t\t\tif (pwd) {\r\n\t\t\t\t\tpasswordRequired = true;\r\n\t\t\t\t\tpasswordError = true;\r\n\t\t\t\t\tisLoading = false;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\terror = labels.failedToLoadCollection || 'Failed to load collection';\r\n\t\t\t}\r\n\t\t} catch (err: any) {\r\n\t\t\tif (isMounted) {\r\n\t\t\t\tconst msg = err.message || '';\r\n\t\t\t\tif (msg.includes('401') || msg.includes('403') || msg.includes('password')) {\r\n\t\t\t\t\tpasswordRequired = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\terror = msg || labels.failedToLoadCollection || 'Failed to load collection';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tif (isMounted) {\r\n\t\t\t\tisLoading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction handlePasswordSubmit(e: Event): void {\r\n\t\te.preventDefault();\r\n\t\tif (!passwordInput.trim()) return;\r\n\t\tloadCollection(passwordInput);\r\n\t}\r\n\r\n\tfunction handleCollectionEventClick(galleryEvent: { id?: number | string; slug: string }): void {\r\n\t\tif (onNavigateToEvent && galleryEvent.id) {\r\n\t\t\tonNavigateToEvent(Number(galleryEvent.id), galleryEvent.slug);\r\n\t\t} else {\r\n\t\t\t// @url-builder-escape: widget-internal route; SC's url-builders cover /a admin paths, not embedded calendar navigation.\r\n\t\t\tgoto(`/${galleryEvent.id}/${galleryEvent.slug}`);\r\n\t\t}\r\n\t}\r\n\r\n\t// --- Lifecycle ---\r\n\tonMount(() => {\r\n\t\tisMounted = true;\r\n\t\tloadCollection(password);\r\n\t});\r\n\r\n\tonDestroy(() => {\r\n\t\tisMounted = false;\r\n\t});\r\n</script>\r\n\r\n{#if useLegacy && LegacyComponent}\r\n\t<svelte:component this={LegacyComponent}\r\n\t\t{collectionId}\r\n\t\t{organizationId}\r\n\t\t{onNavigateToEvent}\r\n\t\t{password}\r\n\t\t{displayMode}\r\n\t\t{showViewSwitcher}\r\n\t\t{labels}\r\n\t/>\r\n{:else if isLoading}\r\n\t<div class=\"flex items-center justify-center py-12 text-center loading-container\">\r\n\t\t<p>{labels.loadingCollection || 'Loading collection...'}</p>\r\n\t</div>\r\n{:else if passwordRequired}\r\n\t<div class=\"flex flex-col items-center justify-center min-h-[50vh] text-center\">\r\n\t\t<div class=\"password-card rounded-lg p-8 max-w-sm w-full\">\r\n\t\t\t<h2 class=\"password-title text-xl font-bold mb-2\">{labels.collectionPrivateTitle || 'This collection is private'}</h2>\r\n\t\t\t<p class=\"password-description text-sm mb-6\">{labels.collectionPrivateDescription || 'Please enter the password to view this collection.'}</p>\r\n\t\t\t<form onsubmit={handlePasswordSubmit} class=\"flex flex-col gap-3\">\r\n\t\t\t\t<PasswordInput\r\n\t\t\t\t\tbind:value={passwordInput}\r\n\t\t\t\t\tplaceholder={labels.enterPassword || \"Enter password\"}\r\n\t\t\t\t\terror={passwordError ? (labels.incorrectPassword || 'Incorrect password. Please try again.') : ''}\r\n\t\t\t\t/>\r\n\t\t\t\t<button type=\"submit\" class=\"password-submit px-4 py-2 rounded-lg text-sm font-semibold\">{labels.viewCollection || 'View Collection'}</button>\r\n\t\t\t</form>\r\n\t\t</div>\r\n\t</div>\r\n{:else if error}\r\n\t<div class=\"flex flex-col items-center justify-center min-h-[50vh] text-center\">\r\n\t\t<p class=\"error-text\">{labels.errorPrefix || 'Error:'} {error}</p>\r\n\t</div>\r\n{:else if eventData}\r\n\t<EventExperience\r\n\t\tevent={eventData}\r\n\t\tonCollectionEventClick={handleCollectionEventClick}\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.password-card {\r\n\t\tbackground: hsl(var(--surface-primary, 0 0% 100%));\r\n\t\tbox-shadow: 0 2px 10px color-mix(in srgb, black 10%, transparent);\r\n\t}\r\n\r\n\t.password-title {\r\n\t\tcolor: hsl(var(--text-primary, 0 0% 10%));\r\n\t}\r\n\r\n\t.password-description {\r\n\t\tcolor: hsl(var(--text-secondary, 0 0% 45%));\r\n\t}\r\n\r\n\t.password-submit {\r\n\t\tbackground: hsl(var(--brand-primary, 220 90% 56%));\r\n\t\tcolor: hsl(var(--text-on-primary, 0 0% 100%));\r\n\t}\r\n\r\n\t.password-submit:hover {\r\n\t\tfilter: brightness(0.95);\r\n\t}\r\n</style>"],"names":["defaultLabels","password","$","$$props","strengthText","score","textColor","userLabels","labels","debouncedPassword","timer","strengthFn","loadStrengthModule","lazyOnce","ensureStrengthFn","m","customOptions","strength","computedScore","newScore","untrack","computedStrengthText","computedTextColor","newText","strengthColor","newColor","filledBars","div","root_1","div_1","barIndex","div_2","root","cubicOut","$$render","consequent","value","label","placeholder","name","id","required","disableBuiltInValidation","disabled","error","hint","showStrength","size","minlength","maxlength","autocomplete","showPasswordToggle","className","effectiveRequired","strengthScore","Input","node","$$value","PasswordStrengthIndicator","$$anchor","p","logger","createLogger","useLegacy","LegacyComponent","organizationId","onNavigateToEvent","displayMode","showViewSwitcher","collection","isLoading","isMounted","passwordRequired","passwordInput","passwordError","eventData","transformCollectionData","loadCollection","pwd","data","fetchPublicCollection","err","msg","handlePasswordSubmit","e","handleCollectionEventClick","galleryEvent","goto","onMount","onDestroy","$$component","h2","p_1","form","PasswordInput","node_2","button","div_3","root_2","p_2","text_4","EventExperience","consequent_2","consequent_3","consequent_4"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"CollectionView-D2bRelLR.js","sources":["../node_modules/@getmicdrop/svelte-components/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte","../node_modules/@getmicdrop/svelte-components/dist/recipes/inputs/PasswordInput.svelte","../src/components/Views/CollectionView.svelte"],"sourcesContent":["<script lang=\"ts\">\r\n import type { Snippet } from 'svelte';\r\n import { safeSlide } from \"../../../utils/transitions.js\";\r\n import { lazyOnce } from \"../../../utils/lazyOnce.js\";\r\n import { cubicOut } from \"svelte/easing\";\r\n import { untrack } from \"svelte\";\r\n\r\n const defaultLabels = {\r\n tooWeak: 'Too weak',\r\n weak: 'Weak',\r\n good: 'Good',\r\n strong: 'Strong',\r\n };\r\n\r\n interface Props {\r\n password?: string;\r\n strengthText?: string;\r\n score?: number;\r\n textColor?: string;\r\n children?: Snippet;\r\n labels?: Partial<typeof defaultLabels>;\r\n }\r\n\r\n let {\r\n password = \"\",\r\n strengthText = $bindable(\"\"),\r\n score = $bindable(-1),\r\n textColor = $bindable(\"\"),\r\n children,\r\n labels: userLabels = {},\r\n }: Props = $props();\r\n\r\n let labels = $derived({ ...defaultLabels, ...userLabels });\r\n\r\n let debouncedPassword = $state(\"\");\r\n // Use a plain variable for timer to avoid reactive dependency\r\n let timer: ReturnType<typeof setTimeout> | undefined;\r\n\r\n // Lazily load the (~10 KB) strength library only once a password exists.\r\n // Until it resolves, `strengthFn` is null and the indicator shows its\r\n // neutral (no-result) state — the debounce window absorbs the load latency.\r\n //\r\n // lazyOnce memoizes the import on success but RESETS on rejection: a\r\n // transient chunk-load failure must not be cached, or the indicator would\r\n // stay bricked until a page reload. On failure the next keystroke retries.\r\n let strengthFn: typeof import('check-password-strength').passwordStrength | null = $state(null);\r\n const loadStrengthModule = lazyOnce(() => import('check-password-strength'));\r\n function ensureStrengthFn() {\r\n void loadStrengthModule()\r\n .then((m) => {\r\n strengthFn = m.passwordStrength;\r\n })\r\n .catch(() => {\r\n // Swallow — strengthFn stays null (neutral state) and lazyOnce\r\n // has already dropped its memo, so a later keystroke retries.\r\n });\r\n }\r\n\r\n // Kick off the load on the first keystroke, before the debounce fires.\r\n // Retries naturally on subsequent keystrokes after a transient failure\r\n // because lazyOnce does not cache the rejection.\r\n $effect(() => {\r\n if (password && !strengthFn) ensureStrengthFn();\r\n });\r\n\r\n let customOptions = $derived([\r\n {\r\n id: 0,\r\n value: labels.tooWeak,\r\n minDiversity: 0,\r\n minLength: 0,\r\n },\r\n {\r\n id: 1,\r\n value: labels.weak,\r\n minDiversity: 1,\r\n minLength: 6,\r\n },\r\n {\r\n id: 2,\r\n value: labels.good,\r\n minDiversity: 2,\r\n minLength: 8,\r\n },\r\n {\r\n id: 3,\r\n value: labels.strong,\r\n minDiversity: 3,\r\n minLength: 10,\r\n },\r\n ] as const);\r\n\r\n // Debounce password updates - timer is not reactive to avoid dependency cycle\r\n $effect(() => {\r\n clearTimeout(timer);\r\n if (password.length === 0) {\r\n debouncedPassword = \"\";\r\n } else {\r\n timer = setTimeout(() => {\r\n debouncedPassword = password;\r\n }, 400); // 400ms delay as requested\r\n }\r\n return () => clearTimeout(timer);\r\n });\r\n\r\n let strength = $derived(debouncedPassword && strengthFn\r\n ? strengthFn(debouncedPassword, customOptions as any)\r\n : null);\r\n\r\n // Derive score based on password length and strength\r\n let computedScore = $derived(debouncedPassword.length > 12 ? 3 : (strength?.id ?? -1));\r\n\r\n // Sync computed values to bindable props using effects with untrack\r\n $effect(() => {\r\n const newScore = computedScore;\r\n if (untrack(() => score) !== newScore) {\r\n score = newScore;\r\n }\r\n });\r\n\r\n // Derive text and color from computedScore (not from bindable score)\r\n let computedStrengthText = $derived(\r\n computedScore === 0 ? labels.tooWeak :\r\n computedScore === 1 ? labels.weak :\r\n computedScore === 2 ? labels.good :\r\n computedScore === 3 ? labels.strong : \"\"\r\n );\r\n\r\n // No color until a real strength result exists. computedScore is -1 while\r\n // the lazily-loaded strength library is still in flight (and during the\r\n // debounce window), so emitting danger here would flash a red \"Password\r\n // strength\" line with empty text in consumers (e.g. PasswordInput).\r\n let computedTextColor = $derived(\r\n computedScore < 0 ? \"\" :\r\n computedScore <= 1 ? \"text-accent-danger\" : \"text-accent-success\"\r\n );\r\n\r\n $effect(() => {\r\n const newText = computedStrengthText;\r\n if (untrack(() => strengthText) !== newText) {\r\n strengthText = newText;\r\n }\r\n });\r\n\r\n let strengthColor = $derived(computedScore <= 1 ? \"bg-accent-danger\" : \"bg-accent-success\");\r\n\r\n $effect(() => {\r\n const newColor = computedTextColor;\r\n if (untrack(() => textColor) !== newColor) {\r\n textColor = newColor;\r\n }\r\n });\r\n\r\n // Calculate how many bars to fill (1-3)\r\n let filledBars = $derived(computedScore === 0 ? 1 : computedScore === 1 ? 2 : computedScore >= 2 ? 3 : 0);\r\n</script>\r\n\r\n{#if debouncedPassword.length > 0}\r\n <div\r\n transition:safeSlide={{ duration: 600, easing: cubicOut }}\r\n class=\"pt-2 space-y-2\"\r\n >\r\n <!-- 3 segment bars -->\r\n <div class=\"flex gap-1.5\">\r\n <!-- eslint-disable-next-line svelte/require-each-key -- keyed-each migration deferred -->\r\n {#each [0, 1, 2] as barIndex}\r\n <div\r\n class=\"h-1 flex-1 rounded-full transition-colors duration-300 {barIndex <\r\n filledBars\r\n ? strengthColor\r\n : 'bg-bg-tertiary'}\"\r\n ></div>\r\n {/each}\r\n </div>\r\n {@render children?.()}\r\n </div>\r\n{/if}\r\n","<script lang=\"ts\">\r\n /**\r\n * PasswordInput - Password field with show/hide toggle and strength indicator\r\n *\r\n * Combines Input (password type) with PasswordStrengthIndicator for\r\n * a complete password entry experience.\r\n *\r\n * @example\r\n * <PasswordInput\r\n * label=\"New Password\"\r\n * bind:value={password}\r\n * showStrength\r\n * error={$errors.password}\r\n * required\r\n * />\r\n *\r\n * @example Consumer-owned validation (e.g. Zod): opt out of the built-in\r\n * `required` constraint so the consuming form is the single source of truth.\r\n * <PasswordInput\r\n * label=\"Password\"\r\n * bind:value={password}\r\n * required\r\n * disableBuiltInValidation\r\n * error={$errors.password}\r\n * />\r\n */\r\n import Input from '../../primitives/Input/Input.svelte';\r\n import PasswordStrengthIndicator from './PasswordStrengthIndicator/PasswordStrengthIndicator.svelte';\r\n\r\n const defaultLabels = {\r\n passwordStrength: 'Password strength:',\r\n };\r\n\r\n interface Props {\r\n /** Password value */\r\n value?: string;\r\n /** Label text */\r\n label?: string;\r\n /** Placeholder text */\r\n placeholder?: string;\r\n /** Input name attribute */\r\n name?: string;\r\n /** Input id attribute */\r\n id?: string;\r\n /** Whether the field is required */\r\n required?: boolean;\r\n /**\r\n * Opt out of the component's built-in `required` validation so the\r\n * consumer owns validation entirely (e.g. a Zod schema on the form).\r\n * When `true`, the `required` constraint is NOT forwarded to the\r\n * underlying field (no `aria-required`, no required asterisk). The\r\n * visual error/hint still render via `error`/`hint`. Defaults to\r\n * `false`, preserving the existing built-in behavior exactly.\r\n */\r\n disableBuiltInValidation?: boolean;\r\n /** Whether the field is disabled */\r\n disabled?: boolean;\r\n /** Error message to display */\r\n error?: string;\r\n /** Hint text shown below input */\r\n hint?: string;\r\n /** Show password strength indicator */\r\n showStrength?: boolean;\r\n /** Size variant */\r\n size?: 'sm' | 'md' | 'lg';\r\n /** Minimum password length */\r\n minlength?: number | null;\r\n /** Maximum password length */\r\n maxlength?: number | null;\r\n /** Autocomplete attribute */\r\n autocomplete?: string;\r\n /** Whether to show the password toggle button */\r\n showPasswordToggle?: boolean;\r\n /** Additional class for the wrapper div */\r\n class?: string;\r\n // Optional callbacks (matching Input component signatures)\r\n // eslint-disable-next-line no-unused-vars -- intentionally retained (prop/slot/forward-compat or Svelte-5 reactive binding eslint cannot see)\n oninput?: (value: string) => void;\r\n onblur?: () => void;\r\n onfocus?: () => void;\r\n /** Override user-visible strings */\r\n labels?: Partial<typeof defaultLabels>;\r\n }\r\n\r\n let {\r\n value = $bindable(''),\r\n label = '',\r\n placeholder = '',\r\n name = '',\r\n id = '',\r\n required = false,\r\n disableBuiltInValidation = false,\r\n disabled = false,\r\n error = '',\r\n hint = '',\r\n showStrength = false,\r\n size = 'md',\r\n minlength = null,\r\n maxlength = null,\r\n autocomplete = 'new-password',\r\n showPasswordToggle = true,\r\n class: className = '',\r\n oninput,\r\n onblur,\r\n onfocus,\r\n labels: userLabels = {},\r\n }: Props = $props();\r\n\r\n let labels = $derived({ ...defaultLabels, ...userLabels });\r\n\r\n // When the consumer opts out of built-in validation, do NOT forward the\r\n // `required` constraint to the underlying field — the consuming form owns\r\n // validation entirely. Default (false) forwards `required` as-is, exactly\r\n // preserving existing behavior.\r\n let effectiveRequired = $derived(disableBuiltInValidation ? false : required);\r\n\r\n // Password strength tracking\r\n let strengthScore = $state(-1);\r\n let strengthText = $state('');\r\n let strengthColor = $state('');\r\n</script>\r\n\r\n<div class={className}>\r\n <Input\r\n type=\"password\"\r\n {id}\r\n {name}\r\n {placeholder}\r\n {label}\r\n required={effectiveRequired}\r\n {disabled}\r\n {size}\r\n {minlength}\r\n {maxlength}\r\n {autocomplete}\r\n {showPasswordToggle}\r\n errorText={error}\r\n hintText={hint}\r\n bind:value\r\n oninputchange={oninput}\r\n {onblur}\r\n {onfocus}\r\n />\r\n\r\n {#if showStrength && value}\r\n <PasswordStrengthIndicator\r\n password={value}\r\n bind:score={strengthScore}\r\n bind:strengthText\r\n bind:textColor={strengthColor}\r\n >\r\n <p class=\"text-xs {strengthColor}\">\r\n {labels.passwordStrength} {strengthText}\r\n </p>\r\n </PasswordStrengthIndicator>\r\n {/if}\r\n</div>\r\n","<!-- 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<!-- @route-escape: widget-intentional. -->\r\n<script lang=\"ts\">\r\n\timport { onMount, onDestroy } from 'svelte';\r\n\timport { goto } from '$app/navigation';\r\n\timport EventExperience from '$lib/public-calendar-flow/Event.svelte';\r\n\timport { transformCollectionData } from '$lib/public-calendar-flow/transform';\r\n\timport { fetchPublicCollection } from '$lib/api/events';\r\n\timport type { PublicCollectionData } from '$lib/api/types';\r\n\timport { createLogger, PasswordInput } from '@getmicdrop/svelte-components';\r\n\r\n\tconst logger = createLogger('CollectionView');\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 CollectionView retires on 2026-08-13. See docs/LEGACY_RETIREMENT.md.'\r\n\t\t\t);\r\n\t\t\timport('./CollectionView.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 CollectionView external interface) ---\r\n\tinterface Props {\r\n\t\tcollectionId: string | number;\r\n\t\torganizationId?: string;\r\n\t\tonNavigateToEvent?: (id: number, slug: string) => void;\r\n\t\tpassword?: string;\r\n\t\tdisplayMode?: string;\r\n\t\tshowViewSwitcher?: boolean;\r\n\t\tlabels?: Record<string, string>;\r\n\t}\r\n\r\n\tlet {\r\n\t\tcollectionId,\r\n\t\torganizationId = '',\r\n\t\tonNavigateToEvent = undefined,\r\n\t\tpassword = undefined,\r\n\t\tdisplayMode = 'gallery',\r\n\t\tshowViewSwitcher = true,\r\n\t\tlabels = {},\r\n\t}: Props = $props();\r\n\r\n\t// --- State ---\r\n\tlet collection = $state<PublicCollectionData | null>(null);\r\n\tlet isLoading = $state(true);\r\n\tlet error = $state<string | null>(null);\r\n\tlet isMounted = $state(false);\r\n\tlet passwordRequired = $state(false);\r\n\tlet passwordInput = $state('');\r\n\tlet passwordError = $state(false);\r\n\r\n\t// --- Derived ---\r\n\tlet eventData = $derived(collection ? transformCollectionData(collection) : null);\r\n\r\n\t// --- Load collection data ---\r\n\tasync function loadCollection(pwd?: string): Promise<void> {\r\n\t\tif (!isMounted) return;\r\n\t\tif (!collectionId) {\r\n\t\t\terror = labels.noCollectionIdProvided || 'No collection ID provided';\r\n\t\t\tisLoading = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tisLoading = true;\r\n\t\terror = null;\r\n\t\tpasswordError = false;\r\n\r\n\t\ttry {\r\n\t\t\tconst data = await fetchPublicCollection(collectionId, pwd);\r\n\t\t\tif (!isMounted) return;\r\n\r\n\t\t\tif (data) {\r\n\t\t\t\tif ((data as any).passwordRequired || (data as any).error?.code === 'PASSWORD_REQUIRED') {\r\n\t\t\t\t\tpasswordRequired = true;\r\n\t\t\t\t\tisLoading = false;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tcollection = data;\r\n\t\t\t\tpasswordRequired = false;\r\n\t\t\t} else {\r\n\t\t\t\tif (pwd) {\r\n\t\t\t\t\tpasswordRequired = true;\r\n\t\t\t\t\tpasswordError = true;\r\n\t\t\t\t\tisLoading = false;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\terror = labels.failedToLoadCollection || 'Failed to load collection';\r\n\t\t\t}\r\n\t\t} catch (err: any) {\r\n\t\t\tif (isMounted) {\r\n\t\t\t\tconst msg = err.message || '';\r\n\t\t\t\tif (msg.includes('401') || msg.includes('403') || msg.includes('password')) {\r\n\t\t\t\t\tpasswordRequired = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\terror = msg || labels.failedToLoadCollection || 'Failed to load collection';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tif (isMounted) {\r\n\t\t\t\tisLoading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction handlePasswordSubmit(e: Event): void {\r\n\t\te.preventDefault();\r\n\t\tif (!passwordInput.trim()) return;\r\n\t\tloadCollection(passwordInput);\r\n\t}\r\n\r\n\tfunction handleCollectionEventClick(galleryEvent: { id?: number | string; slug: string }): void {\r\n\t\tif (onNavigateToEvent && galleryEvent.id) {\r\n\t\t\tonNavigateToEvent(Number(galleryEvent.id), galleryEvent.slug);\r\n\t\t} else {\r\n\t\t\t// @url-builder-escape: widget-internal route; SC's url-builders cover /a admin paths, not embedded calendar navigation.\r\n\t\t\tgoto(`/${galleryEvent.id}/${galleryEvent.slug}`);\r\n\t\t}\r\n\t}\r\n\r\n\t// --- Lifecycle ---\r\n\tonMount(() => {\r\n\t\tisMounted = true;\r\n\t\tloadCollection(password);\r\n\t});\r\n\r\n\tonDestroy(() => {\r\n\t\tisMounted = false;\r\n\t});\r\n</script>\r\n\r\n{#if useLegacy && LegacyComponent}\r\n\t<svelte:component this={LegacyComponent}\r\n\t\t{collectionId}\r\n\t\t{organizationId}\r\n\t\t{onNavigateToEvent}\r\n\t\t{password}\r\n\t\t{displayMode}\r\n\t\t{showViewSwitcher}\r\n\t\t{labels}\r\n\t/>\r\n{:else if isLoading}\r\n\t<div class=\"flex items-center justify-center py-12 text-center loading-container\">\r\n\t\t<p>{labels.loadingCollection || 'Loading collection...'}</p>\r\n\t</div>\r\n{:else if passwordRequired}\r\n\t<div class=\"flex flex-col items-center justify-center min-h-[50vh] text-center\">\r\n\t\t<div class=\"password-card rounded-lg p-8 max-w-sm w-full\">\r\n\t\t\t<h2 class=\"password-title text-xl font-bold mb-2\">{labels.collectionPrivateTitle || 'This collection is private'}</h2>\r\n\t\t\t<p class=\"password-description text-sm mb-6\">{labels.collectionPrivateDescription || 'Please enter the password to view this collection.'}</p>\r\n\t\t\t<form onsubmit={handlePasswordSubmit} class=\"flex flex-col gap-3\">\r\n\t\t\t\t<PasswordInput\r\n\t\t\t\t\tbind:value={passwordInput}\r\n\t\t\t\t\tplaceholder={labels.enterPassword || \"Enter password\"}\r\n\t\t\t\t\terror={passwordError ? (labels.incorrectPassword || 'Incorrect password. Please try again.') : ''}\r\n\t\t\t\t/>\r\n\t\t\t\t<button type=\"submit\" class=\"password-submit px-4 py-2 rounded-lg text-sm font-semibold\">{labels.viewCollection || 'View Collection'}</button>\r\n\t\t\t</form>\r\n\t\t</div>\r\n\t</div>\r\n{:else if error}\r\n\t<div class=\"flex flex-col items-center justify-center min-h-[50vh] text-center\">\r\n\t\t<p class=\"error-text\">{labels.errorPrefix || 'Error:'} {error}</p>\r\n\t</div>\r\n{:else if eventData}\r\n\t<EventExperience\r\n\t\tevent={eventData}\r\n\t\tonCollectionEventClick={handleCollectionEventClick}\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.password-card {\r\n\t\tbackground: hsl(var(--surface-primary, 0 0% 100%));\r\n\t\tbox-shadow: 0 2px 10px color-mix(in srgb, black 10%, transparent);\r\n\t}\r\n\r\n\t.password-title {\r\n\t\tcolor: hsl(var(--text-primary, 0 0% 10%));\r\n\t}\r\n\r\n\t.password-description {\r\n\t\tcolor: hsl(var(--text-secondary, 0 0% 45%));\r\n\t}\r\n\r\n\t.password-submit {\r\n\t\tbackground: hsl(var(--brand-primary, 220 90% 56%));\r\n\t\tcolor: hsl(var(--text-on-primary, 0 0% 100%));\r\n\t}\r\n\r\n\t.password-submit:hover {\r\n\t\tfilter: brightness(0.95);\r\n\t}\r\n</style>"],"names":["defaultLabels","password","$","$$props","strengthText","score","textColor","userLabels","labels","debouncedPassword","timer","strengthFn","loadStrengthModule","lazyOnce","ensureStrengthFn","m","customOptions","strength","computedScore","newScore","untrack","computedStrengthText","computedTextColor","newText","strengthColor","newColor","filledBars","div","root_1","div_1","barIndex","div_2","root","cubicOut","$$render","consequent","value","label","placeholder","name","id","required","disableBuiltInValidation","disabled","error","hint","showStrength","size","minlength","maxlength","autocomplete","showPasswordToggle","className","effectiveRequired","strengthScore","Input","node","$$value","PasswordStrengthIndicator","$$anchor","p","logger","createLogger","useLegacy","LegacyComponent","organizationId","onNavigateToEvent","displayMode","showViewSwitcher","collection","isLoading","isMounted","passwordRequired","passwordInput","passwordError","eventData","transformCollectionData","loadCollection","pwd","data","fetchPublicCollection","err","msg","handlePasswordSubmit","e","handleCollectionEventClick","galleryEvent","goto","onMount","onDestroy","$$component","h2","p_1","form","PasswordInput","node_2","button","div_3","root_2","p_2","text_4","EventExperience","consequent_2","consequent_3","consequent_4"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,11 +1,11 @@
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 { 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";
4
+ import { a6 as ne, au as ce, aN as de, aP as ve } from "./VenueCalendar-DMSeDRSN.js";
5
+ import { g as S } from "./transform-BlXf-shc.js";
6
+ import { G as ge } from "./GalleryCard-BcIcYghD.js";
7
+ import ue from "./GroupedListView.legacy-qvwIV5Qm.js";
8
+ import { P as me } from "./CollectionView-D2bRelLR.js";
9
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>');
10
10
  function Ie(G, c) {
11
11
  e.push(c, !0), e.prop(c, "organizationId", 3, "");
@@ -238,4 +238,4 @@ e.delegate(["click"]);
238
238
  export {
239
239
  Ie as default
240
240
  };
241
- //# sourceMappingURL=CollectionView.legacy-DK_mCA_g.js.map
241
+ //# sourceMappingURL=CollectionView.legacy-DLb5fzi-.js.map
@@ -1 +1 @@
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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"}
1
+ {"version":3,"file":"CollectionView.legacy-DLb5fzi-.js","sources":["../src/components/Views/CollectionView.legacy.svelte"],"sourcesContent":["<!-- native-element-exception: VC is an embeddable widget — native <button>s are intentional here (widget-controlled styling on calendar cells, date selectors, checkout/nav CTAs). -->\r\n<script>\r\n // @ts-nocheck legacy fallback (legacy=1 path), slated for deletion after VC finalization — not type-maintained\r\n import { onMount, onDestroy } from 'svelte';\r\n import { fetchPublicCollection } from '../../lib/api/events.ts';\r\n import { getImageUrl } from '$lib/utils/utils.js';\r\n import {\r\n EmptyState,\r\n PasswordInput,\r\n formatTime,\r\n } from '@getmicdrop/svelte-components';\r\n import GalleryCard from '../Calendar/GalleryCard.svelte';\r\n import GroupedListView from '../Calendar/GroupedListView.legacy.svelte';\r\n import SkeletonLoader from '../SkeletonLoader/SkeletonLoader.svelte';\r\n\r\n let {\r\n collectionId,\r\n organizationId = '',\r\n onNavigateToEvent,\r\n password: initialPassword = undefined,\r\n displayMode: initialDisplayMode = 'gallery',\r\n showViewSwitcher = true,\r\n labels = {},\r\n } = $props();\r\n\r\n let collection = $state(null);\r\n let isLoading = $state(true);\r\n let error = $state(null);\r\n let isMounted = $state(false);\r\n let passwordRequired = $state(false);\r\n let passwordInput = $state('');\r\n let passwordError = $state(false);\r\n let activeDisplayMode = $state(initialDisplayMode);\r\n\r\n // Transform collection events into the shape GalleryCard expects\r\n function toGalleryEvent(event) {\r\n return {\r\n id: event.id,\r\n name: event.title || event.name || '',\r\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\r\n image: event.image ? getImageUrl(event.image) : '',\r\n timeline: event.startDateTime ? formatTimeline(event.startDateTime) : '',\r\n status: event.status || 'on_sale',\r\n slug: event.slug || '',\r\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\r\n ticketsTotal: event.ticketsTotal ?? event.capacity,\r\n };\r\n }\r\n\r\n // Transform collection events into the shape GroupedListView expects\r\n function toListEvent(event) {\r\n return {\r\n id: event.id,\r\n name: event.title || event.name || '',\r\n date: event.startDateTime ? event.startDateTime.split('T')[0] : '',\r\n startDateTime: event.startDateTime || '',\r\n image: event.image ? getImageUrl(event.image) : '',\r\n status: event.status || 'on_sale',\r\n slug: event.slug || '',\r\n description: event.description || '',\r\n ticketsRemaining: event.ticketsRemaining ?? event.ticketsAvailable,\r\n ticketsTotal: event.ticketsTotal ?? event.capacity,\r\n };\r\n }\r\n\r\n function formatTimeline(iso) {\r\n if (!iso) return '';\r\n const date = new Date(iso);\r\n return formatTime(date, {\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n hour12: true,\r\n });\r\n }\r\n\r\n let displayEvents = $derived(\r\n collection ? sortByStartTime(collection.events || []) : []\r\n );\r\n\r\n let galleryEvents = $derived(displayEvents.map(toGalleryEvent));\r\n let listEvents = $derived(displayEvents.map(toListEvent));\r\n\r\n // Only show view switcher when there are 2+ events\r\n let canShowSwitcher = $derived(showViewSwitcher && displayEvents.length >= 2);\r\n\r\n function sortByStartTime(events) {\r\n return [...events].sort((a, b) => {\r\n if (!a.startDateTime && !b.startDateTime) return 0;\r\n if (!a.startDateTime) return 1;\r\n if (!b.startDateTime) return -1;\r\n return (\r\n new Date(a.startDateTime).getTime() -\r\n new Date(b.startDateTime).getTime()\r\n );\r\n });\r\n }\r\n\r\n function handleEventClick(galleryEvent) {\r\n if (onNavigateToEvent) {\r\n const eventData = galleryEvent.detail || galleryEvent;\r\n onNavigateToEvent(eventData.id, eventData.slug || '');\r\n }\r\n }\r\n\r\n async function loadCollection(pwd) {\r\n if (!isMounted) return;\r\n if (!collectionId) {\r\n error = labels.noCollectionIdProvided || 'No collection ID provided';\r\n isLoading = false;\r\n return;\r\n }\r\n\r\n isLoading = true;\r\n error = null;\r\n passwordError = false;\r\n\r\n try {\r\n const data = await fetchPublicCollection(collectionId, pwd);\r\n if (!isMounted) return;\r\n\r\n if (data) {\r\n // Check if the response indicates password is required\r\n if (data.passwordRequired || data.error?.code === 'PASSWORD_REQUIRED') {\r\n passwordRequired = true;\r\n isLoading = false;\r\n return;\r\n }\r\n collection = data;\r\n passwordRequired = false;\r\n } else {\r\n // A null response after providing a password likely means wrong password\r\n if (pwd) {\r\n passwordRequired = true;\r\n passwordError = true;\r\n isLoading = false;\r\n return;\r\n }\r\n error = labels.failedToLoadCollection || 'Failed to load collection';\r\n }\r\n } catch (err) {\r\n if (isMounted) {\r\n // Check for password-related error responses\r\n const msg = err.message || '';\r\n if (\r\n msg.includes('401') ||\r\n msg.includes('403') ||\r\n msg.includes('password')\r\n ) {\r\n passwordRequired = true;\r\n } else {\r\n error = msg || 'Failed to load collection';\r\n }\r\n }\r\n } finally {\r\n if (isMounted) {\r\n isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n function handlePasswordSubmit(e) {\r\n e.preventDefault();\r\n if (!passwordInput.trim()) return;\r\n loadCollection(passwordInput);\r\n }\r\n\r\n onMount(async () => {\r\n isMounted = true;\r\n await loadCollection(initialPassword);\r\n });\r\n\r\n onDestroy(() => {\r\n isMounted = false;\r\n });\r\n</script>\r\n\r\n<div class=\"collection-view\">\r\n {#if isLoading}\r\n <SkeletonLoader type=\"gallery\" />\r\n {:else if passwordRequired}\r\n <div class=\"password-container\">\r\n <div class=\"password-card\">\r\n <h2 class=\"password-title\">\r\n {labels.collectionPrivateTitle || 'This collection is private'}\r\n </h2>\r\n <p class=\"password-description\">\r\n {labels.collectionPrivateDescription ||\r\n 'Please enter the password to view this collection.'}\r\n </p>\r\n <form onsubmit={handlePasswordSubmit} class=\"password-form\">\r\n <PasswordInput\r\n bind:value={passwordInput}\r\n placeholder={labels.enterPassword || 'Enter password'}\r\n autocomplete=\"current-password\"\r\n error={passwordError\r\n ? labels.incorrectPassword ||\r\n 'Incorrect password. Please try again.'\r\n : ''}\r\n />\r\n <button type=\"submit\" class=\"password-submit\"\r\n >{labels.viewCollection || 'View Collection'}</button\r\n >\r\n </form>\r\n </div>\r\n </div>\r\n {:else if error}\r\n <div class=\"error-container\">\r\n <p class=\"error-text\">{labels.errorPrefix || 'Error:'} {error}</p>\r\n </div>\r\n {:else if collection}\r\n <!-- Cover Image with Blur -->\r\n {#if collection.coverImage}\r\n {@const imageUrl = getImageUrl(collection.coverImage)}\r\n <div class=\"cover-image\">\r\n <div class=\"cover-blur\" style=\"background-image: url({imageUrl})\"></div>\r\n <img src={imageUrl} alt={collection.collectionTitle} />\r\n </div>\r\n {/if}\r\n\r\n <!-- Collection Header -->\r\n <div class=\"collection-header\">\r\n <h1 class=\"collection-title\">{collection.collectionTitle}</h1>\r\n {#if collection.summary}\r\n <p class=\"collection-summary\">{collection.summary}</p>\r\n {/if}\r\n {#if collection.description}\r\n <div class=\"collection-description\">{collection.description}</div>\r\n {/if}\r\n </div>\r\n\r\n <!-- Events Section -->\r\n <div class=\"events-section\">\r\n <div class=\"events-section-header\">\r\n <h2 class=\"events-heading\">Events ({displayEvents.length})</h2>\r\n\r\n {#if canShowSwitcher}\r\n <div\r\n class=\"view-switcher\"\r\n role=\"group\"\r\n aria-label={labels.viewOptions || 'Display mode'}\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"view-switcher-btn\"\r\n class:view-switcher-btn-active={activeDisplayMode === 'gallery'}\r\n onclick={() => (activeDisplayMode = 'gallery')}\r\n aria-label={labels.galleryView || 'Gallery view'}\r\n aria-pressed={activeDisplayMode === 'gallery'}\r\n >\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect>\r\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect>\r\n </svg>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"view-switcher-btn\"\r\n class:view-switcher-btn-active={activeDisplayMode === 'list'}\r\n onclick={() => (activeDisplayMode = 'list')}\r\n aria-label={labels.listView || 'List view'}\r\n aria-pressed={activeDisplayMode === 'list'}\r\n >\r\n <svg\r\n width=\"18\"\r\n height=\"18\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\r\n <line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\r\n <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\r\n <line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line>\r\n <line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line>\r\n <line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\r\n </svg>\r\n </button>\r\n </div>\r\n {/if}\r\n </div>\r\n\r\n {#if displayEvents.length === 0}\r\n <EmptyState\r\n message={labels.noUpcomingEvents || 'No upcoming events'}\r\n subtext={labels.noUpcomingEventsSubtext ||\r\n 'There are no events in this collection right now. Check back soon!'}\r\n />\r\n {:else if activeDisplayMode === 'list'}\r\n <GroupedListView\r\n events={listEvents}\r\n filterFutureOnly={false}\r\n oneventClick={handleEventClick}\r\n />\r\n {:else}\r\n <div class=\"events-grid\">\r\n {#each galleryEvents as event (event.id)}\r\n <GalleryCard {event} oneventClick={handleEventClick} />\r\n {/each}\r\n </div>\r\n {/if}\r\n </div>\r\n {/if}\r\n</div>\r\n\r\n<style>\r\n .collection-view {\r\n width: 100%;\r\n max-width: 64rem;\r\n margin-left: auto;\r\n margin-right: auto;\r\n padding-left: 1rem;\r\n padding-right: 1rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .error-container,\r\n .password-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n min-height: 50vh;\r\n text-align: center;\r\n }\r\n\r\n .error-text {\r\n color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n /* Password gate */\r\n .password-card {\r\n border-radius: 0.5rem;\r\n padding: 2rem;\r\n max-width: 24rem;\r\n width: 100%;\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n box-shadow: 0 2px 10px color-mix(in srgb, black 10%, transparent);\r\n }\r\n\r\n .password-title {\r\n font-size: 1.25rem;\r\n line-height: 1.75rem;\r\n font-weight: 700;\r\n margin-bottom: 0.5rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .password-description {\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n margin-bottom: 1.5rem;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .password-form {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.75rem;\r\n }\r\n\r\n .password-input {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n border-radius: 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n border: 1px solid hsl(var(--stroke-secondary, 0 0% 85%));\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n }\r\n\r\n .password-input:focus {\r\n outline: none;\r\n border-color: hsl(var(--brand-primary, 220 90% 56%));\r\n box-shadow: 0 0 0 2px hsl(var(--brand-primary, 220 90% 56%) / 20%);\r\n }\r\n\r\n .password-input-error {\r\n border-color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n .password-error-text {\r\n font-size: 0.75rem;\r\n line-height: 1rem;\r\n color: hsl(var(--status-sold-out, 0 72% 51%));\r\n }\r\n\r\n .password-submit {\r\n padding: 0.5rem 1rem;\r\n border-radius: 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.25rem;\r\n font-weight: 600;\r\n background: hsl(var(--brand-primary, 220 90% 56%));\r\n color: hsl(var(--text-on-primary, 0 0% 100%));\r\n }\r\n\r\n .password-submit:hover {\r\n filter: brightness(0.95);\r\n }\r\n\r\n /* Cover Image with blur background */\r\n .cover-image {\r\n position: relative;\r\n width: 100%;\r\n overflow: hidden;\r\n border-radius: 0.5rem;\r\n margin-bottom: 2rem;\r\n height: 350px;\r\n }\r\n\r\n .cover-blur {\r\n position: absolute;\r\n inset: 0;\r\n background-size: cover;\r\n background-position: center;\r\n filter: blur(24px) saturate(1.2);\r\n transform: scale(1.15);\r\n }\r\n\r\n .cover-image img {\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n }\r\n\r\n /* Header */\r\n .collection-header {\r\n margin-bottom: 2rem;\r\n }\r\n\r\n .collection-title {\r\n font-size: 1.875rem;\r\n line-height: 2.25rem;\r\n font-weight: 700;\r\n margin-bottom: 0.5rem;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .collection-summary {\r\n font-size: 1.125rem;\r\n line-height: 1.75rem;\r\n margin-bottom: 1rem;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .collection-description {\r\n line-height: 1.625;\r\n color: hsl(var(--text-secondary, 0 0% 35%));\r\n }\r\n\r\n /* Events Section */\r\n .events-section {\r\n margin-bottom: 2rem;\r\n }\r\n\r\n .events-section-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 1rem;\r\n }\r\n\r\n .events-heading {\r\n font-size: 1.5rem;\r\n line-height: 2rem;\r\n font-weight: 700;\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n /* View Switcher */\r\n .view-switcher {\r\n display: flex;\r\n gap: 0.25rem;\r\n padding: 0.25rem;\r\n border-radius: 0.5rem;\r\n background: hsl(var(--surface-secondary, 0 0% 96%));\r\n }\r\n\r\n .view-switcher-btn {\r\n padding: 0.375rem;\r\n border-radius: 0.375rem;\r\n transition: color 0.15s;\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .view-switcher-btn:hover {\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .view-switcher-btn-active {\r\n color: hsl(var(--text-primary, 0 0% 10%));\r\n background: hsl(var(--surface-primary, 0 0% 100%));\r\n box-shadow: 0 1px 2px color-mix(in srgb, black 8%, transparent);\r\n }\r\n\r\n .events-grid {\r\n display: grid;\r\n gap: 1.5rem;\r\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\r\n }\r\n\r\n /* Responsive */\r\n @media (width <= 640px) {\r\n .cover-image {\r\n height: 250px;\r\n }\r\n\r\n .collection-title {\r\n font-size: 1.5rem;\r\n line-height: 2rem;\r\n }\r\n\r\n .events-grid {\r\n grid-template-columns: repeat(2, 1fr);\r\n }\r\n }\r\n\r\n @media (width <= 400px) {\r\n .events-grid {\r\n grid-template-columns: 1fr;\r\n }\r\n }\r\n</style>"],"names":["$","$$props","initialPassword","initialDisplayMode","showViewSwitcher","labels","collection","isLoading","error","isMounted","passwordRequired","passwordInput","passwordError","activeDisplayMode","toGalleryEvent","event","getImageUrl","formatTimeline","toListEvent","iso","date","formatTime","displayEvents","sortByStartTime","galleryEvents","listEvents","canShowSwitcher","events","a","b","handleEventClick","galleryEvent","eventData","loadCollection","pwd","data","fetchPublicCollection","err","msg","handlePasswordSubmit","e","onMount","onDestroy","div","root_8","SkeletonLoader","$$anchor","div_1","root","div_2","h2","p","form","PasswordInput","node_1","$$value","button","div_3","root_1","p_1","text_3","imageUrl","div_4","root_2","div_5","img","$$render","consequent_3","div_6","node_2","h1","p_2","root_3","text_5","consequent_4","div_7","root_4","text_6","consequent_5","div_8","div_9","h2_1","div_10","root_5","button_1","button_2","classes","classes_1","consequent_6","EmptyState","GroupedListView","div_11","root_6","GalleryCard","consequent_7","consequent_8","alternate","text_4","text_7","consequent","consequent_1","consequent_9"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as e from "svelte/internal/client";
3
- import { g as Ze, a as Je, t as We, f as bt, D as Ke, b as gt, d as At, O as ze, m as It, e as Se, c as Bt } from "./labels-Bj_cocb1.js";
4
- import { as as Le, t as Me, s as Nt, Q as fe, S as jt, K as ut, av as vt, aw as St, ap as tt, ab as at, ax as Mt, ay as yt, aa as wt, O as Ve, m as je, az as we, a5 as ft, a3 as qt, a4 as Yt, Y as ye, aA as Oe, N as Ue, h as Tt, aB as Ct, aC as Ht, aD as Rt, aE as Pt, P as Wt } from "./VenueCalendar-d8u6MKEu.js";
5
- import { S as Xe } from "./ScarcityBadge-3cFxTOCh.js";
6
- import { H as Ie, C as Ee } from "./Heading-Bwevh2c4.js";
7
- import { I as zt, T as De } from "./Text-_bLxSPv-.js";
3
+ import { g as Ze, a as Je, t as We, f as bt, D as Ke, b as gt, d as At, O as ze, m as It, e as Se, c as Bt } from "./labels-BB1JG19g.js";
4
+ import { as as Le, t as Me, s as Nt, Q as fe, S as jt, K as ut, av as vt, aw as St, ap as tt, ab as at, ax as Mt, ay as yt, aa as wt, O as Ve, m as je, az as we, a5 as ft, a3 as qt, a4 as Yt, Y as ye, aA as Oe, N as Ue, h as Tt, aB as Ct, aC as Ht, aD as Rt, aE as Pt, P as Wt } from "./VenueCalendar-DMSeDRSN.js";
5
+ import { S as Xe } from "./ScarcityBadge-BkRFHRif.js";
6
+ import { H as Ie, C as Ee } from "./Heading-5CT9Nk0b.js";
7
+ import { I as zt, T as De } from "./Text-WY42WIKI.js";
8
8
  import { SvelteSet as Ot } from "svelte/reactivity";
9
9
  import { createContext as mt, onMount as Ut } from "svelte";
10
10
  import { C as Et } from "./__SKIP_NAVIGATION__-CmipjatL.js";
@@ -2237,4 +2237,4 @@ function fr(w, t) {
2237
2237
  export {
2238
2238
  fr as E
2239
2239
  };
2240
- //# sourceMappingURL=Event-B5WRygEf.js.map
2240
+ //# sourceMappingURL=Event-DZpU-Ec1.js.map