@getmicdrop/venue-calendar 4.0.111 → 4.0.113

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 (99) hide show
  1. package/README.md +2 -0
  2. package/dist/CartView-DBV2yZaL.js +2466 -0
  3. package/dist/CartView-DBV2yZaL.js.map +1 -0
  4. package/dist/{Checkout-DwJr030c.js → Checkout-CukZs5WU.js} +5 -5
  5. package/dist/{Checkout-DwJr030c.js.map → Checkout-CukZs5WU.js.map} +1 -1
  6. package/dist/{Checkout-DBaNrRya.js → Checkout-DBXrhhKW.js} +54 -54
  7. package/dist/{Checkout-DBaNrRya.js.map → Checkout-DBXrhhKW.js.map} +1 -1
  8. package/dist/{CheckoutTimer-DPFVh7QG.js → CheckoutTimer-C7osBosg.js} +5 -5
  9. package/dist/{CheckoutTimer-DPFVh7QG.js.map → CheckoutTimer-C7osBosg.js.map} +1 -1
  10. package/dist/{ClockIcon-BoEIfS3d.js → ClockIcon-BeCxOp69.js} +2 -2
  11. package/dist/{ClockIcon-BoEIfS3d.js.map → ClockIcon-BeCxOp69.js.map} +1 -1
  12. package/dist/{CollectionView-DM3WLpLu.js → CollectionView-CMm-2iBY.js} +44 -45
  13. package/dist/CollectionView-CMm-2iBY.js.map +1 -0
  14. package/dist/{Event-DymZpajQ.js → Event-CGnKZ-pZ.js} +585 -581
  15. package/dist/Event-CGnKZ-pZ.js.map +1 -0
  16. package/dist/{EventPage-D7GG_BWH.js → EventPage-DBGHmWGD.js} +10 -10
  17. package/dist/EventPage-DBGHmWGD.js.map +1 -0
  18. package/dist/{Heading-C8oOcA05.js → Heading-NDMjqlhz.js} +5 -5
  19. package/dist/Heading-NDMjqlhz.js.map +1 -0
  20. package/dist/{ScarcityBadge-BqJHRkab.js → ScarcityBadge-BqL0twaw.js} +28 -28
  21. package/dist/{ScarcityBadge-BqJHRkab.js.map → ScarcityBadge-BqL0twaw.js.map} +1 -1
  22. package/dist/{SeriesPage-DsJ9zGPQ.js → SeriesPage-BggX59ED.js} +5 -5
  23. package/dist/{SeriesPage-DsJ9zGPQ.js.map → SeriesPage-BggX59ED.js.map} +1 -1
  24. package/dist/{Spinner-DPzuHWU6.js → Spinner-C4aYrnjh.js} +2 -2
  25. package/dist/{Spinner-DPzuHWU6.js.map → Spinner-C4aYrnjh.js.map} +1 -1
  26. package/dist/{Success-C0D_INAc.js → Success-BtREZD7W.js} +8 -8
  27. package/dist/Success-BtREZD7W.js.map +1 -0
  28. package/dist/{Text-DOd8068v.js → Text-B0QR6Ape.js} +4 -4
  29. package/dist/{Text-DOd8068v.js.map → Text-B0QR6Ape.js.map} +1 -1
  30. package/dist/{VenueCalendar-B809Hecp.js → VenueCalendar-DIAMhER4.js} +4199 -4141
  31. package/dist/VenueCalendar-DIAMhER4.js.map +1 -0
  32. package/dist/{ViewTicketsEmbed-BPMp4JM0.js → ViewTicketsEmbed-D4zF9Qgm.js} +388 -381
  33. package/dist/{ViewTicketsEmbed-BPMp4JM0.js.map → ViewTicketsEmbed-D4zF9Qgm.js.map} +1 -1
  34. package/dist/api/api/client.d.ts +17 -0
  35. package/dist/api/api/cta.d.ts +34 -0
  36. package/dist/api/api/events.d.ts +183 -0
  37. package/dist/api/api/gift-cards.d.ts +108 -0
  38. package/dist/api/api/index.d.ts +46 -0
  39. package/dist/api/api/orders.d.ts +149 -0
  40. package/dist/api/api/promo.d.ts +45 -0
  41. package/dist/api/api/result.d.ts +78 -0
  42. package/dist/api/api/route-manifest.d.ts +179 -0
  43. package/dist/api/api/transformers/address.d.ts +18 -0
  44. package/dist/api/api/transformers/cart.d.ts +19 -0
  45. package/dist/api/api/transformers/collection.d.ts +12 -0
  46. package/dist/api/api/transformers/event.d.ts +173 -0
  47. package/dist/api/api/transformers/giftCard.d.ts +11 -0
  48. package/dist/api/api/transformers/index.d.ts +27 -0
  49. package/dist/api/api/transformers/order.d.ts +44 -0
  50. package/dist/api/api/transformers/performer.d.ts +8 -0
  51. package/dist/api/api/transformers/series.d.ts +12 -0
  52. package/dist/api/api/transformers/venue.d.ts +39 -0
  53. package/dist/api/api/venues.d.ts +33 -0
  54. package/dist/api/api/waitlist.d.ts +49 -0
  55. package/dist/api/api.cjs +2 -0
  56. package/dist/api/api.cjs.map +1 -0
  57. package/dist/api/api.mjs +1302 -0
  58. package/dist/api/api.mjs.map +1 -0
  59. package/dist/api/types.d.ts +483 -0
  60. package/dist/{labels-wFEhrJkb.js → labels-CUDO5VqI.js} +3 -3
  61. package/dist/{labels-wFEhrJkb.js.map → labels-CUDO5VqI.js.map} +1 -1
  62. package/dist/{modalManager.svelte-DjiZPIja.js → modalManager.svelte-CWfqhQHL.js} +2 -2
  63. package/dist/{modalManager.svelte-DjiZPIja.js.map → modalManager.svelte-CWfqhQHL.js.map} +1 -1
  64. package/dist/navigation--gZASiSa.js.map +1 -1
  65. package/dist/{promo-DK6Hxogl.js → promo-4scuh00Y.js} +9 -9
  66. package/dist/{promo-DK6Hxogl.js.map → promo-4scuh00Y.js.map} +1 -1
  67. package/dist/seo/HostSeoController.d.ts +68 -0
  68. package/dist/seo/buildCollectionJsonLd.d.ts +8 -0
  69. package/dist/seo/buildEventJsonLd.d.ts +9 -0
  70. package/dist/seo/buildSeriesJsonLd.d.ts +6 -0
  71. package/dist/seo/helpers.d.ts +88 -0
  72. package/dist/seo/index.d.ts +10 -0
  73. package/dist/seo/seo.cjs +2 -0
  74. package/dist/seo/seo.cjs.map +1 -0
  75. package/dist/seo/seo.mjs +688 -0
  76. package/dist/seo/seo.mjs.map +1 -0
  77. package/dist/seo/types.d.ts +149 -0
  78. package/dist/{showcase-state-options-BuPnUf0V.js → showcase-state-options-DG5Bn9mL.js} +2 -2
  79. package/dist/showcase-state-options-DG5Bn9mL.js.map +1 -0
  80. package/dist/{transform-C6LCkao6.js → transform-B1kRFSE7.js} +10 -10
  81. package/dist/{transform-C6LCkao6.js.map → transform-B1kRFSE7.js.map} +1 -1
  82. package/dist/{utm-DYGTGbVA.js → utm-CPOH8BYT.js} +2 -2
  83. package/dist/{utm-DYGTGbVA.js.map → utm-CPOH8BYT.js.map} +1 -1
  84. package/dist/venue-calendar.css +1 -1
  85. package/dist/venue-calendar.es.js +4 -4
  86. package/dist/venue-calendar.iife.js +37 -37
  87. package/dist/venue-calendar.iife.js.map +1 -1
  88. package/dist/venue-calendar.umd.js +32 -32
  89. package/dist/venue-calendar.umd.js.map +1 -1
  90. package/package.json +7 -3
  91. package/dist/CartView-DiSdmuA_.js +0 -2475
  92. package/dist/CartView-DiSdmuA_.js.map +0 -1
  93. package/dist/CollectionView-DM3WLpLu.js.map +0 -1
  94. package/dist/Event-DymZpajQ.js.map +0 -1
  95. package/dist/EventPage-D7GG_BWH.js.map +0 -1
  96. package/dist/Heading-C8oOcA05.js.map +0 -1
  97. package/dist/Success-C0D_INAc.js.map +0 -1
  98. package/dist/VenueCalendar-B809Hecp.js.map +0 -1
  99. package/dist/showcase-state-options-BuPnUf0V.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as e from "svelte/internal/client";
