@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
@@ -99,7 +99,7 @@ const parseEventOfferingId = (value) => parseUuidBrand$1(value, unsafeAsEventOff
99
99
  const parseEventSeriesId = (value) => parseUuidBrand$1(value, unsafeAsEventSeriesId);
100
100
  //#endregion
101
101
  //#region ../core/src/assert-never.ts
102
- function assertNever$25(value, message = "Unexpected variant") {
102
+ function assertNever$24(value, message = "Unexpected variant") {
103
103
  throw new Error(`${message}: ${String(value)}`);
104
104
  }
105
105
  const CURRENCY_LOCALE_BY_CODE = {
@@ -190,7 +190,7 @@ function formatCoursePriceDisplayLabel(display, options) {
190
190
  case "exact": return `Course (${formatCurrencyAmount(display.amount, display.currency, options)})`;
191
191
  case "from": return `Course (From ${formatCurrencyAmount(display.amount, display.currency, options)})`;
192
192
  case "range": return `Course (${formatCurrencyAmount(display.minAmount, display.currency, options)} - ${formatCurrencyAmount(display.maxAmount, display.currency, options)})`;
193
- default: return assertNever$25(display);
193
+ default: return assertNever$24(display);
194
194
  }
195
195
  }
196
196
  /**
@@ -210,7 +210,7 @@ function formatBookingPriceDisplay(display, options = {}) {
210
210
  case "unavailable": return "Pricing unavailable";
211
211
  case "external": return display.label;
212
212
  case "course": return formatCoursePriceDisplayLabel(display.display, options);
213
- default: return assertNever$25(display);
213
+ default: return assertNever$24(display);
214
214
  }
215
215
  }
216
216
  /** Render an event's price directly from its pricing value. */
@@ -3602,7 +3602,7 @@ const ALLOWED_URL_PROTOCOLS = ["http:", "https:"];
3602
3602
  const DATE_PATTERN = /^(?<year>[1-9]\d{3})-(?<month>\d{2})-(?<day>\d{2})$/;
3603
3603
  const TIME_PATTERN = /^(?<hours>[01]\d|2[0-3]):(?<minutes>[0-5]\d)$/;
3604
3604
  const DATETIME_PATTERN = /^(?<date>[1-9]\d{3}-\d{2}-\d{2})T(?<time>(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d)(?:\.\d+)?(?<offset>Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/;
3605
- function assertNever$17(value) {
3605
+ function assertNever$16(value) {
3606
3606
  throw new Error(`Unhandled field validation variant: ${JSON.stringify(value)}`);
3607
3607
  }
3608
3608
  function validationContext(options = {}) {
@@ -3655,7 +3655,7 @@ function fieldIssueToMessage(issue) {
3655
3655
  case "invalidMedia": return `${issue.label} must be a media object with an identifier`;
3656
3656
  case "invalidLink": return `${issue.label} must be a valid link`;
3657
3657
  case "invalidReference": return `${issue.label} must reference a valid item`;
3658
- default: return assertNever$17(issue);
3658
+ default: return assertNever$16(issue);
3659
3659
  }
3660
3660
  }
3661
3661
  function pluralize(label, count) {
@@ -3775,7 +3775,7 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
3775
3775
  case "presetOrCustom":
3776
3776
  case "contentTypeSelect":
3777
3777
  case "entryPicker": return makePlan("passthrough", "unknown", field, path, false, []);
3778
- default: return assertNever$17(field);
3778
+ default: return assertNever$16(field);
3779
3779
  }
3780
3780
  }
3781
3781
  function deriveFieldValidationPlans(fields, parentPath = []) {
@@ -3850,7 +3850,7 @@ function resolveSelectConstraintSource(field) {
3850
3850
  kind: "runtime",
3851
3851
  source: source.kind
3852
3852
  };
3853
- default: return assertNever$17(source);
3853
+ default: return assertNever$16(source);
3854
3854
  }
3855
3855
  }
3856
3856
  function normalizeStoredContentValues(plans, content, options = {}) {
@@ -3869,7 +3869,7 @@ function allGroupChildPlans(plan) {
3869
3869
  switch (plan.childSelection.kind) {
3870
3870
  case "all": return plan.childSelection.fields;
3871
3871
  case "discriminatedTabs": return plan.childSelection.tabs.flatMap((tab) => tab.fields);
3872
- default: return assertNever$17(plan.childSelection);
3872
+ default: return assertNever$16(plan.childSelection);
3873
3873
  }
3874
3874
  }
3875
3875
  function selectedGroupChildPlans(plan, value) {
@@ -3902,7 +3902,7 @@ function canonicalizeFieldValueForWrite(plan, value) {
3902
3902
  case "link":
3903
3903
  case "select":
3904
3904
  case "passthrough": return value;
3905
- default: return assertNever$17(plan);
3905
+ default: return assertNever$16(plan);
3906
3906
  }
3907
3907
  }
3908
3908
  function canonicalizeObjectForWrite(plans, value) {
@@ -3928,7 +3928,7 @@ function normalizeStoredFieldValueWithContext(plan, value, ctx) {
3928
3928
  case "link":
3929
3929
  case "select":
3930
3930
  case "passthrough": return normalizeFieldValue(plan, value, ctx);
3931
- default: return assertNever$17(plan);
3931
+ default: return assertNever$16(plan);
3932
3932
  }
3933
3933
  }
3934
3934
  function normalizeStoredObjectChildren(children, value, ctx) {
@@ -3965,7 +3965,7 @@ function normalizeFieldValue(plan, value, ctx) {
3965
3965
  case "select":
3966
3966
  case "passthrough": return value;
3967
3967
  case "media": return value;
3968
- default: return assertNever$17(plan);
3968
+ default: return assertNever$16(plan);
3969
3969
  }
3970
3970
  }
3971
3971
  function normalizeObjectChildren(children, value, ctx) {
@@ -4024,7 +4024,7 @@ function validateNormalizedFieldValue(plan, value, ctx) {
4024
4024
  case "repeater": return validateRepeaterPlan(plan, value, ctx);
4025
4025
  case "group": return validateGroupPlan(plan, value, ctx);
4026
4026
  case "passthrough": return [];
4027
- default: return assertNever$17(plan);
4027
+ default: return assertNever$16(plan);
4028
4028
  }
4029
4029
  }
4030
4030
  function shouldRequireValue(plan, value, ctx) {
@@ -4066,7 +4066,7 @@ function validateStringConstraint(plan, constraint, value) {
4066
4066
  case "timeFormat": return typeof value === "string" && isValidTimeString(value) ? [] : [issue(plan, "invalidTime")];
4067
4067
  case "datetimeFormat": return typeof value === "string" && isValidDateTimeInstantString(value) ? [] : [issue(plan, "invalidDateTime")];
4068
4068
  case "slugFormat": return typeof value === "string" && SLUG_PATTERN.test(value) ? [] : [issue(plan, "invalidSlug")];
4069
- default: return assertNever$17(constraint);
4069
+ default: return assertNever$16(constraint);
4070
4070
  }
4071
4071
  }
4072
4072
  function isValidIconPickerValue(value) {
@@ -4085,7 +4085,7 @@ function validateNumberConstraint(plan, constraint, value) {
4085
4085
  case "numberType": return [];
4086
4086
  case "numberMin": return value < constraint.minimum ? [issue(plan, "tooSmall", { minimum: constraint.minimum })] : [];
4087
4087
  case "numberMax": return value > constraint.maximum ? [issue(plan, "tooLarge", { maximum: constraint.maximum })] : [];
4088
- default: return assertNever$17(constraint);
4088
+ default: return assertNever$16(constraint);
4089
4089
  }
4090
4090
  }
4091
4091
  function validateSelectPlan(plan, value) {
@@ -4107,7 +4107,7 @@ function validateRepeaterPlan(plan, value, ctx) {
4107
4107
  maximum: constraint.maximum,
4108
4108
  itemLabel: "item"
4109
4109
  })] : [];
4110
- default: return assertNever$17(constraint);
4110
+ default: return assertNever$16(constraint);
4111
4111
  }
4112
4112
  }), ...value.flatMap((item, index) => validateRepeaterItem(plan, item, index, ctx))];
