@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, 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-BC8Q2E3t.mjs';
2
+ export { 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
  * 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-DpRNZUtP.js';
2
+ export { 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
  * 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,46 @@ 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
+ function getSupabaseUrl() {
387
+ const url = process.env.NEXT_PUBLIC_SUPABASE_URL;
388
+ if (!url) {
389
+ throw new Error(
390
+ "NEXT_PUBLIC_SUPABASE_URL is not configured. Set it to your Supabase project URL (e.g., https://xxx.supabase.co)"
391
+ );
392
+ }
393
+ return url.replace(/\/$/, "");
394
+ }
470
395
  var debugMediaNodeLog = (...args) => {
471
396
  if (typeof window !== "undefined" && window.__DEBUG_MEDIA_NODE__) {
472
397
  console.log("[MediaNode]", ...args);
473
398
  }
474
399
  };
475
- var MediaNode = ({ value, className, style, previewKey }) => {
400
+ var MediaNode = ({ value, className, style }) => {
476
401
  if (!value) return null;
477
402
  if (value.type === "video") {
478
403
  const src = value.src;
479
404
  if (!src) return null;
480
405
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("video", { className, style, src, autoPlay: true, muted: true, loop: true, playsInline: true, "aria-label": value.alt ?? "" });
481
406
  }
482
- const imageUrl = resolveImageUrl(value, { previewKey });
407
+ const imageUrl = resolveImageUrl(value);
483
408
  if (!imageUrl) {
484
409
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
485
410
  "div",
@@ -490,56 +415,36 @@ var MediaNode = ({ value, className, style, previewKey }) => {
490
415
  }
491
416
  );
492
417
  }
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;
418
+ const hotspotStyle = value.transform?.hotspot ? { objectPosition: `${value.transform.hotspot.x * 100}% ${value.transform.hotspot.y * 100}%` } : void 0;
496
419
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
497
420
  "img",
498
421
  {
499
422
  src: imageUrl,
500
423
  alt: value.alt ?? "",
501
424
  className,
502
- style,
503
- loading: "lazy",
504
- crossOrigin: crossOriginMode
425
+ style: mergeStyles(style, hotspotStyle),
426
+ loading: "lazy"
505
427
  }
506
428
  );
507
429
  };
508
- function resolveImageUrl(value, options = {}) {
430
+ function resolveImageUrl(value) {
509
431
  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
432
  debugMediaNodeLog("resolveImageUrl input", {
522
433
  assetId: value.assetId,
434
+ storagePath: value.storagePath,
523
435
  src: value.src,
524
- type: value.type,
525
- hasPreviewKey: !!options.previewKey
436
+ type: value.type
526
437
  });
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
438
+ if (value.storagePath && value.storagePath.length > 0) {
439
+ const supabaseUrl = getSupabaseUrl();
440
+ const bucket = value.storageBucket ?? "media";
441
+ const directUrl = getDirectImageUrl(supabaseUrl, value.storagePath, bucket);
442
+ debugMediaNodeLog("resolve:direct-supabase", {
443
+ storagePath: value.storagePath,
444
+ bucket,
445
+ directUrl
541
446
  });
542
- return resolved;
447
+ return directUrl;
543
448
  }
544
449
  if (typeof value.src === "string" && value.src.length > 0) {
545
450
  debugMediaNodeLog("resolve:explicit-src", { src: value.src });
@@ -548,9 +453,6 @@ function resolveImageUrl(value, options = {}) {
548
453
  debugMediaNodeLog("resolve:fallback-url", { fallbackUrl: value.url ?? null });
549
454
  return value.url ?? void 0;
550
455
  }
551
- function clamp(v2, min2 = 0, max2 = 1) {
552
- return Math.min(Math.max(v2, min2), max2);
553
- }
554
456
 
555
457
  // ../blocks/src/system/runtime/nodes/form.server.tsx
556
458
  var import_jsx_runtime10 = require("react/jsx-runtime");
@@ -1193,6 +1095,42 @@ var EventListingSSR = ({
1193
1095
 
1194
1096
  // ../blocks/src/system/runtime/hooks/useEventPagination.ts
1195
1097
  var import_react3 = require("react");
1098
+
1099
+ // ../blocks/src/system/runtime/utils/api-url.ts
1100
+ function resolveMultiEnvDashboardUrl() {
1101
+ const env = process.env.RIVERBANK_ENV;
1102
+ if (!env) return null;
1103
+ const envKey = `RIVERBANK_${env.toUpperCase()}_DASHBOARD_URL`;
1104
+ const dashboardUrl = process.env[envKey];
1105
+ if (dashboardUrl) {
1106
+ return dashboardUrl.replace(/\/$/, "");
1107
+ }
1108
+ return null;
1109
+ }
1110
+ function getCmsApiUrl() {
1111
+ const multiEnvDashboard = resolveMultiEnvDashboardUrl();
1112
+ if (multiEnvDashboard) {
1113
+ return `${multiEnvDashboard}/api`;
1114
+ }
1115
+ const builderApiUrl = process.env.NEXT_PUBLIC_BUILDER_API_URL;
1116
+ if (builderApiUrl) {
1117
+ return builderApiUrl.replace(/\/$/, "");
1118
+ }
1119
+ const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;
1120
+ if (dashboardUrl) {
1121
+ const base = dashboardUrl.replace(/\/$/, "");
1122
+ return `${base}/api`;
1123
+ }
1124
+ const legacyApiUrl = process.env.NEXT_PUBLIC_CMS_API_URL;
1125
+ if (legacyApiUrl) {
1126
+ return legacyApiUrl.replace(/\/$/, "");
1127
+ }
1128
+ throw new Error(
1129
+ "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)"
1130
+ );
1131
+ }
1132
+
1133
+ // ../blocks/src/system/runtime/hooks/useEventPagination.ts
1196
1134
  function useEventPagination({
1197
1135
  siteId,
1198
1136
  initialEvents = [],
@@ -9798,7 +9736,7 @@ var oppositeAlignmentMap = {
9798
9736
  start: "end",
9799
9737
  end: "start"
9800
9738
  };
9801
- function clamp2(start, value, end) {
9739
+ function clamp(start, value, end) {
9802
9740
  return max(start, min(value, end));
9803
9741
  }
9804
9742
  function evaluate(value, param) {
@@ -10151,7 +10089,7 @@ var arrow = (options) => ({
10151
10089
  const min$1 = minPadding;
10152
10090
  const max2 = clientSize - arrowDimensions[length] - maxPadding;
10153
10091
  const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
10154
- const offset4 = clamp2(min$1, center, max2);
10092
+ const offset4 = clamp(min$1, center, max2);
10155
10093
  const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
10156
10094
  const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max2 : 0;
10157
10095
  return {
@@ -10448,14 +10386,14 @@ var shift = function(options) {
10448
10386
  const maxSide = mainAxis === "y" ? "bottom" : "right";
10449
10387
  const min2 = mainAxisCoord + overflow[minSide];
10450
10388
  const max2 = mainAxisCoord - overflow[maxSide];
10451
- mainAxisCoord = clamp2(min2, mainAxisCoord, max2);
10389
+ mainAxisCoord = clamp(min2, mainAxisCoord, max2);
10452
10390
  }
10453
10391
  if (checkCrossAxis) {
10454
10392
  const minSide = crossAxis === "y" ? "top" : "left";
10455
10393
  const maxSide = crossAxis === "y" ? "bottom" : "right";
10456
10394
  const min2 = crossAxisCoord + overflow[minSide];
10457
10395
  const max2 = crossAxisCoord - overflow[maxSide];
10458
- crossAxisCoord = clamp2(min2, crossAxisCoord, max2);
10396
+ crossAxisCoord = clamp(min2, crossAxisCoord, max2);
10459
10397
  }
10460
10398
  const limitedCoords = limiter.fn({
10461
10399
  ...state,