@riverbankcms/sdk 0.124.0 → 0.126.0

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 (130) hide show
  1. package/README.md +3 -1
  2. package/dist/{PreviewEditorSidebar-DBmAJJkQ.mjs → PreviewEditorSidebar-DcYJxTgc.mjs} +67 -266
  3. package/dist/{PreviewEditorUI-CfGaz9cY.mjs → PreviewEditorUI-Ctt1yTJr.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BH-3-jSj.mjs → PreviewQueryProvider-DgFDIwvK.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-BW9Z8j8T.mjs → SdkPreviewModeRuntime-CvW1vdQ4.mjs} +38 -30
  6. package/dist/{SiteChromeCustomizeContext-2z8moxYf.mjs → SiteChromeCustomizeContext-C87qlKWw.mjs} +493 -1378
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +1354 -202
  8. package/dist/_dts/api/src/accessAdmin.d.ts +2 -14
  9. package/dist/_dts/api/src/common/envelope.d.ts +1 -1
  10. package/dist/_dts/api/src/contentRuntime.d.ts +0 -2
  11. package/dist/_dts/api/src/endpoints.d.ts +0 -7
  12. package/dist/_dts/api/src/sdk-event-upsert.d.ts +42 -0
  13. package/dist/_dts/api/src/sdkContracts.d.ts +11 -9
  14. package/dist/_dts/api/src/siteAccessAdmin.d.ts +23 -0
  15. package/dist/_dts/api/src/siteOperations.d.ts +18 -1
  16. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -14
  17. package/dist/_dts/billing/src/plans/types.d.ts +24 -5
  18. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +4 -0
  19. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +2 -0
  20. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +1 -0
  21. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +2 -0
  22. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +3 -1
  23. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +2 -1
  24. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +15 -2
  25. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +331 -19
  26. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +1 -2
  27. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -3
  28. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -2
  29. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +3 -12
  30. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +3 -13
  31. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +8 -100
  32. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +1 -4
  33. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -15
  34. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +11 -21
  35. package/dist/_dts/sdk/src/cli/commands/event.d.ts +2 -2
  36. package/dist/_dts/sdk/src/cli/commands/eventOccurrenceSchedule.d.ts +12 -0
  37. package/dist/_dts/sdk/src/cli/commands/push/pushAllExtras.d.ts +6 -0
  38. package/dist/_dts/sdk/src/cli/commands/style.d.ts +1 -1
  39. package/dist/_dts/sdk/src/cli/content/legacyEventScheduleShapeError.d.ts +5 -0
  40. package/dist/_dts/sdk/src/cli/content/localEventSchedule.d.ts +17 -0
  41. package/dist/_dts/sdk/src/cli/content/reader.d.ts +5 -10
  42. package/dist/_dts/sdk/src/cli/migrations/events.d.ts +1 -1
  43. package/dist/_dts/sdk/src/cli/site-commands/eventScheduleCompiler.d.ts +24 -0
  44. package/dist/_dts/sdk/src/client/management/http.d.ts +1 -1
  45. package/dist/_dts/sdk/src/client/management/types.d.ts +3 -28
  46. package/dist/_dts/sdk/src/config/index.d.ts +1 -1
  47. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -20
  48. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  49. package/dist/_dts/sdk/src/version.d.ts +1 -1
  50. package/dist/_dts/site-commands/src/commandContract.d.ts +33 -5
  51. package/dist/_dts/site-commands/src/commandDomain.d.ts +2 -2
  52. package/dist/_dts/site-commands/src/commands.d.ts +38 -9
  53. package/dist/_dts/site-commands/src/siteStyleCommandSchema.d.ts +28 -1
  54. package/dist/_dts/site-commands/src/siteStyleSelectionSchemaBuilder.d.ts +4 -4
  55. package/dist/_dts/theme-core/src/palette/concretePalette.d.ts +20 -0
  56. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +2 -17
  57. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -6
  58. package/dist/_dts/theme-core/src/palette/schema.d.ts +39 -0
  59. package/dist/_dts/theme-core/src/schema.d.ts +38 -26
  60. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -6
  61. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +5 -6
  62. package/dist/cli/index.mjs +631 -525
  63. package/dist/cli/init-docs/content/cli-reference.md +6 -3
  64. package/dist/cli/init-docs/content/content-management.md +24 -13
  65. package/dist/client/{DiscountCodeDisclosure-DxvjKvck.mjs → DiscountCodeDisclosure-DS0AuFWW.mjs} +1 -1
  66. package/dist/client/{EventCombined.client-BydMGc4c.mjs → EventCombined.client-DtMxLr7q.mjs} +2 -2
  67. package/dist/client/{EventListing.client-vpzhhysN.mjs → EventListing.client-BdLSRNg1.mjs} +2 -2
  68. package/dist/client/{LeafletStaticMap-CB07rpf8.mjs → LeafletStaticMap-BrpC6vsT.mjs} +1 -1
  69. package/dist/client/{MagicLinkForm-BzyRJ8VF.mjs → MagicLinkForm-Bt3IuLMy.mjs} +1 -1
  70. package/dist/client/{StepIndicator-CTcGf8Be.mjs → StepIndicator-CBYPFVoy.mjs} +2 -2
  71. package/dist/client/{accordion-B-DUDLRD.mjs → accordion-BqqwPJWM.mjs} +1 -1
  72. package/dist/client/{bookingForm-DSbClLcZ.mjs → bookingForm-SneP3yxC.mjs} +5 -6
  73. package/dist/client/bookings.mjs +190 -24
  74. package/dist/client/{carousel-B6Ccdx8M.mjs → carousel-BTIR9L3I.mjs} +1 -1
  75. package/dist/client/{cart-BZh8G8wM.mjs → cart-bqiqd8SX.mjs} +3 -3
  76. package/dist/client/{checkout-o6zaC-kM.mjs → checkout-WbTFV5v4.mjs} +3 -3
  77. package/dist/client/client.mjs +175 -223
  78. package/dist/client/{courseRegistration-Cf11pNDs.mjs → courseRegistration-BcemLAdN.mjs} +6 -7
  79. package/dist/client/{eventCalendar-BeXrdsSE.mjs → eventCalendar-CsxIw0V_.mjs} +4 -4
  80. package/dist/client/{eventCombined-DA76PZgG.mjs → eventCombined-B6XMoHfa.mjs} +2 -2
  81. package/dist/client/{eventDetails-BLxg0rok.mjs → eventDetails-BJaoPPfo.mjs} +10 -5
  82. package/dist/client/{eventListing-tO9LheBX.mjs → eventListing-DgwdYHRT.mjs} +2 -2
  83. package/dist/client/{eventRegistration-Cnene9D9.mjs → eventRegistration-C0O3folu.mjs} +30 -22
  84. package/dist/client/{form-DZf72CHB.mjs → form-Bk9txGFt.mjs} +1 -1
  85. package/dist/client/{headerSection-Hioja5Cr.mjs → headerSection-yIBt0yTv.mjs} +2 -2
  86. package/dist/client/hooks.mjs +54 -102
  87. package/dist/client/{locationMap-DwhUXEix.mjs → locationMap-C-3KIpv-.mjs} +2 -2
  88. package/dist/client/{newsletterForm-C350bEQf.mjs → newsletterForm-CzB8g8h2.mjs} +1 -1
  89. package/dist/client/{pricing-BYWN_ATa.mjs → pricing-C1QeDes_.mjs} +1 -1
  90. package/dist/client/{productDetail-CCqCyXgU.mjs → productDetail-w7SBp5uc.mjs} +3 -3
  91. package/dist/client/{productList-BAiNJrOU.mjs → productList-D0tGKHGf.mjs} +3 -3
  92. package/dist/client/{propsDecoder-DeunRj6m.mjs → propsDecoder-Bcin2DB3.mjs} +172 -11
  93. package/dist/client/rendering/client.mjs +322 -363
  94. package/dist/client/rendering/islands.mjs +18 -18
  95. package/dist/client/rendering.mjs +231 -272
  96. package/dist/client/{useDiscountCodeUi-I-92-x2V.mjs → scrollToBlock-h-o_STf_.mjs} +18 -2
  97. package/dist/client/{shop-DUmCdBtw.mjs → shop-BGzmL8O_.mjs} +5 -6
  98. package/dist/client/{shop-commerce-CY27mEUr.mjs → shop-commerce-lX8QxjX-.mjs} +4 -4
  99. package/dist/client/{shop-commerce-store-ChXPbWfa.mjs → shop-commerce-store-CEurARtu.mjs} +1 -1
  100. package/dist/client/{shopShared-q0kin1cv.mjs → shopShared-DXxH8xxw.mjs} +2 -2
  101. package/dist/client/{useEventFilters-DlcVluZh.mjs → useEventFilters-B591g9vd.mjs} +2 -2
  102. package/dist/client/{usePolling-Bz7GFV_a.mjs → usePolling-BvnChV4m.mjs} +2 -2
  103. package/dist/preview-next/before-render.mjs +0 -7
  104. package/dist/preview-next/client/runtime.mjs +4 -4
  105. package/dist/preview-next/middleware.mjs +0 -7
  106. package/dist/{previewAuthStore-CJX21dGi.mjs → previewAuthStore-Dev9CdG9.mjs} +0 -7
  107. package/dist/{sdk-runtime-OnPM8Z69.mjs → sdk-runtime-M__i3Jce.mjs} +2 -2
  108. package/dist/{separator-CPtfzHqA.mjs → separator-VSlnI9bc.mjs} +1 -1
  109. package/dist/server/components.mjs +99 -141
  110. package/dist/server/config-validation.mjs +54 -102
  111. package/dist/server/config.mjs +54 -102
  112. package/dist/server/data.mjs +54 -102
  113. package/dist/server/index.mjs +1 -8
  114. package/dist/server/next.mjs +103 -152
  115. package/dist/server/page-converter.mjs +54 -102
  116. package/dist/server/prebuild.mjs +1 -1
  117. package/dist/server/rendering/server.mjs +62 -104
  118. package/dist/server/rendering.mjs +100 -142
  119. package/dist/server/routing.mjs +75 -147
  120. package/dist/server/server.mjs +55 -110
  121. package/dist/server/theme-bridge.mjs +172 -162
  122. package/dist/server/theme.mjs +167 -11
  123. package/package.json +1 -1
  124. package/dist/_dts/theme-core/src/palette/editorState.d.ts +0 -75
  125. package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +0 -64
  126. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +0 -81
  127. package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +0 -75
  128. package/dist/_dts/theme-core/src/palette/selection.d.ts +0 -74
  129. package/dist/_dts/theme-core/src/palette/sitePalettePersistence.d.ts +0 -34
  130. package/dist/client/scrollToBlock-C86BYkyV.mjs +0 -17