4113
4113
  }
@@ -4198,7 +4198,7 @@ function rebaseFieldPlanPath(plan, fromPrefix, toPrefix) {
4198
4198
  ...plan,
4199
4199
  path
4200
4200
  };
4201
- default: return assertNever$17(plan);
4201
+ default: return assertNever$16(plan);
4202
4202
  }
4203
4203
  }
4204
4204
  function validateInlineTextPlan(plan, value) {
@@ -4245,7 +4245,7 @@ function fieldPlanToObjectPropertyZod(plan, options = {}) {
4245
4245
  switch (presence.kind) {
4246
4246
  case "required": return schema;
4247
4247
  case "optional": return schema.optional();
4248
- default: return assertNever$17(presence);
4248
+ default: return assertNever$16(presence);
4249
4249
  }
4250
4250
  }
4251
4251
  function addFieldIssueToZodContext(zodCtx, validationIssue, rootPath) {
@@ -4315,7 +4315,7 @@ function addFieldIssueToZodContext(zodCtx, validationIssue, rootPath) {
4315
4315
  message
4316
4316
  });
4317
4317
  return;
4318
- default: assertNever$17(validationIssue);
4318
+ default: assertNever$16(validationIssue);
4319
4319
  }
4320
4320
  }
4321
4321
  function relativeZodIssuePath(path, rootPath) {
@@ -4346,7 +4346,7 @@ function findNestedFieldValidationPlan(plan, path) {
4346
4346
  case "link":
4347
4347
  case "select":
4348
4348
  case "passthrough": return null;
4349
- default: return assertNever$17(plan);
4349
+ default: return assertNever$16(plan);
4350
4350
  }
4351
4351
  }
