@riverbankcms/sdk 0.74.0 → 0.75.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 (113) hide show
  1. package/dist/{PreviewEditorSidebar-5XL7M3OM.mjs → PreviewEditorSidebar-U2IHCBYN.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-ZDFRDJID.mjs → PreviewEditorUI-ZGH2RQNP.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-MTUGBTLQ.mjs +8 -0
  4. package/dist/_dts/api/src/cache-tags.d.ts +22 -0
  5. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  6. package/dist/_dts/api/src/endpoints.d.ts +24 -24
  7. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +2 -1
  8. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +4 -1
  9. package/dist/_dts/blocks/src/client/booking-form.d.ts +2 -0
  10. package/dist/_dts/blocks/src/client/carousel.d.ts +1 -0
  11. package/dist/_dts/blocks/src/client/course-registration.d.ts +2 -0
  12. package/dist/_dts/blocks/src/client/events.d.ts +4 -0
  13. package/dist/_dts/blocks/src/client/form.d.ts +2 -0
  14. package/dist/_dts/blocks/src/client/header.d.ts +1 -0
  15. package/dist/_dts/blocks/src/client/location-map.d.ts +1 -0
  16. package/dist/_dts/blocks/src/client/newsletter-form.d.ts +2 -0
  17. package/dist/_dts/blocks/src/client/shop.d.ts +6 -0
  18. package/dist/_dts/blocks/src/lib/video.d.ts +2 -0
  19. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +21 -1
  20. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +1 -0
  21. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -2
  22. package/dist/_dts/blocks/src/system/runtime/nodes/events/index.d.ts +3 -0
  23. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +1 -0
  24. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +1 -0
  25. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +5 -0
  26. package/dist/_dts/preview-next/src/client/preview/SiteChromeEditableSurface.d.ts +12 -2
  27. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -0
  28. package/dist/_dts/sdk/src/rendering/islands/deferredVideoEmbeds.d.ts +2 -0
  29. package/dist/_dts/sdk/src/rendering/server.d.ts +3 -0
  30. package/dist/_dts/sdk/src/version.d.ts +1 -1
  31. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  32. package/dist/{chunk-YY7K3QD2.mjs → chunk-BGMNDF6T.mjs} +7 -7
  33. package/dist/{chunk-2MIWNFJM.mjs → chunk-GFE74WRD.mjs} +309 -84
  34. package/dist/{chunk-CEQBBLMJ.mjs → chunk-RWXQBRQZ.mjs} +1 -1
  35. package/dist/{chunk-7RX72SK2.mjs → chunk-VX7B5VAC.mjs} +36 -25
  36. package/dist/{chunk-YRJKZEQ3.mjs → chunk-Z7JLNTJR.mjs} +1 -1
  37. package/dist/{chunk-CBD47MTM.mjs → chunk-ZSHFGFUG.mjs} +2 -2
  38. package/dist/cli/index.mjs +3395 -3753
  39. package/dist/client/{accordion-ZZVXWV3N.mjs → accordion-T2UD2ZTH.mjs} +1 -1
  40. package/dist/client/bookingForm-GUP75FKN.mjs +3022 -0
  41. package/dist/client/bookings.mjs +19 -10
  42. package/dist/client/{carousel-25WK2H7G.mjs → carousel-2NQA6V57.mjs} +3 -2
  43. package/dist/client/cart-5TFIAFDS.mjs +18 -0
  44. package/dist/client/checkout-TP4WAHZE.mjs +18 -0
  45. package/dist/client/chunk-2PHQZ666.mjs +383 -0
  46. package/dist/client/chunk-3DCJ45Z2.mjs +36 -0
  47. package/dist/client/chunk-3PEDD5KJ.mjs +146 -0
  48. package/dist/client/chunk-CY2ZTSE5.mjs +204 -0
  49. package/dist/client/chunk-F7LHOKEH.mjs +146 -0
  50. package/dist/client/{chunk-6VGXRE34.mjs → chunk-FU2QRZMX.mjs} +6 -6
  51. package/dist/client/chunk-I2MMZO53.mjs +6 -0
  52. package/dist/client/chunk-II7O4XN3.mjs +2206 -0
  53. package/dist/client/chunk-M3L3KYYR.mjs +1181 -0
  54. package/dist/client/chunk-NWOUL6JY.mjs +1378 -0
  55. package/dist/client/chunk-OJPZEZU2.mjs +31 -0
  56. package/dist/client/chunk-RTZ3JKKX.mjs +178 -0
  57. package/dist/client/chunk-TQ5MSPDX.mjs +74 -0
  58. package/dist/client/chunk-VUAOE3AG.mjs +5592 -0
  59. package/dist/client/chunk-WJXXNDSE.mjs +245 -0
  60. package/dist/client/chunk-YLMKMCSJ.mjs +86 -0
  61. package/dist/client/chunk-ZLMS67RR.mjs +106 -0
  62. package/dist/client/client.mjs +51626 -52074
  63. package/dist/client/courseRegistration-5DPU6PDY.mjs +1737 -0
  64. package/dist/client/{eventCalendar-X6GIPYFM.mjs → eventCalendar-F3GZGTEF.mjs} +13 -2
  65. package/dist/client/{eventCombined-EZUOPM3G.mjs → eventCombined-BQOB6QMY.mjs} +13 -2
  66. package/dist/client/eventDetails-PEM2EJWE.mjs +25 -0
  67. package/dist/client/{eventListing-HEFGAETC.mjs → eventListing-YMIQPVME.mjs} +13 -2
  68. package/dist/client/{eventRegistration-3LCP2V3P.mjs → eventRegistration-4I6ZNDUF.mjs} +13 -2
  69. package/dist/client/form-ZJVAYZ6G.mjs +300 -0
  70. package/dist/client/headerSection-TOT5MGTF.mjs +729 -0
  71. package/dist/client/hooks.mjs +49 -33
  72. package/dist/client/locationMap-J66NZREU.mjs +227 -0
  73. package/dist/client/newsletterForm-ET2XUMRO.mjs +208 -0
  74. package/dist/client/productDetail-C2XIH7C5.mjs +18 -0
  75. package/dist/client/productList-T2AZLFTP.mjs +18 -0
  76. package/dist/client/rendering/client.mjs +11763 -12445
  77. package/dist/client/rendering/islands.mjs +98 -21
  78. package/dist/client/rendering.mjs +46778 -47229
  79. package/dist/client/shop-UZ6IUZXD.mjs +20 -0
  80. package/dist/preview-next/before-render.mjs +37 -25
  81. package/dist/preview-next/client/runtime.mjs +5 -5
  82. package/dist/preview-next/middleware.mjs +37 -25
  83. package/dist/{sdk-runtime-OHNONZ5U.mjs → sdk-runtime-JCUQM63Y.mjs} +6 -6
  84. package/dist/server/components.mjs +409 -266
  85. package/dist/server/config-validation.mjs +49 -33
  86. package/dist/server/config.mjs +49 -33
  87. package/dist/server/data.mjs +49 -33
  88. package/dist/server/index.mjs +45 -33
  89. package/dist/server/next.mjs +405 -262
  90. package/dist/server/page-converter.mjs +12 -8
  91. package/dist/server/prebuild.mjs +1 -1
  92. package/dist/server/rendering/server.mjs +493 -265
  93. package/dist/server/rendering.mjs +411 -268
  94. package/dist/server/routing.mjs +49 -33
  95. package/dist/server/server.mjs +50 -34
  96. package/dist/server/theme-bridge.mjs +5 -0
  97. package/dist/styles/index.css +5 -0
  98. package/package.json +2 -1
  99. package/dist/SdkPreviewModeRuntime-CRYNDSPL.mjs +0 -8
  100. package/dist/client/bookingForm-4X77HKDS.mjs +0 -34
  101. package/dist/client/cart-JWD2VRFU.mjs +0 -11
  102. package/dist/client/checkout-V7KYGWL7.mjs +0 -11
  103. package/dist/client/chunk-5IYGMTUE.mjs +0 -18614
  104. package/dist/client/chunk-RKCFVIMS.mjs +0 -26
  105. package/dist/client/courseRegistration-O6ZPK4YT.mjs +0 -29
  106. package/dist/client/eventDetails-3WODIXET.mjs +0 -14
  107. package/dist/client/form-AKXQMY6Z.mjs +0 -85
  108. package/dist/client/headerSection-5KHCMU6B.mjs +0 -12
  109. package/dist/client/locationMap-7HIADW76.mjs +0 -14
  110. package/dist/client/newsletterForm-5N4YTMU3.mjs +0 -60
  111. package/dist/client/productDetail-IZUA7ZP3.mjs +0 -11
  112. package/dist/client/productList-KWIIJE6I.mjs +0 -11
  113. package/dist/client/shop-XZQFRQWZ.mjs +0 -13
@@ -1428,6 +1428,9 @@ function validationContext(options = {}) {
1428
1428
  function formatFieldPath(path) {
1429
1429
  return path.map((segment) => String(segment)).join(".");
1430
1430
  }
1431
+ function toZodIssuePath(path) {
1432
+ return [...path];
1433
+ }
1431
1434
  function fieldIssueToMessage(issue2) {
1432
1435
  switch (issue2.kind) {
1433
1436
  case "required":
@@ -1556,6 +1559,9 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
1556
1559
  return assertNever(field);
1557
1560
  }
1558
1561
  }
1562
+ function deriveFieldValidationPlans(fields3, parentPath = []) {
1563
+ return fields3.map((field) => deriveFieldValidationPlan(field, [...parentPath, field.id]));
1564
+ }
1559
1565
  function commonConstraints(required, ...specific) {
1560
1566
  return required ? [{ kind: "required" }, ...specific] : [...specific];
1561
1567
  }
@@ -1571,9 +1577,19 @@ function makePlan(kind, valueKind, field, path, required, constraints) {
1571
1577
  fieldType: field.type,
1572
1578
  path,
1573
1579
  required,
1580
+ visibility: fieldVisibility(field),
1574
1581
  constraints
1575
1582
  };
1576
1583
  }
1584
+ function fieldVisibility(field) {
1585
+ if (field.ui?.hidden) {
1586
+ return { kind: "hidden" };
1587
+ }
1588
+ if (field.visibleRoles && field.visibleRoles.length > 0) {
1589
+ return { kind: "roleRestricted", roles: field.visibleRoles };
1590
+ }
1591
+ return { kind: "visible" };
1592
+ }
1577
1593
  function withRepeaterItemConstraints(field, constraints) {
1578
1594
  const next = [...constraints];
1579
1595
  if (typeof field.minItems === "number") next.push({ kind: "minItems", minimum: field.minItems });
@@ -1587,7 +1603,7 @@ function deriveRepeatedItemVariants(field, parentPath) {
1587
1603
  }));
1588
1604
  }
1589
1605
  function deriveNestedFieldPlans(fields3, parentPath) {
1590
- return fields3.map((field) => deriveFieldValidationPlan(field, [...parentPath, field.id]));
1606
+ return deriveFieldValidationPlans(fields3, parentPath);
1591
1607
  }
1592
1608
  function getRepeaterFields(field) {
1593
1609
  const fields3 = field.polymorphic && field.itemTypes ? Object.values(field.itemTypes).flatMap((itemType) => itemType.fields) : field.schema?.fields ?? [];
@@ -1613,6 +1629,71 @@ function resolveSelectConstraintSource(field) {
1613
1629
  return assertNever(source);
1614
1630
  }
1615
1631
  }