@@ -236,7 +236,7 @@ var init_demo_runtime = __esmMin((() => {}));
236
236
  var init_collections = __esmMin((() => {}));
237
237
  //#endregion
238
238
  //#region ../core/src/assert-never.ts
239
- function assertNever$21(value, message = "Unexpected variant") {
239
+ function assertNever$20(value, message = "Unexpected variant") {
240
240
  throw new Error(`${message}: ${String(value)}`);
241
241
  }
242
242
  var init_assert_never = __esmMin((() => {}));
@@ -348,7 +348,7 @@ function formatCoursePriceDisplayLabel(display, options) {
348
348
  case "exact": return `Course (${formatCurrencyAmount(display.amount, display.currency, options)})`;
349
349
  case "from": return `Course (From ${formatCurrencyAmount(display.amount, display.currency, options)})`;
350
350
  case "range": return `Course (${formatCurrencyAmount(display.minAmount, display.currency, options)} - ${formatCurrencyAmount(display.maxAmount, display.currency, options)})`;
351
- default: return assertNever$21(display);
351
+ default: return assertNever$20(display);
352
352
  }
353
353
  }
354
354
  /**
@@ -368,7 +368,7 @@ function formatBookingPriceDisplay(display, options = {}) {
368
368
  case "unavailable": return "Pricing unavailable";
369
369
  case "external": return display.label;
370
370
  case "course": return formatCoursePriceDisplayLabel(display.display, options);
371
- default: return assertNever$21(display);
371
+ default: return assertNever$20(display);
372
372
  }
373
373
  }
374
374
  /** Render an event's price directly from its pricing value. */
@@ -447,10 +447,10 @@ function resolveFlexibleBalanceDueAt(input) {
447
447
  switch (input.dueDateRule.kind) {
448
448
  case "relative_to_start_date": return subtractDaysFromIso(input.bookingStartAt, input.dueDateRule.daysBeforeStart);
449
449
  case "fixed_calendar_date": return input.dueDateRule.dueAt;
450
- default: return assertNever$20(input.dueDateRule);
450
+ default: return assertNever$19(input.dueDateRule);
451
451
  }
452
452
  }
