@riverbankcms/sdk 0.4.0 → 0.4.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 (124) hide show
  1. package/README.md +73 -0
  2. package/dist/cli/index.js +46 -5
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/client/client.d.mts +3 -3
  5. package/dist/client/client.d.ts +3 -3
  6. package/dist/client/client.js +80 -170
  7. package/dist/client/client.js.map +1 -1
  8. package/dist/client/client.mjs +80 -170
  9. package/dist/client/client.mjs.map +1 -1
  10. package/dist/client/hooks.d.mts +3 -3
  11. package/dist/client/hooks.d.ts +3 -3
  12. package/dist/client/rendering/client.d.mts +1 -1
  13. package/dist/client/rendering/client.d.ts +1 -1
  14. package/dist/client/rendering/client.js +80 -142
  15. package/dist/client/rendering/client.js.map +1 -1
  16. package/dist/client/rendering/client.mjs +80 -142
  17. package/dist/client/rendering/client.mjs.map +1 -1
  18. package/dist/client/resolver-CYyfzTQ9.d.mts +61 -0
  19. package/dist/client/resolver-CYyfzTQ9.d.ts +61 -0
  20. package/dist/client/usePage-BC8Q2E3t.d.mts +6431 -0
  21. package/dist/client/usePage-CHEybPMD.d.ts +6429 -0
  22. package/dist/client/usePage-D4fxZbRR.d.mts +6429 -0
  23. package/dist/client/usePage-DpRNZUtP.d.ts +6431 -0
  24. package/dist/server/{Layout-B_zUr9ci.d.mts → Layout-ByUnm35V.d.mts} +1 -1
  25. package/dist/server/{Layout-CHG77dhK.d.ts → Layout-kRv5sU81.d.ts} +1 -1
  26. package/dist/server/{chunk-ZIM53VP6.js → chunk-6JBKKV3G.js} +27 -4
  27. package/dist/server/chunk-6JBKKV3G.js.map +1 -0
  28. package/dist/server/{chunk-SFQ7VF3G.mjs → chunk-7BOIO2S7.mjs} +7 -5
  29. package/dist/server/{chunk-SFQ7VF3G.mjs.map → chunk-7BOIO2S7.mjs.map} +1 -1
  30. package/dist/server/{chunk-M5KTLZTD.mjs → chunk-A2FZMRDW.mjs} +3 -2
  31. package/dist/server/chunk-A2FZMRDW.mjs.map +1 -0
  32. package/dist/server/{chunk-P6CDRJN3.js → chunk-BLKVTULP.js} +13 -11
  33. package/dist/server/chunk-BLKVTULP.js.map +1 -0
  34. package/dist/server/{chunk-BOHTTHY5.mjs → chunk-I6K5REFT.mjs} +27 -4
  35. package/dist/server/chunk-I6K5REFT.mjs.map +1 -0
  36. package/dist/server/{chunk-BUCJWG6G.js → chunk-NW5KHH4A.js} +5 -5
  37. package/dist/server/{chunk-BUCJWG6G.js.map → chunk-NW5KHH4A.js.map} +1 -1
  38. package/dist/server/{chunk-XK2YIISA.mjs → chunk-SPXMMX3C.mjs} +2 -2
  39. package/dist/server/{chunk-FPYK6527.js → chunk-SWPHIUVE.js} +7 -6
  40. package/dist/server/chunk-SWPHIUVE.js.map +1 -0
  41. package/dist/server/{chunk-IT5ICP43.js → chunk-TKMA6D6U.js} +139 -229
  42. package/dist/server/chunk-TKMA6D6U.js.map +1 -0
  43. package/dist/server/{chunk-NKXS4TBK.mjs → chunk-TNRADRPH.mjs} +79 -169
  44. package/dist/server/chunk-TNRADRPH.mjs.map +1 -0
  45. package/dist/server/{chunk-G4CKM4EN.js → chunk-Y7347JMZ.js} +3 -2
  46. package/dist/server/chunk-Y7347JMZ.js.map +1 -0
  47. package/dist/server/{chunk-VVFYHAUD.mjs → chunk-ZEAJW6T3.mjs} +5 -4
  48. package/dist/server/chunk-ZEAJW6T3.mjs.map +1 -0
  49. package/dist/server/{components-Ci5nlyUj.d.mts → components-CY8jDQjv.d.mts} +20 -12
  50. package/dist/server/{components-BYxloYJm.d.ts → components-D1Z2mSDr.d.ts} +20 -12
  51. package/dist/server/components.d.mts +6 -6
  52. package/dist/server/components.d.ts +6 -6
  53. package/dist/server/components.js +3 -3
  54. package/dist/server/components.mjs +2 -2
  55. package/dist/server/config-validation.d.mts +2 -2
  56. package/dist/server/config-validation.d.ts +2 -2
  57. package/dist/server/config-validation.js +3 -3
  58. package/dist/server/config-validation.mjs +2 -2
  59. package/dist/server/config.d.mts +3 -3
  60. package/dist/server/config.d.ts +3 -3
  61. package/dist/server/config.js +3 -3
  62. package/dist/server/config.mjs +2 -2
  63. package/dist/server/data.d.mts +7 -5
  64. package/dist/server/data.d.ts +7 -5
  65. package/dist/server/data.js +2 -2
  66. package/dist/server/data.mjs +1 -1
  67. package/dist/server/{index-DbSfrRA0.d.ts → index-DCIz9Ptv.d.ts} +1 -1
  68. package/dist/server/{index-Dj7VKH34.d.mts → index-DFQwtj3J.d.mts} +1 -1
  69. package/dist/server/index.d.mts +4 -4
  70. package/dist/server/index.d.ts +4 -4
  71. package/dist/server/{loadContent-Czu7xTOU.d.mts → loadContent-CWuE8FCx.d.mts} +4 -4
  72. package/dist/server/{loadContent-BqQ-VPMW.d.ts → loadContent-DynBuR5f.d.ts} +4 -4
  73. package/dist/server/{loadPage-Dw57_n5N.d.mts → loadPage-B8RmlYgV.d.mts} +80 -28
  74. package/dist/server/{loadPage-BElEkA_J.d.ts → loadPage-BTkKpizX.d.ts} +80 -28
  75. package/dist/server/loadPage-DUHBXDEW.js +11 -0
  76. package/dist/server/{loadPage-E3ZC6NHB.js.map → loadPage-DUHBXDEW.js.map} +1 -1
  77. package/dist/server/{loadPage-E7L7NMR3.mjs → loadPage-LYVKY3WZ.mjs} +3 -3
  78. package/dist/server/metadata.d.mts +4 -4
  79. package/dist/server/metadata.d.ts +4 -4
  80. package/dist/server/navigation.d.mts +2 -2
  81. package/dist/server/navigation.d.ts +2 -2
  82. package/dist/server/rendering/server.d.mts +5 -5
  83. package/dist/server/rendering/server.d.ts +5 -5
  84. package/dist/server/rendering/server.js +4 -4
  85. package/dist/server/rendering/server.mjs +3 -3
  86. package/dist/server/rendering.d.mts +8 -8
  87. package/dist/server/rendering.d.ts +8 -8
  88. package/dist/server/rendering.js +6 -6
  89. package/dist/server/rendering.mjs +5 -5
  90. package/dist/server/routing.d.mts +79 -6
  91. package/dist/server/routing.d.ts +79 -6
  92. package/dist/server/routing.js +57 -3
  93. package/dist/server/routing.js.map +1 -1
  94. package/dist/server/routing.mjs +55 -1
  95. package/dist/server/routing.mjs.map +1 -1
  96. package/dist/server/server.d.mts +6 -6
  97. package/dist/server/server.d.ts +6 -6
  98. package/dist/server/server.js +3 -3
  99. package/dist/server/server.mjs +2 -2
  100. package/dist/server/theme-bridge.js +7 -7
  101. package/dist/server/theme-bridge.mjs +1 -1
  102. package/dist/server/{types-5XdVD2J1.d.ts → types-BiRZnxDx.d.ts} +17 -6
  103. package/dist/server/{types-CMqVHYLG.d.ts → types-CL916r6x.d.ts} +23 -1
  104. package/dist/server/{types-BuZJWVmj.d.mts → types-CbagRQ_7.d.mts} +15 -0
  105. package/dist/server/{types-BA-J9K8r.d.mts → types-CdrJqlKx.d.mts} +17 -6
  106. package/dist/server/{types-BC9eB2KH.d.mts → types-DkKEctWn.d.mts} +1 -1
  107. package/dist/server/{types-DSFvXKhO.d.ts → types-DuQCNVV0.d.ts} +15 -0
  108. package/dist/server/{types-CAnC529E.d.ts → types-oCM-fw4O.d.ts} +1 -1
  109. package/dist/server/{types-CYfHxUhe.d.mts → types-txWsSxN7.d.mts} +23 -1
  110. package/dist/server/{validation-C7W2Fe0i.d.ts → validation-CoU8uAiu.d.ts} +1 -1
  111. package/dist/server/{validation-hg1sqhrt.d.mts → validation-DzvDwwRo.d.mts} +1 -1
  112. package/package.json +1 -1
  113. package/dist/server/chunk-BOHTTHY5.mjs.map +0 -1
  114. package/dist/server/chunk-FPYK6527.js.map +0 -1
  115. package/dist/server/chunk-G4CKM4EN.js.map +0 -1
  116. package/dist/server/chunk-IT5ICP43.js.map +0 -1
  117. package/dist/server/chunk-M5KTLZTD.mjs.map +0 -1
  118. package/dist/server/chunk-NKXS4TBK.mjs.map +0 -1
  119. package/dist/server/chunk-P6CDRJN3.js.map +0 -1
  120. package/dist/server/chunk-VVFYHAUD.mjs.map +0 -1
  121. package/dist/server/chunk-ZIM53VP6.js.map +0 -1
  122. package/dist/server/loadPage-E3ZC6NHB.js +0 -11
  123. /package/dist/server/{chunk-XK2YIISA.mjs.map → chunk-SPXMMX3C.mjs.map} +0 -0
  124. /package/dist/server/{loadPage-E7L7NMR3.mjs.map → loadPage-LYVKY3WZ.mjs.map} +0 -0
