@riverbankcms/sdk 0.78.0 → 0.78.2

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 (152) hide show
  1. package/README.md +45 -43
  2. package/dist/{PreviewEditorSidebar-RIKFQ72L.mjs → PreviewEditorSidebar-4DXLYX2V.mjs} +29 -21
  3. package/dist/{PreviewEditorUI-XO7TUWKK.mjs → PreviewEditorUI-CS5P4N3P.mjs} +4 -4
  4. package/dist/SdkPreviewModeRuntime-IJDHTW4W.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +36 -0
  6. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  7. package/dist/_dts/api/src/endpoints.d.ts +9 -0
  8. package/dist/_dts/api/src/index.d.ts +3 -3
  9. package/dist/_dts/api/src/public/types.d.ts +1 -1
  10. package/dist/_dts/api/src/request.d.ts +3 -11
  11. package/dist/_dts/api/src/sdkConfig/contracts.d.ts +1 -0
  12. package/dist/_dts/api/src/sdkContracts.d.ts +7 -1
  13. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -0
  14. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -0
  15. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +15 -19
  16. package/dist/_dts/api/src/types.d.ts +11 -26
  17. package/dist/_dts/block-form/src/fields/types.d.ts +6 -0
  18. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +3 -2
  19. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +6 -3
  20. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +8 -3
  21. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -1
  22. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLinearRepeaterDnd.d.ts +1 -0
  23. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +1 -0
  24. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useResolvedItemLabel.d.ts +7 -0
  25. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +1 -0
  26. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/index.d.ts +3 -1
  27. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +1 -1
  28. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterLabelSource.d.ts +15 -0
  29. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +50 -0
  30. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +591 -0
  31. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +591 -0
  32. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +591 -0
  33. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +591 -0
  34. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +591 -0
  35. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +591 -0
  36. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +591 -0
  37. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -0
  38. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -0
  39. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +591 -0
  40. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +591 -0
  41. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +591 -0
  42. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
  43. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +164 -0
  44. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
  45. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +1 -1
  46. package/dist/_dts/content-editor/src/index.d.ts +1 -1
  47. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -2
  48. package/dist/_dts/content-model/src/content-types/schema.d.ts +14 -0
  49. package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +3 -1
  50. package/dist/_dts/content-model/src/templates/bindingValidation.d.ts +10 -4
  51. package/dist/_dts/content-model/src/templates/fieldPaths.d.ts +20 -0
  52. package/dist/_dts/content-model/src/templates/manifestAdapter.d.ts +5 -2
  53. package/dist/_dts/core/src/branded.d.ts +108 -85
  54. package/dist/_dts/core/src/csv-types.d.ts +2 -2
  55. package/dist/_dts/core/src/editor-state.d.ts +7 -7
  56. package/dist/_dts/core/src/participants.d.ts +2 -2
  57. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +11 -0
  58. package/dist/_dts/editor-blocks/src/blockPayload.d.ts +1 -1
  59. package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -1
  60. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -1
  61. package/dist/_dts/media-editor/src/fieldUi.d.ts +5 -0
  62. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  63. package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +1 -1
  64. package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +2 -0
  65. package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +3 -3
  66. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +7 -0
  67. package/dist/_dts/sdk/src/cli/commands/push.d.ts +2 -0
  68. package/dist/_dts/sdk/src/cli/content/reader.d.ts +13 -0
  69. package/dist/_dts/sdk/src/cli/content/writer.d.ts +2 -1
  70. package/dist/_dts/sdk/src/cli/helpers.d.ts +2 -0
  71. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +6 -6
  72. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +5 -0
  73. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +4 -0
  74. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +5 -2
  75. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +10 -1
  76. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +1 -1
  77. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -0
  78. package/dist/_dts/sdk/src/client/types.d.ts +2 -2
  79. package/dist/_dts/sdk/src/config/content-types.d.ts +7 -0
  80. package/dist/_dts/sdk/src/config/field-definitions.d.ts +2 -0
  81. package/dist/_dts/sdk/src/version.d.ts +1 -1
  82. package/dist/_dts/site-commands/src/commands.d.ts +3 -0
  83. package/dist/{altcha-B5XGSXP5.mjs → altcha-EKUEQ4RP.mjs} +1 -1
  84. package/dist/{chunk-NIDXI46P.mjs → chunk-4QEGTLK6.mjs} +1 -1
  85. package/dist/{chunk-TXDES5P2.mjs → chunk-6HYXHRAI.mjs} +5 -5
  86. package/dist/{chunk-SVMMM2NA.mjs → chunk-CR5HKAGU.mjs} +24 -5
  87. package/dist/{chunk-OECWLDHN.mjs → chunk-MCRQMPET.mjs} +1030 -588
  88. package/dist/{chunk-SXOLGNMX.mjs → chunk-OKMBEAXY.mjs} +1 -1
  89. package/dist/{chunk-XGB3TDIC.mjs → chunk-R7POPVJR.mjs} +2 -8
  90. package/dist/{chunk-F7RTCZYN.mjs → chunk-RGTOD4AJ.mjs} +20 -14
  91. package/dist/cli/index.mjs +681 -225
  92. package/dist/cli/init-docs/content/cli-reference.md +3 -2
  93. package/dist/cli/init-docs/content/content-management.md +2 -2
  94. package/dist/cli/init-docs/content/workflow-preview-mode.md +68 -2
  95. package/dist/client/{accordion-EVDEOUPR.mjs → accordion-PLYNJIIM.mjs} +2 -2
  96. package/dist/client/analytics.mjs +1 -1
  97. package/dist/client/{bookingForm-DIHBLC64.mjs → bookingForm-BXAP6AO7.mjs} +55 -48
  98. package/dist/client/bookings.mjs +62 -55
  99. package/dist/client/{carousel-FEBQHIWI.mjs → carousel-TRBXDHGF.mjs} +3 -3
  100. package/dist/client/{cart-7CKSXAE4.mjs → cart-Z7H3HJRS.mjs} +7 -7
  101. package/dist/client/{checkout-WKYCANLV.mjs → checkout-WAFCUBIX.mjs} +7 -7
  102. package/dist/client/{chunk-OFMSCGNY.mjs → chunk-75OUS5MT.mjs} +2 -2
  103. package/dist/client/{chunk-IVNCUVAV.mjs → chunk-AUJ5DBZJ.mjs} +18 -18
  104. package/dist/client/{chunk-36WJCERQ.mjs → chunk-CE7IBGVW.mjs} +3 -1
  105. package/dist/client/{chunk-RZDWX7QW.mjs → chunk-CWGTG37I.mjs} +1 -1
  106. package/dist/client/{chunk-YDSEG6GZ.mjs → chunk-DNRGY432.mjs} +2 -2
  107. package/dist/client/{chunk-RV6FX7UH.mjs → chunk-FUXW6VW2.mjs} +9 -9
  108. package/dist/client/{chunk-65F47D7Y.mjs → chunk-JGXPTEI2.mjs} +43 -36
  109. package/dist/client/{chunk-GUK2FPXQ.mjs → chunk-JRDUHZCT.mjs} +37 -15
  110. package/dist/client/{chunk-VPPMNXCF.mjs → chunk-UVQEJJTN.mjs} +2 -2
  111. package/dist/client/{chunk-F7LHOKEH.mjs → chunk-XSV6KW4D.mjs} +1 -1
  112. package/dist/client/{chunk-PD6NBCEY.mjs → chunk-ZFHRN6W2.mjs} +1 -1
  113. package/dist/client/{chunk-2SAVKN2M.mjs → chunk-ZI3LLBPZ.mjs} +2 -2
  114. package/dist/client/client.mjs +249 -160
  115. package/dist/client/{courseRegistration-5QF2PHKM.mjs → courseRegistration-AHFQHWIJ.mjs} +10 -10
  116. package/dist/client/{eventCalendar-4ZOSETDU.mjs → eventCalendar-LDXTV5R7.mjs} +9 -9
  117. package/dist/client/{eventCombined-WQGU7JUX.mjs → eventCombined-A4JGTNJO.mjs} +9 -9
  118. package/dist/client/{eventDetails-AYWVUJ5Y.mjs → eventDetails-4YXTZ7EG.mjs} +9 -9
  119. package/dist/client/{eventListing-NT7C6UT5.mjs → eventListing-P72TPFFM.mjs} +9 -9
  120. package/dist/client/{eventRegistration-OH24F4ZJ.mjs → eventRegistration-LSYJHGMT.mjs} +9 -9
  121. package/dist/client/{form-7L42SRBB.mjs → form-AOPYOKOW.mjs} +6 -3
  122. package/dist/client/{headerSection-OZRZNZ52.mjs → headerSection-5TFYDFVQ.mjs} +3 -3
  123. package/dist/client/hooks.mjs +78 -48
  124. package/dist/client/{locationMap-ZBXRPQ7C.mjs → locationMap-QSZ3ZVAZ.mjs} +3 -3
  125. package/dist/client/{newsletterForm-SNAGFF2I.mjs → newsletterForm-KTRHZY52.mjs} +2 -2
  126. package/dist/client/{productDetail-I46BOFGV.mjs → productDetail-N4E775RG.mjs} +7 -7
  127. package/dist/client/{productList-BOYHTYI6.mjs → productList-UGUQ2S45.mjs} +7 -7
  128. package/dist/client/rendering/client.mjs +173 -131
  129. package/dist/client/rendering/islands.mjs +19 -19
  130. package/dist/client/rendering.mjs +230 -150
  131. package/dist/client/{shop-XTXPZTKR.mjs → shop-VHSZEEQ2.mjs} +7 -7
  132. package/dist/preview-next/before-render.mjs +10 -1
  133. package/dist/preview-next/client/runtime.mjs +6 -6
  134. package/dist/preview-next/middleware.mjs +10 -1
  135. package/dist/preview-next/tailwind-sources.css +1 -0
  136. package/dist/sdk-runtime-WHPJEF5G.mjs +8 -0
  137. package/dist/server/components.mjs +101 -54
  138. package/dist/server/config-template-validation.mjs +221 -15
  139. package/dist/server/config-validation.mjs +76 -42
  140. package/dist/server/config.mjs +76 -42
  141. package/dist/server/data.mjs +77 -47
  142. package/dist/server/index.mjs +31 -10
  143. package/dist/server/next.mjs +133 -71
  144. package/dist/server/page-converter.mjs +60 -40
  145. package/dist/server/prebuild.mjs +1 -1
  146. package/dist/server/rendering/server.mjs +107 -60
  147. package/dist/server/rendering.mjs +111 -61
  148. package/dist/server/routing.mjs +93 -63
  149. package/dist/server/server.mjs +102 -57
  150. package/package.json +1 -1
  151. package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +0 -8
  152. package/dist/sdk-runtime-ZJLKC6DR.mjs +0 -8
