@getmicdrop/venue-calendar 4.1.15 → 4.1.17
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/{CartView-C5f1j5Hs.js → CartView-J0qckr8X.js} +9 -9
- package/dist/{CartView-C5f1j5Hs.js.map → CartView-J0qckr8X.js.map} +1 -1
- package/dist/{Checkout-DvecNf3c.js → Checkout-DQIVk8NT.js} +7 -7
- package/dist/{Checkout-DvecNf3c.js.map → Checkout-DQIVk8NT.js.map} +1 -1
- package/dist/{Checkout-CBo7hA62.js → Checkout-hmfkDuYF.js} +9 -9
- package/dist/{Checkout-CBo7hA62.js.map → Checkout-hmfkDuYF.js.map} +1 -1
- package/dist/{CheckoutTimer-DKEkJsj6.js → CheckoutTimer-D6qbPXmL.js} +5 -5
- package/dist/{CheckoutTimer-DKEkJsj6.js.map → CheckoutTimer-D6qbPXmL.js.map} +1 -1
- package/dist/{ClockIcon-CmMqPYTc.js → ClockIcon-CeZ6tDgN.js} +2 -2
- package/dist/{ClockIcon-CmMqPYTc.js.map → ClockIcon-CeZ6tDgN.js.map} +1 -1
- package/dist/{CollectionView-JLn9DbvF.js → CollectionView-ClJC-3Ot.js} +5 -5
- package/dist/{CollectionView-JLn9DbvF.js.map → CollectionView-ClJC-3Ot.js.map} +1 -1
- package/dist/{Event-XctRpVD-.js → Event-DnguMKoM.js} +9 -9
- package/dist/{Event-XctRpVD-.js.map → Event-DnguMKoM.js.map} +1 -1
- package/dist/{EventPage-B-q_x22S.js → EventPage-CicdCaIY.js} +8 -8
- package/dist/{EventPage-B-q_x22S.js.map → EventPage-CicdCaIY.js.map} +1 -1
- package/dist/{Heading-LLAkeTId.js → Heading-Dpc12_QS.js} +2 -2
- package/dist/{Heading-LLAkeTId.js.map → Heading-Dpc12_QS.js.map} +1 -1
- package/dist/{ScarcityBadge-DDLJvGtf.js → ScarcityBadge-CyrniwIo.js} +2 -2
- package/dist/{ScarcityBadge-DDLJvGtf.js.map → ScarcityBadge-CyrniwIo.js.map} +1 -1
- package/dist/{SeriesPage-DqQH12gK.js → SeriesPage-BmPai8Z4.js} +5 -5
- package/dist/{SeriesPage-DqQH12gK.js.map → SeriesPage-BmPai8Z4.js.map} +1 -1
- package/dist/{Spinner-CkMnUr96.js → Spinner-CRWt7IYY.js} +2 -2
- package/dist/{Spinner-CkMnUr96.js.map → Spinner-CRWt7IYY.js.map} +1 -1
- package/dist/{Success-DrGDRgwr.js → Success-Cwhbg_gL.js} +9 -9
- package/dist/{Success-DrGDRgwr.js.map → Success-Cwhbg_gL.js.map} +1 -1
- package/dist/{Text-Brn9wgwJ.js → Text-CfL6ex6f.js} +2 -2
- package/dist/{Text-Brn9wgwJ.js.map → Text-CfL6ex6f.js.map} +1 -1
- package/dist/{VenueCalendar-61UHjI0X.js → VenueCalendar-DHAmKNT-.js} +13 -13
- package/dist/{VenueCalendar-61UHjI0X.js.map → VenueCalendar-DHAmKNT-.js.map} +1 -1
- package/dist/{ViewTicketsEmbed-BsN2t6ci.js → ViewTicketsEmbed-otZKZMFe.js} +5 -5
- package/dist/{ViewTicketsEmbed-BsN2t6ci.js.map → ViewTicketsEmbed-otZKZMFe.js.map} +1 -1
- package/dist/{index-C5CqqHOv.js → index-CwsI9tPj.js} +3 -3
- package/dist/{index-C5CqqHOv.js.map → index-CwsI9tPj.js.map} +1 -1
- package/dist/{modalManager.svelte-BA3spi6s.js → modalManager.svelte-BDEfA4mR.js} +2 -2
- package/dist/{modalManager.svelte-BA3spi6s.js.map → modalManager.svelte-BDEfA4mR.js.map} +1 -1
- package/dist/{promo-CsNOVD7R.js → promo-BYT85gME.js} +2 -2
- package/dist/{promo-CsNOVD7R.js.map → promo-BYT85gME.js.map} +1 -1
- package/dist/{serverTotals-DpIBNMeu.js → serverTotals-CxpmLBUi.js} +2 -2
- package/dist/{serverTotals-DpIBNMeu.js.map → serverTotals-CxpmLBUi.js.map} +1 -1
- package/dist/{shareCopyFeedback.svelte-Bw2rZ70L.js → shareCopyFeedback.svelte-BVLGQMN_.js} +2 -2
- package/dist/{shareCopyFeedback.svelte-Bw2rZ70L.js.map → shareCopyFeedback.svelte-BVLGQMN_.js.map} +1 -1
- package/dist/{showcase-state-options-BtFe4ghP.js → showcase-state-options-y0ZwSjmL.js} +2 -2
- package/dist/{showcase-state-options-BtFe4ghP.js.map → showcase-state-options-y0ZwSjmL.js.map} +1 -1
- package/dist/{transform-BAUS_LFt.js → transform-C4GBIj6D.js} +2 -2
- package/dist/{transform-BAUS_LFt.js.map → transform-C4GBIj6D.js.map} +1 -1
- package/dist/{utm-ChiZKwVY.js → utm-DUS9p3Ww.js} +2 -2
- package/dist/{utm-ChiZKwVY.js.map → utm-DUS9p3Ww.js.map} +1 -1
- package/dist/venue-calendar.css +1 -1
- package/dist/venue-calendar.es.js +2 -2
- package/dist/venue-calendar.iife.js +2 -2
- package/dist/venue-calendar.umd.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScarcityBadge-DDLJvGtf.js","sources":["../node_modules/@getmicdrop/svelte-components/dist/primitives/Icons/ChevronDownOutline.svelte","../node_modules/@getmicdrop/svelte-components/dist/primitives/Icons/phosphor/AddIcon.svelte","../node_modules/@getmicdrop/svelte-components/dist/primitives/Icons/phosphor/SubtractIcon.svelte","../node_modules/@getmicdrop/svelte-components/dist/primitives/Icons/phosphor/WarningCircleIcon.svelte","../__SKIP_NAVIGATION__","../src/components/ScarcityBadge.svelte"],"sourcesContent":["<script lang=\"ts\">\n interface Props {\n size?: string;\n color?: string;\n class?: string;\n }\n let { size = \"24\", color = \"currentColor\", class: className = \"\" }: Props = $props();\n</script>\n\n<svg\n class={className}\n aria-hidden=\"true\"\n width={size}\n height={size}\n fill=\"none\"\n stroke={color}\n stroke-width=\"2\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 8.25l-7.5 7.5-7.5-7.5\" />\n</svg>\n","<script lang=\"ts\">\n /**\n * Add — Phosphor icon (canonical Micdrop icon family).\n * Outline by default; pass `weight=\"fill\"` for solid, or let a stateful parent\n * (NavItem / Tabs / BottomNav / status badge) drive it via icon-weight context.\n */\n import { useIconWeight, type IconWeight } from './iconWeight.js';\n\n interface Props {\n /** Pixel size (width + height). */\n size?: string;\n /** Icon color; defaults to `currentColor` (inherits text color). */\n color?: string;\n /** Extra classes. */\n class?: string;\n /** `regular` (outline) or `fill` (solid). Overrides ambient state weight. */\n weight?: IconWeight;\n }\n\n let { size = '24', color = 'currentColor', class: className = '', weight }: Props = $props();\n\n const ctx = useIconWeight();\n let resolved: IconWeight = $derived(weight ?? ctx?.weight ?? 'regular');\n</script>\n\n<svg\n class={className}\n aria-hidden=\"true\"\n width={size}\n height={size}\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n style:color={color === 'currentColor' ? undefined : color}\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n {#if resolved === 'fill'}<path d=\"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM184,136H136v48a8,8,0,0,1-16,0V136H72a8,8,0,0,1,0-16h48V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z\"/>{:else}<line x1=\"40\" y1=\"128\" x2=\"216\" y2=\"128\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/><line x1=\"128\" y1=\"40\" x2=\"128\" y2=\"216\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>{/if}\n</svg>\n","<script lang=\"ts\">\n /**\n * Subtract — Phosphor icon (canonical Micdrop icon family).\n * Outline by default; pass `weight=\"fill\"` for solid, or let a stateful parent\n * (NavItem / Tabs / BottomNav / status badge) drive it via icon-weight context.\n */\n import { useIconWeight, type IconWeight } from './iconWeight.js';\n\n interface Props {\n /** Pixel size (width + height). */\n size?: string;\n /** Icon color; defaults to `currentColor` (inherits text color). */\n color?: string;\n /** Extra classes. */\n class?: string;\n /** `regular` (outline) or `fill` (solid). Overrides ambient state weight. */\n weight?: IconWeight;\n }\n\n let { size = '24', color = 'currentColor', class: className = '', weight }: Props = $props();\n\n const ctx = useIconWeight();\n let resolved: IconWeight = $derived(weight ?? ctx?.weight ?? 'regular');\n</script>\n\n<svg\n class={className}\n aria-hidden=\"true\"\n width={size}\n height={size}\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n style:color={color === 'currentColor' ? undefined : color}\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n {#if resolved === 'fill'}<path d=\"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM184,136H72a8,8,0,0,1,0-16H184a8,8,0,0,1,0,16Z\"/>{:else}<line x1=\"40\" y1=\"128\" x2=\"216\" y2=\"128\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>{/if}\n</svg>\n","<script lang=\"ts\">\n /**\n * WarningCircle — Phosphor icon (canonical Micdrop icon family).\n * Outline by default; pass `weight=\"fill\"` for solid, or let a stateful parent\n * (NavItem / Tabs / BottomNav / status badge) drive it via icon-weight context.\n */\n import { useIconWeight, type IconWeight } from './iconWeight.js';\n\n interface Props {\n /** Pixel size (width + height). */\n size?: string;\n /** Icon color; defaults to `currentColor` (inherits text color). */\n color?: string;\n /** Extra classes. */\n class?: string;\n /** `regular` (outline) or `fill` (solid). Overrides ambient state weight. */\n weight?: IconWeight;\n }\n\n let { size = '24', color = 'currentColor', class: className = '', weight }: Props = $props();\n\n const ctx = useIconWeight();\n let resolved: IconWeight = $derived(weight ?? ctx?.weight ?? 'regular');\n</script>\n\n<svg\n class={className}\n aria-hidden=\"true\"\n width={size}\n height={size}\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n style:color={color === 'currentColor' ? undefined : color}\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n {#if resolved === 'fill'}<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z\"/>{:else}<circle cx=\"128\" cy=\"128\" r=\"96\" fill=\"none\" stroke=\"currentColor\" stroke-miterlimit=\"10\" stroke-width=\"16\"/><line x1=\"128\" y1=\"136\" x2=\"128\" y2=\"80\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/><circle cx=\"128\" cy=\"172\" r=\"12\"/>{/if}\n</svg>\n","\n export function goto(url, opts) {\n if (typeof window !== 'undefined' && window.location) {\n if (opts?.replaceState) {\n window.history.replaceState({}, '', url);\n } else {\n window.location.href = url;\n }\n }\n }\n export function beforeNavigate(callback) {\n // No-op for library builds\n }\n export function afterNavigate(callback) {\n // No-op for library builds\n }\n export function disable() {\n // No-op for library builds\n }\n export function enable() {\n // No-op for library builds\n }\n ","<script module>\r\n import { createDebouncedAnnouncer } from '@getmicdrop/svelte-components/a11y';\r\n\r\n // A scarce ticket's badge exists 3× at once on an Event surface — TicketCard's\r\n // two responsive-tree copies plus BookingWidget's own badge — and on `main`\r\n // each was an inline aria-live region inside a CSS-hidden subtree, so exactly\r\n // one spoke. Routing every copy through the singleton announce() region made a\r\n // single availability tick speak \"Only 3 left\" 3×. Same canonical fix as\r\n // TicketCard: the shared createDebouncedAnnouncer at MODULE scope collapses the\r\n // identical same-tick calls into one, keyed by message (via a plain\r\n // string-keyed cache — a module-scope lookup, not reactive state, so a Map/\r\n // SvelteMap would be the wrong tool) so two DIFFERENT tickets changing in the\r\n // window — whose messages differ — each still announce.\r\n const SCARCITY_ANNOUNCE_DEBOUNCE_MS = 200;\r\n const scarcityAnnouncers = Object.create(null);\r\n function announceScarcity(message) {\r\n const debounced = (scarcityAnnouncers[message] ??= createDebouncedAnnouncer(\r\n SCARCITY_ANNOUNCE_DEBOUNCE_MS\r\n ));\r\n debounced(message, { politeness: 'polite' });\r\n }\r\n</script>\r\n\r\n<script>\r\n import { defaultLabels } from '$lib/i18n/defaultLabels.js';\r\n import { Badge } from '@getmicdrop/svelte-components';\r\n import { WarningCircleIcon } from '@getmicdrop/svelte-components/primitives/Icons/phosphor/index.js';\r\n import { computeScarcityLevel } from '$lib/constants/scarcity';\r\n\r\n /**\r\n * ScarcityBadge - Shows urgency indicators based on ticket availability.\r\n *\r\n * Wraps SC <Badge> with venue-calendar's threshold logic. Renders to\r\n * the same primitive every other status badge uses (List, Gallery,\r\n * Calendar embed) so a \"Selling fast\" / \"Sold out\" pill is visually\r\n * identical wherever it appears.\r\n *\r\n * The tier itself comes from the ONE canonical computeScarcityLevel in\r\n * $lib/constants/scarcity — a sliding scale (base low <=20% remaining, urgent\r\n * <=10%, bent toward an absolute floor of 5 and cap of 30). TicketBlock.svelte\r\n * and the browse grid route through the same function, so the badge tier\r\n * matches the urgency copy everywhere. This component only maps the tier to\r\n * copy and decides whether to reveal the exact count (event/ticket) or stay\r\n * vague (browse).\r\n *\r\n * - sold-out tier: \"Sold out\" (red, no flame)\r\n * - urgent tier (event/ticket): \"Only X left\" with exact count (warning + flame)\r\n * - low/urgent tier (browse) or low tier (event/ticket): \"Selling fast\" (warning + flame)\r\n * - plenty tier: No badge\r\n *\r\n * @prop {\"browse\"|\"event\"|\"ticket\"} context - browse=vague only; event/ticket=exact at urgent\r\n * @prop {\"default\"|\"minimal\"} variant - default=SC Badge pill; minimal=transparent text+icon\r\n * @prop {boolean} isFree - Suppress scarcity badges for free events/tickets\r\n */\r\n let {\r\n remaining,\r\n total,\r\n context = 'browse',\r\n variant = 'default',\r\n isFree = false,\r\n labels = defaultLabels,\r\n } = $props();\r\n\r\n let level = $derived(computeScarcityLevel(remaining, total));\r\n\r\n let badgeInfo = $derived.by(() => {\r\n const soldOutText = labels.statusSoldOut || 'Sold out';\r\n const sellingFastText = labels.statusSellingFast || 'Selling fast';\r\n const onlyNLeftTemplate =\r\n labels.scarcityOnlyNLeft || 'Only {remaining} left';\r\n\r\n if (level === 'sold-out') {\r\n return { type: 'sold-out', text: soldOutText, showFlame: false };\r\n }\r\n if (isFree) return null;\r\n\r\n // Browse surfaces show only the vague badge — never an exact count — so the\r\n // urgent and low tiers collapse to the same \"Selling fast\" pill.\r\n if (context === 'browse') {\r\n if (level === 'urgent' || level === 'low') {\r\n return { type: 'scarcity', text: sellingFastText, showFlame: true };\r\n }\r\n return null;\r\n }\r\n\r\n // Event / ticket surfaces reveal the exact count at the urgent tier (the\r\n // canon already caps that to MAX_EXACT_COUNT), vague at low.\r\n if (level === 'urgent') {\r\n return {\r\n type: 'scarcity',\r\n text: onlyNLeftTemplate.replace('{remaining}', String(remaining)),\r\n showFlame: true,\r\n };\r\n }\r\n if (level === 'low') {\r\n return { type: 'scarcity', text: sellingFastText, showFlame: true };\r\n }\r\n return null;\r\n });\r\n\r\n let scVariant = $derived(\r\n /** @type {'error' | 'warning'} */ (\r\n badgeInfo?.type === 'sold-out' ? 'error' : 'warning'\r\n )\r\n );\r\n let ariaLabel = $derived(\r\n badgeInfo?.type === 'sold-out'\r\n ? labels.statusSoldOut || 'Sold out'\r\n : `${labels.scarcityLowAvailability || 'Low availability'}: ${badgeInfo?.text}`\r\n );\r\n\r\n // Announce scarcity to screen readers on CHANGE only — never on mount. An\r\n // aria-live region is silent on its first paint (it announces later mutations,\r\n // not initial content), and Event renders both the desktop and mobile ticket\r\n // trees at once (one CSS-hidden, both in the DOM) — so a mount-time announce\r\n // would double-announce a scarce ticket's status on page load, worse than the\r\n // pre-migration silence. Same change-only guard TicketCard uses for quantity.\r\n let scarcityAnnounceReady = false;\r\n $effect(() => {\r\n const text = badgeInfo?.text;\r\n if (!scarcityAnnounceReady) {\r\n scarcityAnnounceReady = true;\r\n return;\r\n }\r\n if (text) announceScarcity(text);\r\n });\r\n</script>\r\n\r\n{#if badgeInfo}\r\n {#if variant === 'minimal'}\r\n <span\r\n class=\"inline-flex items-center gap-1 type-caption {badgeInfo.type ===\r\n 'sold-out'\r\n ? 'text-status-error-text'\r\n : 'text-accent-warning'}\"\r\n aria-label={ariaLabel}\r\n >\r\n {#if badgeInfo.showFlame}\r\n <WarningCircleIcon size=\"16\" />\r\n {/if}\r\n {badgeInfo.text}\r\n </span>\r\n {:else}\r\n <Badge variant={scVariant} size=\"sm\">\r\n {#snippet leftIcon()}\r\n {#if badgeInfo.showFlame}\r\n <WarningCircleIcon size=\"16\" />\r\n {/if}\r\n {/snippet}\r\n {badgeInfo.text}\r\n </Badge>\r\n {/if}\r\n{/if}\r\n"],"names":["size","$","$$props","color","className","svg","root","ctx","useIconWeight","resolved","root_2","path","$$render","consequent","alternate","styles","line","root_1","goto","url","opts","SCARCITY_ANNOUNCE_DEBOUNCE_MS","scarcityAnnouncers","announceScarcity","message","createDebouncedAnnouncer","context","variant","isFree","labels","defaultLabels","level","computeScarcityLevel","badgeInfo","soldOutText","sellingFastText","onlyNLeftTemplate","scVariant","ariaLabel","scarcityAnnounceReady","text","span","WarningCircleIcon","$$anchor","text_1","Badge","consequent_2","text_2","consequent_1","consequent_3"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
|
1
|
+
{"version":3,"file":"ScarcityBadge-CyrniwIo.js","sources":["../node_modules/@getmicdrop/svelte-components/dist/primitives/Icons/ChevronDownOutline.svelte","../node_modules/@getmicdrop/svelte-components/dist/primitives/Icons/phosphor/AddIcon.svelte","../node_modules/@getmicdrop/svelte-components/dist/primitives/Icons/phosphor/SubtractIcon.svelte","../node_modules/@getmicdrop/svelte-components/dist/primitives/Icons/phosphor/WarningCircleIcon.svelte","../__SKIP_NAVIGATION__","../src/components/ScarcityBadge.svelte"],"sourcesContent":["<script lang=\"ts\">\n interface Props {\n size?: string;\n color?: string;\n class?: string;\n }\n let { size = \"24\", color = \"currentColor\", class: className = \"\" }: Props = $props();\n</script>\n\n<svg\n class={className}\n aria-hidden=\"true\"\n width={size}\n height={size}\n fill=\"none\"\n stroke={color}\n stroke-width=\"2\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 8.25l-7.5 7.5-7.5-7.5\" />\n</svg>\n","<script lang=\"ts\">\n /**\n * Add — Phosphor icon (canonical Micdrop icon family).\n * Outline by default; pass `weight=\"fill\"` for solid, or let a stateful parent\n * (NavItem / Tabs / BottomNav / status badge) drive it via icon-weight context.\n */\n import { useIconWeight, type IconWeight } from './iconWeight.js';\n\n interface Props {\n /** Pixel size (width + height). */\n size?: string;\n /** Icon color; defaults to `currentColor` (inherits text color). */\n color?: string;\n /** Extra classes. */\n class?: string;\n /** `regular` (outline) or `fill` (solid). Overrides ambient state weight. */\n weight?: IconWeight;\n }\n\n let { size = '24', color = 'currentColor', class: className = '', weight }: Props = $props();\n\n const ctx = useIconWeight();\n let resolved: IconWeight = $derived(weight ?? ctx?.weight ?? 'regular');\n</script>\n\n<svg\n class={className}\n aria-hidden=\"true\"\n width={size}\n height={size}\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n style:color={color === 'currentColor' ? undefined : color}\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n {#if resolved === 'fill'}<path d=\"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM184,136H136v48a8,8,0,0,1-16,0V136H72a8,8,0,0,1,0-16h48V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z\"/>{:else}<line x1=\"40\" y1=\"128\" x2=\"216\" y2=\"128\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/><line x1=\"128\" y1=\"40\" x2=\"128\" y2=\"216\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>{/if}\n</svg>\n","<script lang=\"ts\">\n /**\n * Subtract — Phosphor icon (canonical Micdrop icon family).\n * Outline by default; pass `weight=\"fill\"` for solid, or let a stateful parent\n * (NavItem / Tabs / BottomNav / status badge) drive it via icon-weight context.\n */\n import { useIconWeight, type IconWeight } from './iconWeight.js';\n\n interface Props {\n /** Pixel size (width + height). */\n size?: string;\n /** Icon color; defaults to `currentColor` (inherits text color). */\n color?: string;\n /** Extra classes. */\n class?: string;\n /** `regular` (outline) or `fill` (solid). Overrides ambient state weight. */\n weight?: IconWeight;\n }\n\n let { size = '24', color = 'currentColor', class: className = '', weight }: Props = $props();\n\n const ctx = useIconWeight();\n let resolved: IconWeight = $derived(weight ?? ctx?.weight ?? 'regular');\n</script>\n\n<svg\n class={className}\n aria-hidden=\"true\"\n width={size}\n height={size}\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n style:color={color === 'currentColor' ? undefined : color}\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n {#if resolved === 'fill'}<path d=\"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM184,136H72a8,8,0,0,1,0-16H184a8,8,0,0,1,0,16Z\"/>{:else}<line x1=\"40\" y1=\"128\" x2=\"216\" y2=\"128\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>{/if}\n</svg>\n","<script lang=\"ts\">\n /**\n * WarningCircle — Phosphor icon (canonical Micdrop icon family).\n * Outline by default; pass `weight=\"fill\"` for solid, or let a stateful parent\n * (NavItem / Tabs / BottomNav / status badge) drive it via icon-weight context.\n */\n import { useIconWeight, type IconWeight } from './iconWeight.js';\n\n interface Props {\n /** Pixel size (width + height). */\n size?: string;\n /** Icon color; defaults to `currentColor` (inherits text color). */\n color?: string;\n /** Extra classes. */\n class?: string;\n /** `regular` (outline) or `fill` (solid). Overrides ambient state weight. */\n weight?: IconWeight;\n }\n\n let { size = '24', color = 'currentColor', class: className = '', weight }: Props = $props();\n\n const ctx = useIconWeight();\n let resolved: IconWeight = $derived(weight ?? ctx?.weight ?? 'regular');\n</script>\n\n<svg\n class={className}\n aria-hidden=\"true\"\n width={size}\n height={size}\n viewBox=\"0 0 256 256\"\n fill=\"currentColor\"\n style:color={color === 'currentColor' ? undefined : color}\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n {#if resolved === 'fill'}<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z\"/>{:else}<circle cx=\"128\" cy=\"128\" r=\"96\" fill=\"none\" stroke=\"currentColor\" stroke-miterlimit=\"10\" stroke-width=\"16\"/><line x1=\"128\" y1=\"136\" x2=\"128\" y2=\"80\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/><circle cx=\"128\" cy=\"172\" r=\"12\"/>{/if}\n</svg>\n","\n export function goto(url, opts) {\n if (typeof window !== 'undefined' && window.location) {\n if (opts?.replaceState) {\n window.history.replaceState({}, '', url);\n } else {\n window.location.href = url;\n }\n }\n }\n export function beforeNavigate(callback) {\n // No-op for library builds\n }\n export function afterNavigate(callback) {\n // No-op for library builds\n }\n export function disable() {\n // No-op for library builds\n }\n export function enable() {\n // No-op for library builds\n }\n ","<script module>\r\n import { createDebouncedAnnouncer } from '@getmicdrop/svelte-components/a11y';\r\n\r\n // A scarce ticket's badge exists 3× at once on an Event surface — TicketCard's\r\n // two responsive-tree copies plus BookingWidget's own badge — and on `main`\r\n // each was an inline aria-live region inside a CSS-hidden subtree, so exactly\r\n // one spoke. Routing every copy through the singleton announce() region made a\r\n // single availability tick speak \"Only 3 left\" 3×. Same canonical fix as\r\n // TicketCard: the shared createDebouncedAnnouncer at MODULE scope collapses the\r\n // identical same-tick calls into one, keyed by message (via a plain\r\n // string-keyed cache — a module-scope lookup, not reactive state, so a Map/\r\n // SvelteMap would be the wrong tool) so two DIFFERENT tickets changing in the\r\n // window — whose messages differ — each still announce.\r\n const SCARCITY_ANNOUNCE_DEBOUNCE_MS = 200;\r\n const scarcityAnnouncers = Object.create(null);\r\n function announceScarcity(message) {\r\n const debounced = (scarcityAnnouncers[message] ??= createDebouncedAnnouncer(\r\n SCARCITY_ANNOUNCE_DEBOUNCE_MS\r\n ));\r\n debounced(message, { politeness: 'polite' });\r\n }\r\n</script>\r\n\r\n<script>\r\n import { defaultLabels } from '$lib/i18n/defaultLabels.js';\r\n import { Badge } from '@getmicdrop/svelte-components';\r\n import { WarningCircleIcon } from '@getmicdrop/svelte-components/primitives/Icons/phosphor/index.js';\r\n import { computeScarcityLevel } from '$lib/constants/scarcity';\r\n\r\n /**\r\n * ScarcityBadge - Shows urgency indicators based on ticket availability.\r\n *\r\n * Wraps SC <Badge> with venue-calendar's threshold logic. Renders to\r\n * the same primitive every other status badge uses (List, Gallery,\r\n * Calendar embed) so a \"Selling fast\" / \"Sold out\" pill is visually\r\n * identical wherever it appears.\r\n *\r\n * The tier itself comes from the ONE canonical computeScarcityLevel in\r\n * $lib/constants/scarcity — a sliding scale (base low <=20% remaining, urgent\r\n * <=10%, bent toward an absolute floor of 5 and cap of 30). TicketBlock.svelte\r\n * and the browse grid route through the same function, so the badge tier\r\n * matches the urgency copy everywhere. This component only maps the tier to\r\n * copy and decides whether to reveal the exact count (event/ticket) or stay\r\n * vague (browse).\r\n *\r\n * - sold-out tier: \"Sold out\" (red, no flame)\r\n * - urgent tier (event/ticket): \"Only X left\" with exact count (warning + flame)\r\n * - low/urgent tier (browse) or low tier (event/ticket): \"Selling fast\" (warning + flame)\r\n * - plenty tier: No badge\r\n *\r\n * @prop {\"browse\"|\"event\"|\"ticket\"} context - browse=vague only; event/ticket=exact at urgent\r\n * @prop {\"default\"|\"minimal\"} variant - default=SC Badge pill; minimal=transparent text+icon\r\n * @prop {boolean} isFree - Suppress scarcity badges for free events/tickets\r\n */\r\n let {\r\n remaining,\r\n total,\r\n context = 'browse',\r\n variant = 'default',\r\n isFree = false,\r\n labels = defaultLabels,\r\n } = $props();\r\n\r\n let level = $derived(computeScarcityLevel(remaining, total));\r\n\r\n let badgeInfo = $derived.by(() => {\r\n const soldOutText = labels.statusSoldOut || 'Sold out';\r\n const sellingFastText = labels.statusSellingFast || 'Selling fast';\r\n const onlyNLeftTemplate =\r\n labels.scarcityOnlyNLeft || 'Only {remaining} left';\r\n\r\n if (level === 'sold-out') {\r\n return { type: 'sold-out', text: soldOutText, showFlame: false };\r\n }\r\n if (isFree) return null;\r\n\r\n // Browse surfaces show only the vague badge — never an exact count — so the\r\n // urgent and low tiers collapse to the same \"Selling fast\" pill.\r\n if (context === 'browse') {\r\n if (level === 'urgent' || level === 'low') {\r\n return { type: 'scarcity', text: sellingFastText, showFlame: true };\r\n }\r\n return null;\r\n }\r\n\r\n // Event / ticket surfaces reveal the exact count at the urgent tier (the\r\n // canon already caps that to MAX_EXACT_COUNT), vague at low.\r\n if (level === 'urgent') {\r\n return {\r\n type: 'scarcity',\r\n text: onlyNLeftTemplate.replace('{remaining}', String(remaining)),\r\n showFlame: true,\r\n };\r\n }\r\n if (level === 'low') {\r\n return { type: 'scarcity', text: sellingFastText, showFlame: true };\r\n }\r\n return null;\r\n });\r\n\r\n let scVariant = $derived(\r\n /** @type {'error' | 'warning'} */ (\r\n badgeInfo?.type === 'sold-out' ? 'error' : 'warning'\r\n )\r\n );\r\n let ariaLabel = $derived(\r\n badgeInfo?.type === 'sold-out'\r\n ? labels.statusSoldOut || 'Sold out'\r\n : `${labels.scarcityLowAvailability || 'Low availability'}: ${badgeInfo?.text}`\r\n );\r\n\r\n // Announce scarcity to screen readers on CHANGE only — never on mount. An\r\n // aria-live region is silent on its first paint (it announces later mutations,\r\n // not initial content), and Event renders both the desktop and mobile ticket\r\n // trees at once (one CSS-hidden, both in the DOM) — so a mount-time announce\r\n // would double-announce a scarce ticket's status on page load, worse than the\r\n // pre-migration silence. Same change-only guard TicketCard uses for quantity.\r\n let scarcityAnnounceReady = false;\r\n $effect(() => {\r\n const text = badgeInfo?.text;\r\n if (!scarcityAnnounceReady) {\r\n scarcityAnnounceReady = true;\r\n return;\r\n }\r\n if (text) announceScarcity(text);\r\n });\r\n</script>\r\n\r\n{#if badgeInfo}\r\n {#if variant === 'minimal'}\r\n <span\r\n class=\"inline-flex items-center gap-1 type-caption {badgeInfo.type ===\r\n 'sold-out'\r\n ? 'text-status-error-text'\r\n : 'text-accent-warning'}\"\r\n aria-label={ariaLabel}\r\n >\r\n {#if badgeInfo.showFlame}\r\n <WarningCircleIcon size=\"16\" />\r\n {/if}\r\n {badgeInfo.text}\r\n </span>\r\n {:else}\r\n <Badge variant={scVariant} size=\"sm\">\r\n {#snippet leftIcon()}\r\n {#if badgeInfo.showFlame}\r\n <WarningCircleIcon size=\"16\" />\r\n {/if}\r\n {/snippet}\r\n {badgeInfo.text}\r\n </Badge>\r\n {/if}\r\n{/if}\r\n"],"names":["size","$","$$props","color","className","svg","root","ctx","useIconWeight","resolved","root_2","path","$$render","consequent","alternate","styles","line","root_1","goto","url","opts","SCARCITY_ANNOUNCE_DEBOUNCE_MS","scarcityAnnouncers","announceScarcity","message","createDebouncedAnnouncer","context","variant","isFree","labels","defaultLabels","level","computeScarcityLevel","badgeInfo","soldOutText","sellingFastText","onlyNLeftTemplate","scVariant","ariaLabel","scarcityAnnounceReady","text","span","WarningCircleIcon","$$anchor","text_1","Badge","consequent_2","text_2","consequent_1","consequent_3"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "svelte/internal/disclose-version";
|
|
2
2
|
import * as e from "svelte/internal/client";
|
|
3
|
-
import { g as f } from "./ScarcityBadge-
|
|
4
|
-
import { w as d, y as u } from "./VenueCalendar-
|
|
5
|
-
import { E as v } from "./Event-
|
|
6
|
-
import { a as p } from "./transform-
|
|
3
|
+
import { g as f } from "./ScarcityBadge-CyrniwIo.js";
|
|
4
|
+
import { w as d, y as u } from "./VenueCalendar-DHAmKNT-.js";
|
|
5
|
+
import { E as v } from "./Event-DnguMKoM.js";
|
|
6
|
+
import { a as p } from "./transform-C4GBIj6D.js";
|
|
7
7
|
function k(n, i) {
|
|
8
8
|
e.push(i, !0), d("SeriesPage");
|
|
9
9
|
let r = e.prop(i, "onNavigateToOccurrence", 3, void 0), s = e.prop(i, "locale", 3, void 0), a = e.derived(() => i.series ? p(i.series) : null);
|
|
@@ -33,4 +33,4 @@ function k(n, i) {
|
|
|
33
33
|
export {
|
|
34
34
|
k as default
|
|
35
35
|
};
|
|
36
|
-
//# sourceMappingURL=SeriesPage-
|
|
36
|
+
//# sourceMappingURL=SeriesPage-BmPai8Z4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeriesPage-
|
|
1
|
+
{"version":3,"file":"SeriesPage-BmPai8Z4.js","sources":["../src/components/Views/SeriesPage.svelte"],"sourcesContent":["<!-- @route-escape: widget-intentional. -->\r\n<script lang=\"ts\">\r\n import { goto } from '$app/navigation';\r\n import { resolve } from '$app/paths';\r\n import EventExperience from '$lib/public-calendar-flow/Event.svelte';\r\n import { createLogger } from '@getmicdrop/svelte-components';\r\n import { transformSeriesPageData } from '$lib/public-calendar-flow/transform';\r\n\r\n const _logger = createLogger('SeriesPage');\r\n\r\n // --- Props (matches old SeriesPage external interface) ---\r\n interface Props {\r\n series: any;\r\n onNavigateToOccurrence?: (\r\n _id: number,\r\n _slug: string,\r\n _name?: string\r\n ) => void;\r\n /** BCP-47 locale, threaded per-instance to EventExperience's date\r\n * formatters (vc#760). Undefined → en-US. */\r\n locale?: string;\r\n }\r\n\r\n let {\r\n series,\r\n onNavigateToOccurrence = undefined,\r\n locale = undefined,\r\n }: Props = $props();\r\n\r\n // Transform series data to EventData for EventExperience\r\n let eventData = $derived(series ? transformSeriesPageData(series) : null);\r\n\r\n // Handle occurrence click — delegate to callback or navigate directly\r\n function handleShowtimeClick(occurrence: { id: number; slug: string }): void {\r\n if (onNavigateToOccurrence) {\r\n onNavigateToOccurrence(occurrence.id, occurrence.slug);\r\n } else {\r\n // @url-builder-escape: widget-internal route; SC's url-builders cover /a admin paths, not embedded calendar navigation.\r\n goto(\r\n resolve('/[id]/[slug]', {\r\n id: String(occurrence.id),\r\n slug: String(occurrence.slug),\r\n })\r\n );\r\n }\r\n }\r\n</script>\r\n\r\n{#if eventData}\r\n <EventExperience\r\n event={eventData}\r\n isSeriesMaster\r\n onShowtimeClick={handleShowtimeClick}\r\n {locale}\r\n />\r\n{/if}\r\n"],"names":["createLogger","onNavigateToOccurrence","$","$$props","locale","eventData","transformSeriesPageData","handleShowtimeClick","occurrence","goto","resolve","EventExperience","$$anchor","$$render","consequent"],"mappings":";;;;;;iBACA;iBAOkBA,EAAa,YAAY;AAezC,MAEEC,IAAsBC,EAAA,KAAAC,GAAA,0BAAA,GAAG,MAAS,GAClCC,2BAAS,MAAS,GAIhBC,IAASH,EAAA,QAAA,MAAAC,EAAA,SAAqBG,EAAuBH,EAAA,MAAA,IAAW,IAAI;AAGxE,WAASI,EAAoBC,GAAgD;AAC3E,IAAIP,EAAsB,IACxBA,EAAsB,EAACO,EAAW,IAAIA,EAAW,IAAI,IAGrDC,EACEC,EAAQ,gBAAc,EACpB,IAAI,OAAOF,EAAW,EAAE,GACxB,MAAM,OAAOA,EAAW,IAAI,EAAA,CAAA,CAAA;AAAA,EAIpC;;;;AAICG,MAAAA,EAAeC,GAAA;AAAA;uBACPP,CAAS;AAAA;;yBAECE;AAAA;iBAChBH,EAAM;AAAA;;;;YALNC,CAAS,KAAAQ,EAAAC,CAAA;AAAA;;;AAFN;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "svelte/internal/disclose-version";
|
|
2
2
|
import * as e from "svelte/internal/client";
|
|
3
|
-
import { m as f, aQ as r, aR as i } from "./VenueCalendar-
|
|
3
|
+
import { m as f, aQ as r, aR as i } from "./VenueCalendar-DHAmKNT-.js";
|
|
4
4
|
var h = e.from_html('<svg aria-hidden="true" viewBox="0 0 100 101" fill="none" xmlns="http://www.w3.org/2000/svg" role="status"><path d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z" fill="currentColor"></path><path d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z" fill="currentFill"></path></svg> <span class="sr-only"> </span>', 1);
|
|
5
5
|
function x(o, a) {
|
|
6
6
|
e.push(a, !0);
|
|
@@ -14,4 +14,4 @@ function x(o, a) {
|
|
|
14
14
|
export {
|
|
15
15
|
x as S
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=Spinner-
|
|
17
|
+
//# sourceMappingURL=Spinner-CRWt7IYY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner-
|
|
1
|
+
{"version":3,"file":"Spinner-CRWt7IYY.js","sources":["../node_modules/@getmicdrop/svelte-components/dist/primitives/Spinner/Spinner.svelte"],"sourcesContent":["<script lang=\"ts\">\n import { mergeLabels, type SCLabels } from '../../utils/labels.js';\n import {\n spinnerColorVariants,\n type SpinnerColorVariant,\n } from '../../tokens/variants.js';\n import { iconSizes, type IconSize } from '../../tokens/sizing.js';\n\n const defaultLabels = {\n loading: 'Loading...',\n };\n\n interface Props {\n size?: IconSize;\n color?: SpinnerColorVariant;\n class?: string;\n labels?: SCLabels<typeof defaultLabels>;\n }\n\n let {\n size = 'md',\n color = 'blue',\n class: className = '',\n labels: userLabels = {},\n }: Props = $props();\n\n let labels = $derived(mergeLabels(defaultLabels, userLabels));\n\n let sizeClass = $derived(iconSizes[size] || iconSizes.md);\n let colorClass = $derived(spinnerColorVariants[color] || spinnerColorVariants.blue);\n</script>\n\n<svg\n aria-hidden=\"true\"\n class=\"{sizeClass} tone-muted animate-spin {colorClass} {className}\"\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"status\"\n>\n <path\n d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n fill=\"currentFill\"\n />\n</svg>\n<span class=\"sr-only\">{labels.loading}</span>\n"],"names":["defaultLabels","size","$","$$props","color","className","userLabels","labels","mergeLabels","sizeClass","iconSizes","colorClass","spinnerColorVariants","svg","fragment","span","text"],"mappings":";;;;iBAAA;;AAQE,QAAMA,IAAa,EACjB,SAAS,aAAY;AAUvB,MACEC,IAAIC,EAAA,KAAAC,GAAA,QAAA,GAAG,IAAI,GACXC,0BAAQ,MAAM,GACPC,0BAAY,EAAE,GACbC,IAAUJ,EAAA,KAAAC,GAAA,UAAA,IAAA,OAAA,CAAA,EAAA,GAGhBI,IAAML,EAAA,QAAA,MAAYM,EAAYR,GAAeM,EAAU,CAAA,CAAA,GAEvDG,oBAAqBC,EAAUT,EAAI,CAAA,KAAKS,EAAU,EAAE,GACpDC,oBAAsBC,EAAqBR,EAAK,CAAA,KAAKQ,EAAqB,IAAI;eAGnFC,IAAEX,EAAA,YAAAY,CAAA,GAiBFC,cAjBAF,GAAE,CAAA,eAiBFE,GAAI,EAAA;UAAJA,CAAI;AAjBJ,IAAAb,EAAA,UAAAW,GAAE,GAAA,GAAAX,EAAA,IAEOO,CAAS,KAAA,EAAA,4BAAAP,EAAA,IAA2BS,CAAU,WAAGN,EAAS,KAAA,EAAA,EAAA,GAe7CH,EAAA,SAAAc,GAAAd,EAAA,IAAAK,CAAM,EAAC,OAAO;AAAA;AAnB7B;","x_google_ignoreList":[0]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import "svelte/internal/disclose-version";
|
|
2
|
-
import { u as de, Z as we, _ as Ue, $ as fe, a0 as Le, a1 as Oe, a2 as Me, j as ie, a3 as Re, a4 as Ve, a5 as Q, g as je, a6 as He, a7 as Fe, a8 as Be, a9 as Ge, aa as qe, X as Ze, w as We, y as pe } from "./VenueCalendar-
|
|
2
|
+
import { u as de, Z as we, _ as Ue, $ as fe, a0 as Le, a1 as Oe, a2 as Me, j as ie, a3 as Re, a4 as Ve, a5 as Q, g as je, a6 as He, a7 as Fe, a8 as Be, a9 as Ge, aa as qe, X as Ze, w as We, y as pe } from "./VenueCalendar-DHAmKNT-.js";
|
|
3
3
|
import { SvelteMap as Ye } from "svelte/reactivity";
|
|
4
4
|
import * as e from "svelte/internal/client";
|
|
5
5
|
import { onMount as ce, onDestroy as Ke } from "svelte";
|
|
6
|
-
import { a as he, c as Xe, r as Je } from "./utm-
|
|
7
|
-
import { t as Qe } from "./transform-
|
|
8
|
-
import { d as te, m as $e, a as et, b as tt, c as rt, g as at } from "./showcase-state-options-
|
|
9
|
-
import { O as lt, C as _e, g as st, c as nt } from "./index-
|
|
6
|
+
import { a as he, c as Xe, r as Je } from "./utm-DUS9p3Ww.js";
|
|
7
|
+
import { t as Qe } from "./transform-C4GBIj6D.js";
|
|
8
|
+
import { d as te, m as $e, a as et, b as tt, c as rt, g as at } from "./showcase-state-options-y0ZwSjmL.js";
|
|
9
|
+
import { O as lt, C as _e, g as st, c as nt } from "./index-CwsI9tPj.js";
|
|
10
10
|
import { d as Ce } from "./labels-Dna_YObX.js";
|
|
11
|
-
import { C as Ie, H as it } from "./Heading-
|
|
12
|
-
import { T as $, I as ot } from "./Text-
|
|
13
|
-
import { c as dt, E as ct, L as vt } from "./shareCopyFeedback.svelte-
|
|
11
|
+
import { C as Ie, H as it } from "./Heading-Dpc12_QS.js";
|
|
12
|
+
import { T as $, I as ot } from "./Text-CfL6ex6f.js";
|
|
13
|
+
import { c as dt, E as ct, L as vt } from "./shareCopyFeedback.svelte-BVLGQMN_.js";
|
|
14
14
|
var ut = e.from_svg('<path d="M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40A8,8,0,0,0,168,96H136V32a8,8,0,0,0-16,0V96H88a8,8,0,0,0-5.66,13.66Z"></path>'), gt = e.from_svg('<line x1="128" y1="144" x2="128" y2="32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"></line><polyline points="216 144 216 208 40 208 40 144" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"></polyline><polyline points="168 104 128 144 88 104" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"></polyline>', 1), mt = e.from_svg('<svg aria-hidden="true" viewBox="0 0 256 256" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><!></svg>');
|
|
15
15
|
function ft(h, t) {
|
|
16
16
|
e.push(t, !0);
|
|
@@ -915,4 +915,4 @@ function er(h, t) {
|
|
|
915
915
|
export {
|
|
916
916
|
er as default
|
|
917
917
|
};
|
|
918
|
-
//# sourceMappingURL=Success-
|
|
918
|
+
//# sourceMappingURL=Success-Cwhbg_gL.js.map
|