4352
4352
  function sameFieldPath(left, right) {
@@ -4370,7 +4370,7 @@ function validateExplicitNullForPushPlan(plan, value, ctx) {
4370
4370
  case "link":
4371
4371
  case "select":
4372
4372
  case "passthrough": return [];
4373
- default: return assertNever$17(plan);
4373
+ default: return assertNever$16(plan);
4374
4374
  }
4375
4375
  }
4376
4376
  function validateExplicitNullsForPushRepeater(plan, value, ctx) {
@@ -4790,7 +4790,7 @@ function asDesignSystemTemplateId(value) {
4790
4790
  function makeBoundaryId(previousBlockId, nextBlockId) {
4791
4791
  return asDesignBoundaryId(`boundary:${encodeURIComponent(previousBlockId)}:${encodeURIComponent(nextBlockId)}`);
4792
4792
  }
4793
- function assertNever$16(value, message = "Unhandled Theme V2 variant") {
4793
+ function assertNever$15(value, message = "Unhandled Theme V2 variant") {
4794
4794
  throw new Error(`${message}: ${String(value)}`);
4795
4795
  }
4796
4796
  function brandNonEmptyString(value, label) {
@@ -7052,6 +7052,21 @@ const themeColorTokenSchema = z$1.string().min(1).refine((value) => Boolean(isTh
7052
7052
  //#region ../theme-core/src/palette/colors.ts
7053
7053
  const HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
7054
7054
  const NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
7055
+ const THEME_PALETTE_COLOR_ORDER = [
7056
+ "primary",
7057
+ "secondary",
7058
+ "accent",
7059
+ "success",
7060
+ "warning",
7061
+ "destructive",
7062
+ "background",
7063
+ "surface",
7064
+ "surfaceAlt",
7065
+ "muted",
7066
+ "text",
7067
+ "primaryForeground",
7068
+ "border"
7069
+ ];
7055
7070
  const hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
7056
7071
  const paletteModeSchema = z$1.enum(["light", "dark"]);
7057
7072
  const PALETTE_VALUE_KEY_PREFIX = "palette-value:v1|";
@@ -7129,6 +7144,12 @@ function requirePaletteColorsFromEntries(entries) {
7129
7144
  if (result.ok) return result.colors;
7130
7145
  throw new Error(`Invalid complete palette: ${result.error.kind}`);
7131
7146
  }
7147
+ function paletteColorEntries(colors) {
7148
+ return THEME_PALETTE_COLOR_ORDER.map((name) => ({
7149
+ name,
7150
+ hex: colors[name]
7151
+ }));
7152
+ }
7132
7153
  function paletteColorFingerprint(colors) {
7133
7154
  return PALETTE_TOKEN_NAMES.map((name) => `${name}:${colors[name]}`).join("|");
7134
7155
  }
@@ -8462,13 +8483,6 @@ const warmDarkKirtanGold = defineCuratedPalette({
8462
8483
  });
8463
8484
  //#endregion
8464
8485
  //#region ../theme-core/src/palette/curated/index.ts
8465
- /**
8466
- * Curated palette library.
8467
- *
8468
- * Authoring keys are readable source aliases. Value keys are derived from the
8469
- * complete mode and semantic colours and are the only curated identity used at
8470
- * persistence and runtime boundaries.
8471
- */
8472
8486
  function admitCuratedPaletteDefinition(definition) {
8473
8487
  return {
8474
8488
  ...definition,
@@ -8495,11 +8509,8 @@ const curatedPalettes = [
8495
8509
  admitCuratedPaletteDefinition(warmDarkEmber),
8496
8510
  admitCuratedPaletteDefinition(warmDarkKirtanGold)
8497
8511
  ];
8498
- const curatedPalettesByValueKey = new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
8512
+ new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
8499
8513
  const curatedPalettesByAuthoringKey = new Map(curatedPalettes.map((palette) => [palette.authoringKey, palette]));
8500
- function findCuratedPalette(valueKey) {
8501
- return curatedPalettesByValueKey.get(valueKey);
8502
- }
8503
8514
  function findCuratedPaletteByAuthoringKey(authoringKey) {
8504
8515
  return curatedPalettesByAuthoringKey.get(authoringKey);
8505
8516
  }
@@ -8508,87 +8519,6 @@ function requireCuratedPaletteValueKey(authoringKey) {
8508
8519
  if (!palette) throw new Error(`Unknown curated palette authoring key "${authoringKey}"`);
8509
8520
  return palette.valueKey;
8510
8521
  }
8511
- /** Parses a raw persisted key into catalogue-proven curated membership. */
8512
- const knownCuratedPaletteValueKeySchema = z$1.string().transform((value, ctx) => {
8513
- const valueKey = parsePaletteValueKey(value);
8514
- if (!valueKey) {
8515
- ctx.addIssue({
8516
- code: "custom",
8517
- message: "Invalid canonical palette value key"
8518
- });
8519
- return z$1.NEVER;
8520
- }
8521
- const palette = findCuratedPalette(valueKey);
8522
- if (!palette) {
8523
- ctx.addIssue({
8524
- code: "custom",
8525
- message: "Unknown curated palette value key"
8526
- });
8527
- return z$1.NEVER;
8528
- }
8529
- return palette.valueKey;
8530
- });
8531
- //#endregion
8532
- //#region ../theme-core/src/palette/selection.ts
8533
- const sitePaletteIdSchema = z$1.string().uuid().transform((value) => value);
8534
- const sitePaletteVersionSchema = z$1.number().int().nonnegative().transform((value) => value);
8535
- const paletteSelectionSchema = z$1.discriminatedUnion("kind", [z$1.object({
8536
- kind: z$1.literal("curated"),
8537
- valueKey: knownCuratedPaletteValueKeySchema
8538
- }), z$1.object({
8539
- kind: z$1.literal("site"),
8540
- paletteId: sitePaletteIdSchema
8541
- })]);
8542
- const onboardingPaletteOriginSchema = z$1.object({
8543
- kind: z$1.literal("onboarding"),
8544
- sourceKey: z$1.string().min(1).nullable()
8545
- });
8546
- const curatedForkPaletteOriginSchema = z$1.object({
8547
- kind: z$1.literal("curated-fork"),
8548
- sourceValueKey: paletteValueKeySchema
8549
- });
8550
- const manualPaletteOriginSchema = z$1.object({ kind: z$1.literal("manual") });
8551
- const legacyCustomizedPaletteOriginSchema = z$1.object({
8552
- kind: z$1.literal("legacy-customized"),
8553
- sourceKey: z$1.string().min(1).nullable()
8554
- });
8555
- const sitePaletteOriginSchema = z$1.discriminatedUnion("kind", [
8556
- onboardingPaletteOriginSchema,
8557
- curatedForkPaletteOriginSchema,
8558
- manualPaletteOriginSchema,
8559
- legacyCustomizedPaletteOriginSchema
8560
- ]);
8561
- const editorSitePaletteOriginSchema = z$1.discriminatedUnion("kind", [z$1.object({
8562
- kind: z$1.literal("curated-fork"),
8563
- sourceValueKey: knownCuratedPaletteValueKeySchema
8564
- }), manualPaletteOriginSchema]);
8565
- z$1.object({
8566
- id: sitePaletteIdSchema,
8567
- colors: paletteColorsSchema,
8568
- mode: paletteModeSchema,
8569
- origin: sitePaletteOriginSchema,
8570
- version: sitePaletteVersionSchema
8571
- });
8572
- z$1.discriminatedUnion("kind", [
8573
- z$1.object({ kind: z$1.literal("preserve") }),
8574
- z$1.object({
8575
- kind: z$1.literal("select"),
8576
- selection: paletteSelectionSchema
8577
- }),
8578
- z$1.object({
8579
- kind: z$1.literal("create-site"),
8580
- colors: paletteColorsSchema,
8581
- mode: paletteModeSchema,
8582
- origin: editorSitePaletteOriginSchema
8583
- }),
8584
- z$1.object({
8585
- kind: z$1.literal("update-site"),
8586
- paletteId: sitePaletteIdSchema,
8587
- expectedVersion: sitePaletteVersionSchema,
8588
- colors: paletteColorsSchema,
8589
- mode: paletteModeSchema
8590
- })
8591
- ]);
8592
8522
  const defaultThemeTokens = {
8593
8523
  color: {
8594
8524
  "background/base": "#ffffff",
@@ -9452,7 +9382,7 @@ function applyNavTypography(style, typography) {
9452
9382
  textSize: "sm",
9453
9383
  letterSpacing: "wider"
9454
9384
  };
9455
- default: return assertNever$16(typography, "Unhandled header nav typography");
9385
+ default: return assertNever$15(typography, "Unhandled header nav typography");
9456
9386
  }
9457
9387
  }
9458
9388
  function underlineNavLinkStyle(colorToken, underlineColorToken, typography = "plain") {
@@ -9481,7 +9411,7 @@ function themedHeaderShadow(theme) {
9481
9411
  case "low": return { elevation: "sm" };
9482
9412
  case "medium": return { elevation: "md" };
9483
9413
  case "high": return { elevation: "lg" };
9484
- default: return assertNever$16(theme.shadow.elevation, "Unhandled theme shadow elevation");
9414
+ default: return assertNever$15(theme.shadow.elevation, "Unhandled theme shadow elevation");
9485
9415
  }
9486
9416
  }
9487
9417
  function solidBrandHeader(theme) {
@@ -13357,6 +13287,34 @@ const mediaSchema$1 = z.object({
13357
13287
  transform: transformSchema$1.optional()
13358
13288
  });
13359
13289
  //#endregion
13290
+ //#region ../theme-core/src/palette/schema.ts
13291
+ const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
13292
+ const paletteColorSchema = z$1.object({
13293
+ name: z$1.string().min(1),
13294
+ hex: colourHexString
13295
+ });
13296
+ const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
13297
+ const paletteSchema = z$1.object({
13298
+ colors: z$1.array(paletteColorSchema),
13299
+ meta: paletteMetaSchema
13300
+ }).transform((palette, ctx) => {
13301
+ const colors = paletteColorsFromEntries(palette.colors);
13302
+ if (!colors.ok) {
13303
+ ctx.addIssue({
13304
+ code: "custom",
13305
+ message: `Invalid complete palette: ${colors.error.kind}`
13306
+ });
13307
+ return z$1.NEVER;
13308
+ }
13309
+ return {
13310
+ colors: paletteColorEntries(colors.colors).map(({ name, hex }) => ({
13311
+ name: String(name),
13312
+ hex: String(hex)
13313
+ })),
13314
+ meta: palette.meta
13315
+ };
13316
+ });
13317
+ //#endregion
13360
13318
  //#region ../theme-core/src/surfaces/foregroundRoles.ts
13361
13319
  const SURFACE_FOREGROUND_ROLES = [
13362
13320
  "text",
@@ -17447,16 +17405,6 @@ const axesSchema = z$1.object({
17447
17405
  "expressive"
17448
17406
  ])
17449
17407
  });
17450
- const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
17451
- const paletteColorSchema = z$1.object({
17452
- name: z$1.string().min(1),
17453
- hex: colourHexString
17454
- });
17455
- const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
17456
- const paletteSchema = z$1.object({
17457
- colors: z$1.array(paletteColorSchema),
17458
- meta: paletteMetaSchema
17459
- });
17460
17408
  const typographyStyleSchema = z$1.object({
17461
17409
  family: z$1.string().min(1),
17462
17410
  weight: z$1.enum([
@@ -28223,7 +28171,7 @@ function planSiteChromePlacement(positioning) {
28223
28171
  headerRootClassName: "rb-fixed rb-top-0 rb-left-0 rb-right-0",
28224
28172
  standaloneShellClassName: "fixed left-0 right-0 top-0 z-40 w-full"
28225
28173
  };
28226
- default: return assertNever$16(positioning);
28174
+ default: return assertNever$15(positioning);
28227
28175
  }
28228
28176
  }
28229
28177
  function splitSiteChromePlacementClasses(className) {
@@ -33398,6 +33346,10 @@ const eventDetailsManifest = createBlockManifest({
33398
33346
  from: "$root.occurrenceContext",
33399
33347
  fallback: null
33400
33348
  } },
33349
+ subject: { $bind: {
33350
+ from: "$root.subject",
33351
+ fallback: null
33352
+ } },
33401
33353
  events: { $bind: { from: "data.eventDetailsData.events" } },
33402
33354
  showVenue: { $bind: { from: "content.showVenue" } },
33403
33355
  showMap: { $bind: { from: "content.showMap" } },
@@ -38587,10 +38539,10 @@ function preferredPathsForSource(source) {
38587
38539
  case "workshop": return ["/workshops", "/workshop"];
38588
38540
  case "retreat": return ["/retreats", "/retreat"];
38589
38541
  case "performance": return ["/performances", "/performance"];
38590
- default: return assertNever$25(source.preset, "Unhandled offerings preview event preset");
38542
+ default: return assertNever$24(source.preset, "Unhandled offerings preview event preset");
38591
38543
  }
38592
38544
  case "course": return ["/courses", "/course"];
38593
- default: return assertNever$25(source, "Unhandled offerings preview source");
38545
+ default: return assertNever$24(source, "Unhandled offerings preview source");
38594
38546
  }
38595
38547
  }
38596
38548
  function normalizeRoutePath(value) {
@@ -44740,7 +44692,7 @@ function resolveLinkedContentEditSupport(contentType) {
44740
44692
  kind: "unsupported-domain-backed",
44741
44693
  reason: metadata.reason
44742
44694
  };
44743
- default: return assertNever$25(metadata);
44695
+ default: return assertNever$24(metadata);
44744
44696
  }
44745
44697
  }
44746
44698
  function contentTypeKeyToLabel(key) {
@@ -46899,7 +46851,10 @@ function uniqByOccurrenceId(events) {
46899
46851
  return out;
46900
46852
  }
46901
46853
  function selectEventDetails(args) {
46902
- const all = uniqByOccurrenceId((args.events ?? []).filter(Boolean));
46854
+ const all = uniqByOccurrenceId(resolveEventRegistrationScopedEvents((args.events ?? []).filter(Boolean), {
46855
+ occurrenceContext: args.occurrenceContext,
46856
+ subject: args.subject
46857
+ }));
46903
46858
  const occurrenceContext = args.occurrenceContext ?? null;
46904
46859
  const otherLimit = parseLimit$1(args.otherDatesLimit, 5);
46905
46860
  const selectedFromContext = (() => {
@@ -47165,11 +47120,13 @@ function EventDetailsView({ selection, showVenue, showMap, showOtherDates, showC
47165
47120
  }
47166
47121
  //#endregion
47167
47122
  //#region ../blocks/src/system/runtime/nodes/event-details.server.tsx
47168
- function EventDetailsSSR({ blockId, occurrenceContext, events, showVenue = true, showMap = true, showOtherDates = true, otherDatesLimit, showCost = true, showAcceptedPasses = true, showAcceptedMemberships = true, sitePasses, siteMemberships, autoApplyDiscount, className, children }) {
47123
+ function EventDetailsSSR({ blockId, occurrenceContext, subject, events, showVenue = true, showMap = true, showOtherDates = true, otherDatesLimit, showCost = true, showAcceptedPasses = true, showAcceptedMemberships = true, sitePasses, siteMemberships, autoApplyDiscount, className, children }) {
47169
47124
  const nowIso = (/* @__PURE__ */ new Date()).toISOString();
47125
+ const normalizedSubject = normalizeEventRegistrationPageSurfaceSubject(subject);
47170
47126
  const selection = selectEventDetails({
47171
47127
  events: events ?? null,
47172
47128
  occurrenceContext: occurrenceContext ?? null,
47129
+ subject: normalizedSubject,
47173
47130
  nowIso,
47174
47131
  otherDatesLimit
47175
47132
  });
@@ -47184,6 +47141,7 @@ function EventDetailsSSR({ blockId, occurrenceContext, events, showVenue = true,
47184
47141
  children: [
47185
47142
  /* @__PURE__ */ jsx(IslandPropsScript, { value: {
47186
47143
  occurrenceContext,
47144
+ subject: normalizedSubject,
47187
47145
  events,
47188
47146
  showVenue,
47189
47147
  showMap,
@@ -47331,7 +47289,7 @@ function eventSeriesIdsForSubject(subject) {
47331
47289
  switch (subject.kind) {
47332
47290
  case "eventSeries": return [subject.eventSeriesId];
47333
47291
  case "eventOffering": return subject.availableEventSeriesIds;
47334
- default: return assertNever$25(subject);
47292
+ default: return assertNever$24(subject);
47335
47293
  }
47336
47294
  }
47337
47295
  //#endregion
@@ -48048,7 +48006,7 @@ function renderOfferingGroupItems(presentation, items, options) {
48048
48006
  children: items.map((item) => renderOfferingCompactItem(item, options))
48049
48007
  })
48050
48008
  });
48051
- default: return assertNever$25(presentation, "Unhandled offerings preview presentation");
48009
+ default: return assertNever$24(presentation, "Unhandled offerings preview presentation");
48052
48010
  }
48053
48011
  }
48054
48012
  function compareCoursesByNextSession(left, right) {
@@ -48093,7 +48051,7 @@ function featuredSummaryDetails(item) {
48093
48051
  const summary = deriveCourseScheduleSummary(item.course);
48094
48052
  return summary ? formatFeaturedSummary(summary, item.course.venue?.name ?? null) : null;
48095
48053
  }
48096
- default: return assertNever$25(item, "Unhandled offerings preview item");
48054
+ default: return assertNever$24(item, "Unhandled offerings preview item");
48097
48055
  }
48098
48056
  }
48099
48057
  function formatFeaturedSummary(summary, venue) {
@@ -48102,7 +48060,7 @@ function formatFeaturedSummary(summary, venue) {
48102
48060
  case "multi-day-span": return detailsFromOccurrences(summary.occurrence, summary.occurrence, venue, null, null, true);
48103
48061
  case "fixed-recurring-run": return detailsFromOccurrences(summary.first, summary.last, venue, summary.recurrenceLabel, null);
48104
48062
  case "irregular-multi-session-run": return detailsFromOccurrences(summary.first, summary.last, venue, null, `${summary.sessionCount} dates`);
48105
- default: return assertNever$25(summary, "Unhandled offerings preview schedule summary");
48063
+ default: return assertNever$24(summary, "Unhandled offerings preview schedule summary");
48106
48064
  }
48107
48065
  }
48108
48066
  function detailsFromOccurrences(first, last, venue, recurrence, sessionCount, spanUsesEndDate = false) {
@@ -48499,7 +48457,7 @@ function bookingActionContent(input) {
48499
48457
  children: input.buttonText
48500
48458
  });
48501
48459
  case "unavailable": return null;
48502
- default: return assertNever$25(input.booking);
48460
+ default: return assertNever$24(input.booking);
48503
48461
  }
48504
48462
  }
48505
48463
  function RecurringSchedule({ schedule, buttonText = "Book", buttonVariant = "primary", showVenue = true, emptyMessage = "Regular schedule details will be added shortly." }) {
@@ -50677,7 +50635,7 @@ function previewEditableTargetToPath(target) {
50677
50635
  case "current-entry-field":
50678
50636
  case "current-entry-metadata": return target.path;
50679
50637
  case "read-only": return;
50680
- default: return assertNever$25(target);
50638
+ default: return assertNever$24(target);
50681
50639
  }
50682
50640
  }
50683
50641
  function previewEditableTargetToFieldKey(target) {
@@ -51752,7 +51710,7 @@ function collectNestedPreviewFieldConstraintEntries(field, path) {
51752
51710
  case "text":
51753
51711
  case "time":
51754
51712
  case "url": return [];
51755
- default: return assertNever$25(field);
51713
+ default: return assertNever$24(field);
51756
51714
  }
51757
51715
  }
51758
51716
  function makeDefaultBlockComponent(args) {
@@ -55907,7 +55865,7 @@ function sourceLabel(source) {
55907
55865
  case "managed-database": return "DB";
55908
55866
  case "sdk-synced": return "SDK-synced DB";
55909
55867
  case "sdk-config": return "SDK config";
55910
- default: return assertNever$25(source);
55868
+ default: return assertNever$24(source);
55911
55869
  }
55912
55870
  }
55913
55871
  //#endregion
@@ -69654,7 +69612,7 @@ function renderWithSdkThemeRuntime({ themeRuntime, theme, children }) {
69654
69612
  children
69655
69613
  });
69656
69614
  case "none": return /* @__PURE__ */ jsx(Fragment, { children });
69657
- default: return assertNever$25(themeRuntime);
69615
+ default: return assertNever$24(themeRuntime);
69658
69616
  }
69659
69617
  }
69660
69618
  //#endregion
@@ -72290,7 +72248,7 @@ function navigationAuthoringLinkToCommandLink(link) {
72290
72248
  badge: link.badge,
72291
72249
  label: link.label
72292
72250
  };
72293
- default: return assertNever$25(link);
72251
+ default: return assertNever$24(link);
72294
72252
  }
72295
72253
  }
72296
72254
  function portalLabelsForCommand(labels) {
@@ -72333,7 +72291,7 @@ function navigationReadLinkToLocalLink(item) {
72333
72291
  badge: link.badge,
72334
72292
  label: link.label
72335
72293
  };
72336
- default: return assertNever$25(link);
72294
+ default: return assertNever$24(link);
72337
72295
  }
72338
72296
  }
72339
72297
  function internalNavigationLinkToLocalLink(item) {