@riverbankcms/sdk 0.4.1 → 0.4.3

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 (116) 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 +90 -170
  7. package/dist/client/client.js.map +1 -1
  8. package/dist/client/client.mjs +90 -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 +84 -142
  15. package/dist/client/rendering/client.js.map +1 -1
  16. package/dist/client/rendering/client.mjs +84 -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--fGlyrgj.d.mts +6439 -0
  21. package/dist/client/usePage-BC8Q2E3t.d.mts +6431 -0
  22. package/dist/client/usePage-CE7X5NcN.d.ts +6439 -0
  23. package/dist/client/usePage-CHEybPMD.d.ts +6429 -0
  24. package/dist/client/usePage-D4fxZbRR.d.mts +6429 -0
  25. package/dist/client/usePage-DpRNZUtP.d.ts +6431 -0
  26. package/dist/server/{Layout-CHG77dhK.d.ts → Layout-CXI_VkhN.d.ts} +1 -1
  27. package/dist/server/{Layout-B_zUr9ci.d.mts → Layout-p6f3TLw9.d.mts} +1 -1
  28. package/dist/server/{chunk-XK2YIISA.mjs → chunk-24F6FTCI.mjs} +2 -2
  29. package/dist/server/{chunk-BUCJWG6G.js → chunk-2SSEBAHC.js} +5 -5
  30. package/dist/server/{chunk-BUCJWG6G.js.map → chunk-2SSEBAHC.js.map} +1 -1
  31. package/dist/server/{chunk-ZIM53VP6.js → chunk-6JBKKV3G.js} +27 -4
  32. package/dist/server/chunk-6JBKKV3G.js.map +1 -0
  33. package/dist/server/{chunk-ZEAJW6T3.mjs → chunk-ES6QDZUX.mjs} +3 -2
  34. package/dist/server/chunk-ES6QDZUX.mjs.map +1 -0
  35. package/dist/server/{chunk-SWPHIUVE.js → chunk-G35R7N7B.js} +3 -2
  36. package/dist/server/chunk-G35R7N7B.js.map +1 -0
  37. package/dist/server/{chunk-BOHTTHY5.mjs → chunk-I6K5REFT.mjs} +27 -4
  38. package/dist/server/chunk-I6K5REFT.mjs.map +1 -0
  39. package/dist/server/{chunk-SFQ7VF3G.mjs → chunk-LCYGQDAB.mjs} +10 -6
  40. package/dist/server/chunk-LCYGQDAB.mjs.map +1 -0
  41. package/dist/server/{chunk-P6CDRJN3.js → chunk-TNYU5EIO.js} +16 -12
  42. package/dist/server/chunk-TNYU5EIO.js.map +1 -0
  43. package/dist/server/{chunk-NKXS4TBK.mjs → chunk-U2NI3TS3.mjs} +87 -169
  44. package/dist/server/chunk-U2NI3TS3.mjs.map +1 -0
  45. package/dist/server/{chunk-IT5ICP43.js → chunk-VHDDXCK6.js} +94 -176
  46. package/dist/server/chunk-VHDDXCK6.js.map +1 -0
  47. package/dist/server/{components-Bo3LPpVb.d.mts → components-C75e4poV.d.mts} +20 -12
  48. package/dist/server/{components-ClFs4PUa.d.ts → components-Dhiemsjd.d.ts} +20 -12
  49. package/dist/server/components.d.mts +5 -5
  50. package/dist/server/components.d.ts +5 -5
  51. package/dist/server/components.js +3 -3
  52. package/dist/server/components.mjs +2 -2
  53. package/dist/server/config-validation.d.mts +2 -2
  54. package/dist/server/config-validation.d.ts +2 -2
  55. package/dist/server/config-validation.js +3 -3
  56. package/dist/server/config-validation.mjs +2 -2
  57. package/dist/server/config.d.mts +3 -3
  58. package/dist/server/config.d.ts +3 -3
  59. package/dist/server/config.js +3 -3
  60. package/dist/server/config.mjs +2 -2
  61. package/dist/server/data.d.mts +2 -2
  62. package/dist/server/data.d.ts +2 -2
  63. package/dist/server/{index-Dj7VKH34.d.mts → index-C6o9LPvq.d.mts} +1 -1
  64. package/dist/server/{index-DbSfrRA0.d.ts → index-CAwBj3-A.d.ts} +1 -1
  65. package/dist/server/index.d.mts +4 -4
  66. package/dist/server/index.d.ts +4 -4
  67. package/dist/server/{loadContent-C_FipaAC.d.mts → loadContent-CdXfuCuE.d.mts} +3 -3
  68. package/dist/server/{loadContent-C2SwqmXy.d.ts → loadContent-CsvQRoxb.d.ts} +3 -3
  69. package/dist/server/{loadPage-naVvoua8.d.ts → loadPage-BA0HiT-6.d.ts} +72 -28
  70. package/dist/server/{loadPage-DUHBXDEW.js → loadPage-DLC7DJZP.js} +3 -3
  71. package/dist/server/{loadPage-DUHBXDEW.js.map → loadPage-DLC7DJZP.js.map} +1 -1
  72. package/dist/server/{loadPage-LYVKY3WZ.mjs → loadPage-GEGN4UAL.mjs} +2 -2
  73. package/dist/server/{loadPage-mavT3Jae.d.mts → loadPage-p3AWwwrd.d.mts} +72 -28
  74. package/dist/server/metadata.d.mts +3 -3
  75. package/dist/server/metadata.d.ts +3 -3
  76. package/dist/server/navigation.d.mts +2 -2
  77. package/dist/server/navigation.d.ts +2 -2
  78. package/dist/server/rendering/server.d.mts +4 -4
  79. package/dist/server/rendering/server.d.ts +4 -4
  80. package/dist/server/rendering/server.js +4 -4
  81. package/dist/server/rendering/server.mjs +3 -3
  82. package/dist/server/rendering.d.mts +7 -7
  83. package/dist/server/rendering.d.ts +7 -7
  84. package/dist/server/rendering.js +5 -5
  85. package/dist/server/rendering.mjs +4 -4
  86. package/dist/server/routing.d.mts +78 -5
  87. package/dist/server/routing.d.ts +78 -5
  88. package/dist/server/routing.js +57 -3
  89. package/dist/server/routing.js.map +1 -1
  90. package/dist/server/routing.mjs +55 -1
  91. package/dist/server/routing.mjs.map +1 -1
  92. package/dist/server/server.d.mts +5 -5
  93. package/dist/server/server.d.ts +5 -5
  94. package/dist/server/server.js +2 -2
  95. package/dist/server/server.mjs +1 -1
  96. package/dist/server/theme-bridge.js +7 -7
  97. package/dist/server/theme-bridge.mjs +1 -1
  98. package/dist/server/{types-BA-J9K8r.d.mts → types-BLf-hE50.d.mts} +19 -6
  99. package/dist/server/{types-5XdVD2J1.d.ts → types-BWQ-TohG.d.ts} +19 -6
  100. package/dist/server/{types-CMqVHYLG.d.ts → types-CL916r6x.d.ts} +23 -1
  101. package/dist/server/{types-BC9eB2KH.d.mts → types-CdhKJrB0.d.mts} +1 -1
  102. package/dist/server/{types-CAnC529E.d.ts → types-Dj8B3QRb.d.ts} +1 -1
  103. package/dist/server/{types-CYfHxUhe.d.mts → types-txWsSxN7.d.mts} +23 -1
  104. package/dist/server/{validation-C7W2Fe0i.d.ts → validation-CoU8uAiu.d.ts} +1 -1
  105. package/dist/server/{validation-hg1sqhrt.d.mts → validation-DzvDwwRo.d.mts} +1 -1
  106. package/package.json +3 -3
  107. package/dist/server/chunk-BOHTTHY5.mjs.map +0 -1
  108. package/dist/server/chunk-IT5ICP43.js.map +0 -1
  109. package/dist/server/chunk-NKXS4TBK.mjs.map +0 -1
  110. package/dist/server/chunk-P6CDRJN3.js.map +0 -1
  111. package/dist/server/chunk-SFQ7VF3G.mjs.map +0 -1
  112. package/dist/server/chunk-SWPHIUVE.js.map +0 -1
  113. package/dist/server/chunk-ZEAJW6T3.mjs.map +0 -1
  114. package/dist/server/chunk-ZIM53VP6.js.map +0 -1
  115. /package/dist/server/{chunk-XK2YIISA.mjs.map → chunk-24F6FTCI.mjs.map} +0 -0
  116. /package/dist/server/{loadPage-LYVKY3WZ.mjs.map → loadPage-GEGN4UAL.mjs.map} +0 -0