@@ -116,9 +116,6 @@ var linkSchema = z.union([
116
116
  // ../blocks/src/system/manifest/schema.ts
117
117
  import { z as z3 } from "zod";
118
118
 
119
- // ../core/src/branded.ts
120
- var asMediaAssetId = (id) => id;
121
-
122
119
  // ../core/src/result.ts
123
120
  function ok(value) {
124
121
  return { ok: true, value };
@@ -127,6 +124,9 @@ function err(error) {
127
124
  return { ok: false, error };
128
125
  }
129
126
 
127
+ // ../core/src/branded.ts
128
+ var unsafeAsMediaAssetId = (id) => id;
129
+
130
130
  // ../core/src/booking-date-time.ts
131
131
  var DEFAULT_LOCALE = "en-US";
132
132
  var FALLBACK_TIMEZONE = "UTC";
@@ -626,14 +626,14 @@ function rotateNormalizedPoint(point, rotation) {
626
626
  const x = point.x;
627
627
  const y = point.y;
628
628
  switch (rotation) {
629
+ case 0:
630
+ return { x, y };
629
631
  case 90:
630
632
  return { x: 1 - y, y: x };
631
633
  case 180:
632
634
  return { x: 1 - x, y: 1 - y };
633
635
  case 270:
634
636
  return { x: y, y: 1 - x };
635
- default:
636
- return { x, y };
637
637
  }
638
638
  }
639
639
 
@@ -826,6 +826,8 @@ var uiSchema = z3.object({
826
826
  mediaPickerAutoOpen: z3.boolean().optional(),
827
827
  showMediaPreview: z3.boolean().optional(),
828
828
  showMediaOverlayActions: z3.boolean().optional(),
829
+ mediaPreviewMaxWidth: z3.enum(["xs", "sm", "md", "none"]).optional(),
830
+ preventMediaPreviewUpscale: z3.boolean().optional(),
829
831
  mediaDelivery: mediaDeliverySchema.optional(),
830
832
  mediaDeliveryByVariant: z3.record(z3.string(), mediaDeliverySchema).optional(),
831
833
  // Optional input hints for validators/widgets
@@ -1075,6 +1077,9 @@ var repeaterFieldSchema = baseFieldSchema.extend({
1075
1077
  type: z3.literal("repeater"),
1076
1078
  itemLabel: z3.string().default("Item"),
1077
1079
  itemLabelSource: z3.string().optional(),
1080
+ showSummary: z3.boolean().optional(),
1081
+ summaryFields: z3.string().array().optional(),
1082
+ summaryMaxChars: z3.number().int().positive().optional(),
1078
1083
  minItems: z3.number().int().min(0).default(0),
1079
1084
  maxItems: z3.number().int().positive().optional(),
1080
1085
  // Monomorphic mode
@@ -1728,7 +1733,7 @@ function normalizeStoredObjectChildren(children, value, ctx) {
1728
1733
  return normalized;
1729
1734
  }
1730
1735
  function normalizeStoredRepeaterItems(plan, value, ctx) {
1731
- if (!Array.isArray(value)) {
1736
+ if (!isUnknownArray(value)) {
1732
1737
  return value;
1733
1738
  }
1734
1739
  return value.map((item) => {
@@ -1775,7 +1780,7 @@ function normalizeObjectChildren(children, value, ctx) {
1775
1780
  return normalized;
1776
1781
  }
1777
1782
  function normalizeRepeaterItems(plan, value, ctx) {
1778
- if (!Array.isArray(value)) return value;
1783
+ if (!isUnknownArray(value)) return value;
1779
1784
  return value.map((item) => {
1780
1785
  if (!item || typeof item !== "object" || Array.isArray(item)) return item;
1781
1786
  const itemRecord = item;
@@ -2162,6 +2167,9 @@ function isEmptyValue(value) {
2162
2167
  function isPlainObject(value) {
2163
2168
  return Boolean(value && typeof value === "object" && !Array.isArray(value));
2164
2169
  }
2170
+ function isUnknownArray(value) {
2171
+ return Array.isArray(value);
2172
+ }
2165
2173
  function isValidRichTextDoc(value) {
2166
2174
  const doc = richTextDoc(value);
2167
2175
  return Boolean(isPlainObject(doc) && doc.type === "doc");
@@ -5887,13 +5895,13 @@ function generateShadowValue(elevation, softness, position = "bottom") {
5887
5895
  const xOffset = position === "bottom-right" ? config.offset : 0;
5888
5896
  const yOffset = config.offset;
5889
5897
  switch (softness) {
5898
+ case null:
5899
+ case "soft":
5900
+ return `${xOffset}px ${yOffset}px ${config.blur}px ${config.spread}px rgb(0 0 0 / 0.3)`;
5890
5901
  case "hard":
5891
5902
  return `${xOffset}px ${yOffset}px 0 0 rgb(0 0 0 / 1)`;
5892
5903
  case "crisp":
5893
5904
  return `${xOffset}px ${yOffset}px ${config.offset}px ${config.spread}px rgb(0 0 0 / 0.4)`;
5894
- case "soft":
5895
- default:
5896
- return `${xOffset}px ${yOffset}px ${config.blur}px ${config.spread}px rgb(0 0 0 / 0.3)`;
5897
5905
  }
5898
5906
  }
5899
5907
  var BORDER_WIDTH_MAP = {
@@ -13374,47 +13382,48 @@ function validateFieldDefinitions(fields3, fragmentId) {
13374
13382
  function prefixFieldId(field, scope) {
13375
13383
  const cloned = cloneFieldDefinition2(field);
13376
13384
  cloned.id = `${scope}.${field.id}`;
13377
- cloned.defaultValue = cloneUnknown(cloned.defaultValue);
13385
+ const defaultValue = cloned.defaultValue;
13386
+ cloned.defaultValue = cloneUnknown(defaultValue);
13378
13387
  cloned.visibleRoles = cloned.visibleRoles ? [...cloned.visibleRoles] : void 0;
13379
13388
  cloned.ui = cloneUnknown(cloned.ui);
13380
13389
  return cloned;
13381
13390
  }
13382
13391
  function cloneFieldDefinition2(field) {
13383
- switch (field.type) {
13384
- case "repeater":
13385
- if (field.polymorphic && field.itemTypes) {
13386
- return {
13387
- ...field,
13388
- polymorphic: true,
13389
- itemTypes: Object.fromEntries(
13390
- Object.entries(field.itemTypes).map(([key, itemType]) => [
13391
- key,
13392
- {
13393
- ...itemType,
13394
- fields: itemType.fields.map(cloneFieldDefinition2)
13395
- }
13396
- ])
13397
- )
13398
- };
13399
- } else if (field.schema) {
13400
- return {
13401
- ...field,
13402
- schema: {
13403
- fields: field.schema.fields.map(cloneFieldDefinition2)
13404
- }
13405
- };
13406
- }
13407
- return { ...field };
13408
- case "group":
13392
+ if (field.type === "repeater") {
13393
+ if (field.polymorphic && field.itemTypes) {
13394
+ return {
13395
+ ...field,
13396
+ polymorphic: true,
13397
+ itemTypes: Object.fromEntries(
13398
+ Object.entries(field.itemTypes).map(([key, itemType]) => [
13399
+ key,
13400
+ {
13401
+ ...itemType,
13402
+ fields: itemType.fields.map(cloneFieldDefinition2)
13403
+ }
13404
+ ])
13405
+ )
13406
+ };
13407
+ }
13408
+ if (field.schema) {
13409
13409
  return {
13410
13410
  ...field,
13411
13411
  schema: {
13412
13412
  fields: field.schema.fields.map(cloneFieldDefinition2)
13413
13413
  }
13414
13414
  };
13415
- default:
13416
- return { ...field };
13415
+ }
13416
+ return { ...field };
13417
13417
  }
13418
+ if (field.type === "group") {
13419
+ return {
13420
+ ...field,
13421
+ schema: {
13422
+ fields: field.schema.fields.map(cloneFieldDefinition2)
13423
+ }
13424
+ };
13425
+ }
13426
+ return { ...field };
13418
13427
  }
13419
13428
  function cloneUnknown(value) {
13420
13429
  if (value == null || typeof value !== "object") {
@@ -15849,7 +15858,8 @@ function createBlockManifestWithContentShape(config, _contentShape) {
15849
15858
  return createBlockManifest(config);
15850
15859
  }
15851
15860
  function normalizeBlockLayout(layout) {
15852
- return Array.isArray(layout) ? [...layout] : layout;
15861
+ const rawLayout = layout;
15862
+ return Array.isArray(rawLayout) ? rawLayout : rawLayout;
15853
15863
  }
15854
15864
  function deriveComponentName(id) {
15855
15865
  const base = id.replace(/^block\./, "");
@@ -17417,16 +17427,20 @@ var marqueeLoopTransform = {
17417
17427
  summary: "Repeat an array to a minimum length, then duplicate it for seamless marquee looping",
17418
17428
  schema: marqueeLoopOptionsSchema,
17419
17429
  run: (value, options) => {
17420
- if (!Array.isArray(value) || value.length === 0) return [];
17430
+ const items = toUnknownArray(value);
17431
+ if (items.length === 0) return [];
17421
17432
  const minItems = options?.minItems ?? 10;
17422
17433
  const base = [];
17423
17434
  while (base.length < minItems) {
17424
- base.push(...value);
17435
+ base.push(...items);
17425
17436
  if (base.length > 1e3) break;
17426
17437
  }
17427
17438
  return [...base, ...base];
17428
17439
  }
17429
17440
  };
17441
+ function toUnknownArray(value) {
17442
+ return Array.isArray(value) ? value : [];
17443
+ }
17430
17444
  var formattingTransforms = [
17431
17445
  uppercaseTransform,
17432
17446
  fallbackTransform,
@@ -21143,8 +21157,8 @@ var eventSurfaceScopeValues = [
21143
21157
  "custom"
21144
21158
  ];
21145
21159
  var eventScheduleScopeValues = ["any", "recurring", "oneOff"];
21146
- var asEventCategoryId = (value) => value;
21147
- var asVenueId = (value) => value;
21160
+ var unsafeAsEventCategoryId = (value) => value;
21161
+ var unsafeAsVenueId = (value) => value;
21148
21162
  function normalizeEventBlockKind(value) {
21149
21163
  return value === "courses" || value === "events" ? value : "all";
21150
21164
  }
@@ -21170,10 +21184,10 @@ function normalizeEventCategoryIds(value) {
21170
21184
  if (Array.isArray(value)) {
21171
21185
  return normalizeIdList(
21172
21186
  value.filter((entry) => typeof entry === "string")
21173
- ).map(asEventCategoryId);
21187
+ ).map(unsafeAsEventCategoryId);
21174
21188
  }
21175
21189
  if (typeof value === "string") {
21176
- return normalizeIdList(value.split(",")).map(asEventCategoryId);
21190
+ return normalizeIdList(value.split(",")).map(unsafeAsEventCategoryId);
21177
21191
  }
21178
21192
  return [];
21179
21193
  }
@@ -21186,7 +21200,7 @@ function normalizeEventVenueId(value) {
21186
21200
  return null;
21187
21201
  }
21188
21202
  const trimmed = value.trim();
21189
- return trimmed ? asVenueId(trimmed) : null;
21203
+ return trimmed ? unsafeAsVenueId(trimmed) : null;
21190
21204
  }
21191
21205
  function normalizeEventStaffMemberId(value) {
21192
21206
  if (typeof value !== "string") {
@@ -23757,7 +23771,7 @@ function getProxyImageUrl(value, options, transformAspectRatio, resolved) {
23757
23771
  if (!shouldUseExplicitRectProxy(value, options, resolvedTransform, sourceWidth, sourceHeight)) return void 0;
23758
23772
  const params = buildProxyTransformParams(options, resolvedTransform);
23759
23773
  const proxyBasePath = getImageProxyBasePath();
23760
- const proxyUrl = getImageUrl({ id: asMediaAssetId(value.assetId) }, params, proxyBasePath);
23774
+ const proxyUrl = getImageUrl({ id: unsafeAsMediaAssetId(value.assetId) }, params, proxyBasePath);
23761
23775
  debugMediaNodeLog("resolve:proxy-img", { assetId: value.assetId, params, proxyBasePath, proxyUrl });
23762
23776
  return proxyUrl;
23763
23777
  }
@@ -32787,6 +32801,8 @@ var header_section_server_default = markEditableSurfaceForwarding(HeaderSectionN
32787
32801
  import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
32788
32802
  function resolveColorStyle(color) {
32789
32803
  switch (color) {
32804
+ case void 0:
32805
+ return void 0;
32790
32806
  case "inherit":
32791
32807
  return { color: "inherit" };
32792
32808
  case "foreground":
@@ -36264,14 +36280,23 @@ function injectMediaSlotPath(props2, node, parsedBinding, context) {
36264
36280
  }
36265
36281
  function resolveChildren(nodes, context) {
36266
36282
  if (!nodes?.length) return [];
36267
- return nodes.flatMap((child, index) => {
36283
+ const children = [];
36284
+ nodes.forEach((child, index) => {
36268
36285
  const childContext = { ...context, scopes: [...context.scopes] };
36269
36286
  const resolved = resolveNode2(child, childContext, index);
36270
36287
  if (Array.isArray(resolved)) {
36271
- return resolved.filter((item) => item !== null && item !== void 0);
36288
+ for (const item of resolved) {
36289
+ const childNode = item;
36290
+ if (isReactNode(childNode)) children.push(childNode);
36291
+ }
36292
+ return;
36272
36293
  }
36273
- return resolved !== null && resolved !== void 0 ? [resolved] : [];
36294
+ if (isReactNode(resolved)) children.push(resolved);
36274
36295
  });
36296
+ return children;
36297
+ }
36298
+ function isReactNode(value) {
36299
+ return value !== null && value !== void 0;
36275
36300
  }
36276
36301
  function resolveNode2(node, context, indexFallback) {
36277
36302
  if (!shouldRenderNode(node, context)) {
@@ -36484,8 +36509,11 @@ var BLOCK_PREFIX = "block.";
36484
36509
  function isPlainObject4(value) {
36485
36510
  return typeof value === "object" && value !== null && !Array.isArray(value);
36486
36511
  }
36512
+ function isUnknownArray2(value) {
36513
+ return Array.isArray(value);
36514
+ }
36487
36515
  function cloneValue(value) {
36488
- if (Array.isArray(value)) {
36516
+ if (isUnknownArray2(value)) {
36489
36517
  return value.map((item) => cloneValue(item));
36490
36518
  }
36491
36519
  if (isPlainObject4(value)) {
@@ -52757,11 +52785,11 @@ function normalizeContent(block) {
52757
52785
  }
52758
52786
  function normalizeParams(input) {
52759
52787
  if (!input || typeof input !== "object") return {};
52760
- const entries = Object.entries(input).map(([key, value]) => [
52761
- key,
52762
- coerceToString(value)
52763
- ]);
52764
- return Object.fromEntries(entries);
52788
+ const output = {};
52789
+ for (const [key, value] of Object.entries(input)) {
52790
+ output[key] = coerceToString(value);
52791
+ }
52792
+ return output;
52765
52793
  }
52766
52794
  function isNonArrayObject(value) {
52767
52795
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -54697,7 +54725,16 @@ var ENDPOINT_DEFINITIONS = {
54697
54725
  revalidate: 60,
54698
54726
  tags: ["site-{siteId}", "content-{siteId}-{type}"],
54699
54727
  auth: "user",
54700
- responseKind: "json"
54728
+ responseKind: "json",
54729
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
54730
+ },
54731
+ reorderContentEntries: {
54732
+ path: "/sites/{siteId}/content/{type}/order",
54733
+ method: "POST",
54734
+ tags: ["site-{siteId}", "content-{siteId}-{type}"],
54735
+ auth: "user",
54736
+ responseKind: "json",
54737
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
54701
54738
  },
54702
54739
  getContentTemplate: {
54703
54740
  path: "/sites/{siteId}/content/types/{type}/template",
@@ -59319,10 +59356,16 @@ var dashboardConfigSchema = z68.object({
59319
59356
  var fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
59320
59357
  var nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
59321
59358
  var sdkLoaderEndpointSchema = z68.enum(SUPPORTED_LOADER_ENDPOINTS);
59359
+ var loaderFallbackScalarSchema = z68.union([
59360
+ z68.string(),
59361
+ z68.number(),
59362
+ z68.boolean(),
59363
+ z68.null()
59364
+ ]);
59322
59365
  var loaderParamBindingSchema = z68.object({
59323
59366
  $bind: z68.object({
59324
59367
  from: z68.string().min(1, "Binding path is required"),
59325
- fallback: z68.string().optional()
59368
+ fallback: loaderFallbackScalarSchema.optional()
59326
59369
  })
59327
59370
  });
59328
59371
  var loaderParamValueSchema = z68.union([
@@ -59468,9 +59511,13 @@ var sdkBlockFieldOptionsMapSchema = z68.record(
59468
59511
  var sdkContentTypeTemplateConfigSchema = z68.object({
59469
59512
  blocks: z68.array(z68.unknown())
59470
59513
  }).passthrough();
59514
+ var sdkContentTypeOrderingConfigSchema = z68.object({
59515
+ mode: z68.enum(["default", "manual"]).optional()
59516
+ }).optional();
59471
59517
  var sdkContentTypeConfigSchema = z68.object({
59472
59518
  key: z68.string().min(1),
59473
59519
  fields: z68.array(z68.unknown()),
59520
+ ordering: sdkContentTypeOrderingConfigSchema,
59474
59521
  template: sdkContentTypeTemplateConfigSchema.nullable().optional()
59475
59522
  }).passthrough();
59476
59523
  var sdkContentConfigSchema = z68.object({
@@ -60470,7 +60517,7 @@ async function prefetchBlockData2(page, context, client, options) {
60470
60517
  throw new Error("listPublishedEntries requires siteId and type params");
60471
60518
  }
60472
60519
  const parsedLimit = typeof limit === "string" ? Number.parseInt(limit, 10) : typeof limit === "number" ? limit : void 0;
60473
- const order = orderBy === "newest" || orderBy === "oldest" || orderBy === "title" || orderBy === "order" ? orderBy : void 0;
60520
+ const order = orderBy === "order" ? "manual" : orderBy === "newest" || orderBy === "oldest" || orderBy === "title" ? orderBy : void 0;
60474
60521
  const parsedEntryIds = mode === "manual" ? parseManualEntryIds(entryIds) : void 0;
60475
60522
  if (mode === "manual" && (!parsedEntryIds || parsedEntryIds.length === 0)) {
60476
60523
  return { entries: [] };
@@ -61194,6 +61241,9 @@ function isContentLoadNotFoundError(error) {
61194
61241
  }
61195
61242
  return Reflect.get(error, "status") === 404;
61196
61243
  }
61244
+ function getRejectedReason(result) {
61245
+ return result.reason;
61246
+ }
61197
61247
  async function loadContent(params) {
61198
61248
  const { client, siteId, path, preview = false, forceSite } = params;
61199
61249
  const [siteResult, contentResult] = await Promise.allSettled([
@@ -61201,7 +61251,7 @@ async function loadContent(params) {
61201
61251
  client.getPage({ siteId, path, preview })
61202
61252
  ]);
61203
61253
  if (siteResult.status === "rejected" || contentResult.status === "rejected") {
61204
- const failures = [siteResult, contentResult].filter((result) => result.status === "rejected").map((result) => result.reason);
61254
+ const failures = [siteResult, contentResult].filter((result) => result.status === "rejected").map(getRejectedReason);
61205
61255
  const upstreamFailure = failures.find((error) => !isContentLoadNotFoundError(error));
61206
61256
  throw upstreamFailure ?? failures[0];
61207
61257
  }