@riverbankcms/sdk 0.89.1 → 0.90.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 (161) hide show
  1. package/README.md +27 -4
  2. package/dist/{PreviewEditorSidebar-JDR64FEC.mjs → PreviewEditorSidebar-KVXNF3VW.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-67TMJMAF.mjs → PreviewEditorUI-J3JN5Z7T.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-UBL6MSNP.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +216 -0
  6. package/dist/_dts/altcha/src/AltchaWidget.d.ts +1 -1
  7. package/dist/_dts/api/src/bookingOperations.d.ts +2 -0
  8. package/dist/_dts/api/src/bookingRecords.d.ts +4 -2
  9. package/dist/_dts/api/src/bookings.d.ts +3 -1
  10. package/dist/_dts/api/src/index.d.ts +6 -5
  11. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +15 -5
  12. package/dist/_dts/api/src/request.d.ts +21 -0
  13. package/dist/_dts/api/src/sdk-event-upsert.d.ts +3 -1
  14. package/dist/_dts/api/src/sdkContracts.d.ts +2 -0
  15. package/dist/_dts/api/src/types.d.ts +3 -1
  16. package/dist/_dts/api/src/url.d.ts +6 -3
  17. package/dist/_dts/block-form/src/utils/visibleWhen.d.ts +1 -0
  18. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailCard.d.ts +5 -1
  19. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailGrid.d.ts +9 -1
  20. package/dist/_dts/block-form/src/widgets/RepeaterField/components/index.d.ts +1 -0
  21. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +7 -11
  22. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +6 -0
  23. package/dist/_dts/blocks/src/index.d.ts +2 -1
  24. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +14 -6
  25. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -4
  26. package/dist/_dts/blocks/src/system/blocks/hero.d.ts +0 -2
  27. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +3 -3
  28. package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +8 -0
  29. package/dist/_dts/blocks/src/system/constants/events.d.ts +4 -1
  30. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +3 -1
  31. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +17 -5
  33. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +51 -6
  34. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -0
  35. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationWizard.d.ts +2 -2
  36. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -17
  37. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +5 -9
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +5 -9
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -1
  40. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +24 -0
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +5 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +4 -4
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +50 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -2
  45. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +1 -1
  47. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +11 -1
  48. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -1
  49. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +11 -1
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/calendarViewOptions.d.ts +10 -0
  51. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventProductEligibility.d.ts +24 -0
  52. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +5 -2
  53. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +2 -2
  54. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  55. package/dist/_dts/content-model/src/entry-slots/sdkBlocks.d.ts +21 -0
  56. package/dist/_dts/content-model/src/entry-slots/types.d.ts +7 -0
  57. package/dist/_dts/core/src/money-input.d.ts +18 -0
  58. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +50 -0
  59. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -1
  60. package/dist/_dts/media-editor/src/fieldUi.d.ts +6 -0
  61. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  62. package/dist/_dts/preview-next/src/client/index.d.ts +1 -0
  63. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -2
  64. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -2
  65. package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +3 -2
  66. package/dist/_dts/preview-next/src/client/preview/SiteChromeEditableSurface.d.ts +2 -2
  67. package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +6 -0
  68. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +2 -1
  69. package/dist/_dts/sdk/src/cli/commands/pull-dated-offering-scope.d.ts +10 -0
  70. package/dist/_dts/sdk/src/cli/content/reader.d.ts +12 -5
  71. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -55
  72. package/dist/_dts/sdk/src/components.d.ts +1 -0
  73. package/dist/_dts/sdk/src/config/field-definitions.d.ts +3 -1
  74. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +3 -1
  75. package/dist/_dts/sdk/src/next/types.d.ts +8 -11
  76. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +1 -1
  77. package/dist/_dts/sdk/src/rendering/blocks-theme-scope.d.ts +2 -1
  78. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +8 -7
  79. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +5 -6
  80. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -0
  81. package/dist/_dts/sdk/src/rendering/server.d.ts +1 -0
  82. package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +26 -0
  83. package/dist/_dts/sdk/src/version.d.ts +1 -1
  84. package/dist/_dts/site-commands/src/commands.d.ts +18 -0
  85. package/dist/_dts/theme-core/src/ResponsiveScope.d.ts +12 -0
  86. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
  87. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +2 -2
  88. package/dist/_dts/theme-core/src/buttons/types.d.ts +5 -5
  89. package/dist/_dts/theme-core/src/cards/types.d.ts +2 -2
  90. package/dist/_dts/theme-core/src/index.d.ts +2 -0
  91. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +21 -21
  92. package/dist/_dts/theme-core/src/schema.d.ts +18 -18
  93. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  94. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  95. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +4 -4
  96. package/dist/_dts/theme-core/src/themeRuntime.d.ts +11 -0
  97. package/dist/{chunk-HKJQERFR.mjs → chunk-AEOYWPE4.mjs} +91 -55
  98. package/dist/{chunk-F645A5UV.mjs → chunk-BOQXMCSP.mjs} +129 -101
  99. package/dist/{chunk-ZQRBLCW5.mjs → chunk-GSPFFUVB.mjs} +2 -2
  100. package/dist/{chunk-7YUAXONX.mjs → chunk-PMBB6MQ7.mjs} +1280 -774
  101. package/dist/{chunk-TGBJWKMP.mjs → chunk-RQ3XZ4SJ.mjs} +9 -1
  102. package/dist/{chunk-7N46MZHI.mjs → chunk-UG7I7S7W.mjs} +1 -1
  103. package/dist/cli/index.mjs +899 -531
  104. package/dist/cli/init-docs/content/cli-reference.md +6 -1
  105. package/dist/cli/init-docs/content/content-management.md +27 -0
  106. package/dist/client/{accordion-MUCVNGQ7.mjs → accordion-GXQNWQ6O.mjs} +1 -1
  107. package/dist/client/{bookingForm-PKD6EFIE.mjs → bookingForm-STLUJ36H.mjs} +25 -270
  108. package/dist/client/bookings.mjs +432 -269
  109. package/dist/client/{carousel-3TKQSNJC.mjs → carousel-CVRN6EPP.mjs} +1 -1
  110. package/dist/client/{cart-6XHSZK23.mjs → cart-IYIBA5CL.mjs} +5 -6
  111. package/dist/client/{checkout-FVSPM6FI.mjs → checkout-O3BGM4GS.mjs} +5 -6
  112. package/dist/client/chunk-4RTFGHZN.mjs +433 -0
  113. package/dist/client/{chunk-UQFY4AHX.mjs → chunk-6DPXDOIL.mjs} +65 -28
  114. package/dist/client/{chunk-ZT5XE7FK.mjs → chunk-D3ETC2SU.mjs} +1 -1
  115. package/dist/client/{chunk-CQKKFEQD.mjs → chunk-DAS5CIER.mjs} +274 -105
  116. package/dist/client/{chunk-SDIYSQAY.mjs → chunk-HIHOQGIP.mjs} +2 -3
  117. package/dist/client/{chunk-ZJZZA5EP.mjs → chunk-MFPKS6QS.mjs} +11 -14
  118. package/dist/client/{chunk-EY42X22F.mjs → chunk-NBFRJ5NB.mjs} +156 -4
  119. package/dist/client/{chunk-VGLXACVK.mjs → chunk-VFHZLZAC.mjs} +1 -1
  120. package/dist/client/{chunk-STJ2NCQM.mjs → chunk-WHZQDPBZ.mjs} +19 -1
  121. package/dist/client/{chunk-RSQWWUAD.mjs → chunk-Z62JYS5O.mjs} +3 -3
  122. package/dist/client/client.mjs +3292 -2827
  123. package/dist/client/{courseRegistration-ATZSYDHM.mjs → courseRegistration-2D3ACMJR.mjs} +18 -56
  124. package/dist/client/{eventCalendar-6T2UGKKP.mjs → eventCalendar-QY4UZUFF.mjs} +8 -9
  125. package/dist/client/{eventCombined-Q4VANXVF.mjs → eventCombined-RRCDKJC2.mjs} +8 -9
  126. package/dist/client/{eventDetails-DW37E7VW.mjs → eventDetails-YO335BUT.mjs} +8 -9
  127. package/dist/client/{eventListing-XURTSAUW.mjs → eventListing-PXA6GFQ3.mjs} +8 -9
  128. package/dist/client/{eventRegistration-MRKEVAXW.mjs → eventRegistration-2ZHEDDXO.mjs} +8 -9
  129. package/dist/client/{form-WZZFFGMU.mjs → form-ZS6KX4U2.mjs} +6 -6
  130. package/dist/client/{headerSection-EQYVQBLM.mjs → headerSection-QK5SLIIB.mjs} +2 -2
  131. package/dist/client/hooks.mjs +1084 -1029
  132. package/dist/client/{locationMap-MFF5VAZR.mjs → locationMap-GFNIUD2X.mjs} +2 -2
  133. package/dist/client/{newsletterForm-JQ77UYIE.mjs → newsletterForm-PGLTTCUG.mjs} +4 -4
  134. package/dist/client/{productDetail-25LMT3IZ.mjs → productDetail-OPBE5ZPI.mjs} +5 -6
  135. package/dist/client/{productList-5ABEMKUG.mjs → productList-NI72Q62Z.mjs} +5 -6
  136. package/dist/client/rendering/client.mjs +2692 -2285
  137. package/dist/client/rendering/islands.mjs +18 -18
  138. package/dist/client/rendering.mjs +2611 -2156
  139. package/dist/client/{shop-OMMQZ6YO.mjs → shop-3ZQPEWYI.mjs} +5 -6
  140. package/dist/client/spam-protection.mjs +4 -5
  141. package/dist/preview-next/before-render.mjs +2 -2
  142. package/dist/preview-next/client/runtime.mjs +5 -5
  143. package/dist/{sdk-runtime-WNLBZ3ZH.mjs → sdk-runtime-FSHXCWDS.mjs} +6 -6
  144. package/dist/server/components.mjs +1722 -1453
  145. package/dist/server/config-validation.mjs +1316 -1261
  146. package/dist/server/config.mjs +1316 -1261
  147. package/dist/server/data.mjs +1084 -1029
  148. package/dist/server/index.mjs +135 -100
  149. package/dist/server/navigation.mjs +20 -30
  150. package/dist/server/next.mjs +1782 -1500
  151. package/dist/server/page-converter.mjs +1009 -946
  152. package/dist/server/prebuild.mjs +1 -1
  153. package/dist/server/rendering/server.mjs +1722 -1453
  154. package/dist/server/rendering.mjs +1728 -1459
  155. package/dist/server/routing.mjs +1127 -1045
  156. package/dist/server/server.mjs +1219 -1129
  157. package/dist/server/theme-bridge.mjs +8 -5
  158. package/package.json +2 -2
  159. package/dist/SdkPreviewModeRuntime-ZBEMRV7N.mjs +0 -8
  160. package/dist/client/chunk-LQFDYWPJ.mjs +0 -184
  161. package/dist/client/chunk-ZFHRN6W2.mjs +0 -66
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { useOptionalPreviewLayout, PreviewQueryProvider } from './chunk-7N46MZHI.mjs';
3
- import { PreviewBlockCustomizeSelectionProvider, resolveSiteStyleAccess, resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSetupBannerModel, usePreviewBlockCustomizeSelectionOptional, useBlockCustomizeControls, MAX_CUSTOMIZE_POPOVER_ROWS, MAX_QUICK_MANIFEST_FIELDS, OfferingsPreviewWidgetProvider, previewWidgetOverrides, sanitizeDashboardPath } from './chunk-TGBJWKMP.mjs';
4
- import { resolvePreviewChromeSurface, getPreviewSidebarTab, onPreviewSidebarOpenRequest, getPreviewChromeSurfaceDataProps, PREVIEW_CHROME_THEME_CLASS_NAME, setPreviewSidebarTab, PreviewPageDesignEditorStateProvider, usePreviewPageDesignEditorState } from './chunk-ZQRBLCW5.mjs';
5
- import { clientComponentRegistry, deriveLaunchReadiness, DEFAULT_LAUNCH_READINESS_INPUT, useEditorUiStore, PreviewThemeOverlayProvider, PreviewDesignCoordinatorProvider, SiteChromeCustomizeProvider, ResizableSplitPane, BlockApiProvider, EditorProvider, PreviewDesignHistoryOrderProvider, MediaEditorProvider, useEditorUiStoreInstance, useEditor, createRoutingHelpers, createSnapshotFromPageRecord, EntryControllerProvider, useEntryEditorController, surfaceResolutionContextFromTheme, designRuntimeRulesForTheme, unsafeAsEditorBlockId, EditableBlockProvider, asDesignBlockId, PageRenderer, usePreviewThemeOverlay, planSiteDocument, ThemeScope, FixedBottomSurface, Button, unsafeAsLinkedContentEntryId, sectionTransitionVariantForBoundaryOptionId, sectionTransitionFamilyForBoundaryOptionId, sectionTransitionFamilies, X, defaultSectionTransitionVariantForFamily, RotateCcw, parseBackgroundOverrideFromContent, rankBackgroundImagePoolItems, imagePoolForOverride, resolveBackgroundCapability, enabledBackgroundModes, canCycleBackgroundOverrideValue, FormRenderer, stableSerialize, prefetchBlockData, isSupportedLoaderEndpoint, PreviewRichTextEditor, RichText, PreviewTextEditor, Text, buildThemeRuntime, renderBlock, siteHeaderManifest, siteFooterManifest, SiteDocumentLayout, SITE_CHROME_CLASS_NAMES, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, buildEditorModelRuntimeFieldsByBlockId, applyCompiledRuntimeFieldsToContent, assertNever2, getBlockDefinition, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetCurrentValue, systemCustomizeFacetLabelForValue, backgroundColorTokens, ChevronLeft, ChevronRight, createMicrobatcher, unwrapResponse, normalizePublicApiLoaderParams, visibleHeaderClearancePx, LINKED_CONTENT_ENTRY_META_KEY, useMediaEditorOptional, Image, defaultBackgroundOverrideForMode, decodePublicProductCategorySelectorQuery, EDITABLE_SURFACE_FORWARDING_PROP, useSiteChromeCustomizeOptional, assertNever, SITE_CHROME_VISIBLE_HEADER_SELECTOR, getLinkedContentEntryMeta, GRADIENT_PRESETS, resolveImageUrlWithContext, gradientToCss, Upload, MediaEditor, SECTION_BACKGROUND_MIN_SOURCE_WIDTH, SECTION_BACKGROUND_MIN_SOURCE_HEIGHT, parseMediaAssetId, formatSiteChromeBackgroundTokenLabel, planBackgroundOverride, planBackgroundTransition, systemCustomizeFacetNextValue } from './chunk-7YUAXONX.mjs';
6
- import { API_ENDPOINTS, createBearerAPIClient, isPreviewRuntimeSessionEditable, DEFAULT_SURFACE_ID, initPreviewAuth, usePreviewAuth, usePreviewAuthFetch, markPreviewAuthExpired, usePreviewToken } from './chunk-F645A5UV.mjs';
7
- import React10, { createContext, useMemo, useState, useEffect, useRef, useCallback, useId, useReducer, Children, isValidElement, Fragment as Fragment$1, cloneElement, useContext } from 'react';
2
+ import { useOptionalPreviewLayout, PreviewQueryProvider } from './chunk-UG7I7S7W.mjs';
3
+ import { PreviewBlockCustomizeSelectionProvider, resolveSiteStyleAccess, resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSetupBannerModel, usePreviewBlockCustomizeSelectionOptional, useBlockCustomizeControls, MAX_CUSTOMIZE_POPOVER_ROWS, MAX_QUICK_MANIFEST_FIELDS, OfferingsPreviewWidgetProvider, previewWidgetOverrides, sanitizeDashboardPath } from './chunk-RQ3XZ4SJ.mjs';
4
+ import { resolvePreviewChromeSurface, getPreviewSidebarTab, onPreviewSidebarOpenRequest, getPreviewChromeSurfaceDataProps, PREVIEW_CHROME_THEME_CLASS_NAME, setPreviewSidebarTab, PreviewPageDesignEditorStateProvider, usePreviewPageDesignEditorState } from './chunk-GSPFFUVB.mjs';
5
+ import { clientComponentRegistry, deriveLaunchReadiness, DEFAULT_LAUNCH_READINESS_INPUT, useEditorUiStore, PreviewThemeOverlayProvider, PreviewDesignCoordinatorProvider, SiteChromeCustomizeProvider, ResizableSplitPane, BlockApiProvider, EditorProvider, PreviewDesignHistoryOrderProvider, MediaEditorProvider, useEditorUiStoreInstance, useEditor, createRoutingHelpers, createSnapshotFromPageRecord, EntryControllerProvider, useEntryEditorController, surfaceResolutionContextFromTheme, designRuntimeRulesForTheme, unsafeAsEditorBlockId, EditableBlockProvider, asDesignBlockId, PageRenderer, usePreviewThemeOverlay, planSiteDocument, assertNever, ResponsiveScope, ThemeScope, FixedBottomSurface, Button, unsafeAsLinkedContentEntryId, sectionTransitionVariantForBoundaryOptionId, sectionTransitionFamilyForBoundaryOptionId, sectionTransitionFamilies, X, defaultSectionTransitionVariantForFamily, RotateCcw, parseBackgroundOverrideFromContent, rankBackgroundImagePoolItems, imagePoolForOverride, resolveBackgroundCapability, enabledBackgroundModes, canCycleBackgroundOverrideValue, FormRenderer, stableSerialize, prefetchBlockData, isSupportedLoaderEndpoint, PreviewRichTextEditor, RichText, PreviewTextEditor, Text, buildThemeRuntime, renderBlock, siteHeaderManifest, siteFooterManifest, SiteDocumentLayout, SITE_CHROME_CLASS_NAMES, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, buildEditorModelRuntimeFieldsByBlockId, applyCompiledRuntimeFieldsToContent, assertNever2, getBlockDefinition, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetCurrentValue, systemCustomizeFacetLabelForValue, backgroundColorTokens, ChevronLeft, ChevronRight, createMicrobatcher, unwrapResponse, normalizePublicApiLoaderParams, visibleHeaderClearancePx, LINKED_CONTENT_ENTRY_META_KEY, useMediaEditorOptional, Image, defaultBackgroundOverrideForMode, decodePublicProductCategorySelectorQuery, EDITABLE_SURFACE_FORWARDING_PROP, useSiteChromeCustomizeOptional, SITE_CHROME_VISIBLE_HEADER_SELECTOR, getLinkedContentEntryMeta, GRADIENT_PRESETS, resolveImageUrlWithContext, gradientToCss, Upload, MediaEditor, SECTION_BACKGROUND_MIN_SOURCE_WIDTH, SECTION_BACKGROUND_MIN_SOURCE_HEIGHT, parseMediaAssetId, formatSiteChromeBackgroundTokenLabel, planBackgroundOverride, planBackgroundTransition, systemCustomizeFacetNextValue } from './chunk-PMBB6MQ7.mjs';
6
+ import { API_ENDPOINTS, createBearerAPIClient, isPreviewRuntimeSessionEditable, DEFAULT_SURFACE_ID, initPreviewAuth, usePreviewAuth, usePreviewAuthFetch, markPreviewAuthExpired, usePreviewToken } from './chunk-BOQXMCSP.mjs';
7
+ import React9, { createContext, useMemo, useState, useEffect, useRef, useCallback, useId, useReducer, Children, isValidElement, Fragment as Fragment$1, cloneElement, useContext } from 'react';
8
8
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
9
  import { createPortal } from 'react-dom';
10
10
 
@@ -2364,7 +2364,8 @@ function BoundaryControl({
2364
2364
  saveSequenceRef.current = sequence;
2365
2365
  setFeedback({ kind: "saving" });
2366
2366
  void applyAction(action).then((outcome) => {
2367
- if (saveSequenceRef.current !== sequence || outcome.kind === "skipped") return;
2367
+ if (saveSequenceRef.current !== sequence || outcome.kind === "skipped")
2368
+ return;
2368
2369
  setFeedback(
2369
2370
  outcome.kind === "saved" || outcome.kind === "queued" ? { kind: "idle" } : { kind: "error", message: outcome.message }
2370
2371
  );
@@ -2433,11 +2434,19 @@ function BoundaryControl({
2433
2434
  /* @__PURE__ */ jsxs("div", { className: "mb-3 flex items-start justify-between gap-3", children: [
2434
2435
  /* @__PURE__ */ jsxs("div", { children: [
2435
2436
  /* @__PURE__ */ jsx("div", { className: "text-sm font-semibold", children: "Section break" }),
2436
- /* @__PURE__ */ jsxs("div", { id: panelDescriptionId, className: "mt-0.5 text-xs text-slate-500", children: [
2437
- formatBlockKindLabel2(previousBlockKind),
2438
- " / ",
2439
- formatBlockKindLabel2(nextBlockKind)
2440
- ] })
2437
+ /* @__PURE__ */ jsxs(
2438
+ "div",
2439
+ {
2440
+ id: panelDescriptionId,
2441
+ className: "mt-0.5 text-xs text-slate-500",
2442
+ children: [
2443
+ formatBlockKindLabel2(previousBlockKind),
2444
+ " /",
2445
+ " ",
2446
+ formatBlockKindLabel2(nextBlockKind)
2447
+ ]
2448
+ }
2449
+ )
2441
2450
  ] }),
2442
2451
  /* @__PURE__ */ jsx(
2443
2452
  "button",
@@ -2551,7 +2560,9 @@ function boundaryBreakModeLabel(boundary) {
2551
2560
  return boundaryBreakDisplay(boundary).modeLabel;
2552
2561
  }
2553
2562
  function boundaryBreakDisplay(boundary) {
2554
- const option = boundary.availableBreaks.find((candidate) => candidate.id === boundary.breakChoice.effectiveValue) ?? null;
2563
+ const option = boundary.availableBreaks.find(
2564
+ (candidate) => candidate.id === boundary.breakChoice.effectiveValue
2565
+ ) ?? null;
2555
2566
  switch (boundary.breakChoice.kind) {
2556
2567
  case "auto":
2557
2568
  return {
@@ -2579,13 +2590,17 @@ function boundaryBreakDisplay(boundary) {
2579
2590
  resetLabel: "Use default break"
2580
2591
  };
2581
2592
  default:
2582
- return assertNever2(boundary.breakChoice, "Unhandled boundary break choice");
2593
+ return assertNever2(
2594
+ boundary.breakChoice,
2595
+ "Unhandled boundary break choice"
2596
+ );
2583
2597
  }
2584
2598
  }
2585
2599
  function formatBlockKindLabel2(blockKind) {
2586
2600
  const blockTitle = getBlockDefinition(blockKind)?.manifest.title;
2587
2601
  if (blockTitle) return blockTitle;
2588
- const withoutPrefix = blockKind.includes(".") ? blockKind.split(".").at(-1) : blockKind;
2602
+ const blockKindParts = blockKind.split(".");
2603
+ const withoutPrefix = blockKind.includes(".") ? blockKindParts[blockKindParts.length - 1] : blockKind;
2589
2604
  return (withoutPrefix ?? blockKind).split(/[-_]/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
2590
2605
  }
2591
2606
 
@@ -4441,18 +4456,19 @@ function SiteChromeEditableSurface({
4441
4456
  children,
4442
4457
  preserveSingleComponentRoot = false
4443
4458
  }) {
4444
- return renderEditableSurface(
4445
- children,
4446
- surface,
4447
- { preserveSingleComponentRoot }
4448
- );
4459
+ return renderEditableSurface(children, surface, {
4460
+ preserveSingleComponentRoot
4461
+ });
4449
4462
  }
4450
4463
  function renderEditableSurface(children, surface, options) {
4451
4464
  const childArray = Children.toArray(children);
4452
4465
  const child = childArray.length === 1 ? childArray[0] : null;
4453
4466
  if (isValidElement(child) && child.type !== Fragment$1 && (isHostElement(child) || options.preserveSingleComponentRoot || isEditableSurfaceForwardingElement(child))) {
4454
4467
  return cloneElement(child, {
4455
- className: joinClassNames2(child.props.className, "group/site-chrome relative"),
4468
+ className: joinClassNames2(
4469
+ child.props.className,
4470
+ "group/site-chrome relative"
4471
+ ),
4456
4472
  "data-preview-site-chrome-surface": surface,
4457
4473
  children: /* @__PURE__ */ jsxs(Fragment, { children: [
4458
4474
  child.props.children,
@@ -4480,10 +4496,17 @@ function renderEditableSurface(children, surface, options) {
4480
4496
  }
4481
4497
  );
4482
4498
  }
4483
- return /* @__PURE__ */ jsxs("div", { className: "group/site-chrome relative", "data-preview-site-chrome-surface": surface, children: [
4484
- children,
4485
- /* @__PURE__ */ jsx(SiteChromeCustomizeButton, { surface })
4486
- ] });
4499
+ return /* @__PURE__ */ jsxs(
4500
+ "div",
4501
+ {
4502
+ className: "group/site-chrome relative",
4503
+ "data-preview-site-chrome-surface": surface,
4504
+ children: [
4505
+ children,
4506
+ /* @__PURE__ */ jsx(SiteChromeCustomizeButton, { surface })
4507
+ ]
4508
+ }
4509
+ );
4487
4510
  }
4488
4511
  function isHostElement(child) {
4489
4512
  return typeof child.type === "string";
@@ -4554,9 +4577,14 @@ function normalizePreviewScale(scale) {
4554
4577
  function assertNever3(value) {
4555
4578
  throw new Error(`Unhandled preview viewport mode: ${String(value)}`);
4556
4579
  }
4580
+
4581
+ // ../preview-next/src/client/preview/themeRuntime.ts
4582
+ var defaultPreviewThemeRuntime = {
4583
+ kind: "cms-theme"
4584
+ };
4557
4585
  function PreviewThemedSiteDocument({
4558
4586
  children,
4559
- useThemeScope,
4587
+ themeRuntime = defaultPreviewThemeRuntime,
4560
4588
  useContainerResponsiveMode,
4561
4589
  viewportMode,
4562
4590
  viewportWidth,
@@ -4596,18 +4624,32 @@ function PreviewThemedSiteDocument({
4596
4624
  footerNode,
4597
4625
  children
4598
4626
  });
4599
- if (!useThemeScope) {
4600
- return documentNode;
4627
+ const responsiveMode = themeRuntime.kind === "none" ? void 0 : themeRuntime.responsiveMode ?? (useContainerResponsiveMode ? "container" : "viewport");
4628
+ switch (themeRuntime.kind) {
4629
+ case "cms-theme":
4630
+ return /* @__PURE__ */ jsx(
4631
+ ThemeScope,
4632
+ {
4633
+ theme: effectiveTheme,
4634
+ responsiveMode,
4635
+ className: "rb-flex rb-flex-1 rb-flex-col",
4636
+ children: documentNode
4637
+ }
4638
+ );
4639
+ case "responsive-only":
4640
+ return /* @__PURE__ */ jsx(
4641
+ ResponsiveScope,
4642
+ {
4643
+ responsiveMode,
4644
+ className: "rb-flex rb-flex-1 rb-flex-col",
4645
+ children: documentNode
4646
+ }
4647
+ );
4648
+ case "none":
4649
+ return documentNode;
4650
+ default:
4651
+ return assertNever(themeRuntime);
4601
4652
  }
4602
- return /* @__PURE__ */ jsx(
4603
- ThemeScope,
4604
- {
4605
- theme: effectiveTheme,
4606
- responsiveMode: useContainerResponsiveMode ? "container" : "viewport",
4607
- className: "rb-flex rb-flex-1 rb-flex-col",
4608
- children: documentNode
4609
- }
4610
- );
4611
4653
  }
4612
4654
  function renderPreviewDocument({
4613
4655
  viewportMode,
@@ -4697,17 +4739,11 @@ function LinkedEntryEditEventBridge() {
4697
4739
  if (!isBlockFieldFocusEvent(event)) return;
4698
4740
  const state = uiStore.getState();
4699
4741
  const blockId = unsafeAsEditorBlockId(event.detail.blockId);
4700
- state.setPreviewSidebarTab("editor");
4701
- state.setDrawerOpen(true);
4702
4742
  state.setActivePreviewField({
4703
4743
  kind: "block",
4704
4744
  blockId,
4705
4745
  fieldPath: event.detail.fieldPath
4706
4746
  });
4707
- state.requestFocus({
4708
- blockId,
4709
- fieldPath: event.detail.fieldPath
4710
- });
4711
4747
  };
4712
4748
  window.addEventListener(LINKED_ENTRY_EDIT_EVENT, handleLinkedEntryEdit);
4713
4749
  window.addEventListener(LINKED_ENTRY_FIELD_FOCUS_EVENT, handleLinkedEntryFieldFocus);
@@ -4721,12 +4757,12 @@ function LinkedEntryEditEventBridge() {
4721
4757
  return null;
4722
4758
  }
4723
4759
  var previewContainerResponsiveEnabled = process.env.NEXT_PUBLIC_ENABLE_PREVIEW_CONTAINER_RESPONSIVE !== "false";
4724
- var PreviewEditorSidebar = React10.lazy(async () => {
4725
- const mod = await import('./PreviewEditorSidebar-JDR64FEC.mjs');
4760
+ var PreviewEditorSidebar = React9.lazy(async () => {
4761
+ const mod = await import('./PreviewEditorSidebar-KVXNF3VW.mjs');
4726
4762
  return { default: mod.PreviewEditorSidebar };
4727
4763
  });
4728
- var PreviewEditorUI = React10.lazy(async () => {
4729
- const mod = await import('./PreviewEditorUI-67TMJMAF.mjs');
4764
+ var PreviewEditorUI = React9.lazy(async () => {
4765
+ const mod = await import('./PreviewEditorUI-J3JN5Z7T.mjs');
4730
4766
  return { default: mod.PreviewEditorUI };
4731
4767
  });
4732
4768
  var previewPaneContainmentStyle = {
@@ -4772,7 +4808,7 @@ function PreviewShellLayout({
4772
4808
  sdkConfig,
4773
4809
  mediaAssets,
4774
4810
  bookingOfferingPresets,
4775
- useThemeScope = true,
4811
+ themeRuntime = defaultPreviewThemeRuntime,
4776
4812
  siteStyleAccess = { kind: "hidden" }
4777
4813
  }) {
4778
4814
  const layout = useOptionalPreviewLayout();
@@ -4946,7 +4982,7 @@ function PreviewShellLayout({
4946
4982
  children: /* @__PURE__ */ jsx(PreviewChromeLayerProvider, { children: /* @__PURE__ */ jsx(
4947
4983
  PreviewThemedSiteDocument,
4948
4984
  {
4949
- useThemeScope,
4985
+ themeRuntime,
4950
4986
  useContainerResponsiveMode: previewContainerResponsiveEnabled,
4951
4987
  viewportMode,
4952
4988
  viewportWidth,
@@ -4968,7 +5004,7 @@ function PreviewShellLayout({
4968
5004
  {
4969
5005
  className: `${PREVIEW_CHROME_THEME_CLASS_NAME} flex h-full min-h-0 flex-col overflow-hidden ${surfaceDocument.surfaceClassName ?? ""}`,
4970
5006
  ...getPreviewChromeSurfaceDataProps(surfaceDocument),
4971
- children: /* @__PURE__ */ jsx(React10.Suspense, { fallback: null, children: /* @__PURE__ */ jsx(
5007
+ children: /* @__PURE__ */ jsx(React9.Suspense, { fallback: null, children: /* @__PURE__ */ jsx(
4972
5008
  PreviewEditorSidebar,
4973
5009
  {
4974
5010
  surfaceId,
@@ -5024,7 +5060,7 @@ function PreviewShellLayout({
5024
5060
  ) })
5025
5061
  }
5026
5062
  );
5027
- const editorUI = /* @__PURE__ */ jsx(React10.Suspense, { fallback: null, children: /* @__PURE__ */ jsx(
5063
+ const editorUI = /* @__PURE__ */ jsx(React9.Suspense, { fallback: null, children: /* @__PURE__ */ jsx(
5028
5064
  PreviewEditorUI,
5029
5065
  {
5030
5066
  dashboardBaseUrl,
@@ -5139,7 +5175,7 @@ function PreviewShell({
5139
5175
  mediaAssets,
5140
5176
  bookingOfferingPresets,
5141
5177
  supabaseUrl,
5142
- useThemeScope = true,
5178
+ themeRuntime = defaultPreviewThemeRuntime,
5143
5179
  designEditorEligibility,
5144
5180
  baseFetch
5145
5181
  }) {
@@ -5227,7 +5263,7 @@ function PreviewShell({
5227
5263
  sdkConfig: sdkConfig ?? null,
5228
5264
  mediaAssets,
5229
5265
  bookingOfferingPresets,
5230
- useThemeScope,
5266
+ themeRuntime,
5231
5267
  siteStyleAccess,
5232
5268
  children
5233
5269
  }
@@ -5274,7 +5310,7 @@ function SdkPreviewModeRuntime(props) {
5274
5310
  previewToken,
5275
5311
  content,
5276
5312
  blockOverrides,
5277
- useThemeScope = true
5313
+ themeRuntime = defaultPreviewThemeRuntime
5278
5314
  } = props;
5279
5315
  const resolvedDashboardBaseUrl = dashboardBaseUrl ?? deriveDashboardBaseUrlFromApiBaseUrl(apiBaseUrl);
5280
5316
  const surfaceId = props.surfaceId ?? DEFAULT_SURFACE_ID;
@@ -5355,7 +5391,7 @@ function SdkPreviewModeRuntime(props) {
5355
5391
  sdkConfig: sdkConfigForEditor,
5356
5392
  mediaAssets: content.mediaAssets,
5357
5393
  supabaseUrl: content.supabaseUrl,
5358
- useThemeScope,
5394
+ themeRuntime,
5359
5395
  designEditorEligibility: { kind: "sdk-page" },
5360
5396
  children: /* @__PURE__ */ jsx(
5361
5397
  EditablePageRenderer,
@@ -225,7 +225,10 @@ function normalizeDashboardOrigin(input) {
225
225
  }
226
226
  function deriveCmsApiUrlFromDashboardUrl(input) {
227
227
  const origin = normalizeDashboardOrigin(input);
228
- return origin ? `${origin}/api` : "";
228
+ return origin ? normalizeCmsApiBaseUrl(`${origin}/api`) : "";
229
+ }
230
+ function normalizeCmsApiBaseUrl(input) {
231
+ return input.trim().replace(/\/+$/, "").replace(/(?:\/api)+$/i, "/api");
229
232
  }
230
233
  function getDashboardBaseUrl() {
231
234
  const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;
@@ -238,15 +241,16 @@ function getDashboardBaseUrl() {
238
241
  }
239
242
  function getCmsApiUrl() {
240
243
  if (typeof window !== "undefined") {
241
- return "/api";
244
+ return normalizeCmsApiBaseUrl("/api");
242
245
  }
243
246
  const internalUrl = process.env.CMS_API_URL;
244
247
  if (internalUrl) {
245
- return internalUrl.replace(/\/$/, "");
248
+ return normalizeCmsApiBaseUrl(internalUrl);
246
249
  }
247
250
  const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;
248
251
  if (dashboardUrl) {
249
- return deriveCmsApiUrlFromDashboardUrl(dashboardUrl);
252
+ const apiUrl = deriveCmsApiUrlFromDashboardUrl(dashboardUrl);
253
+ if (apiUrl) return apiUrl;
250
254
  }
251
255
  throw new Error(
252
256
  "CMS_API_URL or NEXT_PUBLIC_DASHBOARD_URL is not configured. Set NEXT_PUBLIC_DASHBOARD_URL to your dashboard URL (e.g., http://localhost:4000)"
@@ -6729,7 +6733,6 @@ function getRevalidateTag() {
6729
6733
  }
6730
6734
  return revalidateTag;
6731
6735
  }
6732
- var sdkVersion;
6733
6736
  function generateRequestId() {
6734
6737
  if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
6735
6738
  return crypto.randomUUID();
@@ -6809,6 +6812,24 @@ function serializeQueryValue(value) {
6809
6812
  if (value instanceof Date) return value.toISOString();
6810
6813
  return null;
6811
6814
  }
6815
+ function normalizeHeaders(source) {
6816
+ const normalized = {};
6817
+ if (!source) return normalized;
6818
+ new Headers(source).forEach((value, key) => {
6819
+ normalized[key] = value;
6820
+ });
6821
+ return normalized;
6822
+ }
6823
+ function buildRequestHeaders(input) {
6824
+ const headers = {
6825
+ ...normalizeHeaders(input.optionsHeaders),
6826
+ ...normalizeHeaders(input.authHeaders)
6827
+ };
6828
+ if (input.includeJsonContentType) {
6829
+ headers["Content-Type"] = "application/json";
6830
+ }
6831
+ return headers;
6832
+ }
6812
6833
  function serializePathParam(endpoint, key, value) {
6813
6834
  if (typeof value === "string") {
6814
6835
  return value;
@@ -6944,104 +6965,18 @@ function createRawCMSClient(headers = {}, baseUrl) {
6944
6965
  params,
6945
6966
  options = {}
6946
6967
  }) => {
6947
- const resolvedBaseUrl = baseUrl ?? resolveApiBaseUrl();
6948
- let url = buildEndpointURL(resolvedBaseUrl, endpoint);
6949
- const originalPath = API_ENDPOINTS[endpoint].path;
6950
- const unusedParams = {};
6951
- if (params) {
6952
- Object.entries(params).forEach(([key, value]) => {
6953
- const bracePlaceholder = `{${key}}`;
6954
- const colonPlaceholder = `:${key}`;
6955
- if (originalPath.includes(bracePlaceholder) || originalPath.includes(colonPlaceholder)) {
6956
- const stringValue = serializePathParam(endpoint, key, value);
6957
- url = url.replace(bracePlaceholder, stringValue);
6958
- url = url.replace(colonPlaceholder, stringValue);
6959
- } else {
6960
- unusedParams[key] = value;
6961
- }
6962
- });
6963
- }
6964
- const unresolvedPathParams = [
6965
- ...url.match(/\{[^}]+\}/g) ?? [],
6966
- ...url.match(/(^|\/):([A-Za-z][A-Za-z0-9_]*)\b/g) ?? []
6967
- ];
6968
- if (unresolvedPathParams.length > 0) {
6969
- const missingParams = Array.from(
6970
- new Set(
6971
- unresolvedPathParams.map((token) => {
6972
- if (token.startsWith("{") && token.endsWith("}")) {
6973
- return token.slice(1, -1);
6974
- }
6975
- return token.replace(/^\//, "").slice(1);
6976
- })
6977
- )
6978
- );
6979
- throw new Error(
6980
- `Missing required path params for endpoint ${String(endpoint)}: ${missingParams.join(", ")}`
6981
- );
6982
- }
6983
- const endpointConfig = API_ENDPOINTS[endpoint];
6984
- const method = endpointConfig.method;
6985
- const isGetOrHead = method === "GET" || method === "HEAD";
6986
- const queryParams = new URLSearchParams();
6987
- Object.entries(unusedParams).forEach(([key, value]) => {
6988
- appendQueryParam(queryParams, key, value);
6989
- });
6990
- if (isGetOrHead && typeof body === "object" && body !== null && !isFormDataBody(body)) {
6991
- Object.entries(body).forEach(([key, value]) => {
6992
- appendQueryParam(queryParams, key, value);
6993
- });
6994
- }
6995
- const queryString = queryParams.toString();
6996
- if (queryString) {
6997
- url += (url.includes("?") ? "&" : "?") + queryString;
6998
- }
6999
- const formDataBody = isFormDataBody(body) ? body : void 0;
7000
- const optionsNext = options?.next;
7001
- const nextOptions = { ...optionsNext ?? {} };
7002
- const cacheIsNoStore = options?.cache === "no-store";
7003
- if (cacheIsNoStore) {
7004
- delete nextOptions.revalidate;
7005
- } else if (isGetOrHead && nextOptions.revalidate === void 0 && "revalidate" in endpointConfig && typeof endpointConfig.revalidate === "number") {
7006
- nextOptions.revalidate = endpointConfig.revalidate;
7007
- }
7008
- if ("tags" in endpointConfig && Array.isArray(endpointConfig.tags)) {
7009
- const processedTags = endpointConfig.tags.map((tag) => {
7010
- let processedTag = tag;
7011
- if (params) {
7012
- Object.entries(params).forEach(([key, value]) => {
7013
- processedTag = processedTag.replace(`{${key}}`, String(value));
7014
- });
7015
- }
7016
- return /\{[^}]+\}/.test(processedTag) ? null : processedTag;
7017
- }).filter((tag) => tag !== null);
7018
- nextOptions.tags = Array.from(/* @__PURE__ */ new Set([...nextOptions.tags ?? [], ...processedTags]));
7019
- }
7020
- const requestInit = {
7021
- method,
7022
- ...options,
7023
- // Include credentials for same-origin requests (sends cookies for auth)
7024
- credentials: "same-origin",
7025
- // Don't include body for GET/HEAD requests
7026
- // FormData is pre-narrowed via isFormDataBody() above
7027
- body: isGetOrHead || body == null ? void 0 : formDataBody ?? JSON.stringify(body),
7028
- headers: {
7029
- ...options.headers,
7030
- ...headers,
7031
- // Include SDK version if set
7032
- ...sdkVersion,
7033
- // Don't set Content-Type for GET/HEAD requests without body
7034
- ...isGetOrHead ? {} : formDataBody ? {} : { "Content-Type": "application/json" }
7035
- },
7036
- // Add Next.js caching options
7037
- next: Object.keys(nextOptions).length > 0 ? nextOptions : void 0
7038
- };
7039
- const fetchPromise = fetch(url, requestInit);
7040
- if (!isGetOrHead && "tags" in endpointConfig && Array.isArray(endpointConfig.tags)) {
7041
- const tags = endpointConfig.tags.map((tag) => tag);
6968
+ const plan = buildApiRequestPlan({
6969
+ endpoint,
6970
+ body,
6971
+ params,
6972
+ options,
6973
+ headers,
6974
+ baseUrl: normalizeCmsApiBaseUrl(baseUrl ?? resolveApiBaseUrl())});
6975
+ const fetchPromise = fetch(plan.url, plan.init);
6976
+ if (plan.cacheInvalidationTags) {
7042
6977
  return fetchPromise.then((response) => {
7043
6978
  if (response.ok) {
7044
- invalidateCacheTags(tags, params);
6979
+ invalidateCacheTags(plan.cacheInvalidationTags, params);
7045
6980
  }
7046
6981
  return response;
7047
6982
  });
@@ -7049,6 +6984,99 @@ function createRawCMSClient(headers = {}, baseUrl) {
7049
6984
  return fetchPromise;
7050
6985
  };
7051
6986
  }
6987
+ function buildApiRequestPlan(input) {
6988
+ const { endpoint, body, params, headers = {}, baseUrl } = input;
6989
+ const options = input.options ?? {};
6990
+ let url = buildEndpointURL(baseUrl, endpoint);
6991
+ const originalPath = API_ENDPOINTS[endpoint].path;
6992
+ const unusedParams = {};
6993
+ if (params) {
6994
+ Object.entries(params).forEach(([key, value]) => {
6995
+ const bracePlaceholder = `{${key}}`;
6996
+ const colonPlaceholder = `:${key}`;
6997
+ if (originalPath.includes(bracePlaceholder) || originalPath.includes(colonPlaceholder)) {
6998
+ const stringValue = serializePathParam(endpoint, key, value);
6999
+ url = url.replace(bracePlaceholder, stringValue);
7000
+ url = url.replace(colonPlaceholder, stringValue);
7001
+ } else {
7002
+ unusedParams[key] = value;
7003
+ }
7004
+ });
7005
+ }
7006
+ const unresolvedPathParams = [
7007
+ ...url.match(/\{[^}]+\}/g) ?? [],
7008
+ ...url.match(/(^|\/):([A-Za-z][A-Za-z0-9_]*)\b/g) ?? []
7009
+ ];
7010
+ if (unresolvedPathParams.length > 0) {
7011
+ const missingParams = Array.from(
7012
+ new Set(
7013
+ unresolvedPathParams.map((token) => {
7014
+ if (token.startsWith("{") && token.endsWith("}")) {
7015
+ return token.slice(1, -1);
7016
+ }
7017
+ return token.replace(/^\//, "").slice(1);
7018
+ })
7019
+ )
7020
+ );
7021
+ throw new Error(
7022
+ `Missing required path params for endpoint ${String(endpoint)}: ${missingParams.join(", ")}`
7023
+ );
7024
+ }
7025
+ const endpointConfig = API_ENDPOINTS[endpoint];
7026
+ const method = endpointConfig.method;
7027
+ const isGetOrHead = method === "GET" || method === "HEAD";
7028
+ const queryParams = new URLSearchParams();
7029
+ Object.entries(unusedParams).forEach(([key, value]) => {
7030
+ appendQueryParam(queryParams, key, value);
7031
+ });
7032
+ if (isGetOrHead && typeof body === "object" && body !== null && !isFormDataBody(body)) {
7033
+ Object.entries(body).forEach(([key, value]) => {
7034
+ appendQueryParam(queryParams, key, value);
7035
+ });
7036
+ }
7037
+ const queryString = queryParams.toString();
7038
+ if (queryString) {
7039
+ url += (url.includes("?") ? "&" : "?") + queryString;
7040
+ }
7041
+ const formDataBody = isFormDataBody(body) ? body : void 0;
7042
+ const optionsNext = options?.next;
7043
+ const nextOptions = { ...optionsNext ?? {} };
7044
+ const cacheIsNoStore = options?.cache === "no-store";
7045
+ if (cacheIsNoStore) {
7046
+ delete nextOptions.revalidate;
7047
+ } else if (isGetOrHead && nextOptions.revalidate === void 0 && "revalidate" in endpointConfig && typeof endpointConfig.revalidate === "number") {
7048
+ nextOptions.revalidate = endpointConfig.revalidate;
7049
+ }
7050
+ if ("tags" in endpointConfig && Array.isArray(endpointConfig.tags)) {
7051
+ const processedTags = endpointConfig.tags.map((tag) => {
7052
+ let processedTag = tag;
7053
+ if (params) {
7054
+ Object.entries(params).forEach(([key, value]) => {
7055
+ processedTag = processedTag.replace(`{${key}}`, String(value));
7056
+ });
7057
+ }
7058
+ return /\{[^}]+\}/.test(processedTag) ? null : processedTag;
7059
+ }).filter((tag) => tag !== null);
7060
+ nextOptions.tags = Array.from(/* @__PURE__ */ new Set([...nextOptions.tags ?? [], ...processedTags]));
7061
+ }
7062
+ const init = {
7063
+ method,
7064
+ ...options,
7065
+ credentials: "same-origin",
7066
+ body: isGetOrHead || body == null ? void 0 : formDataBody ?? JSON.stringify(body),
7067
+ headers: buildRequestHeaders({
7068
+ optionsHeaders: options.headers,
7069
+ authHeaders: headers,
7070
+ includeJsonContentType: !isGetOrHead && !formDataBody
7071
+ }),
7072
+ ...Object.keys(nextOptions).length > 0 ? { next: nextOptions } : {}
7073
+ };
7074
+ return {
7075
+ url,
7076
+ init,
7077
+ ...!isGetOrHead && "tags" in endpointConfig && Array.isArray(endpointConfig.tags) ? { cacheInvalidationTags: endpointConfig.tags.map((tag) => tag) } : {}
7078
+ };
7079
+ }
7052
7080
  function createParsedClient(rawClient) {
7053
7081
  return async (params) => {
7054
7082
  const response = await rawClient(params);
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { assertNever2, usePreviewDesignHistoryOrder, useOptionalEditorUiStoreInstance, getPageDesignEditorState, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, unwrapResponse, useDebouncedLatestSave, AMBIENT_BACKGROUND_ROLES, applyPageDesignEditorAction, resolvePreviewSidebarTab, confirmAutosaveBatch, beginAutosaveBatch, enqueueTransaction, applyBackgroundOverrideContentPatch, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetRollbackContentPatch, systemCustomizeFacetApplyContentPatch, unsafeAsEditorBlockId, createHistoryState, rejectAutosaveBatch, redoHistory, undoHistory, pushHistoryEntry, idleEditorTransactionQueueState, canRedoHistory, deriveTransactionCapabilities, canUndoHistory, backgroundOverrideEquals, attachRenderableMediaAssetFields, planPageDesignLayoutLookCompatibility, unsafeAsEditorBlockValues } from './chunk-7YUAXONX.mjs';
3
- import { ApiRequestError, resolveSurfaceDocumentAttributes, SURFACE_DOCUMENT_DATA_ATTRIBUTE, SURFACE_IDS } from './chunk-F645A5UV.mjs';
2
+ import { assertNever2, usePreviewDesignHistoryOrder, useOptionalEditorUiStoreInstance, getPageDesignEditorState, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, unwrapResponse, useDebouncedLatestSave, AMBIENT_BACKGROUND_ROLES, applyPageDesignEditorAction, resolvePreviewSidebarTab, confirmAutosaveBatch, beginAutosaveBatch, enqueueTransaction, applyBackgroundOverrideContentPatch, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetRollbackContentPatch, systemCustomizeFacetApplyContentPatch, unsafeAsEditorBlockId, createHistoryState, rejectAutosaveBatch, redoHistory, undoHistory, pushHistoryEntry, idleEditorTransactionQueueState, canRedoHistory, deriveTransactionCapabilities, canUndoHistory, backgroundOverrideEquals, attachRenderableMediaAssetFields, planPageDesignLayoutLookCompatibility, unsafeAsEditorBlockValues } from './chunk-PMBB6MQ7.mjs';
3
+ import { ApiRequestError, resolveSurfaceDocumentAttributes, SURFACE_DOCUMENT_DATA_ATTRIBUTE, SURFACE_IDS } from './chunk-BOQXMCSP.mjs';
4
4
  import { createContext, useState, useRef, useEffect, useMemo, useLayoutEffect, useContext } from 'react';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6