@riverbankcms/sdk 0.85.0 → 0.89.1

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 (166) hide show
  1. package/dist/{PreviewEditorSidebar-4PH35ZIE.mjs → PreviewEditorSidebar-JDR64FEC.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-WHMCRJGM.mjs → PreviewEditorUI-67TMJMAF.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-ZBEMRV7N.mjs +8 -0
  4. package/dist/_dts/api/src/accessAdmin.d.ts +7 -0
  5. package/dist/_dts/api/src/endpoints.d.ts +66 -14
  6. package/dist/_dts/api/src/index.d.ts +5 -2
  7. package/dist/_dts/api/src/launchReadiness.d.ts +3 -3
  8. package/dist/_dts/api/src/mailchimpIntegration.d.ts +215 -0
  9. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +35 -15
  10. package/dist/_dts/api/src/siteInfrastructure.d.ts +0 -14
  11. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +5 -1
  12. package/dist/_dts/api/src/siteMembers.d.ts +6 -1
  13. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -13
  14. package/dist/_dts/api/src/types.d.ts +7 -4
  15. package/dist/_dts/blocks/src/PageRenderer.d.ts +1 -0
  16. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
  17. package/dist/_dts/blocks/src/index.d.ts +2 -1
  18. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
  19. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
  20. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
  21. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
  22. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
  23. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
  24. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
  25. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +288 -288
  26. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
  27. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  28. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +42 -42
  29. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +300 -0
  30. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +63 -3
  31. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
  32. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
  33. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
  34. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +53 -1
  35. package/dist/_dts/blocks/src/system/icons/cta.d.ts +3 -3
  36. package/dist/_dts/blocks/src/system/icons/index.d.ts +1 -0
  37. package/dist/_dts/blocks/src/system/icons/registry.d.ts +2 -2
  38. package/dist/_dts/blocks/src/system/icons/semantic.d.ts +3 -3
  39. package/dist/_dts/blocks/src/system/icons/svg.d.ts +72 -0
  40. package/dist/_dts/blocks/src/system/manifest/richTextSchema.d.ts +27 -0
  41. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +23 -23
  42. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +11 -2
  43. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +24 -0
  44. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +12 -0
  45. package/dist/_dts/blocks/src/system/runtime/hooks/loadStateError.d.ts +1 -0
  46. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.d.ts +1 -1
  47. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.state.d.ts +55 -0
  48. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.state.d.ts +39 -0
  49. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFormConfig.d.ts +4 -27
  50. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFormConfig.state.d.ts +40 -0
  51. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +20 -0
  52. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.state.d.ts +31 -0
  53. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.d.ts +3 -3
  54. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.state.d.ts +39 -0
  55. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +1 -0
  56. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +4 -0
  57. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +1 -1
  58. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventPaginatedListView.client.d.ts +1 -1
  59. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +11 -1
  60. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +24 -2
  61. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +15 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  63. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +32 -0
  64. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +5 -1
  65. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +24 -0
  66. package/dist/_dts/blocks/src/system/runtime/shared/components/ModalShell.d.ts +5 -1
  67. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.state.d.ts +35 -0
  68. package/dist/_dts/blocks/src/system/runtime/shared/utils/formatting.d.ts +1 -1
  69. package/dist/_dts/content-model/src/entry-slots/types.d.ts +54 -0
  70. package/dist/_dts/content-model/src/referenceFields.d.ts +1 -1
  71. package/dist/_dts/core/src/branded.d.ts +7 -0
  72. package/dist/_dts/core/src/currency-format.d.ts +37 -2
  73. package/dist/_dts/core/src/event-pricing.d.ts +24 -0
  74. package/dist/_dts/core/src/index.d.ts +1 -0
  75. package/dist/_dts/core/src/site-route-target.d.ts +40 -0
  76. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +705 -17
  77. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +3 -1
  78. package/dist/_dts/media-core/src/fileDomain.d.ts +4 -0
  79. package/dist/_dts/sdk/src/client/runtimeCachePolicy.d.ts +160 -0
  80. package/dist/_dts/sdk/src/client/types.d.ts +35 -1
  81. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  82. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +3 -0
  83. package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +3 -9
  84. package/dist/_dts/sdk/src/index.d.ts +3 -1
  85. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +1 -1
  86. package/dist/_dts/sdk/src/manifest/three-pass-converter.d.ts +7 -18
  87. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  88. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -1
  89. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +7 -3
  90. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +4 -24
  91. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +45 -0
  92. package/dist/_dts/sdk/src/version.d.ts +1 -1
  93. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  94. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +9 -9
  95. package/dist/_dts/theme-core/src/schema.d.ts +11 -11
  96. package/dist/{chunk-PYDHOMEO.mjs → chunk-7N46MZHI.mjs} +1 -1
  97. package/dist/{chunk-ZR2GQK2A.mjs → chunk-7YUAXONX.mjs} +1880 -588
  98. package/dist/{chunk-4QNLOTES.mjs → chunk-F645A5UV.mjs} +76 -14
  99. package/dist/{chunk-OCGTXHSO.mjs → chunk-HKJQERFR.mjs} +7 -7
  100. package/dist/{chunk-NFWGLRZZ.mjs → chunk-TGBJWKMP.mjs} +37 -3
  101. package/dist/{chunk-WFPYN7KA.mjs → chunk-ZQRBLCW5.mjs} +2 -2
  102. package/dist/cli/index.mjs +1075 -126
  103. package/dist/client/{accordion-2UZPBMYM.mjs → accordion-MUCVNGQ7.mjs} +2 -2
  104. package/dist/client/{bookingForm-36CWQUMV.mjs → bookingForm-PKD6EFIE.mjs} +193 -77
  105. package/dist/client/bookings.mjs +487 -197
  106. package/dist/client/{carousel-QH77HR6X.mjs → carousel-3TKQSNJC.mjs} +4 -3
  107. package/dist/client/cart-6XHSZK23.mjs +19 -0
  108. package/dist/client/checkout-FVSPM6FI.mjs +19 -0
  109. package/dist/client/{chunk-ZE5G642V.mjs → chunk-25W2EQUN.mjs} +75 -1
  110. package/dist/client/chunk-6N7YRNYU.mjs +183 -0
  111. package/dist/client/{chunk-4OXKTA3D.mjs → chunk-7DH35FGA.mjs} +2 -2
  112. package/dist/client/{chunk-3C2VTPWI.mjs → chunk-CQKKFEQD.mjs} +363 -66
  113. package/dist/client/{chunk-7UCLJ5SP.mjs → chunk-EY42X22F.mjs} +4 -7
  114. package/dist/client/{chunk-SYIJ5JO2.mjs → chunk-FHU6PFPM.mjs} +1 -1
  115. package/dist/client/{chunk-ZKUO52W3.mjs → chunk-LQFDYWPJ.mjs} +1 -1
  116. package/dist/client/chunk-RSQWWUAD.mjs +390 -0
  117. package/dist/client/{chunk-UDNSI5PY.mjs → chunk-STJ2NCQM.mjs} +2 -3
  118. package/dist/client/{chunk-VGDBVNOO.mjs → chunk-UQFY4AHX.mjs} +511 -406
  119. package/dist/client/{chunk-F5VRX5Y6.mjs → chunk-VGLXACVK.mjs} +1 -1
  120. package/dist/client/{chunk-DVNUDUVT.mjs → chunk-WBQG7VJA.mjs} +4 -1
  121. package/dist/client/{chunk-52CGCQ7B.mjs → chunk-ZJZZA5EP.mjs} +10 -80
  122. package/dist/client/{chunk-XSV6KW4D.mjs → chunk-ZT5XE7FK.mjs} +1 -1
  123. package/dist/client/client.mjs +5820 -4782
  124. package/dist/client/{courseRegistration-TMKU6ABO.mjs → courseRegistration-ATZSYDHM.mjs} +7 -7
  125. package/dist/client/{eventCalendar-G6TI32X6.mjs → eventCalendar-6T2UGKKP.mjs} +11 -11
  126. package/dist/client/{eventCombined-SCKEMNAR.mjs → eventCombined-Q4VANXVF.mjs} +11 -11
  127. package/dist/client/{eventDetails-XPIFXXPK.mjs → eventDetails-DW37E7VW.mjs} +11 -11
  128. package/dist/client/{eventListing-7QFMEMGT.mjs → eventListing-XURTSAUW.mjs} +11 -11
  129. package/dist/client/{eventRegistration-TOODSZUI.mjs → eventRegistration-MRKEVAXW.mjs} +11 -11
  130. package/dist/client/{form-MTCMVCZT.mjs → form-WZZFFGMU.mjs} +3 -3
  131. package/dist/client/{headerSection-Y5TMR3TW.mjs → headerSection-EQYVQBLM.mjs} +4 -4
  132. package/dist/client/hooks.mjs +1700 -1412
  133. package/dist/client/{locationMap-RH2LG7FZ.mjs → locationMap-MFF5VAZR.mjs} +3 -4
  134. package/dist/client/{newsletterForm-PCAIPFMA.mjs → newsletterForm-JQ77UYIE.mjs} +127 -43
  135. package/dist/client/{productDetail-OIGDR4YE.mjs → productDetail-25LMT3IZ.mjs} +9 -9
  136. package/dist/client/{productList-4MA5S2CX.mjs → productList-5ABEMKUG.mjs} +9 -9
  137. package/dist/client/rendering/client.mjs +3884 -3722
  138. package/dist/client/rendering/islands.mjs +19 -19
  139. package/dist/client/rendering.mjs +6774 -6331
  140. package/dist/client/shop-OMMQZ6YO.mjs +21 -0
  141. package/dist/preview-next/before-render.mjs +76 -14
  142. package/dist/preview-next/client/runtime.mjs +5 -5
  143. package/dist/preview-next/editor-chrome.css +56 -9
  144. package/dist/preview-next/middleware.mjs +76 -14
  145. package/dist/{sdk-runtime-QLOCYKVU.mjs → sdk-runtime-WNLBZ3ZH.mjs} +6 -6
  146. package/dist/server/components.mjs +2579 -2548
  147. package/dist/server/config-validation.mjs +1737 -1461
  148. package/dist/server/config.mjs +1737 -1461
  149. package/dist/server/data.mjs +1701 -1413
  150. package/dist/server/index.mjs +1048 -400
  151. package/dist/server/next.mjs +3602 -2858
  152. package/dist/server/page-converter.mjs +2193 -1169
  153. package/dist/server/prebuild.mjs +1 -1
  154. package/dist/server/rendering/server.mjs +2770 -2742
  155. package/dist/server/rendering.mjs +2961 -2886
  156. package/dist/server/routing.mjs +2186 -1508
  157. package/dist/server/server.mjs +2237 -1287
  158. package/dist/server/theme-bridge.mjs +260 -0
  159. package/dist/styles/index.css +258 -0
  160. package/package.json +2 -1
  161. package/dist/SdkPreviewModeRuntime-4FGSVUYI.mjs +0 -8
  162. package/dist/client/cart-X4YK4FTW.mjs +0 -19
  163. package/dist/client/checkout-OM2BEPWD.mjs +0 -19
  164. package/dist/client/chunk-3DTWLTXM.mjs +0 -204
  165. package/dist/client/chunk-I2MMZO53.mjs +0 -6
  166. package/dist/client/shop-WXSYV5QO.mjs +0 -21
@@ -1,8 +1,6 @@
1
- "use client";
2
- import { parseAspectRatioValue, parseColorTokenParts, toBookingTimeZone, resolvePlanningDateInput, formatBookingDate, toScheduledBookingDateTime, formatBookingTime, toScheduledBookingDateRange, formatBookingDateParts, publicEventPricingDisplay, ImagePresets, getBookingLocalDateKey, publicEventPricingType, getCurrentResolveImageUrlContext, renderVideo, renderAudio, resolveMediaNodeResponsiveImage, MediaPlaceholder, computeMediaTransformStyle, rgbColorValue } from './chunk-ZE5G642V.mjs';
1
+ import { parseAspectRatioValue, parseColorTokenParts, toBookingTimeZone, formatBookingDate, toScheduledBookingDateTime, formatBookingTime, toScheduledBookingDateRange, formatBookingDateParts, formatEventPricing, ImagePresets, getBookingLocalDateKey, publicEventPricingType, formatCurrencyAmount, getCurrentResolveImageUrlContext, renderVideo, renderAudio, resolveMediaNodeResponsiveImage, MediaPlaceholder, computeMediaTransformStyle, rgbColorValue } from './chunk-25W2EQUN.mjs';
3
2
  import z2, { z } from 'zod';
4
- import { jsxs, jsx } from 'react/jsx-runtime';
5
- import { createContext, forwardRef, useContext, createElement } from 'react';
3
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
6
4
 
7
5
  // ../blocks/src/contracts/runtime.ts
8
6
  function decodeSuccess(value) {
@@ -138,6 +136,92 @@ var mediaSchema = z2.discriminatedUnion("type", [
138
136
  spreadsheetMediaSchema,
139
137
  archiveMediaSchema
140
138
  ]);
139
+
140
+ // ../blocks/src/lib/typeGuards.ts
141
+ function isRecord(value) {
142
+ return typeof value === "object" && value !== null && !Array.isArray(value);
143
+ }
144
+
145
+ // ../blocks/src/system/manifest/richTextSchema.ts
146
+ var TipTapMarkSchema = z.object({
147
+ type: z.string(),
148
+ attrs: z.record(z.string(), z.unknown()).optional()
149
+ });
150
+ var TipTapNodeSchema = z.lazy(
151
+ () => z.object({
152
+ type: z.string(),
153
+ content: z.array(TipTapNodeSchema).optional(),
154
+ text: z.string().optional(),
155
+ attrs: z.record(z.string(), z.unknown()).optional(),
156
+ marks: z.array(TipTapMarkSchema).optional()
157
+ })
158
+ );
159
+ z.union([
160
+ // Canonical: TipTap document directly
161
+ TipTapNodeSchema,
162
+ // Legacy (read-tolerance only): wrapped in { doc: {...} }
163
+ z.object({
164
+ doc: TipTapNodeSchema
165
+ })
166
+ ]);
167
+ var RichTextDocSchema = z.object({
168
+ type: z.literal("doc"),
169
+ content: z.array(TipTapNodeSchema)
170
+ });
171
+ function unwrapRichTextRoot(value) {
172
+ if (!isRecord(value)) return value;
173
+ if (!("doc" in value)) return value;
174
+ const inner = value.doc;
175
+ if (isRecord(inner) && inner.type === "doc") return inner;
176
+ return value;
177
+ }
178
+ function createHardBreakNode() {
179
+ return { type: "hardBreak" };
180
+ }
181
+ function parseRichTextInlineMarkdown(text2) {
182
+ const out = [];
183
+ const pushText = (value, marks) => {
184
+ if (!value) return;
185
+ out.push(
186
+ marks && marks.length > 0 ? { type: "text", text: value, marks } : { type: "text", text: value }
187
+ );
188
+ };
189
+ let rest = text2;
190
+ while (rest.length > 0) {
191
+ const start = rest.indexOf("**");
192
+ if (start === -1) {
193
+ pushText(rest);
194
+ break;
195
+ }
196
+ const end = rest.indexOf("**", start + 2);
197
+ if (end === -1) {
198
+ pushText(rest);
199
+ break;
200
+ }
201
+ pushText(rest.slice(0, start));
202
+ pushText(rest.slice(start + 2, end), [{ type: "bold" }]);
203
+ rest = rest.slice(end + 2);
204
+ }
205
+ return out;
206
+ }
207
+ function parseRichTextParagraphInlineMarkdown(text2) {
208
+ return text2.split("\n").flatMap((line, index) => {
209
+ const lineNodes = parseRichTextInlineMarkdown(line.trim());
210
+ return index === 0 ? lineNodes : [createHardBreakNode(), ...lineNodes];
211
+ });
212
+ }
213
+ function createRichTextDocFromMarkdown(markdown) {
214
+ const normalized = markdown.replace(/\r\n/g, "\n").trim();
215
+ if (!normalized) return { type: "doc", content: [] };
216
+ const paragraphs = normalized.split(/\n{2,}/).map((paragraph) => paragraph.trim()).filter(Boolean);
217
+ return {
218
+ type: "doc",
219
+ content: paragraphs.map((paragraph) => {
220
+ const inline = parseRichTextParagraphInlineMarkdown(paragraph);
221
+ return inline.length > 0 ? { type: "paragraph", content: inline } : { type: "paragraph" };
222
+ })
223
+ };
224
+ }
141
225
  var bookingDepositRefundPolicySchema = z.enum([
142
226
  "refundable",
143
227
  "non_refundable"
@@ -293,7 +377,13 @@ z.discriminatedUnion("kind", [
293
377
  z.object({ kind: z.literal("free"), currency: z.string() }),
294
378
  z.object({ kind: z.literal("exact"), amount: z.number(), currency: z.string() }),
295
379
  z.object({ kind: z.literal("from"), amount: z.number(), currency: z.string() }),
296
- z.object({ kind: z.literal("mixed"), paidFromAmount: z.number(), currency: z.string() }),
380
+ z.object({ kind: z.literal("range"), minAmount: z.number(), maxAmount: z.number(), currency: z.string() }),
381
+ z.object({
382
+ kind: z.literal("mixed"),
383
+ paidFromAmount: z.number(),
384
+ paidToAmount: z.number(),
385
+ currency: z.string()
386
+ }),
297
387
  z.object({ kind: z.literal("unavailable"), currency: z.string() }),
298
388
  z.object({ kind: z.literal("course"), display: publicCoursePriceDisplaySchema })
299
389
  ]);
@@ -301,7 +391,13 @@ var publicEventTicketTypePriceDisplaySchema = z.union([
301
391
  z.object({ kind: z.literal("free"), currency: z.string() }),
302
392
  z.object({ kind: z.literal("exact"), amount: z.number(), currency: z.string() }),
303
393
  z.object({ kind: z.literal("from"), amount: z.number(), currency: z.string() }),
304
- z.object({ kind: z.literal("mixed"), paidFromAmount: z.number(), currency: z.string() }),
394
+ z.object({ kind: z.literal("range"), minAmount: z.number(), maxAmount: z.number(), currency: z.string() }),
395
+ z.object({
396
+ kind: z.literal("mixed"),
397
+ paidFromAmount: z.number(),
398
+ paidToAmount: z.number(),
399
+ currency: z.string()
400
+ }),
305
401
  z.object({ kind: z.literal("unavailable"), currency: z.string() })
306
402
  ]);
307
403
  var publicEventAttendanceModeSchema = z.enum(["in_person", "online"]);
@@ -386,6 +482,9 @@ var publicEventSchema = z.object({
386
482
  seriesId: z.string(),
387
483
  title: z.string(),
388
484
  description: z.string().nullable(),
485
+ content: z.object({
486
+ body: RichTextDocSchema.nullable().optional()
487
+ }).optional(),
389
488
  presentation: z.object({
390
489
  cardTitleOverride: z.string().nullable().optional(),
391
490
  summary: z.string().nullable().optional(),
@@ -4312,12 +4411,12 @@ function resolveBookingSiteId(siteId, form) {
4312
4411
  return siteId || form?.siteId || "";
4313
4412
  }
4314
4413
  function normalizeBookingFormConfig(form) {
4315
- if (!isRecord(form)) return null;
4414
+ if (!isRecord2(form)) return null;
4316
4415
  const id = readNonEmptyString(form.id);
4317
4416
  const name = readNonEmptyString(form.name);
4318
4417
  if (!id || !name) return null;
4319
- const schemaSource = isRecord(form.schema) ? form.schema : isRecord(form.schemaJson) ? form.schemaJson : null;
4320
- const settingsSource = isRecord(form.settings) ? form.settings : isRecord(form.settingsJson) ? form.settingsJson : null;
4418
+ const schemaSource = isRecord2(form.schema) ? form.schema : isRecord2(form.schemaJson) ? form.schemaJson : null;
4419
+ const settingsSource = isRecord2(form.settings) ? form.settings : isRecord2(form.settingsJson) ? form.settingsJson : null;
4321
4420
  return {
4322
4421
  id,
4323
4422
  name,
@@ -4341,10 +4440,10 @@ function normalizeBookingServices(services) {
4341
4440
  if (Array.isArray(services)) {
4342
4441
  return services.filter(isBookingFormService).map(normalizeService);
4343
4442
  }
4344
- if (isRecord(services) && "services" in services) {
4443
+ if (isRecord2(services) && "services" in services) {
4345
4444
  return Array.isArray(services.services) ? services.services.filter(isBookingFormService).map(normalizeService) : [];
4346
4445
  }
4347
- return isRecord(services) ? Object.values(services).filter(isBookingFormService).map(normalizeService) : [];
4446
+ return isRecord2(services) ? Object.values(services).filter(isBookingFormService).map(normalizeService) : [];
4348
4447
  }
4349
4448
  function normalizeBookingSchema(value) {
4350
4449
  if (!value) return void 0;
@@ -4356,7 +4455,7 @@ function normalizeBookingSchema(value) {
4356
4455
  };
4357
4456
  }
4358
4457
  function readBookingFormField(value) {
4359
- if (!isRecord(value)) return null;
4458
+ if (!isRecord2(value)) return null;
4360
4459
  const id = readNonEmptyString(value.id);
4361
4460
  const label = readNonEmptyString(value.label);
4362
4461
  const type = readBookingFieldType(value.type);
@@ -4402,7 +4501,7 @@ function readBookingFieldOptions(value) {
4402
4501
  return options.length > 0 ? options : void 0;
4403
4502
  }
4404
4503
  function readBookingFieldOption(value) {
4405
- if (!isRecord(value)) return null;
4504
+ if (!isRecord2(value)) return null;
4406
4505
  const optionValue = readNonEmptyString(value.value);
4407
4506
  const label = readNonEmptyString(value.label);
4408
4507
  return optionValue && label ? { value: optionValue, label } : null;
@@ -4419,7 +4518,7 @@ function normalizeBookingSettings(value) {
4419
4518
  };
4420
4519
  }
4421
4520
  function isBookingFormService(value) {
4422
- return isRecord(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string";
4521
+ return isRecord2(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string";
4423
4522
  }
4424
4523
  function collectBookingCustomFields(data) {
4425
4524
  const customFields = {};
@@ -4449,7 +4548,7 @@ function readStringArray(value) {
4449
4548
  const strings = value.filter((item) => typeof item === "string");
4450
4549
  return strings.length > 0 ? strings : void 0;
4451
4550
  }
4452
- function isRecord(value) {
4551
+ function isRecord2(value) {
4453
4552
  return typeof value === "object" && value !== null;
4454
4553
  }
4455
4554
  function getBookingServicePaymentSelectionMode(service) {
@@ -5248,15 +5347,15 @@ function getLocalMinuteOfDay(isoTimestamp, timeZone) {
5248
5347
  const date = new Date(isoTimestamp);
5249
5348
  if (Number.isNaN(date.getTime())) return NaN;
5250
5349
  if (!isValidTimeZone(timeZone)) return NaN;
5251
- const parts = new Intl.DateTimeFormat("en-US", {
5350
+ const parts = new Intl.DateTimeFormat("en-GB", {
5252
5351
  timeZone,
5253
5352
  hour: "2-digit",
5254
5353
  minute: "2-digit",
5255
- hour12: false,
5256
5354
  hourCycle: "h23"
5257
5355
  }).formatToParts(date);
5258
- const hour = Number(parts.find((part) => part.type === "hour")?.value);
5356
+ const hourPart = Number(parts.find((part) => part.type === "hour")?.value);
5259
5357
  const minute = Number(parts.find((part) => part.type === "minute")?.value);
5358
+ const hour = hourPart === 24 ? 0 : hourPart;
5260
5359
  if (Number.isNaN(hour) || Number.isNaN(minute)) return NaN;
5261
5360
  return hour * MINUTES_PER_HOUR + minute;
5262
5361
  }
@@ -5559,141 +5658,6 @@ function groupItemsByDate(items, accessors) {
5559
5658
  return grouped;
5560
5659
  }
5561
5660
 
5562
- // ../blocks/src/system/blocks/courses/shared/pricing.ts
5563
- function isSaleWindowOpen(option, now) {
5564
- if (!option.isActive) {
5565
- return false;
5566
- }
5567
- if (option.saleStartsAt && new Date(option.saleStartsAt) > now) {
5568
- return false;
5569
- }
5570
- if (option.saleEndsAt && new Date(option.saleEndsAt) < now) {
5571
- return false;
5572
- }
5573
- return true;
5574
- }
5575
- function toExactOrFreeDisplay(amount, currency) {
5576
- if (amount <= 0) {
5577
- return { kind: "free", currency };
5578
- }
5579
- return { kind: "exact", amount, currency };
5580
- }
5581
- function getSelectableCoursePricingOptionsForNow(course, now) {
5582
- if (!course.pricing || course.pricing.pricingStrategy !== "tiered") {
5583
- return [];
5584
- }
5585
- return [...course.pricing.options].filter((option) => isSaleWindowOpen(option, now)).sort((left, right) => {
5586
- if (left.sortOrder !== right.sortOrder) {
5587
- return left.sortOrder - right.sortOrder;
5588
- }
5589
- if (left.priceAmount !== right.priceAmount) {
5590
- return left.priceAmount - right.priceAmount;
5591
- }
5592
- return left.name.localeCompare(right.name);
5593
- });
5594
- }
5595
- function resolveCoursePricingState(course, selectedPricingOptionId, nowInput = {}) {
5596
- const currency = course.pricing?.currency ?? course.currency;
5597
- if (!course.pricing) {
5598
- const legacyAmount = course.priceCents ?? 0;
5599
- return {
5600
- currency,
5601
- display: toExactOrFreeDisplay(legacyAmount, currency),
5602
- selectableOptions: [],
5603
- requiresSelection: false,
5604
- selectedOption: null,
5605
- selectedPriceAmount: legacyAmount,
5606
- selectedRequiresPayment: legacyAmount > 0,
5607
- hasPaidSelection: legacyAmount > 0,
5608
- hasFreeSelection: legacyAmount <= 0
5609
- };
5610
- }
5611
- switch (course.pricing.pricingStrategy) {
5612
- case "free":
5613
- return {
5614
- currency,
5615
- display: { kind: "free", currency },
5616
- selectableOptions: [],
5617
- requiresSelection: false,
5618
- selectedOption: null,
5619
- selectedPriceAmount: 0,
5620
- selectedRequiresPayment: false,
5621
- hasPaidSelection: false,
5622
- hasFreeSelection: true
5623
- };
5624
- case "single": {
5625
- const amount = course.pricing.singlePriceAmount ?? 0;
5626
- return {
5627
- currency,
5628
- display: toExactOrFreeDisplay(amount, currency),
5629
- selectableOptions: [],
5630
- requiresSelection: false,
5631
- selectedOption: null,
5632
- selectedPriceAmount: amount,
5633
- selectedRequiresPayment: amount > 0,
5634
- hasPaidSelection: amount > 0,
5635
- hasFreeSelection: amount <= 0
5636
- };
5637
- }
5638
- case "tiered": {
5639
- const selectableOptions = getSelectableCoursePricingOptionsForNow(
5640
- course,
5641
- resolvePlanningDateInput(nowInput)
5642
- );
5643
- const selectedOption = (selectedPricingOptionId ? selectableOptions.find((option) => option.id === selectedPricingOptionId) : null) ?? (selectableOptions.length === 1 ? selectableOptions[0] ?? null : null);
5644
- const lowestAmount = selectableOptions.reduce((lowest, option) => {
5645
- if (lowest === null || option.priceAmount < lowest) {
5646
- return option.priceAmount;
5647
- }
5648
- return lowest;
5649
- }, null);
5650
- const display = lowestAmount === null ? { kind: "unavailable", currency } : selectableOptions.length > 1 && lowestAmount > 0 ? { kind: "from", amount: lowestAmount, currency } : toExactOrFreeDisplay(lowestAmount, currency);
5651
- return {
5652
- currency,
5653
- display,
5654
- selectableOptions,
5655
- requiresSelection: selectableOptions.length > 1,
5656
- selectedOption,
5657
- selectedPriceAmount: selectedOption?.priceAmount ?? null,
5658
- selectedRequiresPayment: (selectedOption?.priceAmount ?? 0) > 0,
5659
- hasPaidSelection: selectableOptions.some((option) => option.priceAmount > 0),
5660
- hasFreeSelection: selectableOptions.some((option) => option.priceAmount === 0)
5661
- };
5662
- }
5663
- }
5664
- }
5665
- function formatCoursePriceDisplay(display, locale) {
5666
- switch (display.kind) {
5667
- case "free":
5668
- return "Free";
5669
- case "unavailable":
5670
- return "Pricing unavailable";
5671
- case "exact":
5672
- return formatCourseCurrencyAmount(display.amount, display.currency, { locale });
5673
- case "from":
5674
- return `From ${formatCourseCurrencyAmount(display.amount, display.currency, { locale })}`;
5675
- }
5676
- }
5677
- function formatCourseCurrencyAmount(amount, currency, options) {
5678
- const {
5679
- locale = "en-US",
5680
- minimumFractionDigits,
5681
- maximumFractionDigits
5682
- } = options ?? {};
5683
- return new Intl.NumberFormat(locale, {
5684
- style: "currency",
5685
- currency: currency.toUpperCase(),
5686
- ...minimumFractionDigits === void 0 ? {} : { minimumFractionDigits },
5687
- ...maximumFractionDigits === void 0 ? {} : { maximumFractionDigits }
5688
- }).format(amount / 100);
5689
- }
5690
- function formatCoursePriceAmount(amount, currency, locale) {
5691
- return formatCoursePriceDisplay(
5692
- amount > 0 ? { kind: "exact", amount, currency } : { kind: "free", currency },
5693
- locale
5694
- );
5695
- }
5696
-
5697
5661
  // ../blocks/src/system/runtime/nodes/events/shared/eventCapacity.ts
5698
5662
  function getEventAvailability(event) {
5699
5663
  if (event.capacity == null) {
@@ -5748,22 +5712,22 @@ function resolveRuntimeEventPricing(event) {
5748
5712
  function readCurrency(value) {
5749
5713
  return typeof value === "string" && value.trim().length > 0 ? value : DEFAULT_EVENT_CURRENCY;
5750
5714
  }
5751
- function isRecord2(value) {
5715
+ function isRecord3(value) {
5752
5716
  return typeof value === "object" && value !== null && !Array.isArray(value);
5753
5717
  }
5754
5718
  function isPublicEventPricing(value) {
5755
- if (!isRecord2(value) || typeof value.kind !== "string") return false;
5719
+ if (!isRecord3(value) || typeof value.kind !== "string") return false;
5756
5720
  return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "ticket_types" || value.kind === "course";
5757
5721
  }
5758
5722
  function isPublicEventTicketType(value) {
5759
- return isRecord2(value) && typeof value.id === "string";
5723
+ return isRecord3(value) && typeof value.id === "string";
5760
5724
  }
5761
5725
  function readTicketTypePriceDisplay(value, currency) {
5762
5726
  const display = readLegacyPriceDisplay(value, currency);
5763
5727
  return display.kind === "course" ? { kind: "unavailable", currency } : display;
5764
5728
  }
5765
5729
  function readLegacyPriceDisplay(value, currency) {
5766
- if (!isRecord2(value) || typeof value.kind !== "string") {
5730
+ if (!isRecord3(value) || typeof value.kind !== "string") {
5767
5731
  return { kind: "unavailable", currency };
5768
5732
  }
5769
5733
  const displayCurrency = readCurrency(value.currency);
@@ -5782,16 +5746,27 @@ function readLegacyPriceDisplay(value, currency) {
5782
5746
  amount: readAmount(value.amount) ?? 0,
5783
5747
  currency: displayCurrency
5784
5748
  } : { kind: "unavailable", currency };
5749
+ case "range": {
5750
+ const minAmount = readAmount(value.minAmount);
5751
+ const maxAmount = readAmount(value.maxAmount);
5752
+ return minAmount !== null && maxAmount !== null ? {
5753
+ kind: "range",
5754
+ minAmount,
5755
+ maxAmount,
5756
+ currency: displayCurrency
5757
+ } : { kind: "unavailable", currency };
5758
+ }
5785
5759
  case "mixed":
5786
5760
  return readAmount(value.paidFromAmount) !== null ? {
5787
5761
  kind: "mixed",
5788
5762
  paidFromAmount: readAmount(value.paidFromAmount) ?? 0,
5763
+ paidToAmount: readAmount(value.paidToAmount) ?? readAmount(value.paidFromAmount) ?? 0,
5789
5764
  currency: displayCurrency
5790
5765
  } : { kind: "unavailable", currency };
5791
5766
  case "unavailable":
5792
5767
  return { kind: "unavailable", currency: displayCurrency };
5793
5768
  case "course":
5794
- return isRecord2(value.display) ? {
5769
+ return isRecord3(value.display) ? {
5795
5770
  kind: "course",
5796
5771
  display: readCoursePriceDisplay(value.display, displayCurrency)
5797
5772
  } : {
@@ -5943,45 +5918,11 @@ function groupEventsByDate(events) {
5943
5918
  }
5944
5919
  return map;
5945
5920
  }
5946
- function formatCompactCurrencyAmount(amount, currency) {
5947
- return formatCourseCurrencyAmount(amount, currency, {
5948
- minimumFractionDigits: 0,
5949
- maximumFractionDigits: 2
5950
- });
5951
- }
5952
- function formatCourseEventPriceDisplay(display) {
5953
- if (display.kind !== "course") {
5954
- return "Course";
5955
- }
5956
- if (display.display.kind === "exact" || display.display.kind === "from") {
5957
- const amountLabel = formatCompactCurrencyAmount(
5958
- display.display.amount,
5959
- display.display.currency
5960
- );
5961
- return display.display.kind === "from" ? `Course (From ${amountLabel})` : `Course (${amountLabel})`;
5962
- }
5963
- return "Course";
5964
- }
5965
- function formatPublicEventPriceDisplay(display) {
5966
- switch (display.kind) {
5967
- case "free":
5968
- return "Free";
5969
- case "exact":
5970
- return formatCompactCurrencyAmount(display.amount, display.currency);
5971
- case "from":
5972
- return `From ${formatCompactCurrencyAmount(display.amount, display.currency)}`;
5973
- case "mixed":
5974
- return `Free / From ${formatCompactCurrencyAmount(display.paidFromAmount, display.currency)}`;
5975
- case "unavailable":
5976
- return "Pricing unavailable";
5977
- case "course":
5978
- return formatCourseEventPriceDisplay(display);
5979
- }
5980
- }
5981
5921
  function formatEventPrice(event) {
5982
- return formatPublicEventPriceDisplay(
5983
- publicEventPricingDisplay(resolveRuntimeEventPricing(event))
5984
- );
5922
+ return formatEventPricing(resolveRuntimeEventPricing(event), { decimals: "auto" });
5923
+ }
5924
+ function formatEventPriceDisplay(pricing) {
5925
+ return formatEventPricing(pricing, { decimals: "auto" });
5985
5926
  }
5986
5927
  function resolveEventCta(event, buttonText) {
5987
5928
  const { isFull: isSoldOut } = getEventAvailability(event);
@@ -6233,172 +6174,275 @@ function pickReadableTextColor(background) {
6233
6174
  return "rgb(var(--tb-onAccent, 255 255 255))";
6234
6175
  }
6235
6176
  }
6236
-
6237
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs
6238
- var mergeClasses = (...classes) => classes.filter((className, index, array) => {
6239
- return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
6240
- }).join(" ").trim();
6241
-
6242
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs
6243
- var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
6244
-
6245
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs
6246
- var toCamelCase = (string) => string.replace(
6247
- /^([A-Z])|[\s-_]+(\w)/g,
6248
- (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
6249
- );
6250
-
6251
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs
6252
- var toPascalCase = (string) => {
6253
- const camelCase = toCamelCase(string);
6254
- return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
6255
- };
6256
-
6257
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/defaultAttributes.mjs
6258
- var defaultAttributes = {
6259
- xmlns: "http://www.w3.org/2000/svg",
6260
- width: 24,
6261
- height: 24,
6262
- viewBox: "0 0 24 24",
6263
- fill: "none",
6264
- stroke: "currentColor",
6265
- strokeWidth: 2,
6266
- strokeLinecap: "round",
6267
- strokeLinejoin: "round"
6268
- };
6269
-
6270
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs
6271
- var hasA11yProp = (props) => {
6272
- for (const prop in props) {
6273
- if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
6274
- return true;
6275
- }
6276
- }
6277
- return false;
6278
- };
6279
- var LucideContext = createContext({});
6280
- var useLucideContext = () => useContext(LucideContext);
6281
-
6282
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/Icon.mjs
6283
- var Icon = forwardRef(
6284
- ({ color, size, strokeWidth, absoluteStrokeWidth, className = "", children, iconNode, ...rest }, ref) => {
6285
- const {
6286
- size: contextSize = 24,
6287
- strokeWidth: contextStrokeWidth = 2,
6288
- absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,
6289
- color: contextColor = "currentColor",
6290
- className: contextClass = ""
6291
- } = useLucideContext() ?? {};
6292
- const calculatedStrokeWidth = absoluteStrokeWidth ?? contextAbsoluteStrokeWidth ? Number(strokeWidth ?? contextStrokeWidth) * 24 / Number(size ?? contextSize) : strokeWidth ?? contextStrokeWidth;
6293
- return createElement(
6294
- "svg",
6295
- {
6296
- ref,
6297
- ...defaultAttributes,
6298
- width: size ?? contextSize ?? defaultAttributes.width,
6299
- height: size ?? contextSize ?? defaultAttributes.height,
6300
- stroke: color ?? contextColor,
6301
- strokeWidth: calculatedStrokeWidth,
6302
- className: mergeClasses("lucide", contextClass, className),
6303
- ...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
6304
- ...rest
6305
- },
6306
- [
6307
- ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
6308
- ...Array.isArray(children) ? children : [children]
6309
- ]
6310
- );
6311
- }
6312
- );
6313
-
6314
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/createLucideIcon.mjs
6315
- var createLucideIcon = (iconName, iconNode) => {
6316
- const Component = forwardRef(
6317
- ({ className, ...props }, ref) => createElement(Icon, {
6318
- ref,
6319
- iconNode,
6320
- className: mergeClasses(
6321
- `lucide-${toKebabCase(toPascalCase(iconName))}`,
6322
- `lucide-${iconName}`,
6323
- className
6324
- ),
6325
- ...props
6326
- })
6327
- );
6328
- Component.displayName = toPascalCase(iconName);
6329
- return Component;
6330
- };
6331
-
6332
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/arrow-right.mjs
6333
- var __iconNode = [
6334
- ["path", { d: "M5 12h14", key: "1ays0h" }],
6335
- ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
6336
- ];
6337
- var ArrowRight = createLucideIcon("arrow-right", __iconNode);
6338
-
6339
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/chevron-left.mjs
6340
- var __iconNode2 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
6341
- var ChevronLeft = createLucideIcon("chevron-left", __iconNode2);
6342
-
6343
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/chevron-right.mjs
6344
- var __iconNode3 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
6345
- var ChevronRight = createLucideIcon("chevron-right", __iconNode3);
6346
-
6347
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/clock.mjs
6348
- var __iconNode4 = [
6349
- ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
6350
- ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }]
6351
- ];
6352
- var Clock = createLucideIcon("clock", __iconNode4);
6353
-
6354
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/credit-card.mjs
6355
- var __iconNode5 = [
6356
- ["rect", { width: "20", height: "14", x: "2", y: "5", rx: "2", key: "ynyp8z" }],
6357
- ["line", { x1: "2", x2: "22", y1: "10", y2: "10", key: "1b3vmo" }]
6358
- ];
6359
- var CreditCard = createLucideIcon("credit-card", __iconNode5);
6360
-
6361
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/sparkles.mjs
6362
- var __iconNode6 = [
6363
- [
6364
- "path",
6365
- {
6366
- d: "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",
6367
- key: "1s2grr"
6368
- }
6369
- ],
6370
- ["path", { d: "M20 2v4", key: "1rf3ol" }],
6371
- ["path", { d: "M22 4h-4", key: "gwowj6" }],
6372
- ["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
6373
- ];
6374
- var Sparkles = createLucideIcon("sparkles", __iconNode6);
6375
-
6376
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/star.mjs
6377
- var __iconNode7 = [
6378
- [
6379
- "path",
6380
- {
6381
- d: "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",
6382
- key: "r04s7s"
6383
- }
6384
- ]
6385
- ];
6386
- var Star = createLucideIcon("star", __iconNode7);
6387
-
6388
- // ../../node_modules/.pnpm/lucide-react@1.21.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/ticket.mjs
6389
- var __iconNode8 = [
6390
- [
6391
- "path",
6177
+ function createIcon(displayName, children) {
6178
+ const Icon = ({
6179
+ size = "1em",
6180
+ strokeWidth = 2,
6181
+ title,
6182
+ className,
6183
+ focusable = false,
6184
+ role,
6185
+ ...props
6186
+ }) => /* @__PURE__ */ jsxs(
6187
+ "svg",
6392
6188
  {
6393
- d: "M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z",
6394
- key: "qn84l0"
6189
+ "aria-hidden": title ? void 0 : true,
6190
+ className,
6191
+ "data-rb-icon": displayName.replace(/Icon$/, ""),
6192
+ fill: "none",
6193
+ focusable,
6194
+ height: size,
6195
+ role: title ? role ?? "img" : role,
6196
+ stroke: "currentColor",
6197
+ strokeLinecap: "round",
6198
+ strokeLinejoin: "round",
6199
+ strokeWidth,
6200
+ viewBox: "0 0 24 24",
6201
+ width: size,
6202
+ xmlns: "http://www.w3.org/2000/svg",
6203
+ ...props,
6204
+ children: [
6205
+ title ? /* @__PURE__ */ jsx("title", { children: title }) : null,
6206
+ children
6207
+ ]
6395
6208
  }
6396
- ],
6397
- ["path", { d: "M13 5v2", key: "dyzc3o" }],
6398
- ["path", { d: "M13 17v2", key: "1ont0d" }],
6399
- ["path", { d: "M13 11v2", key: "1wjjxi" }]
6400
- ];
6401
- var Ticket = createLucideIcon("ticket", __iconNode8);
6209
+ );
6210
+ Icon.displayName = displayName;
6211
+ return Icon;
6212
+ }
6213
+ createIcon("ArrowDownIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6214
+ /* @__PURE__ */ jsx("path", { d: "M12 5v14" }),
6215
+ /* @__PURE__ */ jsx("path", { d: "m6 13 6 6 6-6" })
6216
+ ] }));
6217
+ createIcon("ArrowLeftIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6218
+ /* @__PURE__ */ jsx("path", { d: "M19 12H5" }),
6219
+ /* @__PURE__ */ jsx("path", { d: "m11 6-6 6 6 6" })
6220
+ ] }));
6221
+ var ArrowRightIcon = createIcon("ArrowRightIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6222
+ /* @__PURE__ */ jsx("path", { d: "M5 12h14" }),
6223
+ /* @__PURE__ */ jsx("path", { d: "m13 6 6 6-6 6" })
6224
+ ] }));
6225
+ createIcon("AwardIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6226
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "8", r: "4" }),
6227
+ /* @__PURE__ */ jsx("path", { d: "m8.5 12.5-1.5 7 5-3 5 3-1.5-7" })
6228
+ ] }));
6229
+ createIcon("BadgeCheckIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6230
+ /* @__PURE__ */ jsx("path", { d: "m8 3 4-1 4 1 3 3 1 4-1 4-3 3-4 1-4-1-3-3-1-4 1-4Z" }),
6231
+ /* @__PURE__ */ jsx("path", { d: "m8.5 11.5 2.5 2.5 4.5-5" })
6232
+ ] }));
6233
+ createIcon("BookOpenIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6234
+ /* @__PURE__ */ jsx("path", { d: "M4 5.5A3 3 0 0 1 7 4h13v15H7a3 3 0 0 0-3 1.5Z" }),
6235
+ /* @__PURE__ */ jsx("path", { d: "M4 5.5V20" }),
6236
+ /* @__PURE__ */ jsx("path", { d: "M12 4v15" })
6237
+ ] }));
6238
+ createIcon("BrainIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6239
+ /* @__PURE__ */ jsx("path", { d: "M9 4a4 4 0 0 0-4 4 4 4 0 0 0 0 8 4 4 0 0 0 4 4" }),
6240
+ /* @__PURE__ */ jsx("path", { d: "M15 4a4 4 0 0 1 4 4 4 4 0 0 1 0 8 4 4 0 0 1-4 4" }),
6241
+ /* @__PURE__ */ jsx("path", { d: "M9 4v16" }),
6242
+ /* @__PURE__ */ jsx("path", { d: "M15 4v16" }),
6243
+ /* @__PURE__ */ jsx("path", { d: "M9 8h6" }),
6244
+ /* @__PURE__ */ jsx("path", { d: "M9 14h6" })
6245
+ ] }));
6246
+ createIcon("BriefcaseBusinessIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6247
+ /* @__PURE__ */ jsx("path", { d: "M9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" }),
6248
+ /* @__PURE__ */ jsx("rect", { x: "3", y: "7", width: "18", height: "13", rx: "2" }),
6249
+ /* @__PURE__ */ jsx("path", { d: "M3 12h18" }),
6250
+ /* @__PURE__ */ jsx("path", { d: "M9 12v2" }),
6251
+ /* @__PURE__ */ jsx("path", { d: "M15 12v2" })
6252
+ ] }));
6253
+ createIcon("CalendarIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6254
+ /* @__PURE__ */ jsx("path", { d: "M8 3v4" }),
6255
+ /* @__PURE__ */ jsx("path", { d: "M16 3v4" }),
6256
+ /* @__PURE__ */ jsx("rect", { x: "4", y: "5", width: "16", height: "16", rx: "2" }),
6257
+ /* @__PURE__ */ jsx("path", { d: "M4 10h16" })
6258
+ ] }));
6259
+ createIcon("CheckIcon", /* @__PURE__ */ jsx("path", { d: "m5 12 4 4L19 6" }));
6260
+ createIcon("ChevronDownIcon", /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" }));
6261
+ createIcon("ChevronLeftIcon", /* @__PURE__ */ jsx("path", { d: "m15 18-6-6 6-6" }));
6262
+ createIcon("ChevronRightIcon", /* @__PURE__ */ jsx("path", { d: "m9 18 6-6-6-6" }));
6263
+ createIcon("ChevronUpIcon", /* @__PURE__ */ jsx("path", { d: "m18 15-6-6-6 6" }));
6264
+ createIcon("CircleMinusIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6265
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "9" }),
6266
+ /* @__PURE__ */ jsx("path", { d: "M8 12h8" })
6267
+ ] }));
6268
+ createIcon("CirclePlusIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6269
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "9" }),
6270
+ /* @__PURE__ */ jsx("path", { d: "M8 12h8" }),
6271
+ /* @__PURE__ */ jsx("path", { d: "M12 8v8" })
6272
+ ] }));
6273
+ var ClockIcon = createIcon("ClockIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6274
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "9" }),
6275
+ /* @__PURE__ */ jsx("path", { d: "M12 7v5l3 2" })
6276
+ ] }));
6277
+ createIcon("CompassIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6278
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "9" }),
6279
+ /* @__PURE__ */ jsx("path", { d: "m15 9-2 6-4 2 2-6Z" })
6280
+ ] }));
6281
+ createIcon("DownloadIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6282
+ /* @__PURE__ */ jsx("path", { d: "M12 3v12" }),
6283
+ /* @__PURE__ */ jsx("path", { d: "m7 10 5 5 5-5" }),
6284
+ /* @__PURE__ */ jsx("path", { d: "M5 21h14" })
6285
+ ] }));
6286
+ createIcon("ExternalLinkIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6287
+ /* @__PURE__ */ jsx("path", { d: "M14 4h6v6" }),
6288
+ /* @__PURE__ */ jsx("path", { d: "m10 14 10-10" }),
6289
+ /* @__PURE__ */ jsx("path", { d: "M20 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h5" })
6290
+ ] }));
6291
+ createIcon("FileArchiveIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6292
+ /* @__PURE__ */ jsx("path", { d: "M14 2H7a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7Z" }),
6293
+ /* @__PURE__ */ jsx("path", { d: "M14 2v5h5" }),
6294
+ /* @__PURE__ */ jsx("path", { d: "M10 7h2" }),
6295
+ /* @__PURE__ */ jsx("path", { d: "M10 11h2" }),
6296
+ /* @__PURE__ */ jsx("path", { d: "M10 15h4v4h-4Z" })
6297
+ ] }));
6298
+ createIcon("FileAudioIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6299
+ /* @__PURE__ */ jsx("path", { d: "M14 2H7a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7Z" }),
6300
+ /* @__PURE__ */ jsx("path", { d: "M14 2v5h5" }),
6301
+ /* @__PURE__ */ jsx("path", { d: "M10 16V10l5-2v6" }),
6302
+ /* @__PURE__ */ jsx("circle", { cx: "9", cy: "17", r: "1.5" }),
6303
+ /* @__PURE__ */ jsx("circle", { cx: "15", cy: "15", r: "1.5" })
6304
+ ] }));
6305
+ createIcon("FileSpreadsheetIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6306
+ /* @__PURE__ */ jsx("path", { d: "M14 2H7a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7Z" }),
6307
+ /* @__PURE__ */ jsx("path", { d: "M14 2v5h5" }),
6308
+ /* @__PURE__ */ jsx("path", { d: "M8 12h8" }),
6309
+ /* @__PURE__ */ jsx("path", { d: "M8 16h8" }),
6310
+ /* @__PURE__ */ jsx("path", { d: "M12 10v8" })
6311
+ ] }));
6312
+ createIcon("FileTextIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6313
+ /* @__PURE__ */ jsx("path", { d: "M14 2H7a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7Z" }),
6314
+ /* @__PURE__ */ jsx("path", { d: "M14 2v5h5" }),
6315
+ /* @__PURE__ */ jsx("path", { d: "M9 13h6" }),
6316
+ /* @__PURE__ */ jsx("path", { d: "M9 17h6" })
6317
+ ] }));
6318
+ createIcon("Flower2Icon", /* @__PURE__ */ jsxs(Fragment, { children: [
6319
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "2" }),
6320
+ /* @__PURE__ */ jsx("path", { d: "M12 10C8 4 16 4 12 10Z" }),
6321
+ /* @__PURE__ */ jsx("path", { d: "M14 12c6-4 6 4 0 0Z" }),
6322
+ /* @__PURE__ */ jsx("path", { d: "M12 14c4 6-4 6 0 0Z" }),
6323
+ /* @__PURE__ */ jsx("path", { d: "M10 12c-6 4-6-4 0 0Z" })
6324
+ ] }));
6325
+ createIcon("GlobeIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6326
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "9" }),
6327
+ /* @__PURE__ */ jsx("path", { d: "M3 12h18" }),
6328
+ /* @__PURE__ */ jsx("path", { d: "M12 3a14 14 0 0 1 0 18" }),
6329
+ /* @__PURE__ */ jsx("path", { d: "M12 3a14 14 0 0 0 0 18" })
6330
+ ] }));
6331
+ createIcon("GraduationCapIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6332
+ /* @__PURE__ */ jsx("path", { d: "m3 8 9-4 9 4-9 4Z" }),
6333
+ /* @__PURE__ */ jsx("path", { d: "M7 10v5c3 3 7 3 10 0v-5" }),
6334
+ /* @__PURE__ */ jsx("path", { d: "M21 8v6" })
6335
+ ] }));
6336
+ createIcon("HandHeartIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6337
+ /* @__PURE__ */ jsx("path", { d: "M3 15h4l4 4h5l5-5" }),
6338
+ /* @__PURE__ */ jsx("path", { d: "M7 15l3-3h4a2 2 0 0 1 2 2" }),
6339
+ /* @__PURE__ */ jsx("path", { d: "M12 8c-2-2-5 1-2 4l2 2 2-2c3-3 0-6-2-4Z" })
6340
+ ] }));
6341
+ createIcon("HeartIcon", /* @__PURE__ */ jsx("path", { d: "M12 21s-8-5-8-11a5 5 0 0 1 8-4 5 5 0 0 1 8 4c0 6-8 11-8 11Z" }));
6342
+ createIcon("HeartHandshakeIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6343
+ /* @__PURE__ */ jsx("path", { d: "M12 21s-8-5-8-11a5 5 0 0 1 8-4 5 5 0 0 1 8 4c0 6-8 11-8 11Z" }),
6344
+ /* @__PURE__ */ jsx("path", { d: "m8 12 2 2 2-2 2 2 2-2" })
6345
+ ] }));
6346
+ createIcon("HomeIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6347
+ /* @__PURE__ */ jsx("path", { d: "m3 11 9-8 9 8" }),
6348
+ /* @__PURE__ */ jsx("path", { d: "M5 10v10h14V10" }),
6349
+ /* @__PURE__ */ jsx("path", { d: "M9 20v-6h6v6" })
6350
+ ] }));
6351
+ createIcon("InfoIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6352
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "9" }),
6353
+ /* @__PURE__ */ jsx("path", { d: "M12 11v6" }),
6354
+ /* @__PURE__ */ jsx("path", { d: "M12 7h.01" })
6355
+ ] }));
6356
+ createIcon("LeafIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6357
+ /* @__PURE__ */ jsx("path", { d: "M5 20C5 10 12 4 21 4c0 9-6 16-16 16Z" }),
6358
+ /* @__PURE__ */ jsx("path", { d: "M5 20c4-5 8-8 13-11" })
6359
+ ] }));
6360
+ createIcon("LightbulbIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6361
+ /* @__PURE__ */ jsx("path", { d: "M9 18h6" }),
6362
+ /* @__PURE__ */ jsx("path", { d: "M10 22h4" }),
6363
+ /* @__PURE__ */ jsx("path", { d: "M8 14a6 6 0 1 1 8 0c-1 1-1 2-1 4H9c0-2 0-3-1-4Z" })
6364
+ ] }));
6365
+ createIcon("LockIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6366
+ /* @__PURE__ */ jsx("rect", { x: "5", y: "10", width: "14", height: "10", rx: "2" }),
6367
+ /* @__PURE__ */ jsx("path", { d: "M8 10V7a4 4 0 0 1 8 0v3" })
6368
+ ] }));
6369
+ createIcon("MailIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6370
+ /* @__PURE__ */ jsx("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
6371
+ /* @__PURE__ */ jsx("path", { d: "m3 7 9 6 9-6" })
6372
+ ] }));
6373
+ createIcon("MapPinIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6374
+ /* @__PURE__ */ jsx("path", { d: "M12 21s7-5 7-12a7 7 0 0 0-14 0c0 7 7 12 7 12Z" }),
6375
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "9", r: "2.5" })
6376
+ ] }));
6377
+ createIcon("MessageCircleIcon", /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("path", { d: "M21 11.5a8.5 8.5 0 0 1-12.6 7.4L3 20l1.1-5.3A8.5 8.5 0 1 1 21 11.5Z" }) }));
6378
+ createIcon("MinusIcon", /* @__PURE__ */ jsx("path", { d: "M5 12h14" }));
6379
+ createIcon("PackageIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6380
+ /* @__PURE__ */ jsx("path", { d: "m12 3 8 4.5v9L12 21l-8-4.5v-9Z" }),
6381
+ /* @__PURE__ */ jsx("path", { d: "M12 12 4 7.5" }),
6382
+ /* @__PURE__ */ jsx("path", { d: "m12 12 8-4.5" }),
6383
+ /* @__PURE__ */ jsx("path", { d: "M12 12v9" })
6384
+ ] }));
6385
+ createIcon("PhoneIcon", /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("path", { d: "M22 16.9v3a2 2 0 0 1-2.2 2A19 19 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7l.4 2.5a2 2 0 0 1-.6 1.8L7.7 9.2a13 13 0 0 0 7.1 7.1l1.2-1.2a2 2 0 0 1 1.8-.6l2.5.4a2 2 0 0 1 1.7 2Z" }) }));
6386
+ createIcon("PlayIcon", /* @__PURE__ */ jsx("path", { d: "m8 5 11 7-11 7Z" }));
6387
+ createIcon("PlusIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6388
+ /* @__PURE__ */ jsx("path", { d: "M12 5v14" }),
6389
+ /* @__PURE__ */ jsx("path", { d: "M5 12h14" })
6390
+ ] }));
6391
+ createIcon("ShieldIcon", /* @__PURE__ */ jsx("path", { d: "M12 22s8-4 8-11V5l-8-3-8 3v6c0 7 8 11 8 11Z" }));
6392
+ createIcon("ShoppingBagIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6393
+ /* @__PURE__ */ jsx("path", { d: "M6 8h12l1 13H5Z" }),
6394
+ /* @__PURE__ */ jsx("path", { d: "M9 8a3 3 0 0 1 6 0" })
6395
+ ] }));
6396
+ createIcon("ShoppingCartIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6397
+ /* @__PURE__ */ jsx("circle", { cx: "9", cy: "20", r: "1" }),
6398
+ /* @__PURE__ */ jsx("circle", { cx: "18", cy: "20", r: "1" }),
6399
+ /* @__PURE__ */ jsx("path", { d: "M2 3h3l3 12h10l3-8H7" })
6400
+ ] }));
6401
+ createIcon("SmileIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6402
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "9" }),
6403
+ /* @__PURE__ */ jsx("path", { d: "M8 14s1.5 2 4 2 4-2 4-2" }),
6404
+ /* @__PURE__ */ jsx("path", { d: "M9 9h.01" }),
6405
+ /* @__PURE__ */ jsx("path", { d: "M15 9h.01" })
6406
+ ] }));
6407
+ createIcon("SparklesIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6408
+ /* @__PURE__ */ jsx("path", { d: "m12 3 2 5 5 2-5 2-2 5-2-5-5-2 5-2Z" }),
6409
+ /* @__PURE__ */ jsx("path", { d: "m19 15 .8 2.2L22 18l-2.2.8L19 21l-.8-2.2L16 18l2.2-.8Z" })
6410
+ ] }));
6411
+ createIcon("SproutIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6412
+ /* @__PURE__ */ jsx("path", { d: "M12 21V10" }),
6413
+ /* @__PURE__ */ jsx("path", { d: "M12 10C8 5 4 6 3 10c4 1 7 0 9 0Z" }),
6414
+ /* @__PURE__ */ jsx("path", { d: "M12 11c4-5 8-4 9 0-4 1-7 0-9 0Z" })
6415
+ ] }));
6416
+ createIcon("StarIcon", /* @__PURE__ */ jsx("path", { d: "m12 3 2.8 5.7 6.2.9-4.5 4.4 1.1 6.2L12 17.2 6.4 20.2 7.5 14 3 9.6l6.2-.9Z" }));
6417
+ createIcon("TargetIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6418
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "9" }),
6419
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "5" }),
6420
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "1" })
6421
+ ] }));
6422
+ createIcon("UploadIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6423
+ /* @__PURE__ */ jsx("path", { d: "M12 21V9" }),
6424
+ /* @__PURE__ */ jsx("path", { d: "m7 14 5-5 5 5" }),
6425
+ /* @__PURE__ */ jsx("path", { d: "M5 3h14" })
6426
+ ] }));
6427
+ createIcon("UserRoundCheckIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6428
+ /* @__PURE__ */ jsx("circle", { cx: "10", cy: "8", r: "4" }),
6429
+ /* @__PURE__ */ jsx("path", { d: "M3 21a7 7 0 0 1 11.5-5.3" }),
6430
+ /* @__PURE__ */ jsx("path", { d: "m15 19 2 2 4-5" })
6431
+ ] }));
6432
+ createIcon("UsersIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6433
+ /* @__PURE__ */ jsx("circle", { cx: "9", cy: "8", r: "4" }),
6434
+ /* @__PURE__ */ jsx("path", { d: "M2 21a7 7 0 0 1 14 0" }),
6435
+ /* @__PURE__ */ jsx("path", { d: "M17 11a4 4 0 0 0 0-7" }),
6436
+ /* @__PURE__ */ jsx("path", { d: "M22 21a7 7 0 0 0-5-6.7" })
6437
+ ] }));
6438
+ createIcon("WrenchIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6439
+ /* @__PURE__ */ jsx("path", { d: "M14.7 6.3A5 5 0 0 0 7 12.6L3.5 16a2.1 2.1 0 0 0 3 3L10 15.5A5 5 0 0 0 16.7 9Z" }),
6440
+ /* @__PURE__ */ jsx("path", { d: "m15 5 4 4" })
6441
+ ] }));
6442
+ createIcon("XIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
6443
+ /* @__PURE__ */ jsx("path", { d: "M18 6 6 18" }),
6444
+ /* @__PURE__ */ jsx("path", { d: "m6 6 12 12" })
6445
+ ] }));
6402
6446
  var EventCompactRow = ({
6403
6447
  event,
6404
6448
  buttonVariant = "primary",
@@ -6431,13 +6475,13 @@ var EventCompactRow = ({
6431
6475
  ] }),
6432
6476
  /* @__PURE__ */ jsxs("div", { className: "event-compact-row-action", children: [
6433
6477
  /* @__PURE__ */ jsxs("span", { className: "event-compact-row-datetime", children: [
6434
- /* @__PURE__ */ jsx(Clock, { "aria-hidden": "true" }),
6478
+ /* @__PURE__ */ jsx(ClockIcon, { "aria-hidden": "true" }),
6435
6479
  formattedTime,
6436
6480
  /* @__PURE__ */ jsx("span", { className: "event-compact-row-action-price", children: price })
6437
6481
  ] }),
6438
6482
  cta.hidden ? /* @__PURE__ */ jsx("span", { className: "event-compact-row-status", children: cta.label }) : /* @__PURE__ */ jsxs("a", { href: cta.href, className: `${buttonClass} event-compact-row-cta`, children: [
6439
6483
  /* @__PURE__ */ jsx("span", { children: cta.label }),
6440
- /* @__PURE__ */ jsx(ArrowRight, { "aria-hidden": "true" })
6484
+ /* @__PURE__ */ jsx(ArrowRightIcon, { "aria-hidden": "true" })
6441
6485
  ] })
6442
6486
  ] })
6443
6487
  ] })