453
- function assertNever$20(value) {
453
+ function assertNever$19(value) {
454
454
  throw new Error(`Unexpected value: ${String(value)}`);
455
455
  }
456
456
  var init_booking_flexible_balance = __esmMin((() => {
@@ -464,7 +464,7 @@ function isDepositBearingBookingInstalmentPlan(plan) {
464
464
  case "deposit_plus_one_remainder":
465
465
  case "deposit_plus_scheduled_instalments": return true;
466
466
  case "equal_scheduled_instalments": return false;
467
- default: return assertNever$19(plan);
467
+ default: return assertNever$18(plan);
468
468
  }
469
469
  }
470
470
  function getBookingInstalmentDepositRefundability(plan) {
@@ -490,7 +490,7 @@ function addIntervalPreservingMonthAnchor(isoString, intervalCount, intervalUnit
490
490
  date.setUTCDate(date.getUTCDate() + intervalCount * 7);
491
491
  return date.toISOString();
492
492
  case "month": return addMonthsPreservingAnchorDay(date, intervalCount).toISOString();
493
- default: return assertNever$19(intervalUnit);
493
+ default: return assertNever$18(intervalUnit);
494
494
  }
495
495
  }
496
496
  function getBookingInstalmentPlanIntervalCount(plan) {
@@ -498,7 +498,7 @@ function getBookingInstalmentPlanIntervalCount(plan) {
498
498
  case "deposit_plus_one_remainder": return plan.remainderDueCount;
499
499
  case "deposit_plus_scheduled_instalments":
500
500
  case "equal_scheduled_instalments": return plan.intervalCount;
501
- default: return assertNever$19(plan);
501
+ default: return assertNever$18(plan);
502
502
  }
503
503
  }
504
504
  function omitZeroAmountFutureRows(rows) {
@@ -514,7 +514,7 @@ function addMonthsPreservingAnchorDay(date, intervalCount) {
514
514
  nextMonth.setUTCDate(Math.min(anchorDay, lastDayOfTargetMonth));
515
515
  return nextMonth;
516
516
  }
517
- function assertNever$19(value) {
517
+ function assertNever$18(value) {
518
518
  throw new Error(`Unexpected value: ${String(value)}`);
519
519
  }
520
520
  var init_booking_instalments = __esmMin((() => {}));
@@ -2561,7 +2561,7 @@ var init_schemas = __esmMin((() => {
2561
2561
  //#endregion
2562
2562
  //#region ../blocks/src/system/node/schema.ts
2563
2563
  var transformStepSchema, bindingPathSchema, bindingSchema, repeatSchema, conditionalAuthoringPresenceSchema, conditionSchema, dataScopeSchema, nodePropsSchema, nodeSchema, nodeTreeSchema, NodeSchema, NodeTreeSchema;
2564
- var init_schema$2 = __esmMin((() => {
2564
+ var init_schema$3 = __esmMin((() => {
2565
2565
  transformStepSchema = z$1.object({
2566
2566
  id: z$1.string().min(1, "Transform requires an identifier"),
2567
2567
  options: z$1.record(z$1.string(), z$1.unknown()).optional()
@@ -2777,7 +2777,7 @@ function devValidate(node) {
2777
2777
  }
2778
2778
  var section$1, headerSection, stack, inline, accordion, accordionItem, carousel, text, richText, icon, media, fileDownload, videoEmbed, spinner, button, link, form, bookingForm, eventRegistration, shop, productList, productDetail, cart, checkout$1, gifting, courseRegistration;
2779
2779
  var init_builder$2 = __esmMin((() => {
2780
- init_schema$2();
2780
+ init_schema$3();
2781
2781
  init_types$15();
2782
2782
  init_env();
2783
2783
  section$1 = (props, children, ...mods) => el("section", props, children, ...mods);
@@ -4161,7 +4161,7 @@ function asDesignSystemTemplateId(value) {
4161
4161
  function makeBoundaryId(previousBlockId, nextBlockId) {
4162
4162
  return asDesignBoundaryId(`boundary:${encodeURIComponent(previousBlockId)}:${encodeURIComponent(nextBlockId)}`);
4163
4163
  }
4164
- function assertNever$13(value, message = "Unhandled Theme V2 variant") {
4164
+ function assertNever$12(value, message = "Unhandled Theme V2 variant") {
4165
4165
  throw new Error(`${message}: ${String(value)}`);
4166
4166
  }
4167
4167
  function brandNonEmptyString(value, label) {
@@ -6710,6 +6710,12 @@ function requirePaletteColorsFromEntries(entries) {
6710
6710
  if (result.ok) return result.colors;
6711
6711
  throw new Error(`Invalid complete palette: ${result.error.kind}`);
6712
6712
  }
6713
+ function paletteColorEntries(colors) {
6714
+ return THEME_PALETTE_COLOR_ORDER.map((name) => ({
6715
+ name,
6716
+ hex: colors[name]
6717
+ }));
6718
+ }
6713
6719
  function paletteColorFingerprint(colors) {
6714
6720
  return PALETTE_TOKEN_NAMES.map((name) => `${name}:${colors[name]}`).join("|");
6715
6721
  }
@@ -6742,11 +6748,26 @@ function parsePaletteValueKey(value) {
6742
6748
  if (!colors.ok || paletteValueKey(colors.colors, mode.data) !== value) return null;
6743
6749
  return value;
6744
6750
  }
6745
- var HEX_COLOR_REGEX, NORMALIZABLE_HEX_REGEX, hexColorSchema, paletteModeSchema, PALETTE_VALUE_KEY_PREFIX, paletteColorsSchema, paletteValueKeySchema;
6751
+ var HEX_COLOR_REGEX, NORMALIZABLE_HEX_REGEX, THEME_PALETTE_COLOR_ORDER, hexColorSchema, paletteModeSchema, PALETTE_VALUE_KEY_PREFIX, paletteColorsSchema, paletteValueKeySchema;
6746
6752
  var init_colors = __esmMin((() => {
6747
6753
  init_themeColorTokens();
6748
6754
  HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
6749
6755
  NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
6756
+ THEME_PALETTE_COLOR_ORDER = [
6757
+ "primary",
6758
+ "secondary",
6759
+ "accent",
6760
+ "success",
6761
+ "warning",
6762
+ "destructive",
6763
+ "background",
6764
+ "surface",
6765
+ "surfaceAlt",
6766
+ "muted",
6767
+ "text",
6768
+ "primaryForeground",
6769
+ "border"
6770
+ ];
6750
6771
  hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
6751
6772
  paletteModeSchema = z$1.enum(["light", "dark"]);
6752
6773
  PALETTE_VALUE_KEY_PREFIX = "palette-value:v1|";
@@ -6776,8 +6797,12 @@ var init_colors = __esmMin((() => {
6776
6797
  return z$1.NEVER;
6777
6798
  });
6778
6799
  }));
6779
- var init_editorState = __esmMin((() => {}));
6780
- var init_libraryModel = __esmMin((() => {}));
6800
+ var init_concretePalette = __esmMin((() => {
6801
+ init_colors();
6802
+ }));
6803
+ var init_fromVibrant = __esmMin((() => {
6804
+ init_utils$6();
6805
+ }));
6781
6806
  //#endregion
6782
6807
  //#region ../theme-core/src/site-styles/styleTags.ts
6783
6808
  var STYLE_AXIS_VALUES, styleTagsSchema;
@@ -8067,22 +8092,12 @@ var init_warm_dark = __esmMin((() => {
8067
8092
  }));
8068
8093
  //#endregion
8069
8094
  //#region ../theme-core/src/palette/curated/index.ts
8070
- /**
8071
- * Curated palette library.
8072
- *
8073
- * Authoring keys are readable source aliases. Value keys are derived from the
8074
- * complete mode and semantic colours and are the only curated identity used at
8075
- * persistence and runtime boundaries.
8076
- */
8077
8095
  function admitCuratedPaletteDefinition(definition) {
8078
8096
  return {
8079
8097
  ...definition,
8080
8098
  valueKey: definition.valueKey
8081
8099
  };
8082
8100
  }
8083
- function findCuratedPalette(valueKey) {
8084
- return curatedPalettesByValueKey.get(valueKey);
8085
- }
8086
8101
  function findCuratedPaletteByAuthoringKey(authoringKey) {
8087
8102
  return curatedPalettesByAuthoringKey.get(authoringKey);
8088
8103
  }
@@ -8091,9 +8106,8 @@ function requireCuratedPaletteValueKey(authoringKey) {
8091
8106
  if (!palette) throw new Error(`Unknown curated palette authoring key "${authoringKey}"`);
8092
8107
  return palette.valueKey;
8093
8108
  }
8094
- var curatedPalettes, curatedPalettesByValueKey, curatedPalettesByAuthoringKey, knownCuratedPaletteValueKeySchema;
8109
+ var curatedPalettes, curatedPalettesByAuthoringKey;
8095
8110
  var init_curated = __esmMin((() => {
8096
- init_colors();
8097
8111
  init_brand_led();
8098
8112
  init_high_contrast();
8099
8113
  init_soft_natural();
@@ -8120,107 +8134,8 @@ var init_curated = __esmMin((() => {
8120
8134
  admitCuratedPaletteDefinition(warmDarkEmber),
8121
8135
  admitCuratedPaletteDefinition(warmDarkKirtanGold)
8122
8136
  ];
8123
- curatedPalettesByValueKey = new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
8137
+ new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
8124
8138
  curatedPalettesByAuthoringKey = new Map(curatedPalettes.map((palette) => [palette.authoringKey, palette]));
8125
- knownCuratedPaletteValueKeySchema = z$1.string().transform((value, ctx) => {
8126
- const valueKey = parsePaletteValueKey(value);
8127
- if (!valueKey) {
8128
- ctx.addIssue({
8129
- code: "custom",
8130
- message: "Invalid canonical palette value key"
8131
- });
8132
- return z$1.NEVER;
8133
- }
8134
- const palette = findCuratedPalette(valueKey);
8135
- if (!palette) {
8136
- ctx.addIssue({
8137
- code: "custom",
8138
- message: "Unknown curated palette value key"
8139
- });
8140
- return z$1.NEVER;
8141
- }
8142
- return palette.valueKey;
8143
- });
8144
- }));
8145
- var init_resolveSelection = __esmMin((() => {
8146
- init_curated();
8147
- })), sitePaletteIdSchema, sitePaletteVersionSchema, paletteSelectionSchema, onboardingPaletteOriginSchema, curatedForkPaletteOriginSchema, manualPaletteOriginSchema, legacyCustomizedPaletteOriginSchema, sitePaletteOriginSchema, editorSitePaletteOriginSchema;
8148
- var init_selection$1 = __esmMin((() => {
8149
- init_colors();
8150
- init_curated();
8151
- sitePaletteIdSchema = z$1.string().uuid().transform((value) => value);
8152
- sitePaletteVersionSchema = z$1.number().int().nonnegative().transform((value) => value);
8153
- paletteSelectionSchema = z$1.discriminatedUnion("kind", [z$1.object({
8154
- kind: z$1.literal("curated"),
8155
- valueKey: knownCuratedPaletteValueKeySchema
8156
- }), z$1.object({
8157
- kind: z$1.literal("site"),
8158
- paletteId: sitePaletteIdSchema
8159
- })]);
8160
- onboardingPaletteOriginSchema = z$1.object({
8161
- kind: z$1.literal("onboarding"),
8162
- sourceKey: z$1.string().min(1).nullable()
8163
- });
8164
- curatedForkPaletteOriginSchema = z$1.object({
8165
- kind: z$1.literal("curated-fork"),
8166
- sourceValueKey: paletteValueKeySchema
8167
- });
8168
- manualPaletteOriginSchema = z$1.object({ kind: z$1.literal("manual") });
8169
- legacyCustomizedPaletteOriginSchema = z$1.object({
8170
- kind: z$1.literal("legacy-customized"),
8171
- sourceKey: z$1.string().min(1).nullable()
8172
- });
8173
- sitePaletteOriginSchema = z$1.discriminatedUnion("kind", [
8174
- onboardingPaletteOriginSchema,
8175
- curatedForkPaletteOriginSchema,
8176
- manualPaletteOriginSchema,
8177
- legacyCustomizedPaletteOriginSchema
8178
- ]);
8179
- editorSitePaletteOriginSchema = z$1.discriminatedUnion("kind", [z$1.object({
8180
- kind: z$1.literal("curated-fork"),
8181
- sourceValueKey: knownCuratedPaletteValueKeySchema
8182
- }), manualPaletteOriginSchema]);
8183
- z$1.object({
8184
- id: sitePaletteIdSchema,
8185
- colors: paletteColorsSchema,
8186
- mode: paletteModeSchema,
8187
- origin: sitePaletteOriginSchema,
8188
- version: sitePaletteVersionSchema
8189
- });
8190
- z$1.discriminatedUnion("kind", [
8191
- z$1.object({ kind: z$1.literal("preserve") }),
8192
- z$1.object({
8193
- kind: z$1.literal("select"),
8194
- selection: paletteSelectionSchema
8195
- }),
8196
- z$1.object({
8197
- kind: z$1.literal("create-site"),
8198
- colors: paletteColorsSchema,
8199
- mode: paletteModeSchema,
8200
- origin: editorSitePaletteOriginSchema
8201
- }),
8202
- z$1.object({
8203
- kind: z$1.literal("update-site"),
8204
- paletteId: sitePaletteIdSchema,
8205
- expectedVersion: sitePaletteVersionSchema,
8206
- colors: paletteColorsSchema,
8207
- mode: paletteModeSchema
8208
- })
8209
- ]);
8210
- }));
8211
- var init_persistenceReadSource = __esmMin((() => {
8212
- init_curated();
8213
- init_colors();
8214
- init_resolveSelection();
8215
- init_selection$1();
8216
- }));
8217
- var init_sitePalettePersistence = __esmMin((() => {
8218
- init_curated();
8219
- init_colors();
8220
- init_selection$1();
8221
- }));
8222
- var init_fromVibrant = __esmMin((() => {
8223
- init_utils$6();
8224
8139
  }));
8225
8140
  //#endregion
8226
8141
  //#region ../theme-core/src/palette/index.ts
@@ -8236,12 +8151,7 @@ var init_palette$1 = __esmMin((() => {
8236
8151
  init_paletteAccess();
8237
8152
  init_extractPalette();
8238
8153
  init_colors();
8239
- init_editorState();
8240
- init_libraryModel();
8241
- init_persistenceReadSource();
8242
- init_resolveSelection();
8243
- init_selection$1();
8244
- init_sitePalettePersistence();
8154
+ init_concretePalette();
8245
8155
  init_fromVibrant();
8246
8156
  init_suggestRecipes();
8247
8157
  init_allRecipes();
@@ -8640,7 +8550,7 @@ function applyNavTypography(style, typography) {
8640
8550
  textSize: "sm",
8641
8551
  letterSpacing: "wider"
8642
8552
  };
8643
- default: return assertNever$13(typography, "Unhandled header nav typography");
8553
+ default: return assertNever$12(typography, "Unhandled header nav typography");
8644
8554
  }
8645
8555
  }
8646
8556
  function underlineNavLinkStyle(colorToken, underlineColorToken, typography = "plain") {
@@ -8669,7 +8579,7 @@ function themedHeaderShadow(theme) {
8669
8579
  case "low": return { elevation: "sm" };
8670
8580
  case "medium": return { elevation: "md" };
8671
8581
  case "high": return { elevation: "lg" };
8672
- default: return assertNever$13(theme.shadow.elevation, "Unhandled theme shadow elevation");
8582
+ default: return assertNever$12(theme.shadow.elevation, "Unhandled theme shadow elevation");
8673
8583
  }
8674
8584
  }
8675
8585
  function solidBrandHeader(theme) {
@@ -13008,6 +12918,38 @@ var init_media$1 = __esmMin((() => {
13008
12918
  });
13009
12919
  }));
13010
12920
  //#endregion
12921
+ //#region ../theme-core/src/palette/schema.ts
12922
+ var colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema;
12923
+ var init_schema$2 = __esmMin((() => {
12924
+ init_colors();
12925
+ colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
12926
+ paletteColorSchema = z$1.object({
12927
+ name: z$1.string().min(1),
12928
+ hex: colourHexString
12929
+ });
12930
+ paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
12931
+ paletteSchema = z$1.object({
12932
+ colors: z$1.array(paletteColorSchema),
12933
+ meta: paletteMetaSchema
12934
+ }).transform((palette, ctx) => {
12935
+ const colors = paletteColorsFromEntries(palette.colors);
12936
+ if (!colors.ok) {
12937
+ ctx.addIssue({
12938
+ code: "custom",
12939
+ message: `Invalid complete palette: ${colors.error.kind}`
12940
+ });
12941
+ return z$1.NEVER;
12942
+ }
12943
+ return {
12944
+ colors: paletteColorEntries(colors.colors).map(({ name, hex }) => ({
12945
+ name: String(name),
12946
+ hex: String(hex)
12947
+ })),
12948
+ meta: palette.meta
12949
+ };
12950
+ });
12951
+ }));
12952
+ //#endregion
13011
12953
  //#region ../theme-core/src/buttons/constants.ts
13012
12954
  /**
13013
12955
  * Generate shadow CSS value dynamically based on elevation, softness, and position
@@ -16822,9 +16764,10 @@ function normaliseHeaderNavFontRole(header) {
16822
16764
  navFontRole: navTypography
16823
16765
  } : rest;
16824
16766
  }
16825
- var axesSchema, colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerBarFrame, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, testimonialQuoteTreatmentSchema, themeSchema;
16767
+ var axesSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerBarFrame, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, testimonialQuoteTreatmentSchema, themeSchema;
16826
16768
  var init_schema$1 = __esmMin((() => {
16827
16769
  init_media$1();
16770
+ init_schema$2();
16828
16771
  init_buttons();
16829
16772
  init_cards();
16830
16773
  init_types$8();
@@ -16867,16 +16810,6 @@ var init_schema$1 = __esmMin((() => {
16867
16810
  "expressive"
16868
16811
  ])
16869
16812
  });
16870
- colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
16871
- paletteColorSchema = z$1.object({
16872
- name: z$1.string().min(1),
16873
- hex: colourHexString
16874
- });
16875
- paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
16876
- paletteSchema = z$1.object({
16877
- colors: z$1.array(paletteColorSchema),
16878
- meta: paletteMetaSchema
16879
- });
16880
16813
  typographyStyleSchema = z$1.object({
16881
16814
  family: z$1.string().min(1),
16882
16815
  weight: z$1.enum([
@@ -17869,7 +17802,6 @@ var init_runtimeCompiler = __esmMin((() => {
17869
17802
  init_modern_minimal();
17870
17803
  init_expandPalette();
17871
17804
  init_styles();
17872
- init_colors();
17873
17805
  init_designState();
17874
17806
  init_types$14();
17875
17807
  init_accessibleSurfaces();
@@ -19735,7 +19667,7 @@ var init_siteStyleThemeCompiler = __esmMin((() => {
19735
19667
  init_curatedSiteStyles();
19736
19668
  init_runtimeCompiler();
19737
19669
  init_curated();
19738
- init_resolveSelection();
19670
+ init_concretePalette();
19739
19671
  }));
19740
19672
  var init_previewCustomization = __esmMin((() => {
19741
19673
  init_types$14();
@@ -19745,7 +19677,7 @@ var init_previewCompiler = __esmMin((() => {
19745
19677
  init_onColor();
19746
19678
  init_tokens();
19747
19679
  init_curated();
19748
- init_resolveSelection();
19680
+ init_concretePalette();
19749
19681
  init_curatedSiteStyles();
19750
19682
  init_resolver();
19751
19683
  init_types$14();
@@ -21339,7 +21271,7 @@ var init_validation_constants = __esmMin((() => {
21339
21271
  //#endregion
21340
21272
  //#region ../blocks/src/system/node/index.ts
21341
21273
  var init_node = __esmMin((() => {
21342
- init_schema$2();
21274
+ init_schema$3();
21343
21275
  init_typeBasedLayout();
21344
21276
  init_validation_constants();
21345
21277
  }));
@@ -25899,6 +25831,10 @@ var init_event_details = __esmMin((() => {
25899
25831
  from: "$root.occurrenceContext",
25900
25832
  fallback: null
25901
25833
  } },
25834
+ subject: { $bind: {
25835
+ from: "$root.subject",
25836
+ fallback: null
25837
+ } },
25902
25838
  events: { $bind: { from: "data.eventDetailsData.events" } },
25903
25839
  showVenue: { $bind: { from: "content.showVenue" } },
25904
25840
  showMap: { $bind: { from: "content.showMap" } },
@@ -25980,6 +25916,90 @@ var init_event_details = __esmMin((() => {
25980
25916
  };
25981
25917
  }));
25982
25918
  //#endregion
25919
+ //#region ../blocks/src/system/runtime/nodes/event-registration/eventScope.ts
25920
+ function parseEventRegistrationPageSurfaceSubject(value) {
25921
+ return parseEventPageSurfaceSubject(value);
25922
+ }
25923
+ function normalizeEventRegistrationPageSurfaceSubject(value) {
25924
+ const parsed = parseEventRegistrationPageSurfaceSubject(value);
25925
+ if (parsed.ok) return parsed.value;
25926
+ switch (parsed.error.kind) {
25927
+ case "notObject": return null;
25928
+ case "unsupportedSubject": return {
25929
+ kind: "unsupported",
25930
+ reason: "unsupportedSubject"
25931
+ };
25932
+ case "invalidEventSeriesId": return {
25933
+ kind: "unsupported",
25934
+ reason: "invalidEventSeriesId"
25935
+ };
25936
+ case "invalidEventOfferingId": return {
25937
+ kind: "unsupported",
25938
+ reason: "invalidEventOfferingId"
25939
+ };
25940
+ }
25941
+ }
25942
+ function resolveEventRegistrationScope(context) {
25943
+ const occurrenceSeriesId = context.occurrenceContext?.seriesId;
25944
+ if (occurrenceSeriesId) return {
25945
+ kind: "occurrenceSeries",
25946
+ seriesId: occurrenceSeriesId
25947
+ };
25948
+ if (context.subject?.kind === "eventSeries") return {
25949
+ kind: "pageSurfaceSeries",
25950
+ seriesId: context.subject.eventSeriesId
25951
+ };
25952
+ if (context.subject?.kind === "eventOffering") return {
25953
+ kind: "pageSurfaceOffering",
25954
+ offeringId: context.subject.eventOfferingId,
25955
+ seriesIds: context.subject.availableEventSeriesIds
25956
+ };
25957
+ if (context.subject?.kind === "unsupported") return {
25958
+ kind: "unsupportedPageSurfaceSubject",
25959
+ reason: context.subject.reason
25960
+ };
25961
+ return { kind: "unscoped" };
25962
+ }
25963
+ function applyEventRegistrationScope(events, scope) {
25964
+ switch (scope.kind) {
25965
+ case "occurrenceSeries":
25966
+ case "pageSurfaceSeries": return events.filter((event) => event.seriesId === scope.seriesId);
25967
+ case "pageSurfaceOffering": {
25968
+ const seriesIds = new Set(scope.seriesIds);
25969
+ return events.filter((event) => seriesIds.has(event.seriesId));
25970
+ }
25971
+ case "unsupportedPageSurfaceSubject": return [];
25972
+ case "unscoped": return [...events];
25973
+ }
25974
+ }
25975
+ function resolveEventRegistrationScopedEvents(events, context) {
25976
+ return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
25977
+ }
25978
+ var unsupportedEventRegistrationPageSurfaceSubjectReasons, unsupportedEventRegistrationPageSurfaceSubjectSchema, eventRegistrationPageSurfaceSubjectSchema;
25979
+ var init_eventScope = __esmMin((() => {
25980
+ init_src$3();
25981
+ unsupportedEventRegistrationPageSurfaceSubjectReasons = [
25982
+ "unsupportedSubject",
25983
+ "invalidEventSeriesId",
25984
+ "invalidEventOfferingId"
25985
+ ];
25986
+ unsupportedEventRegistrationPageSurfaceSubjectSchema = z$1.object({
25987
+ kind: z$1.literal("unsupported"),
25988
+ reason: z$1.enum(unsupportedEventRegistrationPageSurfaceSubjectReasons)
25989
+ });
25990
+ eventRegistrationPageSurfaceSubjectSchema = z$1.unknown().transform((value, ctx) => {
25991
+ const unsupported = unsupportedEventRegistrationPageSurfaceSubjectSchema.safeParse(value);
25992
+ if (unsupported.success) return unsupported.data;
25993
+ const parsed = parseEventPageSurfaceSubject(value);
25994
+ if (parsed.ok) return parsed.value;
25995
+ ctx.addIssue({
25996
+ code: z$1.ZodIssueCode.custom,
25997
+ message: `Invalid event page-surface subject (${parsed.error.kind})`
25998
+ });
25999
+ return z$1.NEVER;
26000
+ });
26001
+ }));
26002
+ //#endregion
25983
26003
  //#region ../blocks/src/contracts/non-block-islands.ts
25984
26004
  var accordionIslandSchema, headerSectionIslandSchema, responsiveSlidesToShowSchema, carouselIslandSchema, eventDetailsOccurrenceContextSchema, eventDetailsIslandSchema, locationMapIslandSchema, accordionIslandPropsCodec, headerSectionIslandPropsCodec, carouselIslandPropsCodec, eventDetailsIslandPropsCodec, locationMapIslandPropsCodec;
25985
26005
  var init_non_block_islands = __esmMin((() => {
@@ -25987,6 +26007,7 @@ var init_non_block_islands = __esmMin((() => {
25987
26007
  init_shop_shared();
25988
26008
  init_schemas();
25989
26009
  init_event_details();
26010
+ init_eventScope();
25990
26011
  accordionIslandSchema = z$1.object({
25991
26012
  type: z$1.enum(["single", "multiple"]).optional(),
25992
26013
  defaultValue: z$1.union([z$1.string(), z$1.array(z$1.string())]).optional(),
@@ -26028,6 +26049,7 @@ var init_non_block_islands = __esmMin((() => {
26028
26049
  });
26029
26050
  eventDetailsIslandSchema = z$1.object({
26030
26051
  occurrenceContext: eventDetailsOccurrenceContextSchema.nullable().optional(),
26052
+ subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
26031
26053
  events: z$1.array(publicEventSchema).nullable().optional(),
26032
26054
  showVenue: z$1.boolean().optional(),
26033
26055
  showMap: z$1.boolean().optional(),
@@ -27002,90 +27024,6 @@ var init_contract_schemas = __esmMin((() => {
27002
27024
  ]);
27003
27025
  }));
27004
27026
  //#endregion
27005
- //#region ../blocks/src/system/runtime/nodes/event-registration/eventScope.ts
27006
- function parseEventRegistrationPageSurfaceSubject(value) {
27007
- return parseEventPageSurfaceSubject(value);
27008
- }
27009
- function normalizeEventRegistrationPageSurfaceSubject(value) {
27010
- const parsed = parseEventRegistrationPageSurfaceSubject(value);
27011
- if (parsed.ok) return parsed.value;
27012
- switch (parsed.error.kind) {
27013
- case "notObject": return null;
27014
- case "unsupportedSubject": return {
27015
- kind: "unsupported",
27016
- reason: "unsupportedSubject"
27017
- };
27018
- case "invalidEventSeriesId": return {
27019
- kind: "unsupported",
27020
- reason: "invalidEventSeriesId"
27021
- };
27022
- case "invalidEventOfferingId": return {
27023
- kind: "unsupported",
27024
- reason: "invalidEventOfferingId"
27025
- };
27026
- }
27027
- }
27028
- function resolveEventRegistrationScope(context) {
27029
- const occurrenceSeriesId = context.occurrenceContext?.seriesId;
27030
- if (occurrenceSeriesId) return {
27031
- kind: "occurrenceSeries",
27032
- seriesId: occurrenceSeriesId
27033
- };
27034
- if (context.subject?.kind === "eventSeries") return {
27035
- kind: "pageSurfaceSeries",
27036
- seriesId: context.subject.eventSeriesId
27037
- };
27038
- if (context.subject?.kind === "eventOffering") return {
27039
- kind: "pageSurfaceOffering",
27040
- offeringId: context.subject.eventOfferingId,
27041
- seriesIds: context.subject.availableEventSeriesIds
27042
- };
27043
- if (context.subject?.kind === "unsupported") return {
27044
- kind: "unsupportedPageSurfaceSubject",
27045
- reason: context.subject.reason
27046
- };
27047
- return { kind: "unscoped" };
27048
- }
27049
- function applyEventRegistrationScope(events, scope) {
27050
- switch (scope.kind) {
27051
- case "occurrenceSeries":
27052
- case "pageSurfaceSeries": return events.filter((event) => event.seriesId === scope.seriesId);
27053
- case "pageSurfaceOffering": {
27054
- const seriesIds = new Set(scope.seriesIds);
27055
- return events.filter((event) => seriesIds.has(event.seriesId));
27056
- }
27057
- case "unsupportedPageSurfaceSubject": return [];
27058
- case "unscoped": return [...events];
27059
- }
27060
- }
27061
- function resolveEventRegistrationScopedEvents(events, context) {
27062
- return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
27063
- }
27064
- var unsupportedEventRegistrationPageSurfaceSubjectReasons, unsupportedEventRegistrationPageSurfaceSubjectSchema, eventRegistrationPageSurfaceSubjectSchema;
27065
- var init_eventScope = __esmMin((() => {
27066
- init_src$3();
27067
- unsupportedEventRegistrationPageSurfaceSubjectReasons = [
27068
- "unsupportedSubject",
27069
- "invalidEventSeriesId",
27070
- "invalidEventOfferingId"
27071
- ];
27072
- unsupportedEventRegistrationPageSurfaceSubjectSchema = z$1.object({
27073
- kind: z$1.literal("unsupported"),
27074
- reason: z$1.enum(unsupportedEventRegistrationPageSurfaceSubjectReasons)
27075
- });
27076
- eventRegistrationPageSurfaceSubjectSchema = z$1.unknown().transform((value, ctx) => {
27077
- const unsupported = unsupportedEventRegistrationPageSurfaceSubjectSchema.safeParse(value);
27078
- if (unsupported.success) return unsupported.data;
27079
- const parsed = parseEventPageSurfaceSubject(value);
27080
- if (parsed.ok) return parsed.value;
27081
- ctx.addIssue({
27082
- code: z$1.ZodIssueCode.custom,
27083
- message: `Invalid event page-surface subject (${parsed.error.kind})`
27084
- });
27085
- return z$1.NEVER;
27086
- });
27087
- }));
27088
- //#endregion
27089
27027
  //#region ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
27090
27028
  function buildCourseRegistrationDisplay(source) {
27091
27029
  return {
@@ -101579,17 +101517,28 @@ var init_usePaymentVerification = __esmMin((() => {
101579
101517
  paymentVerificationDeps = { useBlockApi };
101580
101518
  }));
101581
101519
  //#endregion
101520
+ //#region ../blocks/src/system/runtime/nodes/event-registration/constants.ts
101521
+ var EVENT_REGISTRATION_ANCHOR_ID;
101522
+ var init_constants = __esmMin((() => {
101523
+ EVENT_REGISTRATION_ANCHOR_ID = "event-registration";
101524
+ }));
101525
+ //#endregion
101582
101526
  //#region ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.ts
101583
101527
  function useEventRegistrationStripeReturn(options) {
101528
+ return useEventRegistrationStripeReturnWithDeps(options, eventRegistrationStripeReturnDeps);
101529
+ }
101530
+ function useEventRegistrationStripeReturnWithDeps(options, deps) {
101584
101531
  const { api, events, occurrenceId, pendingAttendeeId, setErrorMessage, setFormData, setPaymentSelection, setPendingAttendeeId, setRegistrationResult, setSelectedEvent, setSelectedAttendanceMode, setTicketSelections, setStep, setTicketsCount, step } = options;
101585
- const verification = usePaymentVerification(useMemo(() => step === "verifying-payment" && pendingAttendeeId ? { transactionId: pendingAttendeeId } : null, [step, pendingAttendeeId]));
101532
+ const verificationConfig = useMemo(() => step === "verifying-payment" && pendingAttendeeId ? { transactionId: pendingAttendeeId } : null, [step, pendingAttendeeId]);
101533
+ const verification = deps.usePaymentVerification(verificationConfig);
101586
101534
  useEffect(() => {
101587
- cleanupStaleRegistrations();
101588
- const registrationStatus = consumeSearchParam("registration");
101589
- if (!registrationStatus) return;
101535
+ deps.cleanupStaleRegistrations();
101536
+ const registrationStatus = deps.consumeSearchParam("registration");
101537
+ if (registrationStatus !== "cancelled" && registrationStatus !== "success") return;
101538
+ deps.scrollToBlock(EVENT_REGISTRATION_ANCHOR_ID);
101590
101539
  const siteId = api.config.siteId;
101591
101540
  if (!siteId) return;
101592
- const pending = getPendingRegistration(siteId, occurrenceId || void 0);
101541
+ const pending = deps.getPendingRegistration(siteId, occurrenceId || void 0);
101593
101542
  if (!pending) return;
101594
101543
  setFormData(pending.formData);
101595
101544
  setTicketSelections(pending.ticketSelections);
@@ -101609,7 +101558,7 @@ function useEventRegistrationStripeReturn(options) {
101609
101558
  useEffect(() => {
101610
101559
  if (verification.status === "completed") {
101611
101560
  const siteId = api.config.siteId;
101612
- if (siteId && occurrenceId) clearPendingRegistration(siteId, occurrenceId);
101561
+ if (siteId && occurrenceId) deps.clearPendingRegistration(siteId, occurrenceId);
101613
101562
  setRegistrationResult({ status: "confirmed" });
101614
101563
  setStep("success");
101615
101564
  } else if (verification.status === "failed") {
@@ -101629,11 +101578,21 @@ function useEventRegistrationStripeReturn(options) {
101629
101578
  ]);
101630
101579
  return verification;
101631
101580
  }
101581
+ var eventRegistrationStripeReturnDeps;
101632
101582
  var init_useEventRegistrationStripeReturn = __esmMin((() => {
101633
101583
  init_usePaymentVerification();
101634
101584
  init_shared$1();
101585
+ init_constants();
101635
101586
  init_sessionStorage();
101636
101587
  init_ticketSelectionLines();
101588
+ eventRegistrationStripeReturnDeps = {
101589
+ usePaymentVerification,
101590
+ consumeSearchParam,
101591
+ scrollToBlock,
101592
+ cleanupStaleRegistrations,
101593
+ clearPendingRegistration,
101594
+ getPendingRegistration
101595
+ };
101637
101596
  }));
101638
101597
  //#endregion
101639
101598
  //#region ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.ts
@@ -101725,13 +101684,7 @@ function useEventRegistrationSubmitWithDeps(options, deps) {
101725
101684
  if (!result.alreadyRegistered && result.status === "confirmed" && result.pendingPayment && (method === "stripe" || method === "pass_bundle" || method === "membership_bundle")) {
101726
101685
  options.setPendingAttendeeId(result.attendeeId);
101727
101686
  options.setStep("redirecting");
101728
- const currentUrl = new URL(window.location.href);
101729
- const successParams = new URLSearchParams(currentUrl.search);
101730
- successParams.set("registration", "success");
101731
- const successUrl = `${currentUrl.origin}${currentUrl.pathname}?${successParams.toString()}${currentUrl.hash}`;
101732
- const cancelParams = new URLSearchParams(currentUrl.search);
101733
- cancelParams.set("registration", "cancelled");
101734
- const cancelUrl = `${currentUrl.origin}${currentUrl.pathname}?${cancelParams.toString()}${currentUrl.hash}`;
101687
+ const { successUrl, cancelUrl } = buildCheckoutReturnUrls("registration", EVENT_REGISTRATION_ANCHOR_ID);
101735
101688
  const checkoutType = method === "pass_bundle" ? "pass_bundle" : method === "membership_bundle" ? "membership_bundle" : "event";
101736
101689
  const checkoutResult = await options.api.createEventCheckout({
101737
101690
  attendeeId: result.attendeeId,
@@ -101796,6 +101749,8 @@ function useEventRegistrationSubmitWithDeps(options, deps) {
101796
101749
  }
101797
101750
  var eventRegistrationSubmitDeps;
101798
101751
  var init_useEventRegistrationSubmit = __esmMin((() => {
101752
+ init_shared$1();
101753
+ init_constants();
101799
101754
  init_sessionStorage();
101800
101755
  init_ticketSelectionLines();
101801
101756
  eventRegistrationSubmitDeps = { savePendingRegistration };
@@ -102672,12 +102627,6 @@ function filterMembershipsForEvent(siteMemberships, event) {
102672
102627
  }
102673
102628
  var init_eventProductEligibility = __esmMin((() => {}));
102674
102629
  //#endregion
102675
- //#region ../blocks/src/system/runtime/nodes/event-registration/constants.ts
102676
- var EVENT_REGISTRATION_ANCHOR_ID;
102677
- var init_constants = __esmMin((() => {
102678
- EVENT_REGISTRATION_ANCHOR_ID = "event-registration";
102679
- }));
102680
- //#endregion
102681
102630
  //#region ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.tsx
102682
102631
  function EventPortalAuthPrompt(props) {
102683
102632
  return /* @__PURE__ */ jsxs("div", {
@@ -103269,7 +103218,10 @@ function uniqByOccurrenceId(events) {
103269
103218
  return out;
103270
103219
  }
103271
103220
  function selectEventDetails(args) {
103272
- const all = uniqByOccurrenceId((args.events ?? []).filter(Boolean));
103221
+ const all = uniqByOccurrenceId(resolveEventRegistrationScopedEvents((args.events ?? []).filter(Boolean), {
103222
+ occurrenceContext: args.occurrenceContext,
103223
+ subject: args.subject
103224
+ }));
103273
103225
  const occurrenceContext = args.occurrenceContext ?? null;
103274
103226
  const otherLimit = parseLimit$1(args.otherDatesLimit, 5);
103275
103227
  const selectedFromContext = (() => {
@@ -103308,6 +103260,7 @@ function selectEventDetails(args) {
103308
103260
  }
103309
103261
  var init_logic = __esmMin((() => {
103310
103262
  init_src$3();
103263
+ init_eventScope();
103311
103264
  init_eventProductEligibility();
103312
103265
  }));
103313
103266
  //#endregion
@@ -103719,6 +103672,7 @@ var init_view$1 = __esmMin((() => {
103719
103672
  function toEventDetailsClientProps(props) {
103720
103673
  return {
103721
103674
  occurrenceContext: props.occurrenceContext,
103675
+ subject: props.subject,
103722
103676
  events: props.events ? [...props.events] : props.events,
103723
103677
  showVenue: props.showVenue,
103724
103678
  showMap: props.showMap,
@@ -103734,10 +103688,11 @@ function toEventDetailsClientProps(props) {
103734
103688
  nowIso: props.nowIso
103735
103689
  };
103736
103690
  }
103737
- function EventDetailsClient({ occurrenceContext, events, showVenue = true, showMap = true, showOtherDates = true, otherDatesLimit, showCost = true, showAcceptedPasses = true, showAcceptedMemberships = true, sitePasses, siteMemberships, autoApplyDiscount, className, nowIso, children }) {
103691
+ function EventDetailsClient({ occurrenceContext, subject, events, showVenue = true, showMap = true, showOtherDates = true, otherDatesLimit, showCost = true, showAcceptedPasses = true, showAcceptedMemberships = true, sitePasses, siteMemberships, autoApplyDiscount, className, nowIso, children }) {
103738
103692
  const selection = selectEventDetails({
103739
103693
  events: events ?? null,
103740
103694
  occurrenceContext: occurrenceContext ?? null,
103695
+ subject,
103741
103696
  nowIso: nowIso ?? (/* @__PURE__ */ new Date()).toISOString(),
103742
103697
  otherDatesLimit
103743
103698
  });
@@ -107699,7 +107654,7 @@ function eventSeriesIdsForSubject(subject) {
107699
107654
  switch (subject.kind) {
107700
107655
  case "eventSeries": return [subject.eventSeriesId];
107701
107656
  case "eventOffering": return subject.availableEventSeriesIds;
107702
- default: return assertNever$21(subject);
107657
+ default: return assertNever$20(subject);
107703
107658
  }
107704
107659
  }
107705
107660
  var init_course_page_surface_scope = __esmMin((() => {
@@ -110398,7 +110353,7 @@ function PassesMembershipsController({ render }) {
110398
110353
  case "redirect":
110399
110354
  window.location.href = result.checkoutUrl;
110400
110355
  return;
110401
- default: return assertNever$21(result);
110356
+ default: return assertNever$20(result);
110402
110357
  }
110403
110358
  } catch (submitError) {
110404
110359
  dispatch({
@@ -115571,7 +115526,7 @@ function planSiteChromePlacement(positioning) {
115571
115526
  headerRootClassName: "rb-fixed rb-top-0 rb-left-0 rb-right-0",
115572
115527
  standaloneShellClassName: "fixed left-0 right-0 top-0 z-40 w-full"
115573
115528
  };
115574
- default: return assertNever$13(positioning);
115529
+ default: return assertNever$12(positioning);
115575
115530
  }
115576
115531
  }
115577
115532
  function splitSiteChromePlacementClasses(className) {
@@ -121458,10 +121413,10 @@ function preferredPathsForSource(source) {
121458
121413
  case "workshop": return ["/workshops", "/workshop"];
121459
121414
  case "retreat": return ["/retreats", "/retreat"];
121460
121415
  case "performance": return ["/performances", "/performance"];
121461
- default: return assertNever$21(source.preset, "Unhandled offerings preview event preset");
121416
+ default: return assertNever$20(source.preset, "Unhandled offerings preview event preset");
121462
121417
  }
121463
121418
  case "course": return ["/courses", "/course"];
121464
- default: return assertNever$21(source, "Unhandled offerings preview source");
121419
+ default: return assertNever$20(source, "Unhandled offerings preview source");
121465
121420
  }
121466
121421
  }
121467
121422
  function normalizeRoutePath(value) {
@@ -126458,7 +126413,7 @@ function resolveLinkedContentEditSupport(contentType) {
126458
126413
  kind: "unsupported-domain-backed",
126459
126414
  reason: metadata.reason
126460
126415
  };
126461
- default: return assertNever$21(metadata);
126416
+ default: return assertNever$20(metadata);
126462
126417
  }
126463
126418
  }
126464
126419
  function contentTypeKeyToLabel(key) {
@@ -127854,11 +127809,14 @@ function BookingFormSSR({ blockId, siteId, apiBaseUrl, portalToken, formId, serv
127854
127809
  //#region ../blocks/src/system/runtime/nodes/event-details.server.tsx
127855
127810
  init_logic();
127856
127811
  init_view$1();
127857
- function EventDetailsSSR({ blockId, occurrenceContext, events, showVenue = true, showMap = true, showOtherDates = true, otherDatesLimit, showCost = true, showAcceptedPasses = true, showAcceptedMemberships = true, sitePasses, siteMemberships, autoApplyDiscount, className, children }) {
127812
+ init_eventScope();
127813
+ function EventDetailsSSR({ blockId, occurrenceContext, subject, events, showVenue = true, showMap = true, showOtherDates = true, otherDatesLimit, showCost = true, showAcceptedPasses = true, showAcceptedMemberships = true, sitePasses, siteMemberships, autoApplyDiscount, className, children }) {
127858
127814
  const nowIso = (/* @__PURE__ */ new Date()).toISOString();
127815
+ const normalizedSubject = normalizeEventRegistrationPageSurfaceSubject(subject);
127859
127816
  const selection = selectEventDetails({
127860
127817
  events: events ?? null,
127861
127818
  occurrenceContext: occurrenceContext ?? null,
127819
+ subject: normalizedSubject,
127862
127820
  nowIso,
127863
127821
  otherDatesLimit
127864
127822
  });
@@ -127873,6 +127831,7 @@ function EventDetailsSSR({ blockId, occurrenceContext, events, showVenue = true,
127873
127831
  children: [
127874
127832
  /* @__PURE__ */ jsx(IslandPropsScript, { value: {
127875
127833
  occurrenceContext,
127834
+ subject: normalizedSubject,
127876
127835
  events,
127877
127836
  showVenue,
127878
127837
  showMap,
@@ -128640,7 +128599,7 @@ function renderOfferingGroupItems(presentation, items, options) {
128640
128599
  children: items.map((item) => renderOfferingCompactItem(item, options))
128641
128600
  })
128642
128601
  });
128643
- default: return assertNever$21(presentation, "Unhandled offerings preview presentation");
128602
+ default: return assertNever$20(presentation, "Unhandled offerings preview presentation");
128644
128603
  }
128645
128604
  }
128646
128605
  function compareCoursesByNextSession(left, right) {
@@ -128685,7 +128644,7 @@ function featuredSummaryDetails(item) {
128685
128644
  const summary = deriveCourseScheduleSummary(item.course);
128686
128645
  return summary ? formatFeaturedSummary(summary, item.course.venue?.name ?? null) : null;
128687
128646
  }
128688
- default: return assertNever$21(item, "Unhandled offerings preview item");
128647
+ default: return assertNever$20(item, "Unhandled offerings preview item");
128689
128648
  }
128690
128649
  }
128691
128650
  function formatFeaturedSummary(summary, venue) {
@@ -128694,7 +128653,7 @@ function formatFeaturedSummary(summary, venue) {
128694
128653
  case "multi-day-span": return detailsFromOccurrences(summary.occurrence, summary.occurrence, venue, null, null, true);
128695
128654
  case "fixed-recurring-run": return detailsFromOccurrences(summary.first, summary.last, venue, summary.recurrenceLabel, null);
128696
128655
  case "irregular-multi-session-run": return detailsFromOccurrences(summary.first, summary.last, venue, null, `${summary.sessionCount} dates`);
128697
- default: return assertNever$21(summary, "Unhandled offerings preview schedule summary");
128656
+ default: return assertNever$20(summary, "Unhandled offerings preview schedule summary");
128698
128657
  }
128699
128658
  }
128700
128659
  function detailsFromOccurrences(first, last, venue, recurrence, sessionCount, spanUsesEndDate = false) {
@@ -129093,7 +129052,7 @@ function bookingActionContent(input) {
129093
129052
  children: input.buttonText
129094
129053
  });
129095
129054
  case "unavailable": return null;
129096
- default: return assertNever$21(input.booking);
129055
+ default: return assertNever$20(input.booking);
129097
129056
  }
129098
129057
  }
129099
129058
  function RecurringSchedule({ schedule, buttonText = "Book", buttonVariant = "primary", showVenue = true, emptyMessage = "Regular schedule details will be added shortly." }) {
@@ -130565,7 +130524,7 @@ function previewEditableTargetToPath(target) {
130565
130524
  case "current-entry-field":
130566
130525
  case "current-entry-metadata": return target.path;
130567
130526
  case "read-only": return;
130568
- default: return assertNever$21(target);
130527
+ default: return assertNever$20(target);
130569
130528
  }
130570
130529
  }
130571
130530
  function previewEditableTargetToFieldKey(target) {
@@ -131642,7 +131601,7 @@ function collectNestedPreviewFieldConstraintEntries(field, path) {
131642
131601
  case "text":
131643
131602
  case "time":
131644
131603
  case "url": return [];
131645
- default: return assertNever$21(field);
131604
+ default: return assertNever$20(field);
131646
131605
  }
131647
131606
  }
131648
131607
  function makeDefaultBlockComponent(args) {
@@ -135837,7 +135796,7 @@ function sourceLabel(source) {
135837
135796
  case "managed-database": return "DB";
135838
135797
  case "sdk-synced": return "SDK-synced DB";
135839
135798
  case "sdk-config": return "SDK config";
135840
- default: return assertNever$21(source);
135799
+ default: return assertNever$20(source);
135841
135800
  }
135842
135801
  }
135843
135802
  //#endregion
@@ -149609,7 +149568,7 @@ function renderWithSdkThemeRuntime({ themeRuntime, theme, children }) {
149609
149568
  children
149610
149569
  });
149611
149570
  case "none": return /* @__PURE__ */ jsx(Fragment, { children });
149612
- default: return assertNever$21(themeRuntime);
149571
+ default: return assertNever$20(themeRuntime);
149613
149572
  }
149614
149573
  }
149615
149574
  //#endregion
@@ -152301,7 +152260,7 @@ function navigationAuthoringLinkToCommandLink(link) {
152301
152260
  badge: link.badge,
152302
152261
  label: link.label
152303
152262
  };
152304
- default: return assertNever$21(link);
152263
+ default: return assertNever$20(link);
152305
152264
  }
152306
152265
  }
152307
152266
  function portalLabelsForCommand(labels) {
@@ -152344,7 +152303,7 @@ function navigationReadLinkToLocalLink(item) {
152344
152303
  badge: link.badge,
152345
152304
  label: link.label
152346
152305
  };
152347
- default: return assertNever$21(link);
152306
+ default: return assertNever$20(link);
152348
152307
  }
152349
152308
  }
152350
152309
  function internalNavigationLinkToLocalLink(item) {