@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
@@ -1,15 +1,15 @@
1
- import { mountShopBlockIsland, ShopClient } from './chunk-RV6FX7UH.mjs';
2
- import './chunk-RZDWX7QW.mjs';
3
- import './chunk-OFMSCGNY.mjs';
1
+ import { mountShopBlockIsland, ShopClient } from './chunk-FUXW6VW2.mjs';
2
+ import './chunk-CWGTG37I.mjs';
3
+ import './chunk-75OUS5MT.mjs';
4
4
  import './chunk-I2MMZO53.mjs';
5
- import './chunk-PD6NBCEY.mjs';
6
- import './chunk-VPPMNXCF.mjs';
5
+ import './chunk-ZFHRN6W2.mjs';
6
+ import './chunk-UVQEJJTN.mjs';
7
7
  import './chunk-3DCJ45Z2.mjs';
8
8
  import './chunk-3PEDD5KJ.mjs';
9
9
  import './chunk-UDNSI5PY.mjs';
10
10
  import './chunk-N7PBWBWQ.mjs';
11
- import { defineIslandPropsDecoder } from './chunk-65F47D7Y.mjs';
12
- import './chunk-IVNCUVAV.mjs';
11
+ import { defineIslandPropsDecoder } from './chunk-JGXPTEI2.mjs';
12
+ import './chunk-AUJ5DBZJ.mjs';
13
13
 
14
14
  // src/rendering/islands/enhancers/shop.tsx
15
15
  var decode = defineIslandPropsDecoder("shop");
@@ -1784,7 +1784,16 @@ var ENDPOINT_DEFINITIONS = {
1784
1784
  revalidate: 60,
1785
1785
  tags: ["site-{siteId}", "content-{siteId}-{type}"],
1786
1786
  auth: "user",
1787
- responseKind: "json"
1787
+ responseKind: "json",
1788
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1789
+ },
1790
+ reorderContentEntries: {
1791
+ path: "/sites/{siteId}/content/{type}/order",
1792
+ method: "POST",
1793
+ tags: ["site-{siteId}", "content-{siteId}-{type}"],
1794
+ auth: "user",
1795
+ responseKind: "json",
1796
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1788
1797
  },
