@riverbankcms/sdk 0.93.0 → 0.95.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 (99) hide show
  1. package/README.md +3 -0
  2. package/dist/{PreviewEditorSidebar-D3PAF7NW.mjs → PreviewEditorSidebar-6FQYKOSB.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-G5JVJEIJ.mjs → PreviewEditorUI-NPO2XMFB.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-PBEFH5AL.mjs +8 -0
  5. package/dist/_dts/api/src/bookingOperations.d.ts +7 -0
  6. package/dist/_dts/api/src/bookingRecords.d.ts +3 -0
  7. package/dist/_dts/api/src/cache-tags.d.ts +4 -0
  8. package/dist/_dts/api/src/contentRuntime.d.ts +14 -0
  9. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  10. package/dist/_dts/api/src/event-presentation.d.ts +15 -0
  11. package/dist/_dts/api/src/index.d.ts +1 -1
  12. package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
  13. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +17 -4
  14. package/dist/_dts/api/src/shared-contracts.d.ts +19 -9
  15. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
  16. package/dist/_dts/blocks/src/portal/types.d.ts +7 -0
  17. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  18. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +21 -6
  19. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +5 -3
  20. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +5 -1
  21. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +2 -2
  22. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +9 -6
  23. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/ticketSelectionLines.d.ts +36 -0
  24. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +7 -1
  25. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +2 -2
  26. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -3
  27. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +19 -4
  28. package/dist/_dts/content-model/src/entry-slots/types.d.ts +6 -0
  29. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +163 -2
  30. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +7 -0
  31. package/dist/_dts/media-core/src/mediaUsageProjection.d.ts +29 -1
  32. package/dist/_dts/sdk/src/client/types.d.ts +7 -2
  33. package/dist/_dts/sdk/src/next/middleware.d.ts +1 -0
  34. package/dist/_dts/sdk/src/next/redirect-destination.d.ts +3 -0
  35. package/dist/_dts/sdk/src/next/route-outcome-proxy.d.ts +22 -0
  36. package/dist/_dts/sdk/src/public-api/contracts.d.ts +20 -1
  37. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  38. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +9 -1
  39. package/dist/_dts/sdk/src/version.d.ts +1 -1
  40. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  41. package/dist/{chunk-XIK2HYI3.mjs → chunk-4A6NWO3X.mjs} +7 -7
  42. package/dist/{chunk-NT76QGIJ.mjs → chunk-7ED5UNHL.mjs} +14 -0
  43. package/dist/{chunk-AQ6RT6LZ.mjs → chunk-K2SJTZMX.mjs} +2 -2
  44. package/dist/{chunk-A63UXN3P.mjs → chunk-PJPFTVZG.mjs} +2 -2
  45. package/dist/{chunk-AJZGT6YG.mjs → chunk-VTPPVAOL.mjs} +1 -1
  46. package/dist/{chunk-PCNCETBI.mjs → chunk-VZBSD4AJ.mjs} +449 -183
  47. package/dist/cli/index.mjs +176 -73
  48. package/dist/client/{accordion-RNQIPG55.mjs → accordion-LGO4IO5U.mjs} +1 -1
  49. package/dist/client/{bookingForm-HYEEVRLP.mjs → bookingForm-MWLS4LGU.mjs} +3 -3
  50. package/dist/client/bookings.mjs +211 -105
  51. package/dist/client/{carousel-W7DQ3YPU.mjs → carousel-6AHNP5HA.mjs} +1 -1
  52. package/dist/client/{cart-PXJ3SXXO.mjs → cart-CIXGYAZB.mjs} +4 -4
  53. package/dist/client/{checkout-X3JYSOXI.mjs → checkout-OTX6O3DN.mjs} +4 -4
  54. package/dist/client/{chunk-Q47XGAGS.mjs → chunk-AVBQSUIS.mjs} +1 -1
  55. package/dist/client/{chunk-WERRJXNJ.mjs → chunk-HOP7MKAZ.mjs} +1 -1
  56. package/dist/client/{chunk-IXDSXF2D.mjs → chunk-INRIT6DP.mjs} +353 -187
  57. package/dist/client/{chunk-DUOHLWLF.mjs → chunk-MYCXAKWP.mjs} +2 -2
  58. package/dist/client/{chunk-J6TMMMXW.mjs → chunk-R3NQTBWE.mjs} +1 -1
  59. package/dist/client/{chunk-YYVGSYBO.mjs → chunk-TREIML53.mjs} +3 -3
  60. package/dist/client/{chunk-6SYGVVWA.mjs → chunk-V67AT7ZW.mjs} +3 -0
  61. package/dist/client/{chunk-PICR3NTQ.mjs → chunk-Y2PMKCXO.mjs} +1 -1
  62. package/dist/client/client.mjs +503 -183
  63. package/dist/client/{courseRegistration-QZ67PVHO.mjs → courseRegistration-2LU6C3JL.mjs} +3 -3
  64. package/dist/client/{eventCalendar-V3BDHQNT.mjs → eventCalendar-OKUSISBZ.mjs} +6 -6
  65. package/dist/client/{eventCombined-XYFRN2RG.mjs → eventCombined-CMF6CD4S.mjs} +6 -6
  66. package/dist/client/{eventDetails-TFE5TWKV.mjs → eventDetails-XYWH7WXI.mjs} +6 -6
  67. package/dist/client/{eventListing-IQ6AGWZ6.mjs → eventListing-EK5DJTAH.mjs} +6 -6
  68. package/dist/client/{eventRegistration-WGJVFKQJ.mjs → eventRegistration-XDOSICV6.mjs} +6 -6
  69. package/dist/client/{form-6UZY6RUA.mjs → form-J6GOHKYG.mjs} +1 -1
  70. package/dist/client/{headerSection-RSFXY6V3.mjs → headerSection-C5SYJTRW.mjs} +2 -2
  71. package/dist/client/hooks.mjs +14 -0
  72. package/dist/client/{locationMap-24FH67I4.mjs → locationMap-QSQIFVVT.mjs} +2 -2
  73. package/dist/client/{newsletterForm-QVL3MLTN.mjs → newsletterForm-47VXJRWK.mjs} +1 -1
  74. package/dist/client/{productDetail-ZDYN3G4T.mjs → productDetail-5U6ISCC2.mjs} +4 -4
  75. package/dist/client/{productList-4BMJLQHZ.mjs → productList-XDZUMR3P.mjs} +4 -4
  76. package/dist/client/rendering/client.mjs +362 -182
  77. package/dist/client/rendering/islands.mjs +18 -18
  78. package/dist/client/rendering.mjs +489 -182
  79. package/dist/client/{shop-U5C634FF.mjs → shop-ZSZKIY3R.mjs} +4 -4
  80. package/dist/preview-next/before-render.mjs +14 -0
  81. package/dist/preview-next/client/runtime.mjs +5 -5
  82. package/dist/preview-next/middleware.mjs +14 -0
  83. package/dist/{sdk-runtime-VGV46WVB.mjs → sdk-runtime-PHNM7MRD.mjs} +6 -6
  84. package/dist/server/components.mjs +111 -0
  85. package/dist/server/config-validation.mjs +14 -0
  86. package/dist/server/config.mjs +14 -0
  87. package/dist/server/data.mjs +14 -0
  88. package/dist/server/index.mjs +44 -1
  89. package/dist/server/next/middleware.mjs +120 -0
  90. package/dist/server/next.mjs +225 -2
  91. package/dist/server/prebuild.mjs +1 -1
  92. package/dist/server/rendering/server.mjs +111 -0
  93. package/dist/server/rendering.mjs +127 -0
  94. package/dist/server/routing.mjs +14 -0
  95. package/dist/server/server.mjs +60 -1
  96. package/dist/server/theme-bridge.mjs +97 -0
  97. package/dist/styles/index.css +95 -0
  98. package/package.json +5 -1
  99. package/dist/SdkPreviewModeRuntime-NHTLRNQD.mjs +0 -8
@@ -15,7 +15,7 @@ function isPreviewMode() {
15
15
  }
16
16
 
17
17
  // src/next/catch-all.tsx
18
- import { notFound } from "next/navigation";
18
+ import { notFound, permanentRedirect, redirect } from "next/navigation";
19
19
  import { cookies } from "next/headers";
20
20
 
21
21
  // src/portal/constants.ts
@@ -56,6 +56,8 @@ var TAG_TEMPLATES = {
56
56
  siteNewsletter: "riverbank:site:{siteId}:newsletter",
57
57
  // Pages/routes (routable content)
58
58
  siteRoutableContent: "riverbank:site:{siteId}:routable-content",
59
+ siteRedirects: "riverbank:site:{siteId}:redirects",
60
+ siteRouteOutcomes: "riverbank:site:{siteId}:route-outcomes",
59
61
  routeById: "riverbank:route:{routeId}",
60
62
  pageById: "riverbank:page:{pageId}",
61
63
  workflowRunById: "riverbank:workflow-run:{runId}",
@@ -3512,6 +3514,18 @@ var ENDPOINT_DEFINITIONS = {
3512
3514
  auth: "public",
3513
3515
  responseKind: "json"
3514
3516
  },
3517
+ resolveRouteOutcome: {
3518
+ path: "/sites/{siteId}/route-outcome",
3519
+ method: "GET",
3520
+ tags: [
3521
+ TAG_TEMPLATES.siteRoutableContent,
3522
+ TAG_TEMPLATES.siteRedirects,
3523
+ TAG_TEMPLATES.siteRouteOutcomes
3524
+ ],
3525
+ auth: "public",
3526
+ responseKind: "json",
3527
+ errors: ["validation:invalid_input", "server:internal_error"]
3528
+ },
3515
3529
  getPageByPath: {
3516
3530
  path: "/sites/{siteId}/pages",
3517
3531
  method: "GET",
@@ -59211,6 +59225,103 @@ var containerResponsiveThemeCss = `/*
59211
59225
  line-height: 1.35;
59212
59226
  }
59213
59227
 
59228
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-lines {
59229
+ display: grid;
59230
+ gap: 0.75rem;
59231
+ }
59232
+
59233
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-list {
59234
+ display: grid;
59235
+ gap: 0.625rem;
59236
+ }
59237
+
59238
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line {
59239
+ display: grid;
59240
+ grid-template-columns: minmax(0, 1fr) auto;
59241
+ align-items: center;
59242
+ gap: 0.875rem;
59243
+ min-height: 4.75rem;
59244
+ padding: 0.875rem;
59245
+ border: 1px solid var(--er-border);
59246
+ border-radius: calc(var(--rb-block-radius) * 0.75);
59247
+ background: var(--er-control-bg);
59248
+ }
59249
+
59250
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line--disabled {
59251
+ color: var(--er-on-surface-disabled);
59252
+ background: var(--er-surface-muted);
59253
+ }
59254
+
59255
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-main {
59256
+ min-width: 0;
59257
+ display: grid;
59258
+ gap: 0.25rem;
59259
+ }
59260
+
59261
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-heading {
59262
+ display: flex;
59263
+ align-items: baseline;
59264
+ justify-content: space-between;
59265
+ gap: 0.75rem;
59266
+ }
59267
+
59268
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-name {
59269
+ min-width: 0;
59270
+ font-size: 0.9375rem;
59271
+ font-weight: 600;
59272
+ line-height: 1.3;
59273
+ overflow-wrap: anywhere;
59274
+ }
59275
+
59276
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-price {
59277
+ flex-shrink: 0;
59278
+ font-size: 0.875rem;
59279
+ font-weight: 600;
59280
+ line-height: 1.3;
59281
+ }
59282
+
59283
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-detail {
59284
+ margin: 0;
59285
+ color: var(--er-on-surface-muted);
59286
+ font-size: 0.8125rem;
59287
+ line-height: 1.35;
59288
+ overflow-wrap: anywhere;
59289
+ }
59290
+
59291
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-summary {
59292
+ padding: 0.75rem 0.875rem;
59293
+ border: 1px solid var(--er-summary-border);
59294
+ border-radius: calc(var(--rb-block-radius) * 0.75);
59295
+ background: var(--er-surface-muted);
59296
+ }
59297
+
59298
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-summary-title {
59299
+ font-size: 0.875rem;
59300
+ font-weight: 600;
59301
+ line-height: 1.35;
59302
+ }
59303
+
59304
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-summary-list {
59305
+ margin: 0.25rem 0 0;
59306
+ padding-left: 1.125rem;
59307
+ color: var(--er-on-surface-muted);
59308
+ font-size: 0.8125rem;
59309
+ line-height: 1.4;
59310
+ }
59311
+
59312
+ @container rb-site (max-width: 639px) {
59313
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
59314
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line {
59315
+ grid-template-columns: minmax(0, 1fr);
59316
+ align-items: stretch;
59317
+ }
59318
+
59319
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line .er-counter {
59320
+ justify-content: flex-start;
59321
+ }
59322
+ }
59323
+ }
59324
+
59214
59325
  /* Form inputs */
59215
59326
  :where(.theme-scope) :where([data-block="event-registration"]) .er-input {
59216
59327
  width: 100%;
@@ -69616,6 +69727,22 @@ async function loadContent(params) {
69616
69727
  }
69617
69728
  const site = siteResult.value;
69618
69729
  const contentResponse = contentResult.value;
69730
+ return loadContentFromContentResponse({
69731
+ client,
69732
+ siteId,
69733
+ site,
69734
+ contentResponse,
69735
+ preview
69736
+ });
69737
+ }
69738
+ async function loadContentFromContentResponse(params) {
69739
+ const {
69740
+ client,
69741
+ siteId,
69742
+ site,
69743
+ contentResponse,
69744
+ preview = false
69745
+ } = params;
69619
69746
  const support = buildSiteRenderSupport(
69620
69747
  site,
69621
69748
  collectMediaAssetSidecar(contentResponse.mediaAssets)
@@ -71141,7 +71268,7 @@ var CircuitOpenError = class extends Error {
71141
71268
  };
71142
71269
 
71143
71270
  // src/version.ts
71144
- var SDK_VERSION = "0.93.0";
71271
+ var SDK_VERSION = "0.95.0";
71145
71272
 
71146
71273
  // src/next/content-load-failure.ts
71147
71274
  var SdkContentLoadError = RiverbankContentLoadError;
@@ -71303,6 +71430,46 @@ function readStringProperty(error, property) {
71303
71430
  return typeof value === "string" ? value : void 0;
71304
71431
  }
71305
71432
 
71433
+ // src/next/redirect-destination.ts
71434
+ function normalizeIncomingSearch(search) {
71435
+ if (!search) return "";
71436
+ if (typeof search === "string") {
71437
+ return search.startsWith("?") ? search.slice(1) : search;
71438
+ }
71439
+ if (search instanceof URLSearchParams) {
71440
+ return search.toString();
71441
+ }
71442
+ const params = new URLSearchParams();
71443
+ for (const [key, value] of Object.entries(search)) {
71444
+ if (value === void 0) continue;
71445
+ if (Array.isArray(value)) {
71446
+ for (const item of value) {
71447
+ params.append(key, item);
71448
+ }
71449
+ continue;
71450
+ }
71451
+ params.set(key, value);
71452
+ }
71453
+ return params.toString();
71454
+ }
71455
+ function destinationHasSearch(destination) {
71456
+ const queryIndex = destination.indexOf("?");
71457
+ if (queryIndex === -1) return false;
71458
+ const hashIndex = destination.indexOf("#");
71459
+ return hashIndex === -1 || queryIndex < hashIndex;
71460
+ }
71461
+ function appendSearchToRedirectDestination(destination, incomingSearch) {
71462
+ const search = normalizeIncomingSearch(incomingSearch);
71463
+ if (!search || destinationHasSearch(destination)) {
71464
+ return destination;
71465
+ }
71466
+ const hashIndex = destination.indexOf("#");
71467
+ if (hashIndex === -1) {
71468
+ return `${destination}?${search}`;
71469
+ }
71470
+ return `${destination.slice(0, hashIndex)}?${search}${destination.slice(hashIndex)}`;
71471
+ }
71472
+
71306
71473
  // src/next/catch-all.tsx
71307
71474
  import { jsx as jsx67, jsxs as jsxs49 } from "react/jsx-runtime";
71308
71475
  function throwUpstreamContentError(path, resolution) {
@@ -71412,6 +71579,32 @@ function createCatchAllPage(options) {
71412
71579
  shouldAttemptEntrySubroute: defaultShouldAttemptEntrySubroute
71413
71580
  });
71414
71581
  }
71582
+ async function redirectIfConfigured(args) {
71583
+ if (preview) return;
71584
+ let outcome;
71585
+ try {
71586
+ outcome = await args.client.resolveRouteOutcome({
71587
+ siteId: config.siteId,
71588
+ path: args.path,
71589
+ preview: false
71590
+ });
71591
+ } catch (error) {
71592
+ console.warn("[createCatchAllPage] Redirect outcome check failed:", {
71593
+ path: args.path,
71594
+ error: error instanceof Error ? error.message : String(error)
71595
+ });
71596
+ return;
71597
+ }
71598
+ if (outcome.type !== "redirect") return;
71599
+ const destination = appendSearchToRedirectDestination(
71600
+ outcome.destination,
71601
+ args.searchParams
71602
+ );
71603
+ if (outcome.status === 301 || outcome.status === 308) {
71604
+ permanentRedirect(destination);
71605
+ }
71606
+ redirect(destination);
71607
+ }
71415
71608
  async function Page2({
71416
71609
  params,
71417
71610
  searchParams: searchParamsPromise
@@ -71446,6 +71639,7 @@ function createCatchAllPage(options) {
71446
71639
  path,
71447
71640
  resolution.reason
71448
71641
  );
71642
+ await redirectIfConfigured({ path, client, searchParams });
71449
71643
  return notFound();
71450
71644
  }
71451
71645
  const { content, entrySubrouteData } = resolution;
@@ -71777,6 +71971,7 @@ var SimpleCache = class {
71777
71971
  var PUBLIC_ENDPOINT_NAMES2 = [
71778
71972
  "getSite",
71779
71973
  "getContentByPath",
71974
+ "resolveRouteOutcome",
71780
71975
  "listPublishedEntries",
71781
71976
  "getPublishedEntryPreview",
71782
71977
  "getPublicFormById",
@@ -71813,6 +72008,17 @@ var API_ENDPOINTS2 = Object.freeze({
71813
72008
  auth: "public",
71814
72009
  responseKind: "json"
71815
72010
  },
72011
+ resolveRouteOutcome: {
72012
+ path: "/sites/{siteId}/route-outcome",
72013
+ method: "GET",
72014
+ tags: [
72015
+ "riverbank:site:{siteId}:routable-content",
72016
+ "riverbank:site:{siteId}:redirects",
72017
+ "riverbank:site:{siteId}:route-outcomes"
72018
+ ],
72019
+ auth: "public",
72020
+ responseKind: "json"
72021
+ },
71816
72022
  listPublishedEntries: {
71817
72023
  path: "/public/content/{siteId}/{type}/entries",
71818
72024
  method: "GET",
@@ -71976,6 +72182,10 @@ var RUNTIME_CACHE_DURABILITY_OVERRIDES = {
71976
72182
  kind: "durable-public-stale",
71977
72183
  staleTtlSec: DEFAULT_STALE_TTL_SEC
71978
72184
  },
72185
+ resolveRouteOutcome: {
72186
+ kind: "memory-only",
72187
+ reason: "durable_rollout_pending"
72188
+ },
71979
72189
  listPublishedEntries: {
71980
72190
  kind: "memory-only",
71981
72191
  reason: "durable_rollout_pending"
@@ -73424,6 +73634,19 @@ function createRiverbankClient(config) {
73424
73634
  { signal }
73425
73635
  );
73426
73636
  },
73637
+ async resolveRouteOutcome(params) {
73638
+ const { siteId, path, preview = false, signal } = params;
73639
+ if (!siteId || !path) {
73640
+ throw new Error("resolveRouteOutcome() requires siteId and path");
73641
+ }
73642
+ return unwrapResponse(
73643
+ await apiClient({
73644
+ endpoint: "resolveRouteOutcome",
73645
+ params: { siteId, path, preview: String(preview) },
73646
+ options: { signal }
73647
+ })
73648
+ );
73649
+ },
73427
73650
  async getAllPublishedRoutes(params) {
73428
73651
  const { siteId, signal } = params;
73429
73652
  if (!siteId) {
@@ -4,7 +4,7 @@ import * as path from "path";
4
4
  import * as crypto from "crypto";
5
5
 
6
6
  // src/version.ts
7
- var SDK_VERSION = "0.93.0";
7
+ var SDK_VERSION = "0.95.0";
8
8
 
9
9
  // src/constants.ts
10
10
  var PREBUILD_PAGE_SIZE = 50;
@@ -52653,6 +52653,103 @@ var containerResponsiveThemeCss = `/*
52653
52653
  line-height: 1.35;
52654
52654
  }
52655
52655
 
52656
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-lines {
52657
+ display: grid;
52658
+ gap: 0.75rem;
52659
+ }
52660
+
52661
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-list {
52662
+ display: grid;
52663
+ gap: 0.625rem;
52664
+ }
52665
+
52666
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line {
52667
+ display: grid;
52668
+ grid-template-columns: minmax(0, 1fr) auto;
52669
+ align-items: center;
52670
+ gap: 0.875rem;
52671
+ min-height: 4.75rem;
52672
+ padding: 0.875rem;
52673
+ border: 1px solid var(--er-border);
52674
+ border-radius: calc(var(--rb-block-radius) * 0.75);
52675
+ background: var(--er-control-bg);
52676
+ }
52677
+
52678
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line--disabled {
52679
+ color: var(--er-on-surface-disabled);
52680
+ background: var(--er-surface-muted);
52681
+ }
52682
+
52683
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-main {
52684
+ min-width: 0;
52685
+ display: grid;
52686
+ gap: 0.25rem;
52687
+ }
52688
+
52689
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-heading {
52690
+ display: flex;
52691
+ align-items: baseline;
52692
+ justify-content: space-between;
52693
+ gap: 0.75rem;
52694
+ }
52695
+
52696
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-name {
52697
+ min-width: 0;
52698
+ font-size: 0.9375rem;
52699
+ font-weight: 600;
52700
+ line-height: 1.3;
52701
+ overflow-wrap: anywhere;
52702
+ }
52703
+
52704
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-price {
52705
+ flex-shrink: 0;
52706
+ font-size: 0.875rem;
52707
+ font-weight: 600;
52708
+ line-height: 1.3;
52709
+ }
52710
+
52711
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-detail {
52712
+ margin: 0;
52713
+ color: var(--er-on-surface-muted);
52714
+ font-size: 0.8125rem;
52715
+ line-height: 1.35;
52716
+ overflow-wrap: anywhere;
52717
+ }
52718
+
52719
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-summary {
52720
+ padding: 0.75rem 0.875rem;
52721
+ border: 1px solid var(--er-summary-border);
52722
+ border-radius: calc(var(--rb-block-radius) * 0.75);
52723
+ background: var(--er-surface-muted);
52724
+ }
52725
+
52726
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-summary-title {
52727
+ font-size: 0.875rem;
52728
+ font-weight: 600;
52729
+ line-height: 1.35;
52730
+ }
52731
+
52732
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-summary-list {
52733
+ margin: 0.25rem 0 0;
52734
+ padding-left: 1.125rem;
52735
+ color: var(--er-on-surface-muted);
52736
+ font-size: 0.8125rem;
52737
+ line-height: 1.4;
52738
+ }
52739
+
52740
+ @container rb-site (max-width: 639px) {
52741
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
52742
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line {
52743
+ grid-template-columns: minmax(0, 1fr);
52744
+ align-items: stretch;
52745
+ }
52746
+
52747
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line .er-counter {
52748
+ justify-content: flex-start;
52749
+ }
52750
+ }
52751
+ }
52752
+
52656
52753
  /* Form inputs */
52657
52754
  :where(.theme-scope) :where([data-block="event-registration"]) .er-input {
52658
52755
  width: 100%;
@@ -61497,6 +61594,8 @@ var TAG_TEMPLATES = {
61497
61594
  siteNewsletter: "riverbank:site:{siteId}:newsletter",
61498
61595
  // Pages/routes (routable content)
61499
61596
  siteRoutableContent: "riverbank:site:{siteId}:routable-content",
61597
+ siteRedirects: "riverbank:site:{siteId}:redirects",
61598
+ siteRouteOutcomes: "riverbank:site:{siteId}:route-outcomes",
61500
61599
  routeById: "riverbank:route:{routeId}",
61501
61600
  pageById: "riverbank:page:{pageId}",
61502
61601
  workflowRunById: "riverbank:workflow-run:{runId}",
@@ -64953,6 +65052,18 @@ var ENDPOINT_DEFINITIONS = {
64953
65052
  auth: "public",
64954
65053
  responseKind: "json"
64955
65054
  },
65055
+ resolveRouteOutcome: {
65056
+ path: "/sites/{siteId}/route-outcome",
65057
+ method: "GET",
65058
+ tags: [
65059
+ TAG_TEMPLATES.siteRoutableContent,
65060
+ TAG_TEMPLATES.siteRedirects,
65061
+ TAG_TEMPLATES.siteRouteOutcomes
65062
+ ],
65063
+ auth: "public",
65064
+ responseKind: "json",
65065
+ errors: ["validation:invalid_input", "server:internal_error"]
65066
+ },
64956
65067
  getPageByPath: {
64957
65068
  path: "/sites/{siteId}/pages",
64958
65069
  method: "GET",
@@ -52687,6 +52687,103 @@ var containerResponsiveThemeCss = `/*
52687
52687
  line-height: 1.35;
52688
52688
  }
52689
52689
 
52690
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-lines {
52691
+ display: grid;
52692
+ gap: 0.75rem;
52693
+ }
52694
+
52695
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-list {
52696
+ display: grid;
52697
+ gap: 0.625rem;
52698
+ }
52699
+
52700
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line {
52701
+ display: grid;
52702
+ grid-template-columns: minmax(0, 1fr) auto;
52703
+ align-items: center;
52704
+ gap: 0.875rem;
52705
+ min-height: 4.75rem;
52706
+ padding: 0.875rem;
52707
+ border: 1px solid var(--er-border);
52708
+ border-radius: calc(var(--rb-block-radius) * 0.75);
52709
+ background: var(--er-control-bg);
52710
+ }
52711
+
52712
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line--disabled {
52713
+ color: var(--er-on-surface-disabled);
52714
+ background: var(--er-surface-muted);
52715
+ }
52716
+
52717
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-main {
52718
+ min-width: 0;
52719
+ display: grid;
52720
+ gap: 0.25rem;
52721
+ }
52722
+
52723
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-heading {
52724
+ display: flex;
52725
+ align-items: baseline;
52726
+ justify-content: space-between;
52727
+ gap: 0.75rem;
52728
+ }
52729
+
52730
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-name {
52731
+ min-width: 0;
52732
+ font-size: 0.9375rem;
52733
+ font-weight: 600;
52734
+ line-height: 1.3;
52735
+ overflow-wrap: anywhere;
52736
+ }
52737
+
52738
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-price {
52739
+ flex-shrink: 0;
52740
+ font-size: 0.875rem;
52741
+ font-weight: 600;
52742
+ line-height: 1.3;
52743
+ }
52744
+
52745
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-detail {
52746
+ margin: 0;
52747
+ color: var(--er-on-surface-muted);
52748
+ font-size: 0.8125rem;
52749
+ line-height: 1.35;
52750
+ overflow-wrap: anywhere;
52751
+ }
52752
+
52753
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-summary {
52754
+ padding: 0.75rem 0.875rem;
52755
+ border: 1px solid var(--er-summary-border);
52756
+ border-radius: calc(var(--rb-block-radius) * 0.75);
52757
+ background: var(--er-surface-muted);
52758
+ }
52759
+
52760
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-summary-title {
52761
+ font-size: 0.875rem;
52762
+ font-weight: 600;
52763
+ line-height: 1.35;
52764
+ }
52765
+
52766
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line-summary-list {
52767
+ margin: 0.25rem 0 0;
52768
+ padding-left: 1.125rem;
52769
+ color: var(--er-on-surface-muted);
52770
+ font-size: 0.8125rem;
52771
+ line-height: 1.4;
52772
+ }
52773
+
52774
+ @container rb-site (max-width: 639px) {
52775
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
52776
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line {
52777
+ grid-template-columns: minmax(0, 1fr);
52778
+ align-items: stretch;
52779
+ }
52780
+
52781
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-line .er-counter {
52782
+ justify-content: flex-start;
52783
+ }
52784
+ }
52785
+ }
52786
+
52690
52787
  /* Form inputs */
52691
52788
  :where(.theme-scope) :where([data-block="event-registration"]) .er-input {
52692
52789
  width: 100%;
@@ -61548,6 +61645,8 @@ var TAG_TEMPLATES = {
61548
61645
  siteNewsletter: "riverbank:site:{siteId}:newsletter",
61549
61646
  // Pages/routes (routable content)
61550
61647
  siteRoutableContent: "riverbank:site:{siteId}:routable-content",
61648
+ siteRedirects: "riverbank:site:{siteId}:redirects",
61649
+ siteRouteOutcomes: "riverbank:site:{siteId}:route-outcomes",
61551
61650
  routeById: "riverbank:route:{routeId}",
61552
61651
  pageById: "riverbank:page:{pageId}",
61553
61652
  workflowRunById: "riverbank:workflow-run:{runId}",
@@ -65004,6 +65103,18 @@ var ENDPOINT_DEFINITIONS = {
65004
65103
  auth: "public",
65005
65104
  responseKind: "json"
65006
65105
  },
65106
+ resolveRouteOutcome: {
65107
+ path: "/sites/{siteId}/route-outcome",
65108
+ method: "GET",
65109
+ tags: [
65110
+ TAG_TEMPLATES.siteRoutableContent,
65111
+ TAG_TEMPLATES.siteRedirects,
65112
+ TAG_TEMPLATES.siteRouteOutcomes
65113
+ ],
65114
+ auth: "public",
65115
+ responseKind: "json",
65116
+ errors: ["validation:invalid_input", "server:internal_error"]
65117
+ },
65007
65118
  getPageByPath: {
65008
65119
  path: "/sites/{siteId}/pages",
65009
65120
  method: "GET",
@@ -70155,6 +70266,22 @@ async function loadContent(params) {
70155
70266
  }
70156
70267
  const site = siteResult.value;
70157
70268
  const contentResponse = contentResult.value;
70269
+ return loadContentFromContentResponse({
70270
+ client,
70271
+ siteId,
70272
+ site,
70273
+ contentResponse,
70274
+ preview
70275
+ });
70276
+ }
70277
+ async function loadContentFromContentResponse(params) {
70278
+ const {
70279
+ client,
70280
+ siteId,
70281
+ site,
70282
+ contentResponse,
70283
+ preview = false
70284
+ } = params;
70158
70285
  const support = buildSiteRenderSupport(
70159
70286
  site,
70160
70287
  collectMediaAssetSidecar(contentResponse.mediaAssets)
@@ -42,6 +42,8 @@ var init_cache_tags = __esm({
42
42
  siteNewsletter: "riverbank:site:{siteId}:newsletter",
43
43
  // Pages/routes (routable content)
44
44
  siteRoutableContent: "riverbank:site:{siteId}:routable-content",
45
+ siteRedirects: "riverbank:site:{siteId}:redirects",
46
+ siteRouteOutcomes: "riverbank:site:{siteId}:route-outcomes",
45
47
  routeById: "riverbank:route:{routeId}",
46
48
  pageById: "riverbank:page:{pageId}",
47
49
  workflowRunById: "riverbank:workflow-run:{runId}",
@@ -3506,6 +3508,18 @@ var init_endpoints = __esm({
3506
3508
  auth: "public",
3507
3509
  responseKind: "json"
3508
3510
  },
3511
+ resolveRouteOutcome: {
3512
+ path: "/sites/{siteId}/route-outcome",
3513
+ method: "GET",
3514
+ tags: [
3515
+ TAG_TEMPLATES.siteRoutableContent,
3516
+ TAG_TEMPLATES.siteRedirects,
3517
+ TAG_TEMPLATES.siteRouteOutcomes
3518
+ ],
3519
+ auth: "public",
3520
+ responseKind: "json",
3521
+ errors: ["validation:invalid_input", "server:internal_error"]
3522
+ },
3509
3523
  getPageByPath: {
3510
3524
  path: "/sites/{siteId}/pages",
3511
3525
  method: "GET",