@@ -7246,6 +7290,7 @@ var eventRegistrationSourceSchema = z.object({
7246
7290
  successMessage: z.string().optional(),
7247
7291
  waitlistMessage: z.string().optional(),
7248
7292
  buttonVariant: registrationButtonVariantSchema.optional(),
7293
+ overlayEnabled: z.boolean().optional(),
7249
7294
  spamProtectionEnabled: z.boolean().optional(),
7250
7295
  stage: previewStageSchema.optional(),
7251
7296
  supportEmail: z.string().optional()
@@ -7269,6 +7314,7 @@ var eventRegistrationHydrationSchema = z.object({
7269
7314
  successMessage: z.string().optional(),
7270
7315
  waitlistMessage: z.string().optional(),
7271
7316
  buttonVariant: registrationButtonVariantSchema.optional(),
7317
+ overlayEnabled: z.boolean().optional(),
7272
7318
  spamProtectionEnabled: z.boolean().optional(),
7273
7319
  supportEmail: z.string().optional()
7274
7320
  });
@@ -7384,13 +7430,14 @@ var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
7384
7430
  successMessage: source.successMessage,
7385
7431
  waitlistMessage: source.waitlistMessage,
7386
7432
  buttonVariant: source.buttonVariant,
7433
+ overlayEnabled: source.overlayEnabled,
7387
7434
  spamProtectionEnabled: source.spamProtectionEnabled,
7388
7435
  supportEmail: source.supportEmail
7389
7436
  }
7390
7437
  })