1789
1798
  getContentTemplate: {
1790
1799
  path: "/sites/{siteId}/content/types/{type}/template",
@@ -1,24 +1,24 @@
1
1
  "use client";
2
- export { PreviewLayoutProvider, PreviewQueryProvider, createPreviewQueryClient, useOptionalPreviewLayout, usePreviewLayout } from '../../chunk-SXOLGNMX.mjs';
3
- import '../../chunk-SVMMM2NA.mjs';
4
- import '../../chunk-XGB3TDIC.mjs';
2
+ export { PreviewLayoutProvider, PreviewQueryProvider, createPreviewQueryClient, useOptionalPreviewLayout, usePreviewLayout } from '../../chunk-OKMBEAXY.mjs';
3
+ import '../../chunk-CR5HKAGU.mjs';
4
+ import '../../chunk-R7POPVJR.mjs';
5
5
  import React from 'react';
6
6
  import { jsx } from 'react/jsx-runtime';
7
7
 
8
8
  var LazySdkPreviewMode = React.lazy(async () => {
9
- const mod = await import('../../SdkPreviewModeRuntime-LAGYMPNF.mjs');
9
+ const mod = await import('../../SdkPreviewModeRuntime-IJDHTW4W.mjs');
10
10
  return {
11
11
  default: mod.SdkPreviewModeRuntime
12
12
  };
13
13
  });
14
14
  var LazyPreviewShell = React.lazy(async () => {
15
- const mod = await import('../../sdk-runtime-ZJLKC6DR.mjs');
15
+ const mod = await import('../../sdk-runtime-WHPJEF5G.mjs');
16
16
  return {
17
17
  default: mod.PreviewShell
18
18
  };
19
19
  });
20
20
  var LazyPreviewShellLayout = React.lazy(async () => {
21
- const mod = await import('../../sdk-runtime-ZJLKC6DR.mjs');
21
+ const mod = await import('../../sdk-runtime-WHPJEF5G.mjs');
22
22
  return {
23
23
  default: mod.PreviewShellLayout
24
24
  };
@@ -1790,7 +1790,16 @@ var ENDPOINT_DEFINITIONS = {
1790
1790
  revalidate: 60,
1791
1791
  tags: ["site-{siteId}", "content-{siteId}-{type}"],
1792
1792
  auth: "user",
1793
- responseKind: "json"
1793
+ responseKind: "json",
1794
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1795
+ },
1796
+ reorderContentEntries: {
1797
+ path: "/sites/{siteId}/content/{type}/order",
1798
+ method: "POST",
1799
+ tags: ["site-{siteId}", "content-{siteId}-{type}"],
1800
+ auth: "user",
1801
+ responseKind: "json",
1802
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1794
1803
  },
1795
1804
  getContentTemplate: {
1796
1805
  path: "/sites/{siteId}/content/types/{type}/template",
@@ -1,2 +1,3 @@
1
1
  /* Tailwind v4 source directives for the preview runtime bundled in this package. */
2
+ @source "../*.mjs";
2
3
  @source "./client/**/*.mjs";
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ export { PreviewShell, PreviewShellLayout, SdkPreviewModeRuntime as SdkPreviewMode } from './chunk-RGTOD4AJ.mjs';
3
+ export { PreviewLayoutProvider, PreviewQueryProvider, createPreviewQueryClient, useOptionalPreviewLayout, usePreviewLayout } from './chunk-OKMBEAXY.mjs';
4
+ import './chunk-4QEGTLK6.mjs';
5
+ import './chunk-6HYXHRAI.mjs';
6
+ import './chunk-MCRQMPET.mjs';
7
+ import './chunk-CR5HKAGU.mjs';
8
+ import './chunk-R7POPVJR.mjs';
@@ -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)) {
@@ -54363,7 +54391,16 @@ var ENDPOINT_DEFINITIONS = {
54363
54391
  revalidate: 60,
54364
54392
  tags: ["site-{siteId}", "content-{siteId}-{type}"],
54365
54393
  auth: "user",
54366
- responseKind: "json"
54394
+ responseKind: "json",
54395
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
54396
+ },
54397
+ reorderContentEntries: {
54398
+ path: "/sites/{siteId}/content/{type}/order",
54399
+ method: "POST",
54400
+ tags: ["site-{siteId}", "content-{siteId}-{type}"],
54401
+ auth: "user",
54402
+ responseKind: "json",
54403
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
54367
54404
  },
54368
54405
  getContentTemplate: {
54369
54406
  path: "/sites/{siteId}/content/types/{type}/template",
@@ -58985,10 +59022,16 @@ var dashboardConfigSchema = z68.object({
58985
59022
  var fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
58986
59023
  var nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
58987
59024
  var sdkLoaderEndpointSchema = z68.enum(SUPPORTED_LOADER_ENDPOINTS);
59025
+ var loaderFallbackScalarSchema = z68.union([
59026
+ z68.string(),
59027
+ z68.number(),
59028
+ z68.boolean(),
59029
+ z68.null()
59030
+ ]);
58988
59031
  var loaderParamBindingSchema = z68.object({
58989
59032
  $bind: z68.object({
58990
59033
  from: z68.string().min(1, "Binding path is required"),
58991
- fallback: z68.string().optional()
59034
+ fallback: loaderFallbackScalarSchema.optional()
58992
59035
  })
58993
59036
  });
58994
59037
  var loaderParamValueSchema = z68.union([
@@ -59134,9 +59177,13 @@ var sdkBlockFieldOptionsMapSchema = z68.record(
59134
59177
  var sdkContentTypeTemplateConfigSchema = z68.object({
59135
59178
  blocks: z68.array(z68.unknown())
59136
59179
  }).passthrough();
59180
+ var sdkContentTypeOrderingConfigSchema = z68.object({
59181
+ mode: z68.enum(["default", "manual"]).optional()
59182
+ }).optional();
59137
59183
  var sdkContentTypeConfigSchema = z68.object({
59138
59184
  key: z68.string().min(1),
59139
59185
  fields: z68.array(z68.unknown()),
59186
+ ordering: sdkContentTypeOrderingConfigSchema,
59140
59187
  template: sdkContentTypeTemplateConfigSchema.nullable().optional()
59141
59188
  }).passthrough();
59142
59189
  var sdkContentConfigSchema = z68.object({