@@ -1,12 +1,12 @@
1
- import { R as RiverbankClient, S as SiteResponse, e as PageResponse, L as ListPublishedEntriesResponse, f as PublishedContentEntryPreviewResponse } from './usePage-BcjWPXvh.mjs';
2
- export { U as UsePageParams, c as UsePageResult, u as usePage } from './usePage-BcjWPXvh.mjs';
1
+ import { R as RiverbankClient, S as SiteResponse, e as PageResponse, L as ListPublishedEntriesResponse, f as PublishedContentEntryPreviewResponse } from './usePage--fGlyrgj.mjs';
2
+ export { U as UsePageParams, c as UsePageResult, u as usePage } from './usePage--fGlyrgj.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
  * Hook to fetch site data (Server Component compatible)
@@ -1,12 +1,12 @@
1
- import { R as RiverbankClient, S as SiteResponse, e as PageResponse, L as ListPublishedEntriesResponse, f as PublishedContentEntryPreviewResponse } from './usePage-CyYpOJud.js';
2
- export { U as UsePageParams, c as UsePageResult, u as usePage } from './usePage-CyYpOJud.js';
1
+ import { R as RiverbankClient, S as SiteResponse, e as PageResponse, L as ListPublishedEntriesResponse, f as PublishedContentEntryPreviewResponse } from './usePage-CE7X5NcN.js';
2
+ export { U as UsePageParams, c as UsePageResult, u as usePage } from './usePage-CE7X5NcN.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
  * Hook to fetch site data (Server Component compatible)