3
- import { M as R, a as U, b as j, c as y, e as w } from "./VenueCalendar-B809Hecp.js";
4
- import { M as B } from "./modalManager.svelte-DjiZPIja.js";
5
- import { C as F } from "./ClockIcon-BoEIfS3d.js";
6
- import { T as H } from "./Text-DOd8068v.js";
3
+ import { M as R, a as U, b as j, c as y, e as w } from "./VenueCalendar-DIAMhER4.js";
4
+ import { M as B } from "./modalManager.svelte-CWfqhQHL.js";
5
+ import { C as F } from "./ClockIcon-BeCxOp69.js";
6
+ import { T as H } from "./Text-B0QR6Ape.js";
7
7
  var I = e.from_html("<!> <!> <!> <!>", 1), O = e.from_html("<!> <!>", 1);
8
8
  function L(u, t) {
9
9
  e.push(t, !0);
@@ -138,4 +138,4 @@ export {
138
138
  N as C,
139
139
  L as M
140
140
  };
141
- //# sourceMappingURL=CheckoutTimer-DPFVh7QG.js.map
141
+ //# sourceMappingURL=CheckoutTimer-C7osBosg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckoutTimer-DPFVh7QG.js","sources":["../node_modules/@getmicdrop/svelte-components/dist/primitives/Modal/Modal.svelte","../src/lib/public-calendar-flow/CheckoutTimer.svelte"],"sourcesContent":["<script lang=\"ts\">\r\n /**\r\n * Legacy Modal API — backward-compatible wrapper around ModalRoot + ModalOverlay + ModalPanel.\r\n * Accepts the old flat API: bind:open, header/body/footer snippets, size, persistent, oncancel.\r\n * New code should use ModalRoot + ModalOverlay + ModalPanel directly.\r\n */\r\n import type { Snippet } from 'svelte';\r\n import ModalRoot from './ModalRoot.svelte';\r\n import ModalOverlay from './ModalOverlay.svelte';\r\n import ModalPanel from './ModalPanel.svelte';\r\n import ModalHeader from './ModalHeader.svelte';\r\n import ModalBody from './ModalBody.svelte';\r\n import ModalFooter from './ModalFooter.svelte';\r\n\r\n interface Props {\r\n open?: boolean;\r\n size?: 'sm' | 'md' | 'lg' | 'xl';\r\n persistent?: boolean;\r\n haptic?: boolean;\r\n oncancel?: () => void;\r\n header?: Snippet;\r\n body?: Snippet;\r\n footer?: Snippet;\r\n children?: Snippet;\r\n class?: string;\r\n 'aria-labelledby'?: string;\r\n /**\r\n * Layout variant. `'sheet'` (default) = bottom-sheet on mobile, centered\r\n * on md+. `'dialog'` = centered on all viewports. See ModalRoot for details.\r\n */\r\n variant?: 'sheet' | 'dialog';\r\n }\r\n\r\n let {\r\n open = $bindable(false),\r\n size = 'md',\r\n persistent = false,\r\n haptic = true,\r\n oncancel,\r\n header,\r\n body,\r\n footer,\r\n children,\r\n class: className,\r\n 'aria-labelledby': ariaLabelledby,\r\n variant = 'sheet',\r\n }: Props = $props();\r\n</script>\r\n\r\n<ModalRoot bind:open {size} {persistent} {haptic} {oncancel} {variant} class={className} aria-labelledby={ariaLabelledby}>\r\n <ModalOverlay />\r\n <ModalPanel>\r\n {#if header}<ModalHeader>{@render header()}</ModalHeader>{/if}\r\n {#if body}<ModalBody>{@render body()}</ModalBody>{/if}\r\n {#if children}<ModalBody>{@render children()}</ModalBody>{/if}\r\n {#if footer}<ModalFooter>{@render footer()}</ModalFooter>{/if}\r\n </ModalPanel>\r\n</ModalRoot>\r\n","<script lang=\"ts\">\r\n import { ClockIcon } from '@getmicdrop/svelte-components/primitives/Icons/phosphor/index.js';\r\n import { Text } from '@getmicdrop/svelte-components';\r\n\r\n interface Props {\r\n seconds: number;\r\n isUrgent: boolean;\r\n labels?: Record<string, string>;\r\n }\r\n\r\n let { seconds, isUrgent, labels: _labels = {} }: Props = $props();\r\n\r\n let display = $derived(\r\n (() => {\r\n const m = Math.floor(seconds / 60);\r\n const s = seconds % 60;\r\n return `${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\r\n })()\r\n );\r\n\r\n let label = $derived(isUrgent ? 'Complete soon' : 'Reservation held');\r\n</script>\r\n\r\n<div class=\"timer-display text-color-secondary\" class:urgent={isUrgent}>\r\n <ClockIcon size=\"16\" class=\"shrink-0\" />\r\n <Text size=\"sm\" weight=\"medium\" class=\"tabular-nums\">\r\n {label} &middot; {display}\r\n </Text>\r\n</div>\r\n\r\n<style>\r\n .timer-display {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 0.5rem;\r\n }\r\n\r\n .timer-display.urgent {\r\n color: hsl(var(--accent-warning)); /* orange-500 */\r\n }\r\n</style>\r\n"],"names":["open","$","$$props","size","persistent","haptic","variant","ModalRoot","$$anchor","$$value","ModalOverlay","node","ModalPanel","node_1","ModalHeader","ModalBody","ModalFooter","display","m","label","div","root","ClockIcon","Text","text","classes"],"mappings":";;;;;;;iBAAA;;AAiCE,MACEA,IAAIC,EAAA,KAAAC,GAAA,QAAA,IAAa,EAAK,GACtBC,yBAAO,IAAI,GACXC,+BAAa,EAAK,GAClBC,2BAAS,EAAI,GAQbC,4BAAU,OAAO;AAIpB,EAAAC,EAASC,GAAA;AAAA;aAAYL,EAAI;AAAA;;aAAGC,EAAU;AAAA;;aAAGC,EAAM;AAAA;;;;;aAAcC,EAAO;AAAA;;;;;;;QAA1D,OAAS;;;QAAT,KAASG,GAAA;;;;;AACjB,MAAAC,EAAYC,GAAA,EAAA;;AACZ,MAAAC,EAAUC,GAAA;AAAA;;;;AACI,cAAAC,EAAWN,GAAA;AAAA;;;;;;;;;;;;;;AACb,cAAAO,EAASP,GAAA;AAAA;;;;;;;;;;;;;;AACL,cAAAO,EAASP,GAAA;AAAA;;;;;;;;;;;;;;AACX,cAAAQ,EAAWR,GAAA;AAAA;;;;;;;;;;;;;;;;;;AARpB;;iBC/CR;iBAU0CP,EAAA,KAAAC,GAAA,UAAA,IAAA,OAAA,CAAA,EAAA;AAExC,MAAIe,2BACK;AACL,UAAMC,IAAI,KAAK,kBAAgB,EAAE,GAC3B,gBAAc;AACpB,cAAUA,EAAE,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAA,IAAK,EAAE,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAA;AAAA,EACzE,IAAC,GAGCC,IAAKlB,EAAA,QAAA,MAAAC,EAAA,WAAuB,kBAAkB,kBAAkB;MAGrEkB,IAAGC,EAAA;;kBAAHD,CAAG;AACD,EAAAE,EAASX,GAAA,EAAA,MAAA,MAAA,OAAA,YAAA;;AACT,EAAAY,EAAIV,GAAA;AAAA;;;;;;AACF,MAAAZ,EAAA,gBAAA,MAAAA,EAAA,SAAAuB,GAAA,GAAAvB,EAAA,IAAAkB,CAAK,mBAAYF,CAAO,KAAA,EAAA,EAAA,CAAA;;;cAH5BG,CAAG,2CAAHA,GAAG,GAAA,oDAAA,MAAAK,GAAA,EAAA,QAAAvB,EAAA,SAAA,CAAA,CAAA,eAAHkB,CAAG;AAFI;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"CheckoutTimer-C7osBosg.js","sources":["../node_modules/@getmicdrop/svelte-components/dist/primitives/Modal/Modal.svelte","../src/lib/public-calendar-flow/CheckoutTimer.svelte"],"sourcesContent":["<script lang=\"ts\">\r\n /**\r\n * Legacy Modal API — backward-compatible wrapper around ModalRoot + ModalOverlay + ModalPanel.\r\n * Accepts the old flat API: bind:open, header/body/footer snippets, size, persistent, oncancel.\r\n * New code should use ModalRoot + ModalOverlay + ModalPanel directly.\r\n */\r\n import type { Snippet } from 'svelte';\r\n import ModalRoot from './ModalRoot.svelte';\r\n import ModalOverlay from './ModalOverlay.svelte';\r\n import ModalPanel from './ModalPanel.svelte';\r\n import ModalHeader from './ModalHeader.svelte';\r\n import ModalBody from './ModalBody.svelte';\r\n import ModalFooter from './ModalFooter.svelte';\r\n\r\n interface Props {\r\n open?: boolean;\r\n size?: 'sm' | 'md' | 'lg' | 'xl';\r\n persistent?: boolean;\r\n haptic?: boolean;\r\n oncancel?: () => void;\r\n header?: Snippet;\r\n body?: Snippet;\r\n footer?: Snippet;\r\n children?: Snippet;\r\n class?: string;\r\n 'aria-labelledby'?: string;\r\n /**\r\n * Layout variant. `'sheet'` (default) = bottom-sheet on mobile, centered\r\n * on md+. `'dialog'` = centered on all viewports. See ModalRoot for details.\r\n */\r\n variant?: 'sheet' | 'dialog';\r\n }\r\n\r\n let {\r\n open = $bindable(false),\r\n size = 'md',\r\n persistent = false,\r\n haptic = true,\r\n oncancel,\r\n header,\r\n body,\r\n footer,\r\n children,\r\n class: className,\r\n 'aria-labelledby': ariaLabelledby,\r\n variant = 'sheet',\r\n }: Props = $props();\r\n</script>\r\n\r\n<ModalRoot bind:open {size} {persistent} {haptic} {oncancel} {variant} class={className} aria-labelledby={ariaLabelledby}>\r\n <ModalOverlay />\r\n <ModalPanel>\r\n {#if header}<ModalHeader>{@render header()}</ModalHeader>{/if}\r\n {#if body}<ModalBody>{@render body()}</ModalBody>{/if}\r\n {#if children}<ModalBody>{@render children()}</ModalBody>{/if}\r\n {#if footer}<ModalFooter>{@render footer()}</ModalFooter>{/if}\r\n </ModalPanel>\r\n</ModalRoot>\r\n","<script lang=\"ts\">\r\n import { ClockIcon } from '@getmicdrop/svelte-components/primitives/Icons/phosphor/index.js';\r\n import { Text } from '@getmicdrop/svelte-components';\r\n\r\n interface Props {\r\n seconds: number;\r\n isUrgent: boolean;\r\n labels?: Record<string, string>;\r\n }\r\n\r\n let { seconds, isUrgent, labels: _labels = {} }: Props = $props();\r\n\r\n let display = $derived(\r\n (() => {\r\n const m = Math.floor(seconds / 60);\r\n const s = seconds % 60;\r\n return `${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\r\n })()\r\n );\r\n\r\n let label = $derived(isUrgent ? 'Complete soon' : 'Reservation held');\r\n</script>\r\n\r\n<div class=\"timer-display text-color-secondary\" class:urgent={isUrgent}>\r\n <ClockIcon size=\"16\" class=\"shrink-0\" />\r\n <Text size=\"sm\" weight=\"medium\" class=\"tabular-nums\">\r\n {label} &middot; {display}\r\n </Text>\r\n</div>\r\n\r\n<style>\r\n .timer-display {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 0.5rem;\r\n }\r\n\r\n .timer-display.urgent {\r\n color: hsl(var(--accent-warning)); /* orange-500 */\r\n }\r\n</style>\r\n"],"names":["open","$","$$props","size","persistent","haptic","variant","ModalRoot","$$anchor","$$value","ModalOverlay","node","ModalPanel","node_1","ModalHeader","ModalBody","ModalFooter","display","m","label","div","root","ClockIcon","Text","text","classes"],"mappings":";;;;;;;iBAAA;;AAiCE,MACEA,IAAIC,EAAA,KAAAC,GAAA,QAAA,IAAa,EAAK,GACtBC,yBAAO,IAAI,GACXC,+BAAa,EAAK,GAClBC,2BAAS,EAAI,GAQbC,4BAAU,OAAO;AAIpB,EAAAC,EAASC,GAAA;AAAA;aAAYL,EAAI;AAAA;;aAAGC,EAAU;AAAA;;aAAGC,EAAM;AAAA;;;;;aAAcC,EAAO;AAAA;;;;;;;QAA1D,OAAS;;;QAAT,KAASG,GAAA;;;;;AACjB,MAAAC,EAAYC,GAAA,EAAA;;AACZ,MAAAC,EAAUC,GAAA;AAAA;;;;AACI,cAAAC,EAAWN,GAAA;AAAA;;;;;;;;;;;;;;AACb,cAAAO,EAASP,GAAA;AAAA;;;;;;;;;;;;;;AACL,cAAAO,EAASP,GAAA;AAAA;;;;;;;;;;;;;;AACX,cAAAQ,EAAWR,GAAA;AAAA;;;;;;;;;;;;;;;;;;AARpB;;iBC/CR;iBAU0CP,EAAA,KAAAC,GAAA,UAAA,IAAA,OAAA,CAAA,EAAA;AAExC,MAAIe,2BACK;AACL,UAAMC,IAAI,KAAK,kBAAgB,EAAE,GAC3B,gBAAc;AACpB,cAAUA,EAAE,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAA,IAAK,EAAE,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAA;AAAA,EACzE,IAAC,GAGCC,IAAKlB,EAAA,QAAA,MAAAC,EAAA,WAAuB,kBAAkB,kBAAkB;MAGrEkB,IAAGC,EAAA;;kBAAHD,CAAG;AACD,EAAAE,EAASX,GAAA,EAAA,MAAA,MAAA,OAAA,YAAA;;AACT,EAAAY,EAAIV,GAAA;AAAA;;;;;;AACF,MAAAZ,EAAA,gBAAA,MAAAA,EAAA,SAAAuB,GAAA,GAAAvB,EAAA,IAAAkB,CAAK,mBAAYF,CAAO,KAAA,EAAA,EAAA,CAAA;;;cAH5BG,CAAG,2CAAHA,GAAG,GAAA,oDAAA,MAAAK,GAAA,EAAA,QAAAvB,EAAA,SAAA,CAAA,CAAA,eAAHkB,CAAG;AAFI;","x_google_ignoreList":[0]}
@@ -1,6 +1,6 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as e from "svelte/internal/client";
3
- import { u as f } from "./VenueCalendar-B809Hecp.js";
3
+ import { u as f } from "./VenueCalendar-DIAMhER4.js";
4
4
  var g = e.from_svg('<path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm56,112H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z"></path>'), m = e.from_svg('<circle cx="128" cy="128" r="96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"></circle><polyline points="128 72 128 128 184 128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"></polyline>', 1), w = e.from_svg('<svg aria-hidden="true" viewBox="0 0 256 256" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><!></svg>');
5
5
  function x(a, o) {
6
6
  e.push(o, !0);
@@ -29,4 +29,4 @@ function x(a, o) {
29
29
  export {
30
30
  x as C
31
31
  };
32
- //# sourceMappingURL=ClockIcon-BoEIfS3d.js.map
32
+ //# sourceMappingURL=ClockIcon-BeCxOp69.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClockIcon-BoEIfS3d.js","sources":["../node_modules/@getmicdrop/svelte-components/dist/primitives/Icons/phosphor/ClockIcon.svelte"],"sourcesContent":["<script lang=\"ts\">\r\n /**\r\n * Clock — Phosphor icon (canonical Micdrop icon family).\r\n * Outline by default; pass `weight=\"fill\"` for solid, or let a stateful parent\r\n * (NavItem / Tabs / BottomNav / status badge) drive it via icon-weight context.\r\n */\r\n import { useIconWeight, type IconWeight } from './iconWeight.js';\r\n\r\n interface Props {\r\n /** Pixel size (width + height). */\r\n size?: string;\r\n /** Icon color; defaults to `currentColor` (inherits text color). */\r\n color?: string;\r\n /** Extra classes. */\r\n class?: string;\r\n /** `regular` (outline) or `fill` (solid). Overrides ambient state weight. */\r\n weight?: IconWeight;\r\n }\r\n\r\n let { size = '24', color = 'currentColor', class: className = '', weight }: Props = $props();\r\n\r\n const ctx = useIconWeight();\r\n let resolved: IconWeight = $derived(weight ?? ctx?.weight ?? 'regular');\r\n</script>\r\n\r\n<svg\r\n class={className}\r\n aria-hidden=\"true\"\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 256 256\"\r\n fill=\"currentColor\"\r\n style:color={color}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n {#if resolved === 'fill'}<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm56,112H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z\"/>{:else}<circle cx=\"128\" cy=\"128\" r=\"96\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/><polyline points=\"128 72 128 128 184 128\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>{/if}\r\n</svg>\r\n"],"names":["size","$","$$props","color","className","ctx","useIconWeight","resolved","svg","root_2","path","root","$$render","consequent","alternate","styles"],"mappings":";;;;iBAAA;;AAmBE,MAAMA,IAAIC,EAAA,KAAAC,GAAA,QAAA,GAAG,IAAI,GAAEC,0BAAQ,cAAc,GAASC,0BAAY,EAAE;AAEhE,QAAMC,IAAMC,EAAa;AACzB,MAAIC,IAAoBN,EAAA,QAAA,MAAAC,EAAA,UAAsBG,GAAK,UAAU,SAAS;MAGvEG,IAAGC,EAAA;;kBAAHD,CAAG;;;UAUwBE,IAAIC,EAAA;kBAAJD,CAAI;AAAA;;;;;AAAzB,MAAAT,EAAA,IAAAM,CAAQ,MAAK,SAAMK,EAAAC,CAAA,IAAAD,EAAAE,GAAA,EAAA;AAAA;;UAVzBN,CAAG;AAAH,IAAAP,EAAA,UAAAO,aACQJ,EAAS,CAAA,CAAA,GADjBH,EAAA,cAAAO,YAGQR,EAAI,CAAA,GAHZC,EAAA,cAAAO,aAISR,EAAI,CAAA,GAJbe,IAAAd,EAAA,UAAAO,mBAOcL,EAAK,GAAA;AAAA,kBAPnBK,CAAG;AAFI;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"ClockIcon-BeCxOp69.js","sources":["../node_modules/@getmicdrop/svelte-components/dist/primitives/Icons/phosphor/ClockIcon.svelte"],"sourcesContent":["<script lang=\"ts\">\r\n /**\r\n * Clock — Phosphor icon (canonical Micdrop icon family).\r\n * Outline by default; pass `weight=\"fill\"` for solid, or let a stateful parent\r\n * (NavItem / Tabs / BottomNav / status badge) drive it via icon-weight context.\r\n */\r\n import { useIconWeight, type IconWeight } from './iconWeight.js';\r\n\r\n interface Props {\r\n /** Pixel size (width + height). */\r\n size?: string;\r\n /** Icon color; defaults to `currentColor` (inherits text color). */\r\n color?: string;\r\n /** Extra classes. */\r\n class?: string;\r\n /** `regular` (outline) or `fill` (solid). Overrides ambient state weight. */\r\n weight?: IconWeight;\r\n }\r\n\r\n let { size = '24', color = 'currentColor', class: className = '', weight }: Props = $props();\r\n\r\n const ctx = useIconWeight();\r\n let resolved: IconWeight = $derived(weight ?? ctx?.weight ?? 'regular');\r\n</script>\r\n\r\n<svg\r\n class={className}\r\n aria-hidden=\"true\"\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 256 256\"\r\n fill=\"currentColor\"\r\n style:color={color}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n {#if resolved === 'fill'}<path d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm56,112H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z\"/>{:else}<circle cx=\"128\" cy=\"128\" r=\"96\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/><polyline points=\"128 72 128 128 184 128\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/>{/if}\r\n</svg>\r\n"],"names":["size","$","$$props","color","className","ctx","useIconWeight","resolved","svg","root_2","path","root","$$render","consequent","alternate","styles"],"mappings":";;;;iBAAA;;AAmBE,MAAMA,IAAIC,EAAA,KAAAC,GAAA,QAAA,GAAG,IAAI,GAAEC,0BAAQ,cAAc,GAASC,0BAAY,EAAE;AAEhE,QAAMC,IAAMC,EAAa;AACzB,MAAIC,IAAoBN,EAAA,QAAA,MAAAC,EAAA,UAAsBG,GAAK,UAAU,SAAS;MAGvEG,IAAGC,EAAA;;kBAAHD,CAAG;;;UAUwBE,IAAIC,EAAA;kBAAJD,CAAI;AAAA;;;;;AAAzB,MAAAT,EAAA,IAAAM,CAAQ,MAAK,SAAMK,EAAAC,CAAA,IAAAD,EAAAE,GAAA,EAAA;AAAA;;UAVzBN,CAAG;AAAH,IAAAP,EAAA,UAAAO,aACQJ,EAAS,CAAA,CAAA,GADjBH,EAAA,cAAAO,YAGQR,EAAI,CAAA,GAHZC,EAAA,cAAAO,aAISR,EAAI,CAAA,GAJbe,IAAAd,EAAA,UAAAO,mBAOcL,EAAK,GAAA;AAAA,kBAPnBK,CAAG;AAFI;","x_google_ignoreList":[0]}
@@ -1,12 +1,11 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as e from "svelte/internal/client";
3
- import { untrack as V, onMount as j, onDestroy as F } from "svelte";
4
- import { g as M } from "./ScarcityBadge-BqJHRkab.js";
5
- import { r as B } from "./__SKIP_PATHS__-BtJ0tS93.js";
6
- import { E as A } from "./Event-DymZpajQ.js";
7
- import { b as Q } from "./transform-C6LCkao6.js";
8
- import { C as U, D as G, aQ as H, I as J, j as K, aR as X } from "./VenueCalendar-B809Hecp.js";
9
- import { cubicOut as Y } from "svelte/easing";
3
+ import { untrack as V, onMount as F, onDestroy as M } from "svelte";
4
+ import { g as O } from "./ScarcityBadge-BqL0twaw.js";
5
+ import { r as A } from "./__SKIP_PATHS__-BtJ0tS93.js";
6
+ import { E as B } from "./Event-CGnKZ-pZ.js";
7
+ import { b as G } from "./transform-B1kRFSE7.js";
8
+ import { C as U, ae as Q, D as H, aR as J, I as K, j as X, aS as Y } from "./VenueCalendar-DIAMhER4.js";
10
9
  var Z = e.from_html("<div></div>"), $ = e.from_html('<div class="pt-2 space-y-2"><div class="flex gap-1.5"></div> <!></div>');
11
10
  function ee(I, t) {
12
11
  e.push(t, !0);
@@ -17,7 +16,7 @@ function ee(I, t) {
17
16
  strong: "Strong"
18
17
  };
19
18
  let u = e.prop(t, "password", 3, ""), i = e.prop(t, "strengthText", 15, ""), w = e.prop(t, "score", 31, () => -1), g = e.prop(t, "textColor", 15, ""), f = e.prop(t, "labels", 19, () => ({})), a = e.derived(() => ({ ..._, ...f() })), d = e.state(""), v, p = e.state(null);
20
- const b = H(() => import("./index-BsWecoW1.js"));
19
+ const b = J(() => import("./index-BsWecoW1.js"));
21
20
  function x() {
22
21
  b().then((r) => {
23
22
  e.set(p, r.passwordStrength, !0);
@@ -79,12 +78,12 @@ function ee(I, t) {
79
78
  {
80
79
  var l = (r) => {
81
80
  var o = $(), s = e.child(o);
82
- e.each(s, 20, () => [0, 1, 2], (h) => h, (h, R) => {
81
+ e.each(s, 20, () => [0, 1, 2], (m) => m, (m, E) => {
83
82
  var c = Z();
84
- e.template_effect(() => e.set_class(c, 1, `h-1 flex-1 rounded-full transition-colors duration-normal ${(R < e.get(k) ? e.get(q) : "bg-bg-tertiary") ?? ""}`)), e.append(h, c);
83
+ e.template_effect(() => e.set_class(c, 1, `h-1 flex-1 rounded-full transition-colors duration-normal ${(E < e.get(k) ? e.get(q) : "bg-bg-tertiary") ?? ""}`)), e.append(m, c);
85
84
  }), e.reset(s);
86
85
  var S = e.sibling(s, 2);
87
- e.snippet(S, () => t.children ?? e.noop), e.reset(o), e.transition(3, o, () => U, () => ({ duration: G.elaborate, easing: Y })), e.append(r, o);
86
+ e.snippet(S, () => t.children ?? e.noop), e.reset(o), e.transition(3, o, () => U, () => ({ duration: H.elaborate, easing: Q.out })), e.append(r, o);
88
87
  };
89
88
  e.if(z, (r) => {
90
89
  e.get(d).length > 0 && r(l);
@@ -98,7 +97,7 @@ function le(I, t) {
98
97
  const _ = { passwordStrength: "Password strength:" };
99
98
  let u = e.prop(t, "value", 15, ""), i = e.prop(t, "label", 3, ""), w = e.prop(t, "placeholder", 3, ""), g = e.prop(t, "name", 3, ""), f = e.prop(t, "id", 3, ""), a = e.prop(t, "required", 3, !1), d = e.prop(t, "disableBuiltInValidation", 3, !1), v = e.prop(t, "disabled", 3, !1), p = e.prop(t, "error", 3, ""), b = e.prop(t, "hint", 3, ""), x = e.prop(t, "showStrength", 3, !1), y = e.prop(t, "size", 3, "md"), D = e.prop(t, "minlength", 3, null), n = e.prop(t, "maxlength", 3, null), T = e.prop(t, "autocomplete", 3, "new-password"), L = e.prop(t, "showPasswordToggle", 3, !0), q = e.prop(t, "class", 3, ""), k = e.prop(t, "labels", 19, () => ({})), C = e.derived(() => ({ ..._, ...k() })), z = e.derived(() => d() ? !1 : a()), l = e.state(-1), r = e.state(""), o = e.state("");
100
99
  var s = re(), S = e.child(s);
101
- J(S, {
100
+ K(S, {
102
101
  type: "password",
103
102
  get id() {
104
103
  return f();
@@ -155,9 +154,9 @@ function le(I, t) {
155
154
  u(c);
156
155
  }
157
156
  });
158
- var h = e.sibling(S, 2);
157
+ var m = e.sibling(S, 2);
159
158
  {
160
- var R = (c) => {
159
+ var E = (c) => {
161
160
  ee(c, {
162
161
  get password() {
163
162
  return u();
@@ -165,42 +164,42 @@ function le(I, t) {
165
164
  get score() {
166
165
  return e.get(l);
167
166
  },
168
- set score(m) {
169
- e.set(l, m, !0);
167
+ set score(h) {
168
+ e.set(l, h, !0);
170
169
  },
171
170
  get strengthText() {
172
171
  return e.get(r);
173
172
  },
174
- set strengthText(m) {
175
- e.set(r, m, !0);
173
+ set strengthText(h) {
174
+ e.set(r, h, !0);
176
175
  },
177
176
  get textColor() {
178
177
  return e.get(o);
179
178
  },
180
- set textColor(m) {
181
- e.set(o, m, !0);
179
+ set textColor(h) {
180
+ e.set(o, h, !0);
182
181
  },
183
- children: (m, E) => {
182
+ children: (h, R) => {
184
183
  var P = te(), N = e.child(P);
185
184
  e.reset(P), e.template_effect(() => {
186
185
  e.set_class(P, 1, `type-caption ${e.get(o) ?? ""}`), e.set_text(N, `${e.get(C).passwordStrength ?? ""} ${e.get(r) ?? ""}`);
187
- }), e.append(m, P);
186
+ }), e.append(h, P);
188
187
  },
189
188
  $$slots: { default: !0 }
190
189
  });
191
190
  };
192
- e.if(h, (c) => {
193
- x() && u() && c(R);
191
+ e.if(m, (c) => {
192
+ x() && u() && c(E);
194
193
  });
195
194
  }
196
195
  e.reset(s), e.template_effect(() => e.set_class(s, 1, e.clsx(q()))), e.append(I, s), e.pop();
197
196
  }
198
197
  var oe = e.from_html('<div class="flex items-center justify-center py-12 text-center loading-container svelte-q4dz4y"><p> </p></div>'), se = e.from_html('<div class="flex flex-col items-center justify-center min-h-[50vh] text-center"><div class="password-card rounded-lg p-8 max-w-sm w-full svelte-q4dz4y"><h2 class="password-title type-heading mb-2 svelte-q4dz4y"> </h2> <p class="password-description type-body mb-6 svelte-q4dz4y"> </p> <form class="flex flex-col gap-3"><!> <button type="submit" class="password-submit px-4 py-2 rounded-lg type-label svelte-q4dz4y"> </button></form></div></div>'), ae = e.from_html('<div class="flex flex-col items-center justify-center min-h-[50vh] text-center"><p class="error-text svelte-q4dz4y"> </p></div>');
199
- function pe(I, t) {
200
- e.push(t, !0), K("CollectionView"), e.prop(t, "organizationId", 3, "");
198
+ function ve(I, t) {
199
+ e.push(t, !0), X("CollectionView"), e.prop(t, "organizationId", 3, "");
201
200
  let _ = e.prop(t, "onNavigateToEvent", 3, void 0), u = e.prop(t, "password", 3, void 0);
202
201
  e.prop(t, "displayMode", 3, "gallery"), e.prop(t, "showViewSwitcher", 3, !0);
203
- let i = e.prop(t, "labels", 19, () => ({})), w = e.state(null), g = e.state(!0), f = e.state(null), a = e.state(!1), d = e.state(!1), v = e.state(""), p = e.state(!1), b = e.derived(() => e.get(w) ? Q(e.get(w)) : null), x = 0;
202
+ let i = e.prop(t, "labels", 19, () => ({})), w = e.state(null), g = e.state(!0), f = e.state(null), a = e.state(!1), d = e.state(!1), v = e.state(""), p = e.state(!1), b = e.derived(() => e.get(w) ? G(e.get(w)) : null), x = 0;
204
203
  async function y(l) {
205
204
  if (!e.get(a)) return;
206
205
  const r = ++x;
@@ -210,7 +209,7 @@ function pe(I, t) {
210
209
  }
211
210
  e.set(g, !0), e.set(f, null), e.set(p, !1);
212
211
  try {
213
- const o = await X(t.collectionId, l);
212
+ const o = await Y(t.collectionId, l);
214
213
  if (!e.get(a) || r !== x) return;
215
214
  if (o) {
216
215
  if (o.passwordRequired || o.error?.code === "PASSWORD_REQUIRED") {
@@ -238,11 +237,11 @@ function pe(I, t) {
238
237
  l.preventDefault(), e.get(v).trim() && y(e.get(v));
239
238
  }
240
239
  function n(l) {
241
- _() && l.id ? _()(Number(l.id), l.slug) : M(B("/[id]/[slug]", { id: String(l.id), slug: String(l.slug) }));
240
+ _() && l.id ? _()(Number(l.id), l.slug) : O(A("/[id]/[slug]", { id: String(l.id), slug: String(l.slug) }));
242
241
  }
243
- j(() => {
242
+ F(() => {
244
243
  e.set(a, !0), y(u());
245
- }), F(() => {
244
+ }), M(() => {
246
245
  e.set(a, !1);
247
246
  });
248
247
  var T = e.comment(), L = e.first_child(T);
@@ -253,35 +252,35 @@ function pe(I, t) {
253
252
  }, k = (l) => {
254
253
  var r = se(), o = e.child(r), s = e.child(o), S = e.child(s, !0);
255
254
  e.reset(s);
256
- var h = e.sibling(s, 2), R = e.child(h, !0);
257
- e.reset(h);
258
- var c = e.sibling(h, 2), m = e.child(c);
255
+ var m = e.sibling(s, 2), E = e.child(m, !0);
256
+ e.reset(m);
257
+ var c = e.sibling(m, 2), h = e.child(c);
259
258
  {
260
- let N = e.derived(() => i().enterPassword || "Enter password"), O = e.derived(() => e.get(p) ? i().incorrectPassword || "Incorrect password. Please try again" : "");
261
- le(m, {
259
+ let N = e.derived(() => i().enterPassword || "Enter password"), W = e.derived(() => e.get(p) ? i().incorrectPassword || "Incorrect password. Please try again" : "");
260
+ le(h, {
262
261
  get placeholder() {
263
262
  return e.get(N);
264
263
  },
265
264
  get error() {
266
- return e.get(O);
265
+ return e.get(W);
267
266
  },
268
267
  get value() {
269
268
  return e.get(v);
270
269
  },
271
- set value(W) {
272
- e.set(v, W, !0);
270
+ set value(j) {
271
+ e.set(v, j, !0);
273
272
  }
274
273
  });
275
274
  }
276
- var E = e.sibling(m, 2), P = e.child(E, !0);
277
- e.reset(E), e.reset(c), e.reset(o), e.reset(r), e.template_effect(() => {
278
- e.set_text(S, i().collectionPrivateTitle || "This collection is private"), e.set_text(R, i().collectionPrivateDescription || "Please enter the password to view this collection"), e.set_text(P, i().viewCollection || "View collection");
275
+ var R = e.sibling(h, 2), P = e.child(R, !0);
276
+ e.reset(R), e.reset(c), e.reset(o), e.reset(r), e.template_effect(() => {
277
+ e.set_text(S, i().collectionPrivateTitle || "This collection is private"), e.set_text(E, i().collectionPrivateDescription || "Please enter the password to view this collection"), e.set_text(P, i().viewCollection || "View collection");
279
278
  }), e.event("submit", c, D), e.append(l, r);
280
279
  }, C = (l) => {
281
280
  var r = ae(), o = e.child(r), s = e.child(o);
282
281
  e.reset(o), e.reset(r), e.template_effect(() => e.set_text(s, `${(i().errorPrefix || "Error:") ?? ""} ${e.get(f) ?? ""}`)), e.append(l, r);
283
282
  }, z = (l) => {
284
- A(l, {
283
+ B(l, {
285
284
  get event() {
286
285
  return e.get(b);
287
286
  },
@@ -295,6 +294,6 @@ function pe(I, t) {
295
294
  e.append(I, T), e.pop();
296
295
  }
297
296
  export {
298
- pe as default
297
+ ve as default
299
298
  };
300
- //# sourceMappingURL=CollectionView-DM3WLpLu.js.map
299
+ //# sourceMappingURL=CollectionView-CMm-2iBY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectionView-CMm-2iBY.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 type { Options } from 'check-password-strength';\r\n import { DURATION, safeSlide, EASING } from \"../../../utils/transitions.js\";\r\n import { lazyOnce } from \"../../../utils/lazyOnce.js\";\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 // Explicit type ARGUMENT (not annotation) on purpose: with `$state(null)` TS\r\n // infers T = null, so control-flow analysis proves the variable is `null` at\r\n // the $derived read below and collapses the truthy branch to `never`\r\n // (\"This expression is not callable\"). The type argument keeps the union.\r\n let strengthFn = $state<typeof import('check-password-strength').passwordStrength | null>(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 // Typed as the library's own `Options<string>` so the strength call needs no\r\n // cast: the tuple's first entry satisfies `FirstOption` (minDiversity/minLength 0)\r\n // and the rest satisfy `Option`, checked contextually against this annotation.\r\n let customOptions: Options<string> = $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 ]);\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)\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: DURATION.elaborate, easing: EASING.out }}\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 {#each [0, 1, 2] as barIndex (barIndex)}\r\n <div\r\n class=\"h-1 flex-1 rounded-full transition-colors duration-normal {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)\r\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=\"type-caption {strengthColor}\">\r\n {labels.passwordStrength} {strengthText}\r\n </p>\r\n </PasswordStrengthIndicator>\r\n {/if}\r\n</div>\r\n","<!-- button-exception: the password-gate submit is a type=submit form control styled by scoped CSS (.password-submit) per venue brand. -->\r\n<!-- @route-escape: widget-intentional. -->\r\n<script lang=\"ts\">\r\n import { onMount, onDestroy } from 'svelte';\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 { transformCollectionData } from '$lib/public-calendar-flow/transform';\r\n import { fetchPublicCollection } from '$lib/api/events';\r\n import type { PublicCollectionData } from '$lib/api/types';\r\n import { createLogger, PasswordInput } from '@getmicdrop/svelte-components';\r\n\r\n const _logger = createLogger('CollectionView');\r\n\r\n // --- Props (matches old CollectionView external interface) ---\r\n interface Props {\r\n collectionId: string | number;\r\n organizationId?: string;\r\n onNavigateToEvent?: (_id: number, _slug: string) => void;\r\n password?: string;\r\n displayMode?: string;\r\n showViewSwitcher?: boolean;\r\n labels?: Record<string, string>;\r\n }\r\n\r\n let {\r\n collectionId,\r\n organizationId: _organizationId = '',\r\n onNavigateToEvent = undefined,\r\n password = undefined,\r\n displayMode: _displayMode = 'gallery',\r\n showViewSwitcher: _showViewSwitcher = true,\r\n labels = {},\r\n }: Props = $props();\r\n\r\n // --- State ---\r\n let collection = $state<PublicCollectionData | null>(null);\r\n let isLoading = $state(true);\r\n let error = $state<string | null>(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\r\n // --- Derived ---\r\n let eventData = $derived(\r\n collection ? transformCollectionData(collection) : null\r\n );\r\n\r\n // Monotonic id for collection loads. loadCollection runs on mount AND on each\r\n // password submit; a slower EARLIER request resolving last would otherwise\r\n // clobber the latest attempt (isMounted only covers unmount, not overlap).\r\n let latestLoad = 0;\r\n\r\n // --- Load collection data ---\r\n async function loadCollection(pwd?: string): Promise<void> {\r\n if (!isMounted) return;\r\n const loadId = ++latestLoad;\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 // A newer load superseded us — discard this stale response.\r\n if (!isMounted || loadId !== latestLoad) return;\r\n\r\n if (data) {\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 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: any) {\r\n // A superseded load failing must not overwrite the latest load's state\r\n // (e.g. a slow wrong-password 401 re-locking an already-loaded collection).\r\n if (isMounted && loadId === latestLoad) {\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 =\r\n msg || labels.failedToLoadCollection || 'Failed to load collection';\r\n }\r\n }\r\n } finally {\r\n // Only the latest load may clear the spinner — a stale load settling\r\n // first must not reveal content while the newest load is still pending.\r\n if (isMounted && loadId === latestLoad) {\r\n isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n function handlePasswordSubmit(e: Event): void {\r\n e.preventDefault();\r\n if (!passwordInput.trim()) return;\r\n loadCollection(passwordInput);\r\n }\r\n\r\n function handleCollectionEventClick(galleryEvent: {\r\n id?: number | string;\r\n slug: string;\r\n }): void {\r\n if (onNavigateToEvent && galleryEvent.id) {\r\n onNavigateToEvent(Number(galleryEvent.id), galleryEvent.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(galleryEvent.id),\r\n slug: String(galleryEvent.slug),\r\n })\r\n );\r\n }\r\n }\r\n\r\n // --- Lifecycle ---\r\n onMount(() => {\r\n isMounted = true;\r\n loadCollection(password);\r\n });\r\n\r\n onDestroy(() => {\r\n isMounted = false;\r\n });\r\n</script>\r\n\r\n<!-- @pageloader-escape: 4-state gate (loading / private-password-card / error /\r\n content) — PageLoader models only loading/error/children, so it can't own the\r\n password-required branch that sits as a sibling here. -->\r\n{#if isLoading}\r\n <div\r\n class=\"flex items-center justify-center py-12 text-center loading-container\"\r\n >\r\n <p>{labels.loadingCollection || 'Loading collection...'}</p>\r\n </div>\r\n{:else if passwordRequired}\r\n <div\r\n class=\"flex flex-col items-center justify-center min-h-[50vh] text-center\"\r\n >\r\n <div class=\"password-card rounded-lg p-8 max-w-sm w-full\">\r\n <h2 class=\"password-title type-heading mb-2\">\r\n {labels.collectionPrivateTitle || 'This collection is private'}\r\n </h2>\r\n <p class=\"password-description type-body mb-6\">\r\n {labels.collectionPrivateDescription ||\r\n 'Please enter the password to view this collection'}\r\n </p>\r\n <form onsubmit={handlePasswordSubmit} class=\"flex flex-col gap-3\">\r\n <PasswordInput\r\n bind:value={passwordInput}\r\n placeholder={labels.enterPassword || 'Enter password'}\r\n error={passwordError\r\n ? labels.incorrectPassword ||\r\n 'Incorrect password. Please try again'\r\n : ''}\r\n />\r\n <button\r\n type=\"submit\"\r\n class=\"password-submit px-4 py-2 rounded-lg type-label\"\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\r\n class=\"flex flex-col items-center justify-center min-h-[50vh] text-center\"\r\n >\r\n <p class=\"error-text\">{labels.errorPrefix || 'Error:'} {error}</p>\r\n </div>\r\n{:else if eventData}\r\n <EventExperience\r\n event={eventData}\r\n onCollectionEventClick={handleCollectionEventClick}\r\n />\r\n{/if}\r\n\r\n<style>\r\n .loading-container {\r\n color: hsl(var(--text-secondary, 215 16% 47%));\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-card {\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 color: hsl(var(--text-primary, 0 0% 10%));\r\n }\r\n\r\n .password-description {\r\n color: hsl(var(--text-secondary, 0 0% 45%));\r\n }\r\n\r\n .password-submit {\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</style>\r\n"],"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","$$anchor","div_2","root","safeSlide","DURATION","EASING","$$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","p","createLogger","onNavigateToEvent","collection","isLoading","isMounted","passwordRequired","passwordInput","passwordError","eventData","transformCollectionData","latestLoad","loadCollection","pwd","loadId","data","fetchPublicCollection","err","msg","handlePasswordSubmit","e","handleCollectionEventClick","galleryEvent","goto","resolve","onMount","onDestroy","h2","p_1","form","PasswordInput","node_1","button","div_3","root_2","p_2","text_4","EventExperience","consequent_1","consequent_3"],"mappings":"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","x_google_ignoreList":[0,1]}