1632
+ function normalizeStoredContentValues(plans, content, options = {}) {
1633
+ if (!content || typeof content !== "object" || Array.isArray(content)) {
1634
+ return {};
1635
+ }
1636
+ const planMap = new Map(plans.map((plan) => [plan.fieldId, plan]));
1637
+ const normalized = {};
1638
+ const ctx = validationContext(options);
1639
+ for (const [key, value] of Object.entries(content)) {
1640
+ const plan = planMap.get(key);
1641
+ normalized[key] = plan ? normalizeStoredFieldValueWithContext(plan, value, ctx) : value;
1642
+ }
1643
+ return normalized;
1644
+ }
1645
+ function normalizeStoredFieldValueWithContext(plan, value, ctx) {
1646
+ if (value === null && !plan.required) {
1647
+ return void 0;
1648
+ }
1649
+ switch (plan.kind) {
1650
+ case "group":
1651
+ return normalizeStoredObjectChildren(plan.children, value, childValidationContext(plan, ctx));
1652
+ case "repeater":
1653
+ return normalizeStoredRepeaterItems(plan, value, ctx);
1654
+ case "string":
1655
+ case "number":
1656
+ case "boolean":
1657
+ case "richText":
1658
+ case "media":
1659
+ case "link":
1660
+ case "select":
1661
+ case "passthrough":
1662
+ return normalizeFieldValue(plan, value, ctx);
1663
+ default:
1664
+ return assertNever(plan);
1665
+ }
1666
+ }
1667
+ function normalizeStoredObjectChildren(children, value, ctx) {
1668
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
1669
+ return value;
1670
+ }
1671
+ const normalized = { ...value };
1672
+ for (const child of children) {
1673
+ normalized[child.fieldId] = normalizeStoredFieldValueWithContext(
1674
+ child,
1675
+ normalized[child.fieldId],
1676
+ ctx
1677
+ );
1678
+ }
1679
+ return normalized;
1680
+ }
1681
+ function normalizeStoredRepeaterItems(plan, value, ctx) {
1682
+ if (!Array.isArray(value)) {
1683
+ return value;
1684
+ }
1685
+ return value.map((item) => {
1686
+ if (!item || typeof item !== "object" || Array.isArray(item)) {
1687
+ return item;
1688
+ }
1689
+ const itemRecord = item;
1690
+ const fields3 = plan.repeatedItemVariants ? plan.repeatedItemVariants.find((variant) => variant.typeId === itemRecord._type)?.fields : plan.repeatedItemPlan;
1691
+ if (!fields3) {
1692
+ return item;
1693
+ }
1694
+ return normalizeStoredObjectChildren(fields3, itemRecord, ctx);
1695
+ });
1696
+ }
1616
1697
  function normalizeFieldValue(plan, value, ctx) {
1617
1698
  switch (plan.kind) {
1618
1699
  case "number":
@@ -1867,16 +1948,19 @@ function fieldPlanToZod(plan, options = {}) {
1867
1948
  const ctx = validationContext(options);
1868
1949
  return z4.any().transform((value) => normalizeFieldValue(plan, value, ctx)).superRefine((value, zodCtx) => {
1869
1950
  for (const validationIssue of validateNormalizedFieldValue(plan, value, ctx)) {
1870
- addFieldIssueToZodContext(zodCtx, validationIssue);
1951
+ addFieldIssueToZodContext(zodCtx, validationIssue, plan.path);
1871
1952
  }
1872
1953
  });
1873
1954
  }
1874
- function addFieldIssueToZodContext(zodCtx, validationIssue) {
1955
+ function addFieldIssueToZodContext(zodCtx, validationIssue, rootPath) {
1875
1956
  const message = fieldIssueToMessage(validationIssue);
1957
+ const path = relativeZodIssuePath(validationIssue.path, rootPath);
1958
+ const issuePath = path.length > 0 ? { path: toZodIssuePath(path) } : {};
1876
1959
  switch (validationIssue.kind) {
1877
1960
  case "required":
1878
1961
  if (validationIssue.emptyOrigin) {
1879
1962
  zodCtx.addIssue({
1963
+ ...issuePath,
1880
1964
  code: "too_small",
1881
1965
  origin: validationIssue.emptyOrigin,
1882
1966
  minimum: 1,
@@ -1885,10 +1969,11 @@ function addFieldIssueToZodContext(zodCtx, validationIssue) {
1885
1969
  });
1886
1970
  return;
1887
1971
  }
1888
- zodCtx.addIssue({ code: "invalid_type", expected: "nonoptional", message });
1972
+ zodCtx.addIssue({ ...issuePath, code: "invalid_type", expected: "nonoptional", message });
1889
1973
  return;
1890
1974
  case "tooLong":
1891
1975
  zodCtx.addIssue({
1976
+ ...issuePath,
1892
1977
  code: "too_big",
1893
1978
  origin: "string",
1894
1979
  maximum: validationIssue.maximum,
@@ -1897,7 +1982,7 @@ function addFieldIssueToZodContext(zodCtx, validationIssue) {
1897
1982
  });
1898
1983
  return;
1899
1984
  case "invalidOption":
1900
- zodCtx.addIssue({ code: "invalid_value", values: [], message });
1985
+ zodCtx.addIssue({ ...issuePath, code: "invalid_value", values: [], message });
1901
1986
  return;
1902
1987
  case "wrongType":
1903
1988
  case "invalidEmail":
@@ -1914,12 +1999,15 @@ function addFieldIssueToZodContext(zodCtx, validationIssue) {
1914
1999
  case "invalidMedia":
1915
2000
  case "invalidLink":
1916
2001
  case "invalidReference":
1917
- zodCtx.addIssue({ code: "custom", message });
2002
+ zodCtx.addIssue({ ...issuePath, code: "custom", message });
1918
2003
  return;
1919
2004
  default:
1920
2005
  assertNever(validationIssue);
1921
2006
  }
1922
2007
  }
2008
+ function relativeZodIssuePath(path, rootPath) {
2009
+ return startsWithFieldPath(path, rootPath) ? path.slice(rootPath.length) : path;
2010
+ }
1923
2011
  function compilePattern(pattern) {
1924
2012
  try {
1925
2013
  return new RegExp(pattern);
@@ -1997,24 +2085,33 @@ function preprocessEmptyValues(content) {
1997
2085
  }
1998
2086
  return result;
1999
2087
  }
2000
- function deriveContentZodFromManifest(manifestOrFields, options = {}) {
2001
- const shape = {};
2002
- const fields3 = Array.isArray(manifestOrFields) ? manifestOrFields : manifestOrFields.fields ?? [];
2003
- for (const field of fields3) {
2004
- shape[field.id] = buildFieldSchema(field, options);
2005
- }
2006
- return z5.object(shape).catchall(z5.unknown()).passthrough();
2007
- }
2008
2088
  function createManifestValidator(manifestOrFields, options = {}) {
2009
2089
  const isDraft = options.mode === "draft";
2010
- const baseSchema = deriveContentZodFromManifest(manifestOrFields, options);
2090
+ const plans = derivePlansFromManifestOrFields(manifestOrFields);
2091
+ const baseSchema = deriveContentZodFromPlans(plans, options);
2011
2092
  if (isDraft) {
2012
- return z5.preprocess(preprocessEmptyValues, baseSchema);
2093
+ return z5.preprocess(
2094
+ (content) => preprocessEmptyValues(
2095
+ normalizeStoredContentValues(plans, content, options)
2096
+ ),
2097
+ baseSchema
2098
+ );
2099
+ }
2100
+ return z5.preprocess(
2101
+ (content) => normalizeStoredContentValues(plans, content, options),
2102
+ baseSchema
2103
+ );
2104
+ }
2105
+ function deriveContentZodFromPlans(plans, options) {
2106
+ const shape = {};
2107
+ for (const plan of plans) {
2108
+ shape[plan.fieldId] = fieldPlanToZod(plan, options);
2013
2109
  }
2014
- return baseSchema;
2110
+ return z5.object(shape).catchall(z5.unknown()).passthrough();
2015
2111
  }
2016
- function buildFieldSchema(field, options) {
2017
- return fieldPlanToZod(deriveFieldValidationPlan(field), options);
2112
+ function derivePlansFromManifestOrFields(manifestOrFields) {
2113
+ const fields3 = Array.isArray(manifestOrFields) ? manifestOrFields : manifestOrFields.fields ?? [];
2114
+ return deriveFieldValidationPlans(fields3);
2018
2115
  }
2019
2116
 
2020
2117
  // ../blocks/src/system/manifest/variantKey.ts
@@ -18460,7 +18557,7 @@ var cardStylingFields = [
18460
18557
  description: "Text for the event action button",
18461
18558
  required: false,
18462
18559
  multiline: false,
18463
- defaultValue: "View event",
18560
+ defaultValue: "Book now",
18464
18561
  maxLength: 40
18465
18562
  }
18466
18563
  ];
@@ -18972,6 +19069,7 @@ var eventRegistrationBlockDefinition = {
18972
19069
  limit: "50",
18973
19070
  // Get more events for selection
18974
19071
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
19072
+ readProfile: "registration",
18975
19073
  // When rendering on an event content entry page, scope the list to that entry so
18976
19074
  // the wizard always includes the current event (and avoids stale cached "all events" responses).
18977
19075
  entryId: { $bind: { from: "$root.contentEntry._entryId", fallback: "" } }
@@ -19920,7 +20018,7 @@ var eventSpotlightLayout = [
19920
20018
  columns: { $bind: { from: "content.columns", fallback: "3" } },
19921
20019
  cardVariant: { $bind: { from: "content.cardVariant", fallback: "default" } },
19922
20020
  buttonVariant: { $bind: { from: "content.buttonVariant", fallback: "primary" } },
19923
- buttonText: { $bind: { from: "content.buttonText", fallback: "View event" } },
20021
+ buttonText: { $bind: { from: "content.buttonText", fallback: "Book now" } },
19924
20022
  ctaLabel: { $bind: { from: "content.ctaLabel" } },
19925
20023
  ctaUrl: { $bind: { from: "content.ctaUrl", transforms: [{ id: "links.resolve" }] } },
19926
20024
  showVenue: { $bind: { from: "content.showVenue" } },
@@ -19964,7 +20062,8 @@ var eventSpotlightBlockDefinition = {
19964
20062
  siteId: { $bind: { from: "$root.siteId" } },
19965
20063
  limit: { $bind: { from: "content.maxEvents", fallback: "3" } },
19966
20064
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
19967
- detailLevel: "listing"
20065
+ detailLevel: "listing",
20066
+ readProfile: "spotlight"
19968
20067
  },
19969
20068
  mode: "server"
19970
20069
  }
@@ -20436,7 +20535,7 @@ var COLUMN_CLASSES = {
20436
20535
  };
20437
20536
  function getContainerClass(layout, columns) {
20438
20537
  if (layout === "compact") {
20439
- return "rb-flex rb-flex-col rb-gap-2";
20538
+ return "event-listing-compact-container rb-flex rb-flex-col rb-gap-2";
20440
20539
  }
20441
20540
  if (layout === "stack") {
20442
20541
  return "rb-flex rb-flex-col rb-gap-6";
@@ -20567,7 +20666,7 @@ function formatEventPrice(event) {
20567
20666
  }
20568
20667
  function resolveEventCta(event, buttonText) {
20569
20668
  const { isFull: isSoldOut } = getEventAvailability(event);
20570
- const defaultButtonText = event.kind === "course_session" ? "View course" : "View event";
20669
+ const defaultButtonText = event.kind === "course_session" ? "Book course" : "Book now";
20571
20670
  const effectiveButtonText = buttonText ?? defaultButtonText;
20572
20671
  if (isSoldOut) {
20573
20672
  return { label: "Sold out", href: event.path, hidden: true };
@@ -22179,7 +22278,7 @@ var eventListingBlockRuntime = defineProgressiveBlockRuntime({
22179
22278
  containerClass: getContainerClass(layout, source.columns ?? "3"),
22180
22279
  cardVariant: source.cardVariant ?? "default",
22181
22280
  buttonVariant: source.buttonVariant ?? "primary",
22182
- buttonText: source.buttonText ?? "View event",
22281
+ buttonText: source.buttonText ?? "Book now",
22183
22282
  showVenue: source.showVenue ?? true,
22184
22283
  showMap: source.showMap ?? true,
22185
22284
  showCapacity: source.showCapacity ?? true,
@@ -22426,7 +22525,7 @@ var eventListingLayout = [
22426
22525
  loadMoreText: { $bind: { from: "content.loadMoreText", fallback: "Load more events" } },
22427
22526
  cardVariant: { $bind: { from: "content.cardVariant", fallback: "default" } },
22428
22527
  buttonVariant: { $bind: { from: "content.buttonVariant", fallback: "primary" } },
22429
- buttonText: { $bind: { from: "content.buttonText", fallback: "View event" } },
22528
+ buttonText: { $bind: { from: "content.buttonText", fallback: "Book now" } },
22430
22529
  showVenue: { $bind: { from: "content.showVenue" } },
22431
22530
  showMap: { $bind: { from: "content.showMap" } },
22432
22531
  showCapacity: { $bind: { from: "content.showCapacity" } },
@@ -22504,6 +22603,7 @@ var eventListingBlockDefinition = {
22504
22603
  limit: { $bind: { from: "content.eventsPerPage", fallback: "12" } },
22505
22604
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
22506
22605
  detailLevel: "listing",
22606
+ readProfile: { $bind: { from: "content.layout", fallback: "listing-card" } },
22507
22607
  kind: { $bind: { from: "content.kind" } },
22508
22608
  eventSurface: { $bind: { from: "content.eventSurface" } },
22509
22609
  eventPresets: {
@@ -22643,7 +22743,7 @@ function buildEventCalendarDisplay(source) {
22643
22743
  ),
22644
22744
  filterVenueId: normalizeEventVenueId(source.filterVenueId),
22645
22745
  buttonVariant: source.buttonVariant ?? "primary",
22646
- buttonText: source.buttonText ?? "View event",
22746
+ buttonText: source.buttonText ?? "Book now",
22647
22747
  showVenue: source.showVenue ?? true,
22648
22748
  showMap: source.showMap ?? true,
22649
22749
  showCapacity: source.showCapacity ?? true,
@@ -22832,7 +22932,7 @@ var eventCalendarLayout = [
22832
22932
  $bind: { from: "content.buttonVariant", fallback: "primary" }
22833
22933
  },
22834
22934
  buttonText: {
22835
- $bind: { from: "content.buttonText", fallback: "View event" }
22935
+ $bind: { from: "content.buttonText", fallback: "Book now" }
22836
22936
  },
22837
22937
  emptyMessage: { $bind: { from: "content.emptyMessage" } }
22838
22938
  })
@@ -23293,6 +23393,7 @@ var eventCalendarBlockDefinition = {
23293
23393
  limit: 100,
23294
23394
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
23295
23395
  detailLevel: "listing",
23396
+ readProfile: { $bind: { from: "content.variant", fallback: "listing-card" } },
23296
23397
  // Pass filter params if configured
23297
23398
  kind: { $bind: { from: "content.kind" } },
23298
23399
  eventSurface: { $bind: { from: "content.eventSurface" } },
@@ -29624,9 +29725,9 @@ function getEmbedUrl(info) {
29624
29725
  const kind = info.kind ?? "p";
29625
29726
  return `https://www.instagram.com/${kind}/${info.id}/embed`;
29626
29727
  }
29627
- default:
29628
- return "";
29629
29728
  }
29729
+ const exhaustive = info.provider;
29730
+ return exhaustive;
29630
29731
  }
29631
29732
  function getThumbnailUrl(info) {
29632
29733
  switch (info.provider) {
@@ -29636,9 +29737,20 @@ function getThumbnailUrl(info) {
29636
29737
  return `https://vumbnail.com/${info.id}.jpg`;
29637
29738
  case "instagram":
29638
29739
  return "";
29639
- default:
29640
- return "";
29641
29740
  }
29741
+ const exhaustive = info.provider;
29742
+ return exhaustive;
29743
+ }
29744
+ function getVideoEmbedLoadingStrategy(provider) {
29745
+ switch (provider) {
29746
+ case "youtube":
29747
+ case "vimeo":
29748
+ return "native-lazy";
29749
+ case "instagram":
29750
+ return "defer-until-near-viewport";
29751
+ }
29752
+ const exhaustive = provider;
29753
+ return exhaustive;
29642
29754
  }
29643
29755
  function getVideoEmbed(url) {
29644
29756
  const info = parseVideoUrl(url);
@@ -29653,7 +29765,7 @@ function getVideoEmbed(url) {
29653
29765
  }
29654
29766
 
29655
29767
  // ../blocks/src/system/runtime/nodes/video-embed.tsx
29656
- import { jsx as jsx18 } from "react/jsx-runtime";
29768
+ import { jsx as jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
29657
29769
  var VideoEmbedNode = ({
29658
29770
  value,
29659
29771
  className,
@@ -29696,35 +29808,43 @@ var VideoEmbedNode = ({
29696
29808
  );
29697
29809
  }
29698
29810
  const title = getVideoTitle(embedInfo);
29699
- return /* @__PURE__ */ jsx18("div", { ...rest, children: /* @__PURE__ */ jsx18(
29811
+ const loadingStrategy = getVideoEmbedLoadingStrategy(embedInfo.provider);
29812
+ const shouldDeferSrc = loadingStrategy === "defer-until-near-viewport";
29813
+ return /* @__PURE__ */ jsx18("div", { ...rest, children: /* @__PURE__ */ jsxs7(
29700
29814
  "div",
29701
29815
  {
29702
29816
  className,
29817
+ "data-rb-video-embed-wrapper": shouldDeferSrc ? "true" : void 0,
29703
29818
  style: {
29704
29819
  ...style,
29705
29820
  aspectRatio: resolvedAspectRatio,
29706
29821
  position: "relative",
29707
29822
  width: "100%"
29708
29823
  },
29709
- children: /* @__PURE__ */ jsx18(
29710
- "iframe",
29711
- {
29712
- src: embedInfo.embedUrl,
29713
- title,
29714
- style: {
29715
- position: "absolute",
29716
- top: 0,
29717
- left: 0,
29718
- width: "100%",
29719
- height: "100%",
29720
- border: "none"
29721
- },
29722
- loading: "lazy",
29723
- allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
29724
- referrerPolicy: "no-referrer-when-downgrade",
29725
- allowFullScreen: true
29726
- }
29727
- )
29824
+ children: [
29825
+ /* @__PURE__ */ jsx18(
29826
+ "iframe",
29827
+ {
29828
+ src: shouldDeferSrc ? void 0 : embedInfo.embedUrl,
29829
+ title,
29830
+ loading: "lazy",
29831
+ "data-rb-video-embed-deferred": shouldDeferSrc ? "true" : void 0,
29832
+ "data-rb-video-embed-src": shouldDeferSrc ? embedInfo.embedUrl : void 0,
29833
+ style: {
29834
+ position: "absolute",
29835
+ top: 0,
29836
+ left: 0,
29837
+ width: "100%",
29838
+ height: "100%",
29839
+ border: "none"
29840
+ },
29841
+ allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
29842
+ referrerPolicy: "no-referrer-when-downgrade",
29843
+ allowFullScreen: true
29844
+ }
29845
+ ),
29846
+ shouldDeferSrc ? /* @__PURE__ */ jsx18("noscript", { children: /* @__PURE__ */ jsx18("a", { href: embedInfo.url, children: "View on Instagram" }) }) : null
29847
+ ]
29728
29848
  }
29729
29849
  ) });
29730
29850
  };
@@ -29739,9 +29859,9 @@ function getVideoTitle(info) {
29739
29859
  const label = kind === "reel" ? "reel" : kind === "tv" ? "video" : "post";
29740
29860
  return `Instagram ${label} ${info.id}`;
29741
29861
  }
29742
- default:
29743
- return "Embedded video";
29744
29862
  }
29863
+ const exhaustive = info.provider;
29864
+ return exhaustive;
29745
29865
  }
29746
29866
  function getAspectRatio(propAspectRatio, style) {
29747
29867
  const styleAspectRatio = style?.aspectRatio;
@@ -29823,7 +29943,7 @@ function getCarouselSlidesToShowCssVars(value) {
29823
29943
  }
29824
29944
 
29825
29945
  // ../blocks/src/system/runtime/nodes/carousel.server.tsx
29826
- import { jsx as jsx20, jsxs as jsxs7 } from "react/jsx-runtime";
29946
+ import { jsx as jsx20, jsxs as jsxs8 } from "react/jsx-runtime";
29827
29947
  var CarouselNodeSSR = ({
29828
29948
  blockId,
29829
29949
  children,
@@ -29842,7 +29962,7 @@ var CarouselNodeSSR = ({
29842
29962
  const resolvedSlides = resolveSlidesToShowMobile(normalizedSlidesToShow);
29843
29963
  const controlsEnabled = arrowVisibility === "never" ? false : normalizeBoolean2(showControls);
29844
29964
  const shouldSnap = transition === "slide";
29845
- return /* @__PURE__ */ jsxs7(
29965
+ return /* @__PURE__ */ jsxs8(
29846
29966
  "div",
29847
29967
  {
29848
29968
  className: clsx_default("carousel-root rb-relative", className),
@@ -29906,7 +30026,7 @@ function normalizeBoolean2(value) {
29906
30026
  }
29907
30027
 
29908
30028
  // ../blocks/src/system/runtime/nodes/accordion.server.tsx
29909
- import { jsx as jsx21, jsxs as jsxs8 } from "react/jsx-runtime";
30029
+ import { jsx as jsx21, jsxs as jsxs9 } from "react/jsx-runtime";
29910
30030
  var ACCORDION_ICONS = {
29911
30031
  Plus,
29912
30032
  Minus,
@@ -29923,7 +30043,7 @@ var AccordionNodeSSR = ({
29923
30043
  defaultValue,
29924
30044
  collapsible
29925
30045
  }) => {
29926
- return /* @__PURE__ */ jsxs8(
30046
+ return /* @__PURE__ */ jsxs9(
29927
30047
  "div",
29928
30048
  {
29929
30049
  className: clsx_default("accordion-root", className),
@@ -29953,16 +30073,16 @@ var AccordionItemNodeSSR = ({
29953
30073
  const iconConfig = ICON_CONFIG[resolvedIconStyle];
29954
30074
  const ClosedIconComponent = ACCORDION_ICONS[iconConfig.closedIcon];
29955
30075
  const OpenIconComponent = iconConfig.openIcon ? ACCORDION_ICONS[iconConfig.openIcon] : null;
29956
- return /* @__PURE__ */ jsxs8(
30076
+ return /* @__PURE__ */ jsxs9(
29957
30077
  "div",
29958
30078
  {
29959
30079
  className: clsx_default("accordion-item", className),
29960
30080
  "data-accordion-value": resolvedValue,
29961
30081
  "data-state": "closed",
29962
30082
  children: [
29963
- /* @__PURE__ */ jsxs8("div", { className: "accordion-trigger", role: "button", tabIndex: 0, "aria-expanded": "false", children: [
30083
+ /* @__PURE__ */ jsxs9("div", { className: "accordion-trigger", role: "button", tabIndex: 0, "aria-expanded": "false", children: [
29964
30084
  /* @__PURE__ */ jsx21("span", { className: "accordion-trigger-text", children: resolveNode(triggerSource) }),
29965
- /* @__PURE__ */ jsxs8("span", { className: "accordion-icon", "aria-hidden": "true", children: [
30085
+ /* @__PURE__ */ jsxs9("span", { className: "accordion-icon", "aria-hidden": "true", children: [
29966
30086
  ClosedIconComponent && /* @__PURE__ */ jsx21(ClosedIconComponent, { className: "accordion-icon-closed" }),
29967
30087
  OpenIconComponent && /* @__PURE__ */ jsx21(OpenIconComponent, { className: "accordion-icon-open" })
29968
30088
  ] })
@@ -29991,7 +30111,7 @@ function resolveNode(value) {
29991
30111
  }
29992
30112
 
29993
30113
  // ../blocks/src/system/runtime/nodes/header-section.server.tsx
29994
- import { jsx as jsx22, jsxs as jsxs9 } from "react/jsx-runtime";
30114
+ import { jsx as jsx22, jsxs as jsxs10 } from "react/jsx-runtime";
29995
30115
  function hasShrinkClasses(className) {
29996
30116
  return typeof className === "string" && className.includes("rb-header-shrink");
29997
30117
  }
@@ -29999,16 +30119,21 @@ var HeaderSectionNode = ({
29999
30119
  blockId,
30000
30120
  children,
30001
30121
  className,
30122
+ "data-preview-site-chrome-surface": previewSiteChromeSurface,
30002
30123
  ...rest
30003
30124
  }) => {
30004
30125
  const { wrapperClasses, sectionClasses } = splitPositioningClasses(className);
30005
- const wrapperClassName = `block-site-header${wrapperClasses ? ` ${wrapperClasses}` : ""}`;
30126
+ const wrapperClassName = [
30127
+ "block-site-header",
30128
+ wrapperClasses,
30129
+ previewSiteChromeSurface ? "group/site-chrome rb-relative" : ""
30130
+ ].filter(Boolean).join(" ");
30006
30131
  const asProp = rest.as;
30007
30132
  const styleProp = rest.style;
30008
30133
  const backgroundProp = typeof rest.background === "string" ? rest.background : void 0;
30009
30134
  const allowOverflowProp = typeof rest.allowOverflow === "boolean" ? rest.allowOverflow : void 0;
30010
30135
  const dataSlotProp = typeof rest["data-slot"] === "string" ? rest["data-slot"] : void 0;
30011
- return /* @__PURE__ */ jsxs9(
30136
+ return /* @__PURE__ */ jsxs10(
30012
30137
  "nav",
30013
30138
  {
30014
30139
  ...getIslandRootProps("headerSection", blockId),
@@ -30018,6 +30143,7 @@ var HeaderSectionNode = ({
30018
30143
  "data-block": "site-header",
30019
30144
  "data-block-kind": "block.site-header",
30020
30145
  "data-block-id": blockId ?? void 0,
30146
+ "data-preview-site-chrome-surface": previewSiteChromeSurface,
30021
30147
  children: [
30022
30148
  /* @__PURE__ */ jsx22(IslandPropsScript, { value: { enabled: hasShrinkClasses(className) } }),
30023
30149
  /* @__PURE__ */ jsx22(
@@ -30039,7 +30165,7 @@ var HeaderSectionNode = ({
30039
30165
  var header_section_server_default = HeaderSectionNode;
30040
30166
 
30041
30167
  // ../blocks/src/system/runtime/nodes/spinner.tsx
30042
- import { jsx as jsx23, jsxs as jsxs10 } from "react/jsx-runtime";
30168
+ import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
30043
30169
  function resolveColorStyle(color) {
30044
30170
  switch (color) {
30045
30171
  case "inherit":
@@ -30066,7 +30192,7 @@ function SpinnerNode({
30066
30192
  const accessibilityProps = srLabel ? { role: "status", "aria-live": "polite" } : hasExplicitAriaLabel ? {} : { "aria-hidden": true };
30067
30193
  const trackStroke = color === "inherit" ? "currentColor" : "var(--rb-spinner-track-color)";
30068
30194
  const trackOpacity = color === "inherit" ? 0.25 : 1;
30069
- return /* @__PURE__ */ jsxs10(
30195
+ return /* @__PURE__ */ jsxs11(
30070
30196
  "span",
30071
30197
  {
30072
30198
  ...accessibilityProps,
@@ -30082,7 +30208,7 @@ function SpinnerNode({
30082
30208
  },
30083
30209
  ...rest,
30084
30210
  children: [
30085
- /* @__PURE__ */ jsxs10("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
30211
+ /* @__PURE__ */ jsxs11("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
30086
30212
  /* @__PURE__ */ jsx23(
30087
30213
  "circle",
30088
30214
  {
@@ -30466,7 +30592,7 @@ function buildBookingFormInteractiveIslandProps(props2) {
30466
30592
  }
30467
30593
 
30468
30594
  // ../blocks/src/system/runtime/nodes/booking-form.server.tsx
30469
- import { Fragment as Fragment2, jsx as jsx24, jsxs as jsxs11 } from "react/jsx-runtime";
30595
+ import { Fragment as Fragment2, jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
30470
30596
  function BookingFormSSR({
30471
30597
  blockId,
30472
30598
  siteId,
@@ -30510,14 +30636,14 @@ function BookingFormSSR({
30510
30636
  className
30511
30637
  });
30512
30638
  const display = islandProps.render.display;
30513
- return /* @__PURE__ */ jsxs11(
30639
+ return /* @__PURE__ */ jsxs12(
30514
30640
  "div",
30515
30641
  {
30516
30642
  className: `booking-form-ssr ${className ?? ""}`.trim(),
30517
30643
  ...getIslandRootProps("booking-form", blockId),
30518
30644
  children: [
30519
30645
  /* @__PURE__ */ jsx24(IslandPropsScript, { value: islandProps }),
30520
- /* @__PURE__ */ jsx24("div", { className: "booking-form-ssr__summary", children: display.state === "missing" ? /* @__PURE__ */ jsx24("p", { className: "booking-form-ssr__error", children: display.message }) : /* @__PURE__ */ jsxs11(Fragment2, { children: [
30646
+ /* @__PURE__ */ jsx24("div", { className: "booking-form-ssr__summary", children: display.state === "missing" ? /* @__PURE__ */ jsx24("p", { className: "booking-form-ssr__error", children: display.message }) : /* @__PURE__ */ jsxs12(Fragment2, { children: [
30521
30647
  /* @__PURE__ */ jsx24("strong", { children: display.submitLabel }),
30522
30648
  display.successMessage ? /* @__PURE__ */ jsx24("p", { className: "booking-form-ssr__success", children: display.successMessage }) : null
30523
30649
  ] }) }),
@@ -30627,22 +30753,22 @@ function filterMembershipsForEvent(siteMemberships, event) {
30627
30753
  }
30628
30754
 
30629
30755
  // ../blocks/src/system/runtime/nodes/event-details/CoursePricingDisplay.tsx
30630
- import { jsx as jsx25, jsxs as jsxs12 } from "react/jsx-runtime";
30756
+ import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
30631
30757
  function CoursePricingDisplay({
30632
30758
  pricing,
30633
30759
  acceptedItems
30634
30760
  }) {
30635
- return /* @__PURE__ */ jsxs12("div", { className: "rb-mt-6", children: [
30761
+ return /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
30636
30762
  /* @__PURE__ */ jsx25("div", { className: "rb-label rb-mb-2", children: pricing.selectableOptions.length > 1 ? "Pricing" : "Cost" }),
30637
- pricing.selectableOptions.length > 1 ? /* @__PURE__ */ jsx25("div", { className: "rb-flex rb-flex-col rb-gap-2", children: pricing.selectableOptions.map((option) => /* @__PURE__ */ jsxs12("div", { children: [
30638
- /* @__PURE__ */ jsxs12("strong", { children: [
30763
+ pricing.selectableOptions.length > 1 ? /* @__PURE__ */ jsx25("div", { className: "rb-flex rb-flex-col rb-gap-2", children: pricing.selectableOptions.map((option) => /* @__PURE__ */ jsxs13("div", { children: [
30764
+ /* @__PURE__ */ jsxs13("strong", { children: [
30639
30765
  option.name,
30640
30766
  ": ",
30641
30767
  formatCoursePriceAmount(option.priceAmount, pricing.currency)
30642
30768
  ] }),
30643
30769
  option.description ? /* @__PURE__ */ jsx25("p", { className: "rb-caption status-muted", children: option.description }) : null
30644
30770
  ] }, option.id)) }) : /* @__PURE__ */ jsx25("p", { children: /* @__PURE__ */ jsx25("strong", { children: formatCoursePriceDisplay(pricing.display) }) }),
30645
- acceptedItems.length > 0 ? /* @__PURE__ */ jsxs12("p", { className: "rb-caption rb-mt-1", children: [
30771
+ acceptedItems.length > 0 ? /* @__PURE__ */ jsxs13("p", { className: "rb-caption rb-mt-1", children: [
30646
30772
  "You can also attend with: ",
30647
30773
  acceptedItems.join(", ")
30648
30774
  ] }) : null
@@ -30650,7 +30776,7 @@ function CoursePricingDisplay({
30650
30776
  }
30651
30777
 
30652
30778
  // ../blocks/src/system/runtime/nodes/event-details/view.tsx
30653
- import { Fragment as Fragment3, jsx as jsx26, jsxs as jsxs13 } from "react/jsx-runtime";
30779
+ import { Fragment as Fragment3, jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
30654
30780
  function formatAutoApplyDiscountLine(preview, currency) {
30655
30781
  const rate = preview.discountType === "percent" ? `${preview.discountPercent}% off` : `${formatCoursePriceAmount(preview.discountAmountCents, currency)} off`;
30656
30782
  const label = preview.publicLabel.trim() || "Discount";
@@ -30701,10 +30827,10 @@ function EventDetailsView({
30701
30827
  acceptedItems.push(...applicableMemberships.map((m) => m.name));
30702
30828
  }
30703
30829
  const hasAcceptedItems = acceptedItems.length > 0;
30704
- return /* @__PURE__ */ jsxs13("div", { className: "rb-flex rb-flex-col rb-gap-6 rb-text-left", children: [
30705
- /* @__PURE__ */ jsxs13("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
30706
- /* @__PURE__ */ jsxs13("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
30707
- /* @__PURE__ */ jsxs13("div", { children: [
30830
+ return /* @__PURE__ */ jsxs14("div", { className: "rb-flex rb-flex-col rb-gap-6 rb-text-left", children: [
30831
+ /* @__PURE__ */ jsxs14("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
30832
+ /* @__PURE__ */ jsxs14("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
30833
+ /* @__PURE__ */ jsxs14("div", { children: [
30708
30834
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: selection.mode === "next" ? "Next date" : "Date" }),
30709
30835
  (() => {
30710
30836
  const { date, timeRange } = formatEventDateParts({
@@ -30712,20 +30838,20 @@ function EventDetailsView({
30712
30838
  endsAt: selected.endsAt,
30713
30839
  timeZone: selection.timeZone
30714
30840
  });
30715
- return /* @__PURE__ */ jsxs13(Fragment3, { children: [
30841
+ return /* @__PURE__ */ jsxs14(Fragment3, { children: [
30716
30842
  /* @__PURE__ */ jsx26("p", { children: /* @__PURE__ */ jsx26("strong", { children: date }) }),
30717
30843
  /* @__PURE__ */ jsx26("p", { className: "rb-caption", children: timeRange })
30718
30844
  ] });
30719
30845
  })()
30720
30846
  ] }),
30721
- venue ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
30847
+ venue ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
30722
30848
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Venue" }),
30723
30849
  /* @__PURE__ */ jsx26("p", { children: /* @__PURE__ */ jsx26("strong", { children: venue.name }) }),
30724
30850
  venue.address ? /* @__PURE__ */ jsx26("p", { className: "rb-caption", children: venue.address }) : null
30725
30851
  ] }) : null,
30726
- teamMembers.length > 0 ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
30852
+ teamMembers.length > 0 ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
30727
30853
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Team members" }),
30728
- /* @__PURE__ */ jsx26("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs13("div", { children: [
30854
+ /* @__PURE__ */ jsx26("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs14("div", { children: [
30729
30855
  /* @__PURE__ */ jsx26("p", { children: /* @__PURE__ */ jsx26(
30730
30856
  TeamMemberName,
30731
30857
  {
@@ -30736,7 +30862,7 @@ function EventDetailsView({
30736
30862
  teamMember.summary ? /* @__PURE__ */ jsx26("p", { className: "rb-caption status-muted", children: teamMember.summary }) : null
30737
30863
  ] }, teamMember.id)) })
30738
30864
  ] }) : null,
30739
- isDropIn ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
30865
+ isDropIn ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
30740
30866
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Registration" }),
30741
30867
  /* @__PURE__ */ jsx26("p", { className: "rb-caption status-muted", children: "No registration required - just show up" })
30742
30868
  ] }) : shouldShowCoursePricing ? /* @__PURE__ */ jsx26(
@@ -30745,22 +30871,22 @@ function EventDetailsView({
30745
30871
  pricing: coursePricing,
30746
30872
  acceptedItems
30747
30873
  }
30748
- ) : shouldShowEventCost ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
30874
+ ) : shouldShowEventCost ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
30749
30875
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Cost" }),
30750
30876
  eventPrice !== null ? /* @__PURE__ */ jsx26("p", { children: /* @__PURE__ */ jsx26("strong", { children: formatCoursePriceAmount(eventPrice, selected.currency ?? "USD") }) }) : /* @__PURE__ */ jsx26("p", { className: "rb-caption status-muted", children: "See checkout for details" }),
30751
30877
  autoApplyDiscount ? /* @__PURE__ */ jsx26("p", { className: "rb-caption rb-mt-1", children: formatAutoApplyDiscountLine(autoApplyDiscount, selected.currency ?? "USD") }) : null,
30752
- hasAcceptedItems ? /* @__PURE__ */ jsxs13("p", { className: "rb-caption rb-mt-1", children: [
30878
+ hasAcceptedItems ? /* @__PURE__ */ jsxs14("p", { className: "rb-caption rb-mt-1", children: [
30753
30879
  "You can also attend with: ",
30754
30880
  acceptedItems.join(", ")
30755
30881
  ] }) : null
30756
- ] }) : hasAcceptedItems ? /* @__PURE__ */ jsx26("div", { className: "rb-mt-6", children: /* @__PURE__ */ jsxs13("p", { className: "rb-caption", children: [
30882
+ ] }) : hasAcceptedItems ? /* @__PURE__ */ jsx26("div", { className: "rb-mt-6", children: /* @__PURE__ */ jsxs14("p", { className: "rb-caption", children: [
30757
30883
  "You can also attend with: ",
30758
30884
  acceptedItems.join(", ")
30759
30885
  ] }) }) : null
30760
30886
  ] }),
30761
30887
  showMap && renderVenueMap && venue?.location ? /* @__PURE__ */ jsx26(Fragment3, { children: renderVenueMap({ venueName: venue.name, location: venue.location, className: mapClassName, height: mapHeight }) }) : null
30762
30888
  ] }),
30763
- showOtherDates && selection.otherDates.length > 0 ? /* @__PURE__ */ jsxs13("div", { children: [
30889
+ showOtherDates && selection.otherDates.length > 0 ? /* @__PURE__ */ jsxs14("div", { children: [
30764
30890
  /* @__PURE__ */ jsx26("div", { className: "rb-label", children: "Other dates" }),
30765
30891
  /* @__PURE__ */ jsx26("div", { className: "rb-mt-2 rb-tiles-grid", children: selection.otherDates.map((e) => /* @__PURE__ */ jsx26(
30766
30892
  "a",
@@ -30783,7 +30909,7 @@ function EventDetailsView({
30783
30909
  }
30784
30910
 
30785
30911
  // ../blocks/src/system/runtime/nodes/event-details.server.tsx
30786
- import { jsx as jsx27, jsxs as jsxs14 } from "react/jsx-runtime";
30912
+ import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
30787
30913
  function EventDetailsSSR({
30788
30914
  blockId,
30789
30915
  occurrenceContext,
@@ -30812,7 +30938,7 @@ function EventDetailsSSR({
30812
30938
  const membershipsArray = siteMemberships?.memberships ?? null;
30813
30939
  const applicablePasses = filterPassesForEvent(passesArray, selection.selected);
30814
30940
  const applicableMemberships = filterMembershipsForEvent(membershipsArray, selection.selected);
30815
- return /* @__PURE__ */ jsxs14(
30941
+ return /* @__PURE__ */ jsxs15(
30816
30942
  "div",
30817
30943
  {
30818
30944
  className: `event-details ${className ?? ""}`.trim(),
@@ -30878,7 +31004,7 @@ function EventDetailsSSR({
30878
31004
  var event_details_server_default = EventDetailsSSR;
30879
31005
 
30880
31006
  // ../blocks/src/system/runtime/nodes/location-map.view.tsx
30881
- import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
31007
+ import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
30882
31008
  function LocationMapView({
30883
31009
  addressText,
30884
31010
  location: location2,
@@ -30894,7 +31020,7 @@ function LocationMapView({
30894
31020
  if (!location2 && !addressText && !directionsUrl) {
30895
31021
  return /* @__PURE__ */ jsx28("p", { className: "rb-caption", style: textColorStyle("mutedText"), children: unresolvedMessage ?? "Location details coming soon." });
30896
31022
  }
30897
- return /* @__PURE__ */ jsxs15("div", { className: "rb-flex rb-flex-col rb-gap-4 rb-text-left", children: [
31023
+ return /* @__PURE__ */ jsxs16("div", { className: "rb-flex rb-flex-col rb-gap-4 rb-text-left", children: [
30898
31024
  location2 && renderMap ? renderMap({
30899
31025
  addressText,
30900
31026
  location: location2,
@@ -30922,11 +31048,11 @@ function LocationMapView({
30922
31048
  }
30923
31049
 
30924
31050
  // ../blocks/src/system/runtime/nodes/location-map.server.tsx
30925
- import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
31051
+ import { jsx as jsx29, jsxs as jsxs17 } from "react/jsx-runtime";
30926
31052
  function LocationMapSSR(props2) {
30927
31053
  const normalized = normalizeLocationMapProps(props2);
30928
31054
  const hydrationProps = toLocationMapHydrationProps(props2);
30929
- return /* @__PURE__ */ jsxs16(
31055
+ return /* @__PURE__ */ jsxs17(
30930
31056
  "div",
30931
31057
  {
30932
31058
  className: `location-map ${normalized.className ?? ""}`.trim(),
@@ -31081,7 +31207,7 @@ function formatCourseDateRange(range) {
31081
31207
  }
31082
31208
 
31083
31209
  // ../blocks/src/system/runtime/nodes/course-details/view.tsx
31084
- import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
31210
+ import { jsx as jsx30, jsxs as jsxs18 } from "react/jsx-runtime";
31085
31211
  function TeamMemberName2({
31086
31212
  name,
31087
31213
  profilePath
@@ -31116,14 +31242,14 @@ function CourseDetailsView(props2) {
31116
31242
  const hasMoreSessions = sessionLimit !== "all" && sortedSessions.length > sessionLimit;
31117
31243
  const descriptionDoc = showDescription ? coerceRichTextDoc(course.description) : null;
31118
31244
  const teamMembers = course.teamMembers ?? [];
31119
- return /* @__PURE__ */ jsxs17("div", { className: "rb-flex rb-flex-col rb-gap-6", children: [
31245
+ return /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-6", children: [
31120
31246
  showTitle && /* @__PURE__ */ jsx30("h3", { children: course.title }),
31121
- /* @__PURE__ */ jsxs17("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
31122
- /* @__PURE__ */ jsxs17("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31123
- showPrice && /* @__PURE__ */ jsxs17("div", { children: [
31247
+ /* @__PURE__ */ jsxs18("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
31248
+ /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31249
+ showPrice && /* @__PURE__ */ jsxs18("div", { children: [
31124
31250
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: pricing.selectableOptions.length > 0 ? "Pricing" : "Price" }),
31125
- pricing.selectableOptions.length > 1 ? /* @__PURE__ */ jsx30("div", { className: "rb-flex rb-flex-col rb-gap-2", children: pricing.selectableOptions.map((option) => /* @__PURE__ */ jsxs17("div", { children: [
31126
- /* @__PURE__ */ jsxs17("strong", { children: [
31251
+ pricing.selectableOptions.length > 1 ? /* @__PURE__ */ jsx30("div", { className: "rb-flex rb-flex-col rb-gap-2", children: pricing.selectableOptions.map((option) => /* @__PURE__ */ jsxs18("div", { children: [
31252
+ /* @__PURE__ */ jsxs18("strong", { children: [
31127
31253
  option.name,
31128
31254
  ": ",
31129
31255
  formatCoursePriceAmount(
@@ -31134,17 +31260,17 @@ function CourseDetailsView(props2) {
31134
31260
  option.description ? /* @__PURE__ */ jsx30("p", { className: "rb-caption status-muted", children: option.description }) : null
31135
31261
  ] }, option.id)) }) : /* @__PURE__ */ jsx30("div", { children: /* @__PURE__ */ jsx30("strong", { children: formatCoursePriceDisplay(pricing.display) }) })
31136
31262
  ] }),
31137
- showCapacity && /* @__PURE__ */ jsxs17("div", { children: [
31263
+ showCapacity && /* @__PURE__ */ jsxs18("div", { children: [
31138
31264
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Spots" }),
31139
31265
  /* @__PURE__ */ jsx30("div", { children: /* @__PURE__ */ jsx30("strong", { children: course.enrollmentCapacity === null ? "Unlimited" : `${course.availableSpots ?? Math.max(0, course.enrollmentCapacity - course.enrolledCount)} left` }) })
31140
31266
  ] }),
31141
- showMembershipNote && course.acceptsMemberships && /* @__PURE__ */ jsxs17("div", { children: [
31267
+ showMembershipNote && course.acceptsMemberships && /* @__PURE__ */ jsxs18("div", { children: [
31142
31268
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Membership" }),
31143
31269
  /* @__PURE__ */ jsx30("p", { className: "rb-caption status-muted", children: "Eligible memberships can be used for free enrollment" })
31144
31270
  ] }),
31145
- teamMembers.length > 0 && /* @__PURE__ */ jsxs17("div", { children: [
31271
+ teamMembers.length > 0 && /* @__PURE__ */ jsxs18("div", { children: [
31146
31272
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Team members" }),
31147
- /* @__PURE__ */ jsx30("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs17("div", { children: [
31273
+ /* @__PURE__ */ jsx30("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs18("div", { children: [
31148
31274
  /* @__PURE__ */ jsx30("p", { children: /* @__PURE__ */ jsx30(
31149
31275
  TeamMemberName2,
31150
31276
  {
@@ -31156,23 +31282,23 @@ function CourseDetailsView(props2) {
31156
31282
  ] }, teamMember.id)) })
31157
31283
  ] })
31158
31284
  ] }),
31159
- /* @__PURE__ */ jsxs17("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31160
- showVenue && course.venue && /* @__PURE__ */ jsxs17("div", { children: [
31285
+ /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31286
+ showVenue && course.venue && /* @__PURE__ */ jsxs18("div", { children: [
31161
31287
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Venue" }),
31162
31288
  /* @__PURE__ */ jsx30("h3", { children: course.venue.name }),
31163
31289
  course.venue.address && /* @__PURE__ */ jsx30("p", { className: "rb-caption status-muted", children: course.venue.address })
31164
31290
  ] }),
31165
- showEnrollmentStatus && /* @__PURE__ */ jsxs17("div", { children: [
31291
+ showEnrollmentStatus && /* @__PURE__ */ jsxs18("div", { children: [
31166
31292
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Enrollment" }),
31167
31293
  /* @__PURE__ */ jsx30("p", { className: course.enrollmentOpen ? "cd-enrollment--open" : "cd-enrollment--closed", children: /* @__PURE__ */ jsx30("strong", { children: course.enrollmentOpen ? "Open" : "Closed" }) })
31168
31294
  ] })
31169
31295
  ] })
31170
31296
  ] }),
31171
31297
  descriptionDoc && /* @__PURE__ */ jsx30("div", { className: "cd-description", children: /* @__PURE__ */ jsx30(RichText, { doc: descriptionDoc }) }),
31172
- showSessions && visibleSessions.length > 0 && /* @__PURE__ */ jsxs17("div", { children: [
31298
+ showSessions && visibleSessions.length > 0 && /* @__PURE__ */ jsxs18("div", { children: [
31173
31299
  /* @__PURE__ */ jsx30("div", { className: "rb-label", children: "Sessions" }),
31174
31300
  /* @__PURE__ */ jsx30("div", { className: "rb-mt-2 rb-tiles-grid", children: visibleSessions.map((s) => /* @__PURE__ */ jsx30("div", { className: "rb-tile", children: /* @__PURE__ */ jsx30(DateTimeTile, { startsAt: s.startsAt, endsAt: s.endsAt }) }, s.id)) }),
31175
- hasMoreSessions && /* @__PURE__ */ jsxs17("p", { className: "cd-sessions__more", children: [
31301
+ hasMoreSessions && /* @__PURE__ */ jsxs18("p", { className: "cd-sessions__more", children: [
31176
31302
  "Showing ",
31177
31303
  visibleSessions.length,
31178
31304
  " of ",
@@ -31184,7 +31310,7 @@ function CourseDetailsView(props2) {
31184
31310
  }
31185
31311
 
31186
31312
  // ../blocks/src/system/runtime/nodes/course-details.server.tsx
31187
- import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
31313
+ import { jsx as jsx31, jsxs as jsxs19 } from "react/jsx-runtime";
31188
31314
  function CourseDetailsSSR({
31189
31315
  courses,
31190
31316
  contentEntry,
@@ -31222,7 +31348,7 @@ function CourseDetailsSSR({
31222
31348
  const pastRuns = scopedWithRange.filter(({ range }) => Boolean(range.end && range.end <= now)).sort((a, b) => (b.range.end?.getTime() ?? 0) - (a.range.end?.getTime() ?? 0));
31223
31349
  const lastPastRun = pastRuns[0] ?? null;
31224
31350
  const nonPastRuns = scopedSorted.filter(({ range }) => !(range.end && range.end <= now));
31225
- return /* @__PURE__ */ jsxs18("div", { className: `course-details ${className ?? ""}`.trim(), "data-block": "course-details", children: [
31351
+ return /* @__PURE__ */ jsxs19("div", { className: `course-details ${className ?? ""}`.trim(), "data-block": "course-details", children: [
31226
31352
  selection.selected ? /* @__PURE__ */ jsx31(
31227
31353
  CourseDetailsView,
31228
31354
  {
@@ -31237,8 +31363,8 @@ function CourseDetailsSSR({
31237
31363
  showEnrollmentStatus,
31238
31364
  showMembershipNote
31239
31365
  }
31240
- ) : selection.scoped.length > 0 ? /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-3", children: [
31241
- /* @__PURE__ */ jsxs18("div", { children: [
31366
+ ) : selection.scoped.length > 0 ? /* @__PURE__ */ jsxs19("div", { className: "rb-flex rb-flex-col rb-gap-3", children: [
31367
+ /* @__PURE__ */ jsxs19("div", { children: [
31242
31368
  /* @__PURE__ */ jsx31("div", { className: "rb-label rb-mb-2", children: "Upcoming runs" }),
31243
31369
  /* @__PURE__ */ jsx31("p", { className: "rb-caption status-muted", children: "Choose a run to see sessions and details." })
31244
31370
  ] }),
@@ -31247,15 +31373,15 @@ function CourseDetailsSSR({
31247
31373
  const end = range.end;
31248
31374
  const isInProgress = Boolean(start && end && start <= now && end > now);
31249
31375
  const href = basePath ? `${basePath.replace(/\/$/, "")}/${course.slug}` : null;
31250
- return /* @__PURE__ */ jsx31("li", { className: "rb-rounded-md rb-border rb-p-3", children: /* @__PURE__ */ jsx31("div", { className: "rb-flex rb-flex-col rb-gap-1", children: /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-items-center rb-justify-between rb-gap-3", children: [
31251
- /* @__PURE__ */ jsxs18("div", { className: "rb-min-w-0", children: [
31376
+ return /* @__PURE__ */ jsx31("li", { className: "rb-rounded-md rb-border rb-p-3", children: /* @__PURE__ */ jsx31("div", { className: "rb-flex rb-flex-col rb-gap-1", children: /* @__PURE__ */ jsxs19("div", { className: "rb-flex rb-items-center rb-justify-between rb-gap-3", children: [
31377
+ /* @__PURE__ */ jsxs19("div", { className: "rb-min-w-0", children: [
31252
31378
  href ? /* @__PURE__ */ jsx31("a", { href, className: "rb-truncate", children: /* @__PURE__ */ jsx31("strong", { children: course.title }) }) : /* @__PURE__ */ jsx31("div", { className: "rb-truncate", children: /* @__PURE__ */ jsx31("strong", { children: course.title }) }),
31253
31379
  /* @__PURE__ */ jsx31("div", { className: "rb-caption status-muted", children: formatCourseDateRange(range) })
31254
31380
  ] }),
31255
31381
  /* @__PURE__ */ jsx31("div", { className: "rb-caption status-muted rb-shrink-0", children: course.enrollmentOpen ? "Enrollment open" : isInProgress ? "Currently in progress" : "Enrollment closed" })
31256
31382
  ] }) }) }, course.id);
31257
31383
  }) }) : /* @__PURE__ */ jsx31("p", { className: "rb-caption status-muted", children: "No upcoming runs." }),
31258
- lastPastRun ? /* @__PURE__ */ jsxs18("div", { className: "rb-caption status-muted", children: [
31384
+ lastPastRun ? /* @__PURE__ */ jsxs19("div", { className: "rb-caption status-muted", children: [
31259
31385
  "Last run: ",
31260
31386
  /* @__PURE__ */ jsx31("strong", { children: lastPastRun.course.title }),
31261
31387
  " (",
@@ -31283,14 +31409,14 @@ function CourseDetailsSSR({
31283
31409
  var course_details_server_default = CourseDetailsSSR;
31284
31410
 
31285
31411
  // ../blocks/src/system/runtime/nodes/events/EventSpotlight.tsx
31286
- import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
31412
+ import { jsx as jsx32, jsxs as jsxs20 } from "react/jsx-runtime";
31287
31413
  var EventSpotlight = ({
31288
31414
  events,
31289
31415
  layout = "grid",
31290
31416
  columns = "3",
31291
31417
  cardVariant = "default",
31292
31418
  buttonVariant = "primary",
31293
- buttonText = "View event",
31419
+ buttonText = "Book now",
31294
31420
  ctaLabel,
31295
31421
  ctaUrl,
31296
31422
  showVenue = true,
@@ -31306,7 +31432,7 @@ var EventSpotlight = ({
31306
31432
  const containerClass = getContainerClass(layout, columns);
31307
31433
  const cardOrientation = getCardOrientation(layout);
31308
31434
  const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
31309
- return /* @__PURE__ */ jsxs19("div", { className: `event-spotlight-section ${className || ""}`, "data-block": "event-spotlight", children: [
31435
+ return /* @__PURE__ */ jsxs20("div", { className: `event-spotlight-section ${className || ""}`, "data-block": "event-spotlight", children: [
31310
31436
  /* @__PURE__ */ jsx32("div", { className: `event-spotlight ${containerClass}`, children: normalizedEvents.map((event) => /* @__PURE__ */ jsx32(
31311
31437
  EventCard,
31312
31438
  {
@@ -31444,7 +31570,7 @@ function buildEventCombinedDisplay(source) {
31444
31570
  showMap: source.showMap ?? true,
31445
31571
  showCapacity: source.showCapacity ?? true,
31446
31572
  buttonVariant: source.buttonVariant ?? "primary",
31447
- buttonText: source.buttonText ?? "View event",
31573
+ buttonText: source.buttonText ?? "Book now",
31448
31574
  emptyMessage: source.emptyMessage ?? "No upcoming events scheduled."
31449
31575
  };
31450
31576
  }
@@ -31545,7 +31671,7 @@ function renderEventListItem(event, display) {
31545
31671
  }
31546
31672
 
31547
31673
  // ../blocks/src/system/runtime/nodes/events/EventCombined.server.tsx
31548
- import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
31674
+ import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
31549
31675
  var EventCombinedSSR = ({
31550
31676
  blockId,
31551
31677
  ...source
@@ -31554,7 +31680,7 @@ var EventCombinedSSR = ({
31554
31680
  const listDisplay = buildEventCombinedListingDisplay(render);
31555
31681
  const islandProps = buildEventCombinedInteractiveIslandProps(source);
31556
31682
  const ssrEmptyMessage = render.hydration.prefetchedEvents ? render.display.emptyMessage : listDisplay.loadingMessage;
31557
- return /* @__PURE__ */ jsxs20(
31683
+ return /* @__PURE__ */ jsxs21(
31558
31684
  "div",
31559
31685
  {
31560
31686
  className: `event-combined ${render.display.className || ""}`,
@@ -31562,7 +31688,7 @@ var EventCombinedSSR = ({
31562
31688
  ...getIslandRootProps("event-combined", blockId),
31563
31689
  children: [
31564
31690
  /* @__PURE__ */ jsx34(IslandPropsScript, { value: islandProps }),
31565
- /* @__PURE__ */ jsxs20("div", { className: "nav-tabs", role: "tablist", children: [
31691
+ /* @__PURE__ */ jsxs21("div", { className: "nav-tabs", role: "tablist", children: [
31566
31692
  /* @__PURE__ */ jsx34(
31567
31693
  "button",
31568
31694
  {
@@ -31591,7 +31717,7 @@ var EventCombinedSSR = ({
31591
31717
  };
31592
31718
 
31593
31719
  // ../blocks/src/system/runtime/nodes/commerce/shared/view.tsx
31594
- import { Fragment as Fragment4, jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
31720
+ import { Fragment as Fragment4, jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
31595
31721
  function ProductBadgesView({ badges }) {
31596
31722
  if (badges.length === 0) return null;
31597
31723
  return /* @__PURE__ */ jsx35("div", { className: "rb-flex rb-flex-wrap rb-gap-2", children: badges.map((badge) => /* @__PURE__ */ jsx35(
@@ -31606,7 +31732,7 @@ function ProductBadgesView({ badges }) {
31606
31732
  function VariantSelectView(props2) {
31607
31733
  const { options, selectedVariantId, disabled = false, onChange } = props2;
31608
31734
  if (options.length === 0) return null;
31609
- return /* @__PURE__ */ jsxs21("label", { className: "rb-flex rb-flex-col rb-gap-1", children: [
31735
+ return /* @__PURE__ */ jsxs22("label", { className: "rb-flex rb-flex-col rb-gap-1", children: [
31610
31736
  /* @__PURE__ */ jsx35("span", { className: "rb-label", children: "Variant" }),
31611
31737
  /* @__PURE__ */ jsx35(
31612
31738
  "select",
@@ -31615,7 +31741,7 @@ function VariantSelectView(props2) {
31615
31741
  value: selectedVariantId ?? "",
31616
31742
  disabled,
31617
31743
  onChange: onChange ? (event) => onChange(event.target.value || null) : void 0,
31618
- children: options.map((variant) => /* @__PURE__ */ jsxs21("option", { value: variant.id, children: [
31744
+ children: options.map((variant) => /* @__PURE__ */ jsxs22("option", { value: variant.id, children: [
31619
31745
  variant.label,
31620
31746
  " ",
31621
31747
  variant.soldOut ? "(Sold out)" : ""
@@ -31626,12 +31752,12 @@ function VariantSelectView(props2) {
31626
31752
  }
31627
31753
  function ProductCardView(props2) {
31628
31754
  const { display, layout, variantControl, actions, feedback } = props2;
31629
- return /* @__PURE__ */ jsxs21("article", { className: `rb-flex rb-gap-4 rb-rounded-2xl rb-border rb-p-4 ${layout === "list" ? "rb-flex-row" : "rb-flex-col"}`, children: [
31755
+ return /* @__PURE__ */ jsxs22("article", { className: `rb-flex rb-gap-4 rb-rounded-2xl rb-border rb-p-4 ${layout === "list" ? "rb-flex-row" : "rb-flex-col"}`, children: [
31630
31756
  display.image ? /* @__PURE__ */ jsx35("a", { href: display.path ?? void 0, className: "rb-block rb-overflow-hidden rb-rounded-xl rb-border", children: /* @__PURE__ */ jsx35("img", { src: display.image.url, alt: display.image.alt ?? "", className: "rb-h-48 rb-w-full rb-object-cover" }) }) : null,
31631
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-1 rb-flex-col rb-gap-3", children: [
31632
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
31633
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-items-start rb-justify-between rb-gap-3", children: [
31634
- /* @__PURE__ */ jsxs21("div", { children: [
31757
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-1 rb-flex-col rb-gap-3", children: [
31758
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
31759
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-items-start rb-justify-between rb-gap-3", children: [
31760
+ /* @__PURE__ */ jsxs22("div", { children: [
31635
31761
  display.path ? /* @__PURE__ */ jsx35("a", { href: display.path, children: /* @__PURE__ */ jsx35("h3", { children: display.title }) }) : /* @__PURE__ */ jsx35("h3", { children: display.title }),
31636
31762
  display.summary ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.summary }) : null
31637
31763
  ] }),
@@ -31648,7 +31774,7 @@ function ProductCardView(props2) {
31648
31774
  }
31649
31775
  function ProductListSectionView(props2) {
31650
31776
  const { display, children } = props2;
31651
- return /* @__PURE__ */ jsxs21("div", { className: `shop shop--product-list ${display.className ?? ""}`.trim(), "data-block": "shop", children: [
31777
+ return /* @__PURE__ */ jsxs22("div", { className: `shop shop--product-list ${display.className ?? ""}`.trim(), "data-block": "shop", children: [
31652
31778
  display.heading ? /* @__PURE__ */ jsx35("h2", { children: display.heading }) : null,
31653
31779
  display.state === "empty" ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.emptyMessage }) : /* @__PURE__ */ jsx35(
31654
31780
  "div",
@@ -31665,18 +31791,18 @@ function ProductDetailView(props2) {
31665
31791
  if (display.state === "empty") {
31666
31792
  return /* @__PURE__ */ jsx35("div", { className: `shop shop--product-detail ${display.className ?? ""}`.trim(), "data-block": "shop", children: /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.emptyMessage }) });
31667
31793
  }
31668
- return /* @__PURE__ */ jsxs21("div", { className: `shop shop--product-detail rb-grid rb-gap-6 rb-md-grid-cols-2 ${display.className ?? ""}`.trim(), "data-block": "shop", children: [
31794
+ return /* @__PURE__ */ jsxs22("div", { className: `shop shop--product-detail rb-grid rb-gap-6 rb-md-grid-cols-2 ${display.className ?? ""}`.trim(), "data-block": "shop", children: [
31669
31795
  /* @__PURE__ */ jsx35("div", { className: "rb-flex rb-flex-col rb-gap-4", children: gallery }),
31670
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31796
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31671
31797
  display.heading ? /* @__PURE__ */ jsx35("p", { className: "rb-label", children: display.heading }) : null,
31672
- /* @__PURE__ */ jsxs21("div", { children: [
31798
+ /* @__PURE__ */ jsxs22("div", { children: [
31673
31799
  /* @__PURE__ */ jsx35("h2", { children: display.title }),
31674
31800
  /* @__PURE__ */ jsx35("div", { className: "rb-mt-2", children: /* @__PURE__ */ jsx35("strong", { children: display.priceLabel }) })
31675
31801
  ] }),
31676
31802
  /* @__PURE__ */ jsx35(ProductBadgesView, { badges: display.badges }),
31677
31803
  display.summary ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.summary }) : null,
31678
31804
  variantControl,
31679
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-items-center rb-gap-3", children: [
31805
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-items-center rb-gap-3", children: [
31680
31806
  actions,
31681
31807
  display.categoryLabel ? /* @__PURE__ */ jsx35("span", { className: "rb-caption status-muted", children: display.categoryLabel }) : null
31682
31808
  ] }),
@@ -31702,15 +31828,15 @@ function ProductGalleryFrameView(props2) {
31702
31828
  return /* @__PURE__ */ jsx35(Fragment4, { children: renderCarousel(slides) });
31703
31829
  }
31704
31830
  function PassCardView(props2) {
31705
- return /* @__PURE__ */ jsxs21("article", { className: "shop__card shop__card--pass", children: [
31706
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-header", children: [
31831
+ return /* @__PURE__ */ jsxs22("article", { className: "shop__card shop__card--pass", children: [
31832
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-header", children: [
31707
31833
  /* @__PURE__ */ jsx35("h4", { className: "shop__card-name", children: props2.display.title }),
31708
31834
  /* @__PURE__ */ jsx35("div", { className: "shop__card-price", children: props2.display.priceLabel })
31709
31835
  ] }),
31710
31836
  props2.display.description ? /* @__PURE__ */ jsx35("p", { className: "shop__card-description", children: props2.display.description }) : null,
31711
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-details", children: [
31837
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-details", children: [
31712
31838
  /* @__PURE__ */ jsx35("span", { className: "shop__card-credits", children: props2.display.creditsLabel }),
31713
- props2.display.perCreditLabel ? /* @__PURE__ */ jsxs21("span", { className: "shop__card-per-credit", children: [
31839
+ props2.display.perCreditLabel ? /* @__PURE__ */ jsxs22("span", { className: "shop__card-per-credit", children: [
31714
31840
  "(",
31715
31841
  props2.display.perCreditLabel,
31716
31842
  ")"
@@ -31722,10 +31848,10 @@ function PassCardView(props2) {
31722
31848
  ] });
31723
31849
  }
31724
31850
  function MembershipCardView(props2) {
31725
- return /* @__PURE__ */ jsxs21("article", { className: "shop__card shop__card--membership", children: [
31726
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-header", children: [
31851
+ return /* @__PURE__ */ jsxs22("article", { className: "shop__card shop__card--membership", children: [
31852
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-header", children: [
31727
31853
  /* @__PURE__ */ jsx35("h4", { className: "shop__card-name", children: props2.display.title }),
31728
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-price", children: [
31854
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-price", children: [
31729
31855
  props2.display.priceLabel,
31730
31856
  /* @__PURE__ */ jsx35("span", { className: "shop__card-interval", children: props2.display.intervalLabel })
31731
31857
  ] })
@@ -31739,7 +31865,7 @@ function PassesMembershipsSectionView(props2) {
31739
31865
  const { display, beforeContent, passCards, membershipCards } = props2;
31740
31866
  const productsClass = `shop__products shop__products--${display.layout}`;
31741
31867
  const gridStyle = display.state === "ready" ? { "--shop-columns": display.columns } : void 0;
31742
- return /* @__PURE__ */ jsxs21(
31868
+ return /* @__PURE__ */ jsxs22(
31743
31869
  "div",
31744
31870
  {
31745
31871
  className: `shop ${display.state === "ready" ? `shop--${display.layout}` : "shop--empty"} ${display.className ?? ""}`.trim(),
@@ -31749,11 +31875,11 @@ function PassesMembershipsSectionView(props2) {
31749
31875
  children: [
31750
31876
  beforeContent,
31751
31877
  display.state === "empty" ? /* @__PURE__ */ jsx35("p", { className: "shop__empty-text", children: display.emptyMessage }) : null,
31752
- display.passes.length > 0 ? /* @__PURE__ */ jsxs21("section", { className: "shop__section shop__section--passes", children: [
31878
+ display.passes.length > 0 ? /* @__PURE__ */ jsxs22("section", { className: "shop__section shop__section--passes", children: [
31753
31879
  /* @__PURE__ */ jsx35("h3", { className: "shop__section-heading", children: display.passesHeading }),
31754
31880
  /* @__PURE__ */ jsx35("div", { className: productsClass, children: passCards })
31755
31881
  ] }) : null,
31756
- display.memberships.length > 0 ? /* @__PURE__ */ jsxs21("section", { className: "shop__section shop__section--memberships", children: [
31882
+ display.memberships.length > 0 ? /* @__PURE__ */ jsxs22("section", { className: "shop__section shop__section--memberships", children: [
31757
31883
  /* @__PURE__ */ jsx35("h3", { className: "shop__section-heading", children: display.membershipsHeading }),
31758
31884
  /* @__PURE__ */ jsx35("div", { className: productsClass, children: membershipCards })
31759
31885
  ] }) : null
@@ -31763,21 +31889,21 @@ function PassesMembershipsSectionView(props2) {
31763
31889
  }
31764
31890
  function CartShellView(props2) {
31765
31891
  const { display, renderControls, footerActions } = props2;
31766
- return /* @__PURE__ */ jsxs21("div", { className: `shop shop--cart ${display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-cart", children: [
31892
+ return /* @__PURE__ */ jsxs22("div", { className: `shop shop--cart ${display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-cart", children: [
31767
31893
  display.heading ? /* @__PURE__ */ jsx35("h2", { children: display.heading }) : null,
31768
- display.state === "empty" ? /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
31894
+ display.state === "empty" ? /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
31769
31895
  /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.emptyMessage }),
31770
31896
  display.supportText ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.supportText }) : null
31771
- ] }) : /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31772
- /* @__PURE__ */ jsx35("div", { className: "rb-flex rb-flex-col rb-gap-3", children: display.items.map((item) => /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-items-center rb-justify-between rb-gap-4 rb-rounded-xl rb-border rb-p-4", children: [
31773
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-1", children: [
31897
+ ] }) : /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31898
+ /* @__PURE__ */ jsx35("div", { className: "rb-flex rb-flex-col rb-gap-3", children: display.items.map((item) => /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-items-center rb-justify-between rb-gap-4 rb-rounded-xl rb-border rb-p-4", children: [
31899
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-1", children: [
31774
31900
  /* @__PURE__ */ jsx35("strong", { children: item.title }),
31775
31901
  /* @__PURE__ */ jsx35("span", { className: "rb-caption status-muted", children: item.priceLabel })
31776
31902
  ] }),
31777
31903
  /* @__PURE__ */ jsx35("div", { className: "rb-flex rb-items-center rb-gap-2", children: renderControls ? renderControls(item) : null })
31778
31904
  ] }, item.key)) }),
31779
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-items-center rb-justify-between rb-gap-4", children: [
31780
- /* @__PURE__ */ jsxs21("div", { children: [
31905
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-items-center rb-justify-between rb-gap-4", children: [
31906
+ /* @__PURE__ */ jsxs22("div", { children: [
31781
31907
  /* @__PURE__ */ jsx35("strong", { children: "Subtotal" }),
31782
31908
  /* @__PURE__ */ jsx35("div", { children: display.subtotalLabel })
31783
31909
  ] }),
@@ -31787,7 +31913,7 @@ function CartShellView(props2) {
31787
31913
  ] });
31788
31914
  }
31789
31915
  function CheckoutShellView(props2) {
31790
- return /* @__PURE__ */ jsxs21("div", { className: `shop shop--checkout ${props2.display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-checkout", children: [
31916
+ return /* @__PURE__ */ jsxs22("div", { className: `shop shop--checkout ${props2.display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-checkout", children: [
31791
31917
  props2.display.heading ? /* @__PURE__ */ jsx35("h2", { children: props2.display.heading }) : null,
31792
31918
  props2.notice,
31793
31919
  props2.display.state === "ready" ? props2.body : /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: props2.display.message })
@@ -31795,9 +31921,9 @@ function CheckoutShellView(props2) {
31795
31921
  }
31796
31922
 
31797
31923
  // ../blocks/src/system/runtime/nodes/shop-commerce.server.tsx
31798
- import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
31924
+ import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
31799
31925
  function renderServerPendingAction(label, soldOut) {
31800
- return /* @__PURE__ */ jsxs22(Fragment5, { children: [
31926
+ return /* @__PURE__ */ jsxs23(Fragment5, { children: [
31801
31927
  /* @__PURE__ */ jsx36(
31802
31928
  "button",
31803
31929
  {
@@ -31825,7 +31951,7 @@ function ProductListServerContent(props2) {
31825
31951
  disabled: true
31826
31952
  }
31827
31953
  ),
31828
- actions: /* @__PURE__ */ jsxs22(Fragment5, { children: [
31954
+ actions: /* @__PURE__ */ jsxs23(Fragment5, { children: [
31829
31955
  renderServerPendingAction(card.actionLabel, card.soldOut),
31830
31956
  card.path ? /* @__PURE__ */ jsx36(
31831
31957
  "a",
@@ -31876,7 +32002,7 @@ function CheckoutServerContent(props2) {
31876
32002
  }
31877
32003
 
31878
32004
  // ../blocks/src/system/runtime/nodes/cart.server.tsx
31879
- import { jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
32005
+ import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
31880
32006
  function CartSSR({
31881
32007
  blockId,
31882
32008
  siteId,
@@ -31891,7 +32017,7 @@ function CartSSR({
31891
32017
  stage,
31892
32018
  ...rest
31893
32019
  });
31894
- return /* @__PURE__ */ jsxs23(
32020
+ return /* @__PURE__ */ jsxs24(
31895
32021
  "div",
31896
32022
  {
31897
32023
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -31911,7 +32037,7 @@ function CartSSR({
31911
32037
  var cart_server_default = CartSSR;
31912
32038
 
31913
32039
  // ../blocks/src/system/runtime/nodes/checkout.server.tsx
31914
- import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
32040
+ import { jsx as jsx38, jsxs as jsxs25 } from "react/jsx-runtime";
31915
32041
  function CheckoutSSR({
31916
32042
  blockId,
31917
32043
  siteId,
@@ -31926,7 +32052,7 @@ function CheckoutSSR({
31926
32052
  stage,
31927
32053
  ...rest
31928
32054
  });
31929
- return /* @__PURE__ */ jsxs24(
32055
+ return /* @__PURE__ */ jsxs25(
31930
32056
  "div",
31931
32057
  {
31932
32058
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -31946,7 +32072,7 @@ function CheckoutSSR({
31946
32072
  var checkout_server_default = CheckoutSSR;
31947
32073
 
31948
32074
  // ../blocks/src/system/runtime/nodes/course-registration.server.tsx
31949
- import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
32075
+ import { jsx as jsx39, jsxs as jsxs26 } from "react/jsx-runtime";
31950
32076
  function CourseRegistrationSSR({
31951
32077
  blockId,
31952
32078
  siteId,
@@ -31987,7 +32113,7 @@ function CourseRegistrationSSR({
31987
32113
  buttonVariant,
31988
32114
  stage
31989
32115
  });
31990
- return /* @__PURE__ */ jsxs25(
32116
+ return /* @__PURE__ */ jsxs26(
31991
32117
  "div",
31992
32118
  {
31993
32119
  className: `course-registration ${className ?? ""}`.trim(),
@@ -32004,14 +32130,14 @@ function CourseRegistrationSSR({
32004
32130
  var course_registration_server_default = CourseRegistrationSSR;
32005
32131
 
32006
32132
  // ../blocks/src/system/runtime/nodes/gifting.server.tsx
32007
- import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
32133
+ import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
32008
32134
  function GiftingSSR({ blockId, ...rest }) {
32009
32135
  const islandProps = buildGiftingInteractiveIslandProps(rest);
32010
32136
  const offers = islandProps.render.hydration.offers;
32011
32137
  const hasOffers = Boolean(
32012
32138
  (offers?.giftCards.length ?? 0) > 0 || (offers?.vouchers.length ?? 0) > 0
32013
32139
  );
32014
- return /* @__PURE__ */ jsxs26(
32140
+ return /* @__PURE__ */ jsxs27(
32015
32141
  "section",
32016
32142
  {
32017
32143
  className: rest.className ?? void 0,
@@ -32022,7 +32148,7 @@ function GiftingSSR({ blockId, ...rest }) {
32022
32148
  ...getIslandRootProps("gifting", blockId),
32023
32149
  children: [
32024
32150
  /* @__PURE__ */ jsx40(IslandPropsScript, { value: islandProps }),
32025
- /* @__PURE__ */ jsxs26(
32151
+ /* @__PURE__ */ jsxs27(
32026
32152
  "div",
32027
32153
  {
32028
32154
  className: "rb-grid",
@@ -32030,14 +32156,14 @@ function GiftingSSR({ blockId, ...rest }) {
32030
32156
  gap: "1.5rem"
32031
32157
  },
32032
32158
  children: [
32033
- /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "0.5rem" }, children: [
32159
+ /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "0.5rem" }, children: [
32034
32160
  /* @__PURE__ */ jsx40("h2", { style: { fontSize: "clamp(1.75rem, 3vw, 2.5rem)", fontWeight: 700, margin: 0 }, children: islandProps.render.display.heading }),
32035
32161
  islandProps.render.display.intro ? /* @__PURE__ */ jsx40("p", { style: { margin: 0, color: "rgb(var(--tb-text, 17 24 39) / 0.72)" }, children: islandProps.render.display.intro }) : null
32036
32162
  ] }),
32037
- hasOffers ? /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "1.5rem" }, children: [
32038
- (offers?.giftCards.length ?? 0) > 0 ? /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
32163
+ hasOffers ? /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "1.5rem" }, children: [
32164
+ (offers?.giftCards.length ?? 0) > 0 ? /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
32039
32165
  /* @__PURE__ */ jsx40("h3", { style: { margin: 0, fontSize: "1.25rem", fontWeight: 700 }, children: islandProps.render.display.giftCardsHeading }),
32040
- /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.giftCards.map((offer) => /* @__PURE__ */ jsxs26(
32166
+ /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.giftCards.map((offer) => /* @__PURE__ */ jsxs27(
32041
32167
  "article",
32042
32168
  {
32043
32169
  style: {
@@ -32054,9 +32180,9 @@ function GiftingSSR({ blockId, ...rest }) {
32054
32180
  offer.id
32055
32181
  )) })
32056
32182
  ] }) : null,
32057
- (offers?.vouchers.length ?? 0) > 0 ? /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
32183
+ (offers?.vouchers.length ?? 0) > 0 ? /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
32058
32184
  /* @__PURE__ */ jsx40("h3", { style: { margin: 0, fontSize: "1.25rem", fontWeight: 700 }, children: islandProps.render.display.vouchersHeading }),
32059
- /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.vouchers.map((offer) => /* @__PURE__ */ jsxs26(
32185
+ /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.vouchers.map((offer) => /* @__PURE__ */ jsxs27(
32060
32186
  "article",
32061
32187
  {
32062
32188
  style: {
@@ -32084,10 +32210,10 @@ function GiftingSSR({ blockId, ...rest }) {
32084
32210
  var gifting_server_default = GiftingSSR;
32085
32211
 
32086
32212
  // ../blocks/src/system/runtime/nodes/events/EventListing.view.tsx
32087
- import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
32213
+ import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
32088
32214
  function EventListingFrameView(props2) {
32089
32215
  const { display, filters, emptyState: emptyState4, footer, renderEventCard: renderEventCard2 } = props2;
32090
- return /* @__PURE__ */ jsxs27("div", { className: `event-listing ${display.className ?? ""}`, "data-block": "event-listing", children: [
32216
+ return /* @__PURE__ */ jsxs28("div", { className: `event-listing ${display.className ?? ""}`, "data-block": "event-listing", children: [
32091
32217
  filters,
32092
32218
  display.state === "loading" ? /* @__PURE__ */ jsx41(EmptyState, { message: display.loadingMessage }) : display.state === "empty" ? emptyState4 ?? /* @__PURE__ */ jsx41(EmptyState, { message: display.emptyMessage }) : /* @__PURE__ */ jsx41("div", { className: display.containerClass, children: display.events.map((event) => renderEventCard2(event)) }),
32093
32219
  footer
@@ -32166,7 +32292,7 @@ function formatShortDayLabel(date) {
32166
32292
  }
32167
32293
 
32168
32294
  // ../blocks/src/system/runtime/nodes/events/EventCalendar.server.tsx
32169
- import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
32295
+ import { jsx as jsx42, jsxs as jsxs29 } from "react/jsx-runtime";
32170
32296
  function assertNeverDisplayMode(value) {
32171
32297
  throw new Error(`Unsupported event-calendar displayMode: ${String(value)}`);
32172
32298
  }
@@ -32178,8 +32304,8 @@ function renderEventCard(event, display) {
32178
32304
  }
32179
32305
  function renderCombinedSsr(display, prefetchedEvents) {
32180
32306
  const listDisplay = buildEventCalendarListingDisplay(display, prefetchedEvents, "event-combined-content");
32181
- return /* @__PURE__ */ jsxs28("div", { className: clsx_default("event-combined", display.className ?? void 0), "data-block": "event-combined", children: [
32182
- /* @__PURE__ */ jsxs28("div", { className: "nav-tabs", role: "tablist", children: [
32307
+ return /* @__PURE__ */ jsxs29("div", { className: clsx_default("event-combined", display.className ?? void 0), "data-block": "event-combined", children: [
32308
+ /* @__PURE__ */ jsxs29("div", { className: "nav-tabs", role: "tablist", children: [
32183
32309
  /* @__PURE__ */ jsx42(
32184
32310
  "button",
32185
32311
  {
@@ -32227,9 +32353,9 @@ function renderCalendarGrid(display) {
32227
32353
  const eventsByDate = groupEventsByDate([...display.events]);
32228
32354
  const dayNames = getOrderedDayNames(display.startOfWeek);
32229
32355
  const headerTitle = formatCalendarTitle(viewDate, calendarView, calendarDays);
32230
- return /* @__PURE__ */ jsxs28("div", { className: clsx_default("event-calendar", display.className ?? void 0), "data-block": "event-calendar", children: [
32231
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-header", children: [
32232
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-nav", children: [
32356
+ return /* @__PURE__ */ jsxs29("div", { className: clsx_default("event-calendar", display.className ?? void 0), "data-block": "event-calendar", children: [
32357
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-header", children: [
32358
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-nav", children: [
32233
32359
  /* @__PURE__ */ jsx42(
32234
32360
  "button",
32235
32361
  {
@@ -32262,7 +32388,7 @@ function renderCalendarGrid(display) {
32262
32388
  }
32263
32389
  )
32264
32390
  ] }),
32265
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-container", children: [
32391
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-container", children: [
32266
32392
  /* @__PURE__ */ jsx42("div", { className: "event-calendar-day-headers", children: dayNames.map((day) => /* @__PURE__ */ jsx42("div", { className: "event-calendar-day-header", children: day }, day)) }),
32267
32393
  /* @__PURE__ */ jsx42("div", { className: "event-calendar-grid", children: calendarDays.map((date) => {
32268
32394
  const dateKey = formatDateKey2(date);
@@ -32274,10 +32400,10 @@ function renderCalendarGrid(display) {
32274
32400
  !isCurrentMonth && "event-calendar-day--other-month",
32275
32401
  today && "event-calendar-day--today"
32276
32402
  );
32277
- return /* @__PURE__ */ jsxs28("div", { className: dayClasses, children: [
32403
+ return /* @__PURE__ */ jsxs29("div", { className: dayClasses, children: [
32278
32404
  /* @__PURE__ */ jsx42("div", { className: "event-calendar-day-number", children: date.getDate() }),
32279
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-events", children: [
32280
- dayEvents.slice(0, MAX_EVENTS_PER_DAY).map((event) => /* @__PURE__ */ jsxs28(
32405
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-events", children: [
32406
+ dayEvents.slice(0, MAX_EVENTS_PER_DAY).map((event) => /* @__PURE__ */ jsxs29(
32281
32407
  "a",
32282
32408
  {
32283
32409
  href: event.path,
@@ -32291,7 +32417,7 @@ function renderCalendarGrid(display) {
32291
32417
  },
32292
32418
  event.occurrenceId || event.id
32293
32419
  )),
32294
- dayEvents.length > MAX_EVENTS_PER_DAY ? /* @__PURE__ */ jsxs28("div", { className: "event-calendar-more", children: [
32420
+ dayEvents.length > MAX_EVENTS_PER_DAY ? /* @__PURE__ */ jsxs29("div", { className: "event-calendar-more", children: [
32295
32421
  "+",
32296
32422
  dayEvents.length - MAX_EVENTS_PER_DAY,
32297
32423
  " more"
@@ -32313,9 +32439,9 @@ function renderTimetableSsr(display) {
32313
32439
  const calendarDays = getWeekCalendarDays(viewDate, display.startOfWeek);
32314
32440
  const headerTitle = formatCalendarTitle(viewDate, "week", calendarDays);
32315
32441
  const selectedDayKey = model.days.find((day) => day.isToday)?.dateKey ?? model.days[0]?.dateKey ?? "";
32316
- return /* @__PURE__ */ jsxs28("div", { className: clsx_default("event-calendar", "event-calendar--timetable", display.className ?? void 0), "data-block": "event-calendar", children: [
32317
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-header", children: [
32318
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-nav", children: [
32442
+ return /* @__PURE__ */ jsxs29("div", { className: clsx_default("event-calendar", "event-calendar--timetable", display.className ?? void 0), "data-block": "event-calendar", children: [
32443
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-header", children: [
32444
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-nav", children: [
32319
32445
  /* @__PURE__ */ jsx42(
32320
32446
  "button",
32321
32447
  {
@@ -32348,7 +32474,7 @@ function renderTimetableSsr(display) {
32348
32474
  }
32349
32475
  )
32350
32476
  ] }),
32351
- /* @__PURE__ */ jsxs28("div", { className: "event-timetable", children: [
32477
+ /* @__PURE__ */ jsxs29("div", { className: "event-timetable", children: [
32352
32478
  /* @__PURE__ */ jsx42("div", { className: "event-timetable-day-selector", "aria-label": "Choose timetable day", children: model.days.map((day) => /* @__PURE__ */ jsx42(
32353
32479
  "button",
32354
32480
  {
@@ -32361,8 +32487,8 @@ function renderTimetableSsr(display) {
32361
32487
  },
32362
32488
  day.dateKey
32363
32489
  )) }),
32364
- /* @__PURE__ */ jsx42("div", { className: "event-timetable-container", children: /* @__PURE__ */ jsxs28("div", { className: "event-timetable-grid", "aria-label": "Weekly timetable", children: [
32365
- /* @__PURE__ */ jsxs28("div", { className: "event-timetable-time-rail", "aria-hidden": "true", children: [
32490
+ /* @__PURE__ */ jsx42("div", { className: "event-timetable-container", children: /* @__PURE__ */ jsxs29("div", { className: "event-timetable-grid", "aria-label": "Weekly timetable", children: [
32491
+ /* @__PURE__ */ jsxs29("div", { className: "event-timetable-time-rail", "aria-hidden": "true", children: [
32366
32492
  /* @__PURE__ */ jsx42("div", { className: "event-timetable-day-heading" }),
32367
32493
  /* @__PURE__ */ jsx42("div", { className: "event-timetable-time-body", children: model.hourTicks.map((hour) => /* @__PURE__ */ jsx42(
32368
32494
  "div",
@@ -32374,7 +32500,7 @@ function renderTimetableSsr(display) {
32374
32500
  hour
32375
32501
  )) })
32376
32502
  ] }),
32377
- model.days.map((day) => /* @__PURE__ */ jsxs28(
32503
+ model.days.map((day) => /* @__PURE__ */ jsxs29(
32378
32504
  "section",
32379
32505
  {
32380
32506
  className: clsx_default(
@@ -32383,11 +32509,11 @@ function renderTimetableSsr(display) {
32383
32509
  ),
32384
32510
  "data-selected": day.dateKey === selectedDayKey ? "true" : "false",
32385
32511
  children: [
32386
- /* @__PURE__ */ jsxs28("h4", { className: "event-timetable-day-heading", children: [
32512
+ /* @__PURE__ */ jsxs29("h4", { className: "event-timetable-day-heading", children: [
32387
32513
  day.label,
32388
32514
  day.isToday ? /* @__PURE__ */ jsx42("span", { className: "event-timetable-today-badge", children: "Today" }) : null
32389
32515
  ] }),
32390
- /* @__PURE__ */ jsxs28(
32516
+ /* @__PURE__ */ jsxs29(
32391
32517
  "div",
32392
32518
  {
32393
32519
  className: "event-timetable-day-body",
@@ -32402,7 +32528,7 @@ function renderTimetableSsr(display) {
32402
32528
  },
32403
32529
  hour
32404
32530
  )),
32405
- day.events.length === 0 ? /* @__PURE__ */ jsx42("p", { className: "event-timetable-day-empty", children: "No classes" }) : day.events.map((cell) => /* @__PURE__ */ jsxs28(
32531
+ day.events.length === 0 ? /* @__PURE__ */ jsx42("p", { className: "event-timetable-day-empty", children: "No classes" }) : day.events.map((cell) => /* @__PURE__ */ jsxs29(
32406
32532
  "a",
32407
32533
  {
32408
32534
  href: cell.event.path,
@@ -32479,18 +32605,18 @@ var EventCalendarSSR = (props2) => {
32479
32605
  default:
32480
32606
  content = assertNeverDisplayMode(display.displayMode);
32481
32607
  }
32482
- return /* @__PURE__ */ jsxs28("div", { ...getIslandRootProps("event-calendar", props2.blockId), children: [
32608
+ return /* @__PURE__ */ jsxs29("div", { ...getIslandRootProps("event-calendar", props2.blockId), children: [
32483
32609
  /* @__PURE__ */ jsx42(IslandPropsScript, { value: islandProps }),
32484
32610
  content
32485
32611
  ] });
32486
32612
  };
32487
32613
 
32488
32614
  // ../blocks/src/system/runtime/nodes/events/EventListing.server.tsx
32489
- import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
32615
+ import { jsx as jsx43, jsxs as jsxs30 } from "react/jsx-runtime";
32490
32616
  var EventListingSSR = (props2) => {
32491
32617
  const islandProps = buildEventListingInteractiveIslandProps(props2);
32492
32618
  const display = islandProps.render.display;
32493
- return /* @__PURE__ */ jsxs29("div", { ...getIslandRootProps("event-listing", props2.blockId), children: [
32619
+ return /* @__PURE__ */ jsxs30("div", { ...getIslandRootProps("event-listing", props2.blockId), children: [
32494
32620
  /* @__PURE__ */ jsx43(IslandPropsScript, { value: islandProps }),
32495
32621
  /* @__PURE__ */ jsx43(
32496
32622
  EventListingFrameView,
@@ -32503,7 +32629,7 @@ var EventListingSSR = (props2) => {
32503
32629
  };
32504
32630
 
32505
32631
  // ../blocks/src/system/runtime/nodes/event-registration.server.tsx
32506
- import { jsx as jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
32632
+ import { jsx as jsx44, jsxs as jsxs31 } from "react/jsx-runtime";
32507
32633
  function EventRegistrationSSR({
32508
32634
  blockId,
32509
32635
  siteId,
@@ -32544,7 +32670,7 @@ function EventRegistrationSSR({
32544
32670
  stage,
32545
32671
  supportEmail
32546
32672
  });
32547
- return /* @__PURE__ */ jsxs30(
32673
+ return /* @__PURE__ */ jsxs31(
32548
32674
  "div",
32549
32675
  {
32550
32676
  className: `event-registration ${className ?? ""}`.trim(),
@@ -32560,7 +32686,7 @@ function EventRegistrationSSR({
32560
32686
  var event_registration_server_default = EventRegistrationSSR;
32561
32687
 
32562
32688
  // ../blocks/src/system/runtime/shared/components/FeedbackMessage.tsx
32563
- import { jsx as jsx45, jsxs as jsxs31 } from "react/jsx-runtime";
32689
+ import { jsx as jsx45, jsxs as jsxs32 } from "react/jsx-runtime";
32564
32690
  function joinClasses5(...parts) {
32565
32691
  return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
32566
32692
  }
@@ -32576,7 +32702,7 @@ function FeedbackMessage({
32576
32702
  }) {
32577
32703
  const resolvedLive = live ?? (role === "alert" ? "assertive" : "polite");
32578
32704
  const shouldWrapBody = Boolean(title || bodyClassName);
32579
- return /* @__PURE__ */ jsxs31(
32705
+ return /* @__PURE__ */ jsxs32(
32580
32706
  "div",
32581
32707
  {
32582
32708
  className,
@@ -32592,7 +32718,7 @@ function FeedbackMessage({
32592
32718
  }
32593
32719
 
32594
32720
  // ../blocks/src/system/runtime/nodes/form.server.tsx
32595
- import { jsx as jsx46, jsxs as jsxs32 } from "react/jsx-runtime";
32721
+ import { jsx as jsx46, jsxs as jsxs33 } from "react/jsx-runtime";
32596
32722
  var FormNodeSSR = ({
32597
32723
  blockId,
32598
32724
  value,
@@ -32617,7 +32743,7 @@ var FormNodeSSR = ({
32617
32743
  const display = islandProps.render.display;
32618
32744
  const form2 = display.form;
32619
32745
  if (!form2) {
32620
- return /* @__PURE__ */ jsxs32("div", { ...getIslandRootProps("form", blockId), children: [
32746
+ return /* @__PURE__ */ jsxs33("div", { ...getIslandRootProps("form", blockId), children: [
32621
32747
  /* @__PURE__ */ jsx46(IslandPropsScript, { value: islandProps }),
32622
32748
  /* @__PURE__ */ jsx46(FeedbackMessage, { tone: "warning", className: clsx_default("fb-empty", className), role: "status", children: "Missing or unknown form." })
32623
32749
  ] });
@@ -32629,7 +32755,7 @@ var FormNodeSSR = ({
32629
32755
  const required = Boolean(field.required);
32630
32756
  const type = String(field.type ?? "text");
32631
32757
  if (type === "textarea") {
32632
- return /* @__PURE__ */ jsxs32("div", { className: "fb-field", children: [
32758
+ return /* @__PURE__ */ jsxs33("div", { className: "fb-field", children: [
32633
32759
  /* @__PURE__ */ jsx46("label", { htmlFor: inputId, className: "form-label", children: label }),
32634
32760
  /* @__PURE__ */ jsx46(
32635
32761
  "textarea",
@@ -32647,9 +32773,9 @@ var FormNodeSSR = ({
32647
32773
  if (type === "select") {
32648
32774
  const options = field.options ?? [];
32649
32775
  const multiple = Boolean(field.multiple);
32650
- return /* @__PURE__ */ jsxs32("div", { className: "fb-field", children: [
32776
+ return /* @__PURE__ */ jsxs33("div", { className: "fb-field", children: [
32651
32777
  /* @__PURE__ */ jsx46("label", { htmlFor: inputId, className: "form-label", children: label }),
32652
- /* @__PURE__ */ jsxs32("select", { id: inputId, name: field.id, multiple, required, className: "form-select", children: [
32778
+ /* @__PURE__ */ jsxs33("select", { id: inputId, name: field.id, multiple, required, className: "form-select", children: [
32653
32779
  !multiple && /* @__PURE__ */ jsx46("option", { value: "", children: "Select\u2026" }),
32654
32780
  options.map((opt) => /* @__PURE__ */ jsx46("option", { value: opt.value, children: opt.label }, opt.value))
32655
32781
  ] })
@@ -32657,9 +32783,9 @@ var FormNodeSSR = ({
32657
32783
  }
32658
32784
  if (type === "radio") {
32659
32785
  const options = field.options ?? [];
32660
- return /* @__PURE__ */ jsxs32("fieldset", { className: "fb-fieldset", children: [
32786
+ return /* @__PURE__ */ jsxs33("fieldset", { className: "fb-fieldset", children: [
32661
32787
  /* @__PURE__ */ jsx46("legend", { className: "form-label", children: label }),
32662
- options.map((opt) => /* @__PURE__ */ jsxs32("label", { className: "fb-inline form-label", children: [
32788
+ options.map((opt) => /* @__PURE__ */ jsxs33("label", { className: "fb-inline form-label", children: [
32663
32789
  /* @__PURE__ */ jsx46(
32664
32790
  "input",
32665
32791
  {
@@ -32675,7 +32801,7 @@ var FormNodeSSR = ({
32675
32801
  ] }, field.id);
32676
32802
  }
32677
32803
  if (type === "checkbox" || type === "consent") {
32678
- return /* @__PURE__ */ jsxs32("label", { className: "fb-inline form-label", children: [
32804
+ return /* @__PURE__ */ jsxs33("label", { className: "fb-inline form-label", children: [
32679
32805
  /* @__PURE__ */ jsx46("input", { type: "checkbox", name: field.id, required, className: "form-checkbox" }),
32680
32806
  /* @__PURE__ */ jsx46("span", { children: label })
32681
32807
  ] }, field.id);
@@ -32691,7 +32817,7 @@ var FormNodeSSR = ({
32691
32817
  if (typeof field.min === "number") extra.min = field.min;
32692
32818
  if (typeof field.max === "number") extra.max = field.max;
32693
32819
  }
32694
- return /* @__PURE__ */ jsxs32("div", { className: "fb-field", children: [
32820
+ return /* @__PURE__ */ jsxs33("div", { className: "fb-field", children: [
32695
32821
  /* @__PURE__ */ jsx46("label", { htmlFor: inputId, className: "form-label", children: label }),
32696
32822
  /* @__PURE__ */ jsx46(
32697
32823
  "input",
@@ -32707,9 +32833,9 @@ var FormNodeSSR = ({
32707
32833
  )
32708
32834
  ] }, field.id);
32709
32835
  };
32710
- return /* @__PURE__ */ jsxs32("div", { ...getIslandRootProps("form", blockId), children: [
32836
+ return /* @__PURE__ */ jsxs33("div", { ...getIslandRootProps("form", blockId), children: [
32711
32837
  /* @__PURE__ */ jsx46(IslandPropsScript, { value: islandProps }),
32712
- /* @__PURE__ */ jsxs32(
32838
+ /* @__PURE__ */ jsxs33(
32713
32839
  "form",
32714
32840
  {
32715
32841
  method: "POST",
@@ -32744,7 +32870,7 @@ var FormNodeSSR = ({
32744
32870
  };
32745
32871
 
32746
32872
  // ../blocks/src/system/runtime/nodes/newsletter-form.server.tsx
32747
- import { jsx as jsx47, jsxs as jsxs33 } from "react/jsx-runtime";
32873
+ import { jsx as jsx47, jsxs as jsxs34 } from "react/jsx-runtime";
32748
32874
  function NewsletterFormSSR({
32749
32875
  blockId,
32750
32876
  siteId,
@@ -32776,8 +32902,8 @@ function NewsletterFormSSR({
32776
32902
  const fields3 = display.fields;
32777
32903
  const renderField = (field) => {
32778
32904
  const inputId = `newsletter_${field.id}`;
32779
- return /* @__PURE__ */ jsxs33("div", { className: "fb-field newsletter-field", children: [
32780
- /* @__PURE__ */ jsxs33("label", { htmlFor: inputId, className: "form-label", children: [
32905
+ return /* @__PURE__ */ jsxs34("div", { className: "fb-field newsletter-field", children: [
32906
+ /* @__PURE__ */ jsxs34("label", { htmlFor: inputId, className: "form-label", children: [
32781
32907
  field.label,
32782
32908
  field.required && /* @__PURE__ */ jsx47("span", { className: "newsletter-required", "aria-hidden": "true", children: "*" })
32783
32909
  ] }),
@@ -32795,14 +32921,14 @@ function NewsletterFormSSR({
32795
32921
  )
32796
32922
  ] }, field.id);
32797
32923
  };
32798
- return /* @__PURE__ */ jsxs33(
32924
+ return /* @__PURE__ */ jsxs34(
32799
32925
  "div",
32800
32926
  {
32801
32927
  ...getIslandRootProps("newsletter-form", blockId),
32802
32928
  className: clsx_default("newsletter-form-ssr", className),
32803
32929
  children: [
32804
32930
  /* @__PURE__ */ jsx47(IslandPropsScript, { value: islandProps }),
32805
- /* @__PURE__ */ jsxs33("form", { method: "POST", className: "newsletter-form fb-form", children: [
32931
+ /* @__PURE__ */ jsxs34("form", { method: "POST", className: "newsletter-form fb-form", children: [
32806
32932
  /* @__PURE__ */ jsx47(
32807
32933
  "input",
32808
32934
  {
@@ -32814,7 +32940,7 @@ function NewsletterFormSSR({
32814
32940
  "aria-hidden": "true"
32815
32941
  }
32816
32942
  ),
32817
- /* @__PURE__ */ jsxs33("div", { className: "newsletter-form-fields", children: [
32943
+ /* @__PURE__ */ jsxs34("div", { className: "newsletter-form-fields", children: [
32818
32944
  fields3.map(renderField),
32819
32945
  /* @__PURE__ */ jsx47("div", { className: "newsletter-submit", children: /* @__PURE__ */ jsx47(
32820
32946
  "button",
@@ -32834,7 +32960,7 @@ function NewsletterFormSSR({
32834
32960
  var newsletter_form_server_default = NewsletterFormSSR;
32835
32961
 
32836
32962
  // ../blocks/src/system/runtime/nodes/product-detail.server.tsx
32837
- import { jsx as jsx48, jsxs as jsxs34 } from "react/jsx-runtime";
32963
+ import { jsx as jsx48, jsxs as jsxs35 } from "react/jsx-runtime";
32838
32964
  function ProductDetailSSR({
32839
32965
  blockId,
32840
32966
  siteId,
@@ -32849,7 +32975,7 @@ function ProductDetailSSR({
32849
32975
  stage,
32850
32976
  ...rest
32851
32977
  });
32852
- return /* @__PURE__ */ jsxs34(
32978
+ return /* @__PURE__ */ jsxs35(
32853
32979
  "div",
32854
32980
  {
32855
32981
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -32869,7 +32995,7 @@ function ProductDetailSSR({
32869
32995
  var product_detail_server_default = ProductDetailSSR;
32870
32996
 
32871
32997
  // ../blocks/src/system/runtime/nodes/product-list.server.tsx
32872
- import { jsx as jsx49, jsxs as jsxs35 } from "react/jsx-runtime";
32998
+ import { jsx as jsx49, jsxs as jsxs36 } from "react/jsx-runtime";
32873
32999
  function ProductListSSR({
32874
33000
  blockId,
32875
33001
  siteId,
@@ -32884,7 +33010,7 @@ function ProductListSSR({
32884
33010
  stage,
32885
33011
  ...rest
32886
33012
  });
32887
- return /* @__PURE__ */ jsxs35(
33013
+ return /* @__PURE__ */ jsxs36(
32888
33014
  "div",
32889
33015
  {
32890
33016
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -32904,7 +33030,7 @@ function ProductListSSR({
32904
33030
  var product_list_server_default = ProductListSSR;
32905
33031
 
32906
33032
  // ../blocks/src/system/runtime/nodes/shop.server.tsx
32907
- import { jsx as jsx50, jsxs as jsxs36 } from "react/jsx-runtime";
33033
+ import { jsx as jsx50, jsxs as jsxs37 } from "react/jsx-runtime";
32908
33034
  function ShopSSR({
32909
33035
  blockId,
32910
33036
  siteId,
@@ -32921,7 +33047,7 @@ function ShopSSR({
32921
33047
  ...rest
32922
33048
  });
32923
33049
  const render = islandProps.render;
32924
- return /* @__PURE__ */ jsxs36(
33050
+ return /* @__PURE__ */ jsxs37(
32925
33051
  "div",
32926
33052
  {
32927
33053
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -46666,6 +46792,11 @@ var containerResponsiveThemeCss = `/*
46666
46792
  * Dense row layout for event-calendar compact list mode
46667
46793
  * ============================================================================= */
46668
46794
 
46795
+ :where(.theme-scope) .event-listing-compact-container {
46796
+ width: min(100%, 56rem);
46797
+ margin-inline: auto;
46798
+ }
46799
+
46669
46800
  :where(.theme-scope) .event-compact-row {
46670
46801
  display: flex;
46671
46802
  align-items: center;
@@ -46791,7 +46922,7 @@ var containerResponsiveThemeCss = `/*
46791
46922
  }`;
46792
46923
 
46793
46924
  // ../theme-core/src/ThemeScopeCore.tsx
46794
- import { jsx as jsx52, jsxs as jsxs37 } from "react/jsx-runtime";
46925
+ import { jsx as jsx52, jsxs as jsxs38 } from "react/jsx-runtime";
46795
46926
  function ThemeScopeCore({
46796
46927
  cssVars,
46797
46928
  buttonCss,
@@ -46823,7 +46954,7 @@ function ThemeScopeCore({
46823
46954
  containerType: "inline-size",
46824
46955
  containerName: responsiveScope.containerName
46825
46956
  } : cssVars;
46826
- return /* @__PURE__ */ jsxs37(
46957
+ return /* @__PURE__ */ jsxs38(
46827
46958
  "div",
46828
46959
  {
46829
46960
  className: className ? `theme-scope ${className}` : "theme-scope",
@@ -47041,10 +47172,10 @@ function resolveFooterRenderPlan(params) {
47041
47172
 
47042
47173
  // ../theme-core/src/ThemeFontLoader.tsx
47043
47174
  import * as React7 from "react";
47044
- import { Fragment as Fragment7, jsx as jsx54, jsxs as jsxs38 } from "react/jsx-runtime";
47175
+ import { Fragment as Fragment7, jsx as jsx54, jsxs as jsxs39 } from "react/jsx-runtime";
47045
47176
 
47046
47177
  // ../theme-core/src/siteChrome.tsx
47047
- import { Fragment as Fragment8, jsx as jsx55, jsxs as jsxs39 } from "react/jsx-runtime";
47178
+ import { Fragment as Fragment8, jsx as jsx55, jsxs as jsxs40 } from "react/jsx-runtime";
47048
47179
 
47049
47180
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
47050
47181
  import { z as z64 } from "zod";
@@ -47078,10 +47209,10 @@ var themeBridgeConfigSchema = z64.object({
47078
47209
  }).passthrough();
47079
47210
 
47080
47211
  // ../theme-core/src/mock-themes/components/swatch.tsx
47081
- import { jsx as jsx56, jsxs as jsxs40 } from "react/jsx-runtime";
47212
+ import { jsx as jsx56, jsxs as jsxs41 } from "react/jsx-runtime";
47082
47213
 
47083
47214
  // ../theme-core/src/mock-themes/components/PaletteCard.tsx
47084
- import { jsx as jsx57, jsxs as jsxs41 } from "react/jsx-runtime";
47215
+ import { jsx as jsx57, jsxs as jsxs42 } from "react/jsx-runtime";
47085
47216
 
47086
47217
  // src/rendering/blocks-theme-runtime.ts
47087
47218
  var AXES_TONE_OPTIONS = ["minimal", "classic", "bold"];
@@ -47685,7 +47816,7 @@ function buildLogo(logo, fallbackAlt) {
47685
47816
  }
47686
47817
 
47687
47818
  // src/rendering/components/Layout.tsx
47688
- import { Fragment as Fragment9, jsx as jsx60, jsxs as jsxs42 } from "react/jsx-runtime";
47819
+ import { Fragment as Fragment9, jsx as jsx60, jsxs as jsxs43 } from "react/jsx-runtime";
47689
47820
  async function Layout({
47690
47821
  siteData: providedSiteData,
47691
47822
  client,
@@ -47820,14 +47951,14 @@ async function Layout({
47820
47951
  themeConfig: blocksTheme,
47821
47952
  viewModelOverrides
47822
47953
  }) : null;
47823
- footerElement = footerPlan.mode === "default+blocks" ? /* @__PURE__ */ jsxs42(Fragment9, { children: [
47954
+ footerElement = footerPlan.mode === "default+blocks" ? /* @__PURE__ */ jsxs43(Fragment9, { children: [
47824
47955
  footerBlocksElement,
47825
47956
  defaultFooterElement
47826
47957
  ] }) : footerPlan.mode === "blocks" ? footerBlocksElement : footerPlan.mode === "none" ? null : defaultFooterElement;
47827
47958
  } else if (typeof footer === "function") {
47828
47959
  footerElement = footer(footerData);
47829
47960
  }
47830
- const content = /* @__PURE__ */ jsxs42(Fragment9, { children: [
47961
+ const content = /* @__PURE__ */ jsxs43(Fragment9, { children: [
47831
47962
  headerElement,
47832
47963
  children,
47833
47964
  footerElement
@@ -49417,6 +49548,18 @@ var TAG_TEMPLATES = {
49417
49548
  siteForms: "riverbank:site:{siteId}:forms",
49418
49549
  formById: "riverbank:form:{formId}",
49419
49550
  formSubmissionsBySlug: "riverbank:form-submissions:{slug}",
49551
+ // Public data loaders
49552
+ publicEvents: "riverbank:site:{siteId}:public-events",
49553
+ publicEventFilters: "riverbank:site:{siteId}:public-event-filters",
49554
+ publicCourses: "riverbank:site:{siteId}:public-courses",
49555
+ publicTeamMembers: "riverbank:site:{siteId}:public-team-members",
49556
+ publicProducts: "riverbank:site:{siteId}:public-products",
49557
+ publicPasses: "riverbank:site:{siteId}:public-passes",
49558
+ publicMemberships: "riverbank:site:{siteId}:public-memberships",
49559
+ publicGifting: "riverbank:site:{siteId}:public-gifting",
49560
+ publicShop: "riverbank:site:{siteId}:public-shop",
49561
+ publicCheckout: "riverbank:site:{siteId}:public-checkout",
49562
+ publicBookingServices: "riverbank:site:{siteId}:public-booking-services",
49420
49563
  // Navigation
49421
49564
  siteNavigation: "riverbank:site:{siteId}:navigation",
49422
49565
  navigationMenuById: "riverbank:navigation-menu:{menuId}",
@@ -53103,7 +53246,7 @@ var ENDPOINT_DEFINITIONS = {
53103
53246
  path: "/public/sites/{siteId}/events",
53104
53247
  method: "GET",
53105
53248
  revalidate: 60,
53106
- tags: ["public-events-{siteId}"],
53249
+ tags: [TAG_TEMPLATES.publicEvents],
53107
53250
  auth: "public",
53108
53251
  responseKind: "json"
53109
53252
  },
@@ -53112,7 +53255,7 @@ var ENDPOINT_DEFINITIONS = {
53112
53255
  path: "/public/sites/{siteId}/events/filters",
53113
53256
  method: "GET",
53114
53257
  revalidate: 60,
53115
- tags: ["public-event-filters-{siteId}"],
53258
+ tags: [TAG_TEMPLATES.publicEventFilters],
53116
53259
  auth: "public",
53117
53260
  responseKind: "json"
53118
53261
  },
@@ -53121,7 +53264,7 @@ var ENDPOINT_DEFINITIONS = {
53121
53264
  path: "/public/sites/{siteId}/courses",
53122
53265
  method: "GET",
53123
53266
  revalidate: 60,
53124
- tags: ["public-courses-{siteId}"],
53267
+ tags: [TAG_TEMPLATES.publicCourses],
53125
53268
  auth: "public",
53126
53269
  responseKind: "json"
53127
53270
  },
@@ -53129,7 +53272,7 @@ var ENDPOINT_DEFINITIONS = {
53129
53272
  path: "/public/sites/{siteId}/team-members",
53130
53273
  method: "GET",
53131
53274
  revalidate: 60,
53132
- tags: ["public-team-members-{siteId}"],
53275
+ tags: [TAG_TEMPLATES.publicTeamMembers],
53133
53276
  errors: [],
53134
53277
  auth: "public",
53135
53278
  responseKind: "json"
@@ -53138,21 +53281,21 @@ var ENDPOINT_DEFINITIONS = {
53138
53281
  path: "/public/sites/{siteId}/courses/{courseId}",
53139
53282
  method: "GET",
53140
53283
  revalidate: 60,
53141
- tags: ["public-courses-{siteId}"],
53284
+ tags: [TAG_TEMPLATES.publicCourses],
53142
53285
  auth: "public",
53143
53286
  responseKind: "json"
53144
53287
  },
53145
53288
  enrollInCourse: {
53146
53289
  path: "/public/sites/{siteId}/courses/enroll",
53147
53290
  method: "POST",
53148
- tags: ["public-courses-{siteId}", "course-enrollment"],
53291
+ tags: [TAG_TEMPLATES.publicCourses, "course-enrollment"],
53149
53292
  auth: "public",
53150
53293
  responseKind: "json"
53151
53294
  },
53152
53295
  checkCourseEligibility: {
53153
53296
  path: "/public/sites/{siteId}/courses/check-eligibility",
53154
53297
  method: "POST",
53155
- tags: ["public-courses-{siteId}", "course-enrollment"],
53298
+ tags: [TAG_TEMPLATES.publicCourses, "course-enrollment"],
53156
53299
  auth: "public",
53157
53300
  responseKind: "json"
53158
53301
  },
@@ -53160,8 +53303,8 @@ var ENDPOINT_DEFINITIONS = {
53160
53303
  path: "/public/sites/{siteId}/waitlists/claim/resolve",
53161
53304
  method: "POST",
53162
53305
  tags: [
53163
- "public-courses-{siteId}",
53164
- "public-events-{siteId}",
53306
+ TAG_TEMPLATES.publicCourses,
53307
+ TAG_TEMPLATES.publicEvents,
53165
53308
  "waitlist-claims"
53166
53309
  ],
53167
53310
  auth: "public",
@@ -53176,7 +53319,7 @@ var ENDPOINT_DEFINITIONS = {
53176
53319
  createCourseCheckout: {
53177
53320
  path: "/public/sites/{siteId}/courses/checkout",
53178
53321
  method: "POST",
53179
- tags: ["public-courses-{siteId}", "course-checkout"],
53322
+ tags: [TAG_TEMPLATES.publicCourses, "course-checkout"],
53180
53323
  auth: "public",
53181
53324
  responseKind: "json",
53182
53325
  errors: [
@@ -53190,7 +53333,7 @@ var ENDPOINT_DEFINITIONS = {
53190
53333
  getCourseRegistrationStatus: {
53191
53334
  path: "/public/sites/{siteId}/courses/registration-status",
53192
53335
  method: "GET",
53193
- tags: ["public-courses-{siteId}", "course-checkout"],
53336
+ tags: [TAG_TEMPLATES.publicCourses, "course-checkout"],
53194
53337
  auth: "public",
53195
53338
  responseKind: "json"
53196
53339
  },
@@ -53199,7 +53342,7 @@ var ENDPOINT_DEFINITIONS = {
53199
53342
  path: "/public/sites/{siteId}/bookings/products/passes",
53200
53343
  method: "GET",
53201
53344
  revalidate: 300,
53202
- tags: ["public-passes-{siteId}"],
53345
+ tags: [TAG_TEMPLATES.publicPasses],
53203
53346
  auth: "public",
53204
53347
  responseKind: "json"
53205
53348
  },
@@ -53208,7 +53351,7 @@ var ENDPOINT_DEFINITIONS = {
53208
53351
  path: "/public/sites/{siteId}/bookings/products/memberships",
53209
53352
  method: "GET",
53210
53353
  revalidate: 300,
53211
- tags: ["public-memberships-{siteId}"],
53354
+ tags: [TAG_TEMPLATES.publicMemberships],
53212
53355
  auth: "public",
53213
53356
  responseKind: "json"
53214
53357
  },
@@ -53217,7 +53360,7 @@ var ENDPOINT_DEFINITIONS = {
53217
53360
  path: "/public/sites/{siteId}/products",
53218
53361
  method: "GET",
53219
53362
  revalidate: 300,
53220
- tags: ["public-products-{siteId}"],
53363
+ tags: [TAG_TEMPLATES.publicProducts],
53221
53364
  errors: [],
53222
53365
  auth: "public",
53223
53366
  responseKind: "json"
@@ -53226,7 +53369,7 @@ var ENDPOINT_DEFINITIONS = {
53226
53369
  path: "/public/sites/{siteId}/gifting/offers",
53227
53370
  method: "GET",
53228
53371
  revalidate: 300,
53229
- tags: ["public-gifting-{siteId}"],
53372
+ tags: [TAG_TEMPLATES.publicGifting],
53230
53373
  errors: [],
53231
53374
  auth: "public",
53232
53375
  responseKind: "json"
@@ -53234,7 +53377,7 @@ var ENDPOINT_DEFINITIONS = {
53234
53377
  createPublicGiftingCheckout: {
53235
53378
  path: "/public/sites/{siteId}/gifting/checkout",
53236
53379
  method: "POST",
53237
- tags: ["public-gifting-{siteId}"],
53380
+ tags: [TAG_TEMPLATES.publicGifting],
53238
53381
  errors: [],
53239
53382
  auth: "public",
53240
53383
  responseKind: "json"
@@ -53242,7 +53385,7 @@ var ENDPOINT_DEFINITIONS = {
53242
53385
  claimGiftCardPublic: {
53243
53386
  path: "/public/sites/{siteId}/gifting/claim",
53244
53387
  method: "POST",
53245
- tags: ["public-gifting-{siteId}"],
53388
+ tags: [TAG_TEMPLATES.publicGifting],
53246
53389
  errors: [],
53247
53390
  auth: "public",
53248
53391
  responseKind: "json"
@@ -53250,14 +53393,14 @@ var ENDPOINT_DEFINITIONS = {
53250
53393
  createShopCheckout: {
53251
53394
  path: "/public/sites/{siteId}/bookings/checkout",
53252
53395
  method: "POST",
53253
- tags: ["public-shop-{siteId}", "shop-checkout"],
53396
+ tags: [TAG_TEMPLATES.publicShop, "shop-checkout"],
53254
53397
  auth: "public",
53255
53398
  responseKind: "json"
53256
53399
  },
53257
53400
  createUnifiedCheckout: {
53258
53401
  path: "/public/sites/{siteId}/checkout",
53259
53402
  method: "POST",
53260
- tags: ["public-checkout-{siteId}"],
53403
+ tags: [TAG_TEMPLATES.publicCheckout],
53261
53404
  auth: "public",
53262
53405
  responseKind: "json",
53263
53406
  errors: [
@@ -53296,7 +53439,7 @@ var ENDPOINT_DEFINITIONS = {
53296
53439
  path: "/public/sites/{siteId}/events/occurrences/resolve",
53297
53440
  method: "GET",
53298
53441
  revalidate: 60,
53299
- tags: ["public-events-{siteId}", "event-occurrence"],
53442
+ tags: [TAG_TEMPLATES.publicEvents, "event-occurrence"],
53300
53443
  auth: "public",
53301
53444
  responseKind: "json"
53302
53445
  },
@@ -53304,7 +53447,7 @@ var ENDPOINT_DEFINITIONS = {
53304
53447
  registerForEvent: {
53305
53448
  path: "/public/sites/{siteId}/events/register",
53306
53449
  method: "POST",
53307
- tags: ["public-events-{siteId}", "event-registration"],
53450
+ tags: [TAG_TEMPLATES.publicEvents, "event-registration"],
53308
53451
  auth: "public",
53309
53452
  responseKind: "json"
53310
53453
  },
@@ -53312,7 +53455,7 @@ var ENDPOINT_DEFINITIONS = {
53312
53455
  createPublicEventCheckout: {
53313
53456
  path: "/public/sites/{siteId}/events/checkout",
53314
53457
  method: "POST",
53315
- tags: ["public-events-{siteId}", "event-checkout"],
53458
+ tags: [TAG_TEMPLATES.publicEvents, "event-checkout"],
53316
53459
  auth: "public",
53317
53460
  responseKind: "json"
53318
53461
  },
@@ -53320,7 +53463,7 @@ var ENDPOINT_DEFINITIONS = {
53320
53463
  checkPublicEventEligibility: {
53321
53464
  path: "/public/sites/{siteId}/events/check-eligibility",
53322
53465
  method: "POST",
53323
- tags: ["public-events-{siteId}", "event-eligibility"],
53466
+ tags: [TAG_TEMPLATES.publicEvents, "event-eligibility"],
53324
53467
  auth: "public",
53325
53468
  responseKind: "json"
53326
53469
  },
@@ -53328,7 +53471,7 @@ var ENDPOINT_DEFINITIONS = {
53328
53471
  getPublicEventRegistrationStatus: {
53329
53472
  path: "/public/sites/{siteId}/events/registration-status",
53330
53473
  method: "GET",
53331
- tags: ["public-events-{siteId}", "event-registration"],
53474
+ tags: [TAG_TEMPLATES.publicEvents, "event-registration"],
53332
53475
  auth: "public",
53333
53476
  responseKind: "json"
53334
53477
  },
@@ -53336,7 +53479,7 @@ var ENDPOINT_DEFINITIONS = {
53336
53479
  getPublicEventTicketQrSvg: {
53337
53480
  path: "/public/sites/{siteId}/events/tickets/qr",
53338
53481
  method: "GET",
53339
- tags: ["public-events-{siteId}", "event-ticket-qr"],
53482
+ tags: [TAG_TEMPLATES.publicEvents, "event-ticket-qr"],
53340
53483
  auth: "public",
53341
53484
  responseKind: "text"
53342
53485
  },
@@ -56914,9 +57057,9 @@ async function prefetchBlockData2(page, context, client, options) {
56914
57057
  }
56915
57058
 
56916
57059
  // src/rendering/components/Block.shared.tsx
56917
- import { jsx as jsx61, jsxs as jsxs43 } from "react/jsx-runtime";
57060
+ import { jsx as jsx61, jsxs as jsxs44 } from "react/jsx-runtime";
56918
57061
  function renderUnknownBlock(blockKind) {
56919
- return /* @__PURE__ */ jsx61("div", { className: "p-4 border border-red-300 bg-red-50 rounded", children: /* @__PURE__ */ jsxs43("p", { className: "text-red-800 font-semibold", children: [
57062
+ return /* @__PURE__ */ jsx61("div", { className: "p-4 border border-red-300 bg-red-50 rounded", children: /* @__PURE__ */ jsxs44("p", { className: "text-red-800 font-semibold", children: [
56920
57063
  "Unknown block type: ",
56921
57064
  blockKind
56922
57065
  ] }) });
@@ -57063,10 +57206,95 @@ import { jsx as jsx62 } from "react/jsx-runtime";
57063
57206
  function Block(props2) {
57064
57207
  return /* @__PURE__ */ jsx62(BlockContent, { ...props2 });
57065
57208
  }
57209
+
57210
+ // src/rendering/overrides.ts
57211
+ var lazyBlockOverrideSymbol = /* @__PURE__ */ Symbol.for("riverbankcms.sdk.lazyBlockOverride");
57212
+ function defineLazyBlockOverride(load) {
57213
+ return {
57214
+ [lazyBlockOverrideSymbol]: true,
57215
+ load
57216
+ };
57217
+ }
57218
+
57219
+ // src/rendering/overrideResolution.ts
57220
+ function isRecord6(value) {
57221
+ return typeof value === "object" && value !== null;
57222
+ }
57223
+ function isBlockOutlineLike(value) {
57224
+ const id = value.id;
57225
+ return typeof value.kind === "string" && (typeof id === "string" || id === null) && (typeof value.purpose === "string" || isRecord6(value.content) || isRecord6(value.draftContent) || isRecord6(value.bindings));
57226
+ }
57227
+ function collectBlockKindsFromValue(value, usedKinds, seen) {
57228
+ if (!isRecord6(value)) return;
57229
+ if (seen.has(value)) return;
57230
+ seen.add(value);
57231
+ if (isBlockOutlineLike(value)) {
57232
+ usedKinds.add(value.kind);
57233
+ }
57234
+ for (const child of Object.values(value)) {
57235
+ if (Array.isArray(child)) {
57236
+ for (const item of child) {
57237
+ collectBlockKindsFromValue(item, usedKinds, seen);
57238
+ }
57239
+ continue;
57240
+ }
57241
+ collectBlockKindsFromValue(child, usedKinds, seen);
57242
+ }
57243
+ }
57244
+ function collectUsedBlockKinds(page) {
57245
+ const usedKinds = /* @__PURE__ */ new Set();
57246
+ const seen = /* @__PURE__ */ new WeakSet();
57247
+ for (const block of page?.blocks ?? []) {
57248
+ collectBlockKindsFromValue(block, usedKinds, seen);
57249
+ }
57250
+ return usedKinds;
57251
+ }
57252
+ function shortBlockKind(blockKind) {
57253
+ return blockKind.replace(/^block\./, "");
57254
+ }
57255
+ function selectOverrideKeysForUsedKinds(usedKinds, entries) {
57256
+ const availableKeys = new Set(entries.map(([key]) => key));
57257
+ const selectedKeys = /* @__PURE__ */ new Set();
57258
+ for (const blockKind of usedKinds) {
57259
+ if (availableKeys.has(blockKind)) {
57260
+ selectedKeys.add(blockKind);
57261
+ continue;
57262
+ }
57263
+ const shortKind = shortBlockKind(blockKind);
57264
+ if (availableKeys.has(shortKind)) {
57265
+ selectedKeys.add(shortKind);
57266
+ }
57267
+ }
57268
+ return selectedKeys;
57269
+ }
57270
+ function isLazyRegistration(registration) {
57271
+ return isRecord6(registration) && registration[lazyBlockOverrideSymbol] === true;
57272
+ }
57273
+ async function resolveOverrideComponent(registration) {
57274
+ if (isLazyRegistration(registration)) {
57275
+ return registration.load();
57276
+ }
57277
+ return registration;
57278
+ }
57279
+ async function resolveBlockOverridesForPage(registrations, page) {
57280
+ if (!registrations) return void 0;
57281
+ const entries = Object.entries(registrations);
57282
+ if (entries.length === 0) return void 0;
57283
+ const selectedKeys = selectOverrideKeysForUsedKinds(collectUsedBlockKinds(page), entries);
57284
+ if (selectedKeys.size === 0) return void 0;
57285
+ const resolved = {};
57286
+ for (const [key, registration] of entries) {
57287
+ if (!selectedKeys.has(key)) continue;
57288
+ resolved[key] = await resolveOverrideComponent(registration);
57289
+ }
57290
+ return resolved;
57291
+ }
57066
57292
  export {
57067
57293
  Block,
57068
57294
  Layout,
57069
- Page
57295
+ Page,
57296
+ defineLazyBlockOverride,
57297
+ resolveBlockOverridesForPage
57070
57298
  };
57071
57299
  /*! Bundled license information:
57072
57300