@@ -1,12 +1,12 @@
1
- import { R as RiverbankClient, P as PageProps, T as Theme, a as ResolvedBlockData, b as RiverbankClientConfig } from './usePage-BcjWPXvh.mjs';
2
- export { d as Page, U as UsePageParams, c as UsePageResult, u as usePage } from './usePage-BcjWPXvh.mjs';
1
+ import { R as RiverbankClient, P as PageProps, T as Theme, a as ResolvedBlockData, b as RiverbankClientConfig } from './usePage-BC8Q2E3t.mjs';
2
+ export { d as Page, U as UsePageParams, c as UsePageResult, u as usePage } from './usePage-BC8Q2E3t.mjs';
3
3
  import '@riverbankcms/ai';
4
4
  import 'zod';
5
5
  import '@riverbankcms/media-storage-supabase';
6
6
  import '@riverbankcms/db';
7
7
  import 'react/jsx-runtime';
8
8
  import 'react';
9
- import './resolver-BhueZVxZ.mjs';
9
+ import './resolver-CYyfzTQ9.mjs';
10
10
 
11
11
  /**
12
12
  * Server-side helper to fetch content (page or entry) by path.
@@ -1,12 +1,12 @@
1
- import { R as RiverbankClient, P as PageProps, T as Theme, a as ResolvedBlockData, b as RiverbankClientConfig } from './usePage-CyYpOJud.js';
2
- export { d as Page, U as UsePageParams, c as UsePageResult, u as usePage } from './usePage-CyYpOJud.js';
1
+ import { R as RiverbankClient, P as PageProps, T as Theme, a as ResolvedBlockData, b as RiverbankClientConfig } from './usePage-DpRNZUtP.js';
2
+ export { d as Page, U as UsePageParams, c as UsePageResult, u as usePage } from './usePage-DpRNZUtP.js';
3
3
  import '@riverbankcms/ai';
4
4
  import 'zod';
5
5
  import '@riverbankcms/media-storage-supabase';
6
6
  import '@riverbankcms/db';
7
7
  import 'react/jsx-runtime';
8
8
  import 'react';
9
- import './resolver-BhueZVxZ.js';
9
+ import './resolver-CYyfzTQ9.js';
10
10
 
11
11
  /**
12
12
  * Server-side helper to fetch content (page or entry) by path.
@@ -7161,121 +7161,46 @@ var LinkNode = ({
7161
7161
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("a", { href, ...rest, children });
7162
7162
  };
7163
7163
 
7164
- // ../media-core/dist/chunk-JAKU4BKA.mjs
7165
- var DEFAULT_BASE_PATH = "/api/img";
7166
- var formatNumber = (value) => Number.isInteger(value) ? value.toString() : value.toFixed(6).replace(/0+$/, "").replace(/\.$/, "");
7167
- var addParam = (search, key, value) => {
7168
- if (value === void 0) return;
7169
- switch (key) {
7170
- case "fpX":
7171
- search.set("fp-x", formatNumber(value));
7172
- break;
7173
- case "fpY":
7174
- search.set("fp-y", formatNumber(value));
7175
- break;
7176
- case "rect": {
7177
- const rect = value;
7178
- if (!rect) break;
7179
- search.set("rect", rect.map(formatNumber).join(","));
7180
- break;
7181
- }
7182
- case "autoFormat":
7183
- if (value) {
7184
- search.append("auto", "format");
7185
- }
7186
- break;
7187
- case "invert":
7188
- search.set("invert", value ? "true" : "false");
7189
- break;
7190
- default:
7191
- search.set(
7192
- key,
7193
- typeof value === "number" ? formatNumber(value) : String(value)
7194
- );
7195
- }
7196
- };
7197
- var ORDER = [
7198
- "w",
7199
- "h",
7200
- "dpr",
7201
- "fit",
7202
- "crop",
7203
- "fpX",
7204
- "fpY",
7205
- "rect",
7206
- "q",
7207
- "fm",
7208
- "autoFormat",
7209
- "bg",
7210
- "flip",
7211
- "or",
7212
- "pad",
7213
- "blur",
7214
- "sharp",
7215
- "invert",
7216
- "sat",
7217
- "cs"
7218
- ];
7219
- var getImageUrl = (asset, params = {}, basePath = DEFAULT_BASE_PATH) => {
7220
- const trimmedBase = basePath.endsWith("/") ? basePath.slice(0, Math.max(basePath.length - 1, 0)) : basePath;
7221
- const path = `${trimmedBase}/${encodeURIComponent(asset.id)}`;
7222
- const searchParams = new URLSearchParams();
7223
- ORDER.forEach((key) => {
7224
- addParam(searchParams, key, params[key]);
7225
- });
7226
- const query = searchParams.toString();
7227
- return query ? `${path}?${query}` : path;
7228
- };
7229
-
7230
- // ../blocks/src/system/runtime/utils/api-url.ts
7231
- function resolveMultiEnvDashboardUrl() {
7232
- const env = process.env.RIVERBANK_ENV;
7233
- if (!env) return null;
7234
- const envKey = `RIVERBANK_${env.toUpperCase()}_DASHBOARD_URL`;
7235
- const dashboardUrl = process.env[envKey];
7236
- if (dashboardUrl) {
7237
- return dashboardUrl.replace(/\/$/, "");
7238
- }
7239
- return null;
7240
- }
7241
- function getCmsApiUrl() {
7242
- const multiEnvDashboard = resolveMultiEnvDashboardUrl();
7243
- if (multiEnvDashboard) {
7244
- return `${multiEnvDashboard}/api`;
7245
- }
7246
- const builderApiUrl = process.env.NEXT_PUBLIC_BUILDER_API_URL;
7247
- if (builderApiUrl) {
7248
- return builderApiUrl.replace(/\/$/, "");
7249
- }
7250
- const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;
7251
- if (dashboardUrl) {
7252
- const base = dashboardUrl.replace(/\/$/, "");
7253
- return `${base}/api`;
7254
- }
7255
- const legacyApiUrl = process.env.NEXT_PUBLIC_CMS_API_URL;
7256
- if (legacyApiUrl) {
7257
- return legacyApiUrl.replace(/\/$/, "");
7258
- }
7259
- throw new Error(
7260
- "Dashboard URL not configured. Either:\n 1. Set RIVERBANK_ENV with RIVERBANK_LOCAL_DASHBOARD_URL / RIVERBANK_REMOTE_DASHBOARD_URL\n 2. Set NEXT_PUBLIC_BUILDER_API_URL (SDK sites)\n 3. Set NEXT_PUBLIC_DASHBOARD_URL (frontend app)"
7261
- );
7164
+ // ../media-core/dist/chunk-ZBK775TB.mjs
7165
+ function getDirectImageUrl(supabaseUrl, storagePath, storageBucket = "media", options) {
7166
+ const baseUrl = supabaseUrl.replace(/\/$/, "");
7167
+ const encodedPath = storagePath.split("/").map((segment) => encodeURIComponent(segment)).join("/");
7168
+ const isSvg = storagePath.toLowerCase().endsWith(".svg");
7169
+ if (options && !isSvg && (options.width || options.height)) {
7170
+ const params = new URLSearchParams();
7171
+ if (options.width) params.set("width", String(options.width));
7172
+ if (options.height) params.set("height", String(options.height));
7173
+ if (options.quality) params.set("quality", String(options.quality));
7174
+ if (options.resize) params.set("resize", options.resize);
7175
+ return `${baseUrl}/storage/v1/render/image/public/${storageBucket}/${encodedPath}?${params.toString()}`;
7176
+ }
7177
+ return `${baseUrl}/storage/v1/object/public/${storageBucket}/${encodedPath}`;
7262
7178
  }
7263
7179
 
7264
7180
  // ../blocks/src/system/runtime/nodes/media.tsx
7265
7181
  var import_jsx_runtime9 = require("react/jsx-runtime");
7182
+ function getSupabaseUrl() {
7183
+ const url = process.env.NEXT_PUBLIC_SUPABASE_URL;
7184
+ if (!url) {
7185
+ throw new Error(
7186
+ "NEXT_PUBLIC_SUPABASE_URL is not configured. Set it to your Supabase project URL (e.g., https://xxx.supabase.co)"
7187
+ );
7188
+ }
7189
+ return url.replace(/\/$/, "");
7190
+ }
7266
7191
  var debugMediaNodeLog = (...args) => {
7267
7192
  if (typeof window !== "undefined" && window.__DEBUG_MEDIA_NODE__) {
7268
7193
  console.log("[MediaNode]", ...args);
7269
7194
  }
7270
7195
  };
7271
- var MediaNode = ({ value, className, style, previewKey }) => {
7196
+ var MediaNode = ({ value, className, style }) => {
7272
7197
  if (!value) return null;
7273
7198
  if (value.type === "video") {
7274
7199
  const src = value.src;
7275
7200
  if (!src) return null;
7276
7201
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("video", { className, style, src, autoPlay: true, muted: true, loop: true, playsInline: true, "aria-label": value.alt ?? "" });
7277
7202
  }
7278
- const imageUrl = resolveImageUrl(value, { previewKey });
7203
+ const imageUrl = resolveImageUrl(value);
7279
7204
  if (!imageUrl) {
7280
7205
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
7281
7206
  "div",
@@ -7286,56 +7211,36 @@ var MediaNode = ({ value, className, style, previewKey }) => {
7286
7211
  }
7287
7212
  );
7288
7213
  }
7289
- const isCrossOrigin = typeof window !== "undefined" && imageUrl.startsWith("http") && !imageUrl.startsWith(window.location.origin);
7290
- const isApiRoute = imageUrl.includes("/api/img") || imageUrl.includes("/api/public/img");
7291
- const crossOriginMode = isCrossOrigin && isApiRoute ? "use-credentials" : isCrossOrigin ? "anonymous" : void 0;
7214
+ const hotspotStyle = value.transform?.hotspot ? { objectPosition: `${value.transform.hotspot.x * 100}% ${value.transform.hotspot.y * 100}%` } : void 0;
7292
7215
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
7293
7216
  "img",
7294
7217
  {
7295
7218
  src: imageUrl,
7296
7219
  alt: value.alt ?? "",
7297
7220
  className,
7298
- style,
7299
- loading: "lazy",
7300
- crossOrigin: crossOriginMode
7221
+ style: mergeStyles(style, hotspotStyle),
7222
+ loading: "lazy"
7301
7223
  }
7302
7224
  );
7303
7225
  };
7304
- function resolveImageUrl(value, options = {}) {
7226
+ function resolveImageUrl(value) {
7305
7227
  if (value.type !== "image") return void 0;
7306
- const params = {};
7307
- const rect = value.transform?.rect;
7308
- const hotspot = value.transform?.hotspot;
7309
- if (rect && Array.isArray(rect) && rect.length === 4) {
7310
- params.rect = rect.join(",");
7311
- }
7312
- if (hotspot && typeof hotspot.x === "number" && typeof hotspot.y === "number") {
7313
- const x = clamp(hotspot.x);
7314
- const y = clamp(hotspot.y);
7315
- params.hotspot = `${x.toFixed(4)},${y.toFixed(4)}`;
7316
- }
7317
7228
  debugMediaNodeLog("resolveImageUrl input", {
7318
7229
  assetId: value.assetId,
7230
+ storagePath: value.storagePath,
7319
7231
  src: value.src,
7320
- type: value.type,
7321
- hasPreviewKey: !!options.previewKey
7232
+ type: value.type
7322
7233
  });
7323
- if (value.assetId) {
7324
- const cmsApiBase = getCmsApiUrl();
7325
- const basePath = `${cmsApiBase}/public/img`;
7326
- let resolved = getImageUrl({ id: value.assetId }, params, basePath);
7327
- if (options.previewKey) {
7328
- const separator = resolved.includes("?") ? "&" : "?";
7329
- resolved = `${resolved}${separator}preview_key=${encodeURIComponent(options.previewKey)}`;
7330
- }
7331
- debugMediaNodeLog("resolve:asset-id", {
7332
- assetId: value.assetId,
7333
- cmsApiBase,
7334
- basePath,
7335
- resolvedUrl: resolved,
7336
- hasPreviewKey: !!options.previewKey
7234
+ if (value.storagePath && value.storagePath.length > 0) {
7235
+ const supabaseUrl = getSupabaseUrl();
7236
+ const bucket = value.storageBucket ?? "media";
7237
+ const directUrl = getDirectImageUrl(supabaseUrl, value.storagePath, bucket);
7238
+ debugMediaNodeLog("resolve:direct-supabase", {
7239
+ storagePath: value.storagePath,
7240
+ bucket,
7241
+ directUrl
7337
7242
  });
7338
- return resolved;
7243
+ return directUrl;
7339
7244
  }
7340
7245
  if (typeof value.src === "string" && value.src.length > 0) {
7341
7246
  debugMediaNodeLog("resolve:explicit-src", { src: value.src });
@@ -7344,9 +7249,6 @@ function resolveImageUrl(value, options = {}) {
7344
7249
  debugMediaNodeLog("resolve:fallback-url", { fallbackUrl: value.url ?? null });
7345
7250
  return value.url ?? void 0;
7346
7251
  }
7347
- function clamp(v, min6 = 0, max6 = 1) {
7348
- return Math.min(Math.max(v, min6), max6);
7349
- }
7350
7252
 
7351
7253
  // ../blocks/src/system/runtime/nodes/form.server.tsx
7352
7254
  var import_jsx_runtime10 = require("react/jsx-runtime");
@@ -14889,8 +14791,6 @@ var MemoBlockSection = React5.memo(function MemoBlockSection2({
14889
14791
  return wrapBlock && block.id ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_jsx_runtime21.Fragment, { children: wrapBlock(block.id, rendered) }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_jsx_runtime21.Fragment, { children: rendered });
14890
14792
  }
14891
14793
  try {
14892
- const BlockComponent = OverrideComponent ?? getCachedBlockComponent(definition.manifest);
14893
- const pathBase = typeof block.id === "string" && block.id.length > 0 ? `blocks.${block.id}.` : void 0;
14894
14794
  const routes = routeMap ?? dataContext?.routes;
14895
14795
  const hydratedContent = routes ? hydrateManifestLinks(definition.manifest, data, routes) : data;
14896
14796
  const resolved = resolveBlockData({
@@ -14898,35 +14798,45 @@ var MemoBlockSection = React5.memo(function MemoBlockSection2({
14898
14798
  definition,
14899
14799
  dataContext
14900
14800
  });
14901
- const rootContext = {
14902
- $root: {
14903
- siteId: dataContext?.siteId ?? null,
14904
- pageId: dataContext?.pageId ?? null,
14905
- previewStage: dataContext?.previewStage ?? "published",
14906
- ...routes ? { routes } : {},
14907
- // Occurrence and content entry context for template pages
14908
- occurrenceContext: dataContext?.occurrenceContext ?? null,
14909
- contentEntry: dataContext?.contentEntry ?? null
14910
- }
14801
+ const baseProps = {
14802
+ content: hydratedContent,
14803
+ theme: themeTokens,
14804
+ themeConfig,
14805
+ data: resolved,
14806
+ blockId: block.id ?? null,
14807
+ blockKind: block.kind
14911
14808
  };
14912
- const blockBindings = block.bindings ?? void 0;
14913
- const fragmentRegistry2 = getFragmentRegistry();
14914
- const rendered = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
14915
- BlockComponent,
14916
- {
14917
- content: hydratedContent,
14918
- theme: themeTokens,
14919
- themeConfig,
14920
- registry,
14921
- pathBase,
14922
- data: resolved,
14923
- blockId: block.id ?? null,
14924
- blockKind: block.kind,
14925
- blockBindings,
14926
- viewModelOverrides: rootContext,
14927
- fragmentRegistry: fragmentRegistry2
14928
- }
14929
- );
14809
+ let rendered;
14810
+ if (OverrideComponent) {
14811
+ rendered = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(OverrideComponent, { ...baseProps });
14812
+ } else {
14813
+ const BlockComponent = getCachedBlockComponent(definition.manifest);
14814
+ const pathBase = typeof block.id === "string" && block.id.length > 0 ? `blocks.${block.id}.` : void 0;
14815
+ const rootContext = {
14816
+ $root: {
14817
+ siteId: dataContext?.siteId ?? null,
14818
+ pageId: dataContext?.pageId ?? null,
14819
+ previewStage: dataContext?.previewStage ?? "published",
14820
+ ...routes ? { routes } : {},
14821
+ // Occurrence and content entry context for template pages
14822
+ occurrenceContext: dataContext?.occurrenceContext ?? null,
14823
+ contentEntry: dataContext?.contentEntry ?? null
14824
+ }
14825
+ };
14826
+ const blockBindings = block.bindings ?? void 0;
14827
+ const fragmentRegistry2 = getFragmentRegistry();
14828
+ rendered = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
14829
+ BlockComponent,
14830
+ {
14831
+ ...baseProps,
14832
+ registry,
14833
+ pathBase,
14834
+ blockBindings,
14835
+ viewModelOverrides: rootContext,
14836
+ fragmentRegistry: fragmentRegistry2
14837
+ }
14838
+ );
14839
+ }
14930
14840
  if (wrapBlock && block.id) {
14931
14841
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_jsx_runtime21.Fragment, { children: wrapBlock(block.id, rendered) });
14932
14842
  }
@@ -16626,7 +16536,7 @@ var ENDPOINT_DEFINITIONS = {
16626
16536
  var API_ENDPOINTS = ENDPOINT_DEFINITIONS;
16627
16537
 
16628
16538
  // ../api/src/url.ts
16629
- function getCmsApiUrl2() {
16539
+ function getCmsApiUrl() {
16630
16540
  if (typeof window !== "undefined") {
16631
16541
  return "/api";
16632
16542
  }
@@ -16648,7 +16558,7 @@ function getCmsApiUrl2() {
16648
16558
  );
16649
16559
  }
16650
16560
  function resolveApiBaseUrl() {
16651
- return getCmsApiUrl2();
16561
+ return getCmsApiUrl();
16652
16562
  }
16653
16563
 
16654
16564
  // ../api/src/request.ts