@@ -1,4 +1,4 @@
1
- import { C as ComponentRegistry } from '../resolver-BhueZVxZ.mjs';
1
+ import { C as ComponentRegistry } from '../resolver-CYyfzTQ9.mjs';
2
2
  import 'react';
3
3
  import 'zod';
4
4
 
@@ -1,4 +1,4 @@
1
- import { C as ComponentRegistry } from '../resolver-BhueZVxZ.js';
1
+ import { C as ComponentRegistry } from '../resolver-CYyfzTQ9.js';
2
2
  import 'react';
3
3
  import 'zod';
4
4
 
@@ -365,121 +365,50 @@ var LinkNode = ({
365
365
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("a", { href, ...rest, children });
366
366
  };
367
367
 
368
- // ../media-core/dist/chunk-JAKU4BKA.mjs
369
- var DEFAULT_BASE_PATH = "/api/img";
370
- var formatNumber = (value) => Number.isInteger(value) ? value.toString() : value.toFixed(6).replace(/0+$/, "").replace(/\.$/, "");
371
- var addParam = (search, key, value) => {
372
- if (value === void 0) return;
373
- switch (key) {
374
- case "fpX":
375
- search.set("fp-x", formatNumber(value));
376
- break;
377
- case "fpY":
378
- search.set("fp-y", formatNumber(value));
379
- break;
380
- case "rect": {
381
- const rect = value;
382
- if (!rect) break;
383
- search.set("rect", rect.map(formatNumber).join(","));
384
- break;
385
- }
386
- case "autoFormat":
387
- if (value) {
388
- search.append("auto", "format");
389
- }
390
- break;
391
- case "invert":
392
- search.set("invert", value ? "true" : "false");
393
- break;
394
- default:
395
- search.set(
396
- key,
397
- typeof value === "number" ? formatNumber(value) : String(value)
398
- );
399
- }
400
- };
401
- var ORDER = [
402
- "w",
403
- "h",
404
- "dpr",
405
- "fit",
406
- "crop",
407
- "fpX",
408
- "fpY",
409
- "rect",
410
- "q",
411
- "fm",
412
- "autoFormat",
413
- "bg",
414
- "flip",
415
- "or",
416
- "pad",
417
- "blur",
418
- "sharp",
419
- "invert",
420
- "sat",
421
- "cs"
422
- ];
423
- var getImageUrl = (asset, params = {}, basePath = DEFAULT_BASE_PATH) => {
424
- const trimmedBase = basePath.endsWith("/") ? basePath.slice(0, Math.max(basePath.length - 1, 0)) : basePath;
425
- const path = `${trimmedBase}/${encodeURIComponent(asset.id)}`;
426
- const searchParams = new URLSearchParams();
427
- ORDER.forEach((key) => {
428
- addParam(searchParams, key, params[key]);
429
- });
430
- const query = searchParams.toString();
431
- return query ? `${path}?${query}` : path;
432
- };
433
-
434
- // ../blocks/src/system/runtime/utils/api-url.ts
435
- function resolveMultiEnvDashboardUrl() {
436
- const env = process.env.RIVERBANK_ENV;
437
- if (!env) return null;
438
- const envKey = `RIVERBANK_${env.toUpperCase()}_DASHBOARD_URL`;
439
- const dashboardUrl = process.env[envKey];
440
- if (dashboardUrl) {
441
- return dashboardUrl.replace(/\/$/, "");
442
- }
443
- return null;
444
- }
445
- function getCmsApiUrl() {
446
- const multiEnvDashboard = resolveMultiEnvDashboardUrl();
447
- if (multiEnvDashboard) {
448
- return `${multiEnvDashboard}/api`;
449
- }
450
- const builderApiUrl = process.env.NEXT_PUBLIC_BUILDER_API_URL;
451
- if (builderApiUrl) {
452
- return builderApiUrl.replace(/\/$/, "");
453
- }
454
- const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;
455
- if (dashboardUrl) {
456
- const base = dashboardUrl.replace(/\/$/, "");
457
- return `${base}/api`;
458
- }
459
- const legacyApiUrl = process.env.NEXT_PUBLIC_CMS_API_URL;
460
- if (legacyApiUrl) {
461
- return legacyApiUrl.replace(/\/$/, "");
462
- }
463
- throw new Error(
464
- "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)"
465
- );
368
+ // ../media-core/dist/chunk-ZBK775TB.mjs
369
+ function getDirectImageUrl(supabaseUrl, storagePath, storageBucket = "media", options) {
370
+ const baseUrl = supabaseUrl.replace(/\/$/, "");
371
+ const encodedPath = storagePath.split("/").map((segment) => encodeURIComponent(segment)).join("/");
372
+ const isSvg = storagePath.toLowerCase().endsWith(".svg");
373
+ if (options && !isSvg && (options.width || options.height)) {
374
+ const params = new URLSearchParams();
375
+ if (options.width) params.set("width", String(options.width));
376
+ if (options.height) params.set("height", String(options.height));
377
+ if (options.quality) params.set("quality", String(options.quality));
378
+ if (options.resize) params.set("resize", options.resize);
379
+ return `${baseUrl}/storage/v1/render/image/public/${storageBucket}/${encodedPath}?${params.toString()}`;
380
+ }
381
+ return `${baseUrl}/storage/v1/object/public/${storageBucket}/${encodedPath}`;
466
382
  }
467
383
 
468
384
  // ../blocks/src/system/runtime/nodes/media.tsx
469
385
  var import_jsx_runtime9 = require("react/jsx-runtime");
386
+ var _contextSupabaseUrl;
387
+ function getSupabaseUrl() {
388
+ if (_contextSupabaseUrl) {
389
+ return _contextSupabaseUrl;
390
+ }
391
+ const url = process.env.NEXT_PUBLIC_SUPABASE_URL;
392
+ if (!url) {
393
+ throw new Error(
394
+ "NEXT_PUBLIC_SUPABASE_URL is not configured. Set it to your Supabase project URL (e.g., https://xxx.supabase.co)"
395
+ );
396
+ }
397
+ return url.replace(/\/$/, "");
398
+ }
470
399
  var debugMediaNodeLog = (...args) => {
471
400
  if (typeof window !== "undefined" && window.__DEBUG_MEDIA_NODE__) {
472
401
  console.log("[MediaNode]", ...args);
473
402
  }
474
403
  };
475
- var MediaNode = ({ value, className, style, previewKey }) => {
404
+ var MediaNode = ({ value, className, style }) => {
476
405
  if (!value) return null;
477
406
  if (value.type === "video") {
478
407
  const src = value.src;
479
408
  if (!src) return null;
480
409
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("video", { className, style, src, autoPlay: true, muted: true, loop: true, playsInline: true, "aria-label": value.alt ?? "" });
481
410
  }
482
- const imageUrl = resolveImageUrl(value, { previewKey });
411
+ const imageUrl = resolveImageUrl(value);
483
412
  if (!imageUrl) {
484
413
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
485
414
  "div",
@@ -490,56 +419,36 @@ var MediaNode = ({ value, className, style, previewKey }) => {
490
419
  }
491
420
  );
492
421
  }
493
- const isCrossOrigin = typeof window !== "undefined" && imageUrl.startsWith("http") && !imageUrl.startsWith(window.location.origin);
494
- const isApiRoute = imageUrl.includes("/api/img") || imageUrl.includes("/api/public/img");
495
- const crossOriginMode = isCrossOrigin && isApiRoute ? "use-credentials" : isCrossOrigin ? "anonymous" : void 0;
422
+ const hotspotStyle = value.transform?.hotspot ? { objectPosition: `${value.transform.hotspot.x * 100}% ${value.transform.hotspot.y * 100}%` } : void 0;
496
423
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
497
424
  "img",
498
425
  {
499
426
  src: imageUrl,
500
427
  alt: value.alt ?? "",
501
428
  className,
502
- style,
503
- loading: "lazy",
504
- crossOrigin: crossOriginMode
429
+ style: mergeStyles(style, hotspotStyle),
430
+ loading: "lazy"
505
431
  }
506
432
  );
507
433
  };
508
- function resolveImageUrl(value, options = {}) {
434
+ function resolveImageUrl(value) {
509
435
  if (value.type !== "image") return void 0;
510
- const params = {};
511
- const rect = value.transform?.rect;
512
- const hotspot = value.transform?.hotspot;
513
- if (rect && Array.isArray(rect) && rect.length === 4) {
514
- params.rect = rect.join(",");
515
- }
516
- if (hotspot && typeof hotspot.x === "number" && typeof hotspot.y === "number") {
517
- const x2 = clamp(hotspot.x);
518
- const y2 = clamp(hotspot.y);
519
- params.hotspot = `${x2.toFixed(4)},${y2.toFixed(4)}`;
520
- }
521
436
  debugMediaNodeLog("resolveImageUrl input", {
522
437
  assetId: value.assetId,
438
+ storagePath: value.storagePath,
523
439
  src: value.src,
524
- type: value.type,
525
- hasPreviewKey: !!options.previewKey
440
+ type: value.type
526
441
  });
527
- if (value.assetId) {
528
- const cmsApiBase = getCmsApiUrl();
529
- const basePath = `${cmsApiBase}/public/img`;
530
- let resolved = getImageUrl({ id: value.assetId }, params, basePath);
531
- if (options.previewKey) {
532
- const separator = resolved.includes("?") ? "&" : "?";
533
- resolved = `${resolved}${separator}preview_key=${encodeURIComponent(options.previewKey)}`;
534
- }
535
- debugMediaNodeLog("resolve:asset-id", {
536
- assetId: value.assetId,
537
- cmsApiBase,
538
- basePath,
539
- resolvedUrl: resolved,
540
- hasPreviewKey: !!options.previewKey
442
+ if (value.storagePath && value.storagePath.length > 0) {
443
+ const supabaseUrl = getSupabaseUrl();
444
+ const bucket = value.storageBucket ?? "media";
445
+ const directUrl = getDirectImageUrl(supabaseUrl, value.storagePath, bucket);
446
+ debugMediaNodeLog("resolve:direct-supabase", {
447
+ storagePath: value.storagePath,
448
+ bucket,
449
+ directUrl
541
450
  });
542
- return resolved;
451
+ return directUrl;
543
452
  }
544
453
  if (typeof value.src === "string" && value.src.length > 0) {
545
454
  debugMediaNodeLog("resolve:explicit-src", { src: value.src });
@@ -548,9 +457,6 @@ function resolveImageUrl(value, options = {}) {
548
457
  debugMediaNodeLog("resolve:fallback-url", { fallbackUrl: value.url ?? null });
549
458
  return value.url ?? void 0;
550
459
  }
551
- function clamp(v2, min2 = 0, max2 = 1) {
552
- return Math.min(Math.max(v2, min2), max2);
553
- }
554
460
 
555
461
  // ../blocks/src/system/runtime/nodes/form.server.tsx
556
462
  var import_jsx_runtime10 = require("react/jsx-runtime");
@@ -1193,6 +1099,42 @@ var EventListingSSR = ({
1193
1099
 
1194
1100
  // ../blocks/src/system/runtime/hooks/useEventPagination.ts
1195
1101
  var import_react3 = require("react");
1102
+
1103
+ // ../blocks/src/system/runtime/utils/api-url.ts
1104
+ function resolveMultiEnvDashboardUrl() {
1105
+ const env = process.env.RIVERBANK_ENV;
1106
+ if (!env) return null;
1107
+ const envKey = `RIVERBANK_${env.toUpperCase()}_DASHBOARD_URL`;
1108
+ const dashboardUrl = process.env[envKey];
1109
+ if (dashboardUrl) {
1110
+ return dashboardUrl.replace(/\/$/, "");
1111
+ }
1112
+ return null;
1113
+ }
1114
+ function getCmsApiUrl() {
1115
+ const multiEnvDashboard = resolveMultiEnvDashboardUrl();
1116
+ if (multiEnvDashboard) {
1117
+ return `${multiEnvDashboard}/api`;
1118
+ }
1119
+ const builderApiUrl = process.env.NEXT_PUBLIC_BUILDER_API_URL;
1120
+ if (builderApiUrl) {
1121
+ return builderApiUrl.replace(/\/$/, "");
1122
+ }
1123
+ const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;
1124
+ if (dashboardUrl) {
1125
+ const base = dashboardUrl.replace(/\/$/, "");
1126
+ return `${base}/api`;
1127
+ }
1128
+ const legacyApiUrl = process.env.NEXT_PUBLIC_CMS_API_URL;
1129
+ if (legacyApiUrl) {
1130
+ return legacyApiUrl.replace(/\/$/, "");
1131
+ }
1132
+ throw new Error(
1133
+ "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)"
1134
+ );
1135
+ }
1136
+
1137
+ // ../blocks/src/system/runtime/hooks/useEventPagination.ts
1196
1138
  function useEventPagination({
1197
1139
  siteId,
1198
1140
  initialEvents = [],
@@ -9798,7 +9740,7 @@ var oppositeAlignmentMap = {
9798
9740
  start: "end",
9799
9741
  end: "start"
9800
9742
  };
9801
- function clamp2(start, value, end) {
9743
+ function clamp(start, value, end) {
9802
9744
  return max(start, min(value, end));
9803
9745
  }
9804
9746
  function evaluate(value, param) {
@@ -10151,7 +10093,7 @@ var arrow = (options) => ({
10151
10093
  const min$1 = minPadding;
10152
10094
  const max2 = clientSize - arrowDimensions[length] - maxPadding;
10153
10095
  const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
10154
- const offset4 = clamp2(min$1, center, max2);
10096
+ const offset4 = clamp(min$1, center, max2);
10155
10097
  const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
10156
10098
  const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max2 : 0;
10157
10099
  return {
@@ -10448,14 +10390,14 @@ var shift = function(options) {
10448
10390
  const maxSide = mainAxis === "y" ? "bottom" : "right";
10449
10391
  const min2 = mainAxisCoord + overflow[minSide];
10450
10392
  const max2 = mainAxisCoord - overflow[maxSide];
10451
- mainAxisCoord = clamp2(min2, mainAxisCoord, max2);
10393
+ mainAxisCoord = clamp(min2, mainAxisCoord, max2);
10452
10394
  }
10453
10395
  if (checkCrossAxis) {
10454
10396
  const minSide = crossAxis === "y" ? "top" : "left";
10455
10397
  const maxSide = crossAxis === "y" ? "bottom" : "right";
10456
10398
  const min2 = crossAxisCoord + overflow[minSide];
10457
10399
  const max2 = crossAxisCoord - overflow[maxSide];
10458
- crossAxisCoord = clamp2(min2, crossAxisCoord, max2);
10400
+ crossAxisCoord = clamp(min2, crossAxisCoord, max2);
10459
10401
  }
10460
10402
  const limitedCoords = limiter.fn({
10461
10403
  ...state,