7391
7438
  });
7392
7439
  function normalizeEventRegistrationEventInput(value) {
7393
- if (!isRecord3(value)) {
7440
+ if (!isRecord4(value)) {
7394
7441
  return value;
7395
7442
  }
7396
7443
  return {
@@ -7398,7 +7445,7 @@ function normalizeEventRegistrationEventInput(value) {
7398
7445
  pricing: resolveRuntimeEventPricing(value)
7399
7446
  };
7400
7447
  }
7401
- function isRecord3(value) {
7448
+ function isRecord4(value) {
7402
7449
  return typeof value === "object" && value !== null && !Array.isArray(value);
7403
7450
  }
7404
7451
  var eventRegistrationInteractiveIslandPropsCodec = createInteractiveIslandCodec({
@@ -7662,6 +7709,60 @@ var giftingInteractiveIslandPropsCodec = createInteractiveIslandCodec({
7662
7709
  })
7663
7710
  });
7664
7711
 
7712
+ // ../blocks/src/system/blocks/newsletter-signup-destination.ts
7713
+ function parseNewsletterSignupBlockId(value) {
7714
+ const trimmed = parseTrimmedString(value);
7715
+ return trimmed && BLOCK_ID_PATTERN.test(trimmed) ? trimmed : null;
7716
+ }
7717
+ function parseSignedNewsletterDestinationRef(value) {
7718
+ const trimmed = parseTrimmedString(value);
7719
+ return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
7720
+ }
7721
+ function parseNewsletterSignupDestinationProvider(value) {
7722
+ return value === "riverbank" || value === "mailchimp" ? value : null;
7723
+ }
7724
+ function buildNewsletterSignupBlockRef(blockId) {
7725
+ const parsed = parseNewsletterSignupBlockId(blockId);
7726
+ return parsed ? { tag: "block_ref", blockId: parsed } : null;
7727
+ }
7728
+ function normalizeNewsletterSignupEditorValuesForDestination(values) {
7729
+ const destinationProvider = parseNewsletterSignupDestinationProvider(values.destinationProvider) ?? "riverbank";
7730
+ if (destinationProvider === "mailchimp") {
7731
+ return {
7732
+ destinationProvider,
7733
+ mailchimpAudienceId: values.mailchimpAudienceId,
7734
+ mailchimpTags: values.mailchimpTags
7735
+ };
7736
+ }
7737
+ return {
7738
+ destinationProvider,
7739
+ listId: values.listId,
7740
+ tags: values.tags
7741
+ };
7742
+ }
7743
+ function deriveNewsletterSignupRuntimeSource(values) {
7744
+ const normalized = normalizeNewsletterSignupEditorValuesForDestination(values);
7745
+ if (normalized.destinationProvider === "mailchimp") {
7746
+ return {
7747
+ destinationProvider: "mailchimp",
7748
+ listId: null,
7749
+ tags: null
7750
+ };
7751
+ }
7752
+ return {
7753
+ destinationProvider: "riverbank",
7754
+ listId: parseTrimmedString(normalized.listId),
7755
+ tags: parseTrimmedString(normalized.tags)
7756
+ };
7757
+ }
7758
+ var BLOCK_ID_PATTERN = /^[A-Za-z0-9._:-]{1,200}$/;
7759
+ var SIGNED_DESTINATION_REF_PATTERN = /^[A-Za-z0-9._~-]{16,1000}$/;
7760
+ function parseTrimmedString(value) {
7761
+ if (typeof value !== "string") return null;
7762
+ const trimmed = value.trim();
7763
+ return trimmed.length > 0 ? trimmed : null;
7764
+ }
7765
+
7665
7766
  // ../blocks/src/system/runtime/nodes/newsletter-form.types.ts
7666
7767
  function getPresetFields(preset, options) {
7667
7768
  const includePhone = Boolean(options?.includePhone);
@@ -7714,6 +7815,7 @@ function withOptionalPhone(fields, includePhone) {
7714
7815
 
7715
7816
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
7716
7817
  var newsletterPresetSchema = z.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
7818
+ var newsletterDestinationProviderSchema = z.enum(["riverbank", "mailchimp"]);
7717
7819
  var newsletterFieldSchema = z.object({
7718
7820
  id: z.string(),
7719
7821
  type: z.enum(["email", "text"]),
@@ -7721,10 +7823,24 @@ var newsletterFieldSchema = z.object({
7721
7823
  required: z.boolean(),
7722
7824
  placeholder: z.string().optional()
7723
7825
  });
7826
+ var newsletterSignupBlockIdSchema = z.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
7827
+ var signedNewsletterDestinationRefSchema = z.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
7828
+ var newsletterPublicDestinationRefSchema = z.discriminatedUnion("tag", [
7829
+ z.object({
7830
+ tag: z.literal("block_ref"),
7831
+ blockId: newsletterSignupBlockIdSchema
7832
+ }),
7833
+ z.object({
7834
+ tag: z.literal("signed_destination_ref"),
7835
+ token: signedNewsletterDestinationRefSchema
7836
+ })
7837
+ ]);
7724
7838
  var newsletterSourceSchema = z.object({
7839
+ blockId: z.string().nullable().optional(),
7725
7840
  siteId: z.string().optional(),
7726
7841
  apiBaseUrl: z.string().optional(),
7727
7842
  listId: z.string().nullable().optional(),
7843
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
7728
7844
  preset: newsletterPresetSchema.optional(),
7729
7845
  includePhone: z.boolean().optional(),
7730
7846
  buttonLabel: z.string().nullable().optional(),
@@ -7743,6 +7859,7 @@ var newsletterDisplaySchema = z.object({
7743
7859
  fields: z.array(newsletterFieldSchema)
7744
7860
  });
7745
7861
  var newsletterHydrationSchema = z.object({
7862
+ destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
7746
7863
  listId: z.string().nullable().optional(),
7747
7864
  preset: newsletterPresetSchema,
7748
7865
  includePhone: z.boolean(),
@@ -7776,16 +7893,20 @@ var newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
7776
7893
  source: createZodCodec(newsletterSourceSchema),
7777
7894
  render: createZodCodec(newsletterRenderSchema)
7778
7895
  },
7779
- buildRender: (source) => ({
7780
- display: buildNewsletterDisplay(source),
7781
- hydration: {
7782
- listId: source.listId,
7783
- preset: source.preset ?? "emailOnly",
7784
- includePhone: source.includePhone ?? false,
7785
- tags: source.tags ?? null,
7786
- spamProtectionEnabled: source.spamProtectionEnabled
7787
- }
7788
- })
7896
+ buildRender: (source) => {
7897
+ const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
7898
+ return {
7899
+ display: buildNewsletterDisplay(source),
7900
+ hydration: {
7901
+ destinationRef: buildNewsletterSignupBlockRef(source.blockId),
7902
+ listId: runtimeSource.listId,
7903
+ preset: source.preset ?? "emailOnly",
7904
+ includePhone: source.includePhone ?? false,
7905
+ tags: runtimeSource.tags,
7906
+ spamProtectionEnabled: source.spamProtectionEnabled
7907
+ }
7908
+ };
7909
+ }
7789
7910
  });
7790
7911
  var newsletterFormInteractiveIslandPropsCodec = createInteractiveIslandCodec({
7791
7912
  runtime: newsletterFormBlockRuntime,
@@ -7797,6 +7918,20 @@ var newsletterFormInteractiveIslandPropsCodec = createInteractiveIslandCodec({
7797
7918
  apiBaseUrl: value.apiBaseUrl
7798
7919
  })
7799
7920
  });
7921
+ function parseRequiredNewsletterSignupBlockId(value) {
7922
+ const parsed = parseNewsletterSignupBlockId(value);
7923
+ if (!parsed) {
7924
+ throw new Error("Newsletter signup block destination ref requires blockId");
7925
+ }
7926
+ return parsed;
7927
+ }
7928
+ function parseRequiredSignedNewsletterDestinationRef(value) {
7929
+ const parsed = parseSignedNewsletterDestinationRef(value);
7930
+ if (!parsed) {
7931
+ throw new Error("Newsletter signup signed destination ref requires token");
7932
+ }
7933
+ return parsed;
7934
+ }
7800
7935
  var publicProductVariantSchema = z.object({
7801
7936
  id: z.string(),
7802
7937
  title: z.string(),
@@ -8074,10 +8209,7 @@ function resolveSelectedProduct(products, contentEntry, productSlug) {
8074
8209
 
8075
8210
  // ../blocks/src/system/runtime/nodes/commerce/shared/display.ts
8076
8211
  function formatCommercePrice(cents, currency) {
8077
- return new Intl.NumberFormat("en-US", {
8078
- style: "currency",
8079
- currency: currency.toUpperCase()
8080
- }).format(cents / 100);
8212
+ return formatCurrencyAmount(cents, currency);
8081
8213
  }
8082
8214
  function getPassesHeading(passes, explicitHeading) {
8083
8215
  if (explicitHeading) return explicitHeading;
@@ -8730,32 +8862,5 @@ function defineIslandPropsDecoder(kind) {
8730
8862
  throw new IslandPropsDecodeError(kind, result.issues);
8731
8863
  };
8732
8864
  }
8733
- /*! Bundled license information:
8734
-
8735
- lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs:
8736
- lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs:
8737
- lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs:
8738
- lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs:
8739
- lucide-react/dist/esm/defaultAttributes.mjs:
8740
- lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs:
8741
- lucide-react/dist/esm/context.mjs:
8742
- lucide-react/dist/esm/Icon.mjs:
8743
- lucide-react/dist/esm/createLucideIcon.mjs:
8744
- lucide-react/dist/esm/icons/arrow-right.mjs:
8745
- lucide-react/dist/esm/icons/chevron-left.mjs:
8746
- lucide-react/dist/esm/icons/chevron-right.mjs:
8747
- lucide-react/dist/esm/icons/clock.mjs:
8748
- lucide-react/dist/esm/icons/credit-card.mjs:
8749
- lucide-react/dist/esm/icons/sparkles.mjs:
8750
- lucide-react/dist/esm/icons/star.mjs:
8751
- lucide-react/dist/esm/icons/ticket.mjs:
8752
- lucide-react/dist/esm/lucide-react.mjs:
8753
- (**
8754
- * @license lucide-react v1.21.0 - ISC
8755
- *
8756
- * This source code is licensed under the ISC license.
8757
- * See the LICENSE file in the root directory of this source tree.
8758
- *)
8759
- */
8760
8865
 
8761
- export { BOOKING_FORM_DATA_RESERVED_KEYS, ChevronLeft, ChevronRight, CreditCard, DateTimeTile, EMPTY_COMMERCE_CART_STATE, EmptyState, EventCard, EventCompactRow, MAX_EVENTS_PER_DAY, MONTH_NAMES, Sparkles, Star, Ticket, WIZARD_STEPS, addMonths, assertNever11, buildCalendarViewport, buildCartDisplay, buildEventCalendarListingRender, buildEventRuntimeFilters, buildPassCartItem, buildProductCardDisplay, buildProductCartItem, buildProductDetailDisplay, buildTimetableModel, clearWorkflowFeedback, defineIslandPropsDecoder, deriveBookingFormViewState, deriveCommerceCheckoutState, err2, findEventByOccurrenceId, findPreSelectedEvent, formatBookingSubmissionPreparationError, formatCommercePrice, formatCoursePriceAmount, formatCoursePriceDisplay, formatDate, formatDateKey, formatEventDateParts, formatEventPrice, formatEventTeacherLine, formatInterval, formatTime, getBookingRedirectStateFromLocation, getBookingSuccessMessage, getCardOrientation, getContainerClass, getEventAvailability, getEventRuntimeFiltersKey, getOrderedDayNames, getShopDisplayForItems, getStepNumber, getThreeMonthRange, getWizardStepsForContext, groupEventsByDate, isEventContentType, isToday, logger, normalizeCsvIds, normalizeCsvString, normalizeEventBlockKind, normalizeOptionalId, ok, okWith2, parseStoredCommerceCartState, prepareBookingSubmission, productItemKey, reduceCommerceCart, reportWorkflowError, reportWorkflowSuccess, resolveAppointmentCheckoutVerificationState, resolveBookingPaymentStep, resolveBookingSiteId, resolveCoursePricingState, resolveDefaultBookingServiceId, resolveDiscountContext, resolveEventRequiresPayment, resolveRegistrationTarget, resolveRuntimeEventPricing, shiftCalendarAnchorDate, themeButtonClassName, toRegistrationEvents, toSelectedCollectionOptionKind };
8866
+ export { BOOKING_FORM_DATA_RESERVED_KEYS, DateTimeTile, EMPTY_COMMERCE_CART_STATE, EmptyState, EventCard, EventCompactRow, MAX_EVENTS_PER_DAY, MONTH_NAMES, WIZARD_STEPS, addMonths, assertNever11, buildCalendarViewport, buildCartDisplay, buildEventCalendarListingRender, buildEventRuntimeFilters, buildPassCartItem, buildProductCardDisplay, buildProductCartItem, buildProductDetailDisplay, buildTimetableModel, clearWorkflowFeedback, createRichTextDocFromMarkdown, defineIslandPropsDecoder, deriveBookingFormViewState, deriveCommerceCheckoutState, err2, findEventByOccurrenceId, findPreSelectedEvent, formatBookingSubmissionPreparationError, formatCommercePrice, formatDate, formatDateKey, formatEventDateParts, formatEventPrice, formatEventPriceDisplay, formatEventTeacherLine, formatInterval, formatTime, getBookingRedirectStateFromLocation, getBookingSuccessMessage, getCardOrientation, getContainerClass, getEventAvailability, getEventRuntimeFiltersKey, getOrderedDayNames, getShopDisplayForItems, getStepNumber, getThreeMonthRange, getWizardStepsForContext, groupEventsByDate, isEventContentType, isRecord, isToday, logger, normalizeCsvIds, normalizeCsvString, normalizeEventBlockKind, normalizeOptionalId, ok, okWith2, parseStoredCommerceCartState, prepareBookingSubmission, productItemKey, reduceCommerceCart, reportWorkflowError, reportWorkflowSuccess, resolveAppointmentCheckoutVerificationState, resolveBookingPaymentStep, resolveBookingSiteId, resolveDefaultBookingServiceId, resolveDiscountContext, resolveEventRequiresPayment, resolveRegistrationTarget, resolveRuntimeEventPricing, shiftCalendarAnchorDate, themeButtonClassName, toRegistrationEvents, toSelectedCollectionOptionKind, unwrapRichTextRoot };