@riverbankcms/sdk 0.72.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 (146) hide show
  1. package/README.md +1 -1
  2. package/dist/{PreviewEditorSidebar-44T64SAR.mjs → PreviewEditorSidebar-U2IHCBYN.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-4WKHZTXW.mjs → PreviewEditorUI-ZGH2RQNP.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-MTUGBTLQ.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +10 -10
  6. package/dist/_dts/api/src/cache-tags.d.ts +22 -0
  7. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  8. package/dist/_dts/api/src/endpoints.d.ts +24 -24
  9. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +2 -1
  10. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +4 -1
  11. package/dist/_dts/blocks/src/client/booking-form.d.ts +2 -0
  12. package/dist/_dts/blocks/src/client/carousel.d.ts +1 -0
  13. package/dist/_dts/blocks/src/client/course-registration.d.ts +2 -0
  14. package/dist/_dts/blocks/src/client/events.d.ts +4 -0
  15. package/dist/_dts/blocks/src/client/form.d.ts +2 -0
  16. package/dist/_dts/blocks/src/client/header.d.ts +1 -0
  17. package/dist/_dts/blocks/src/client/location-map.d.ts +1 -0
  18. package/dist/_dts/blocks/src/client/newsletter-form.d.ts +2 -0
  19. package/dist/_dts/blocks/src/client/shop.d.ts +6 -0
  20. package/dist/_dts/blocks/src/lib/video.d.ts +2 -0
  21. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +21 -1
  22. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +6 -6
  23. package/dist/_dts/blocks/src/system/node/fragments/backgroundLayer.d.ts +15 -1
  24. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +11 -0
  25. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +1 -0
  26. package/dist/_dts/blocks/src/system/runtime/header/enhanceHeaderSection.d.ts +13 -0
  27. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -2
  28. package/dist/_dts/blocks/src/system/runtime/nodes/events/index.d.ts +3 -0
  29. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +1 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +1 -0
  31. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +6 -0
  32. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +5 -0
  33. package/dist/_dts/preview-next/src/client/preview/SiteChromeEditableSurface.d.ts +12 -2
  34. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -0
  35. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -2
  36. package/dist/_dts/sdk/src/rendering/islands/deferredVideoEmbeds.d.ts +2 -0
  37. package/dist/_dts/sdk/src/rendering/islands/enhancers/accordion.d.ts +1 -0
  38. package/dist/_dts/sdk/src/rendering/islands/enhancers/bookingForm.d.ts +1 -0
  39. package/dist/_dts/sdk/src/rendering/islands/enhancers/carousel.d.ts +1 -0
  40. package/dist/_dts/sdk/src/rendering/islands/enhancers/cart.d.ts +1 -0
  41. package/dist/_dts/sdk/src/rendering/islands/enhancers/checkout.d.ts +1 -0
  42. package/dist/_dts/sdk/src/rendering/islands/enhancers/courseRegistration.d.ts +1 -0
  43. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventCalendar.d.ts +1 -0
  44. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventCombined.d.ts +1 -0
  45. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventDetails.d.ts +1 -0
  46. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventListing.d.ts +1 -0
  47. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventRegistration.d.ts +1 -0
  48. package/dist/_dts/sdk/src/rendering/islands/enhancers/form.d.ts +1 -0
  49. package/dist/_dts/sdk/src/rendering/islands/enhancers/headerSection.d.ts +1 -0
  50. package/dist/_dts/sdk/src/rendering/islands/enhancers/locationMap.d.ts +1 -0
  51. package/dist/_dts/sdk/src/rendering/islands/enhancers/newsletterForm.d.ts +1 -0
  52. package/dist/_dts/sdk/src/rendering/islands/enhancers/productDetail.d.ts +1 -0
  53. package/dist/_dts/sdk/src/rendering/islands/enhancers/productList.d.ts +1 -0
  54. package/dist/_dts/sdk/src/rendering/islands/enhancers/shop.d.ts +1 -0
  55. package/dist/_dts/sdk/src/rendering/islands/hydrateBlocksIslands.d.ts +2 -2
  56. package/dist/_dts/sdk/src/rendering/islands/propsDecoder.d.ts +7 -0
  57. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +9 -0
  58. package/dist/_dts/sdk/src/rendering/server.d.ts +3 -0
  59. package/dist/_dts/sdk/src/version.d.ts +1 -1
  60. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  61. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +7 -7
  62. package/dist/_dts/theme-core/src/buttons/types.d.ts +20 -20
  63. package/dist/_dts/theme-core/src/cards/types.d.ts +2 -2
  64. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  65. package/dist/_dts/theme-core/src/header/navDropdownSizing.d.ts +7 -0
  66. package/dist/_dts/theme-core/src/inputs/types.d.ts +3 -3
  67. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
  68. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +156 -156
  69. package/dist/_dts/theme-core/src/navigation/types.d.ts +1 -1
  70. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +4 -4
  71. package/dist/_dts/theme-core/src/schema.d.ts +178 -178
  72. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +2 -2
  73. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +8 -8
  74. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +5 -5
  75. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  76. package/dist/{chunk-G4NLITC2.mjs → chunk-BGMNDF6T.mjs} +7 -7
  77. package/dist/{chunk-3YNCQG5N.mjs → chunk-GFE74WRD.mjs} +457 -98
  78. package/dist/{chunk-HV745JYE.mjs → chunk-RWXQBRQZ.mjs} +1 -1
  79. package/dist/{chunk-7RX72SK2.mjs → chunk-VX7B5VAC.mjs} +36 -25
  80. package/dist/{chunk-YRJKZEQ3.mjs → chunk-Z7JLNTJR.mjs} +1 -1
  81. package/dist/{chunk-KWQPAJYS.mjs → chunk-ZSHFGFUG.mjs} +2 -2
  82. package/dist/cli/index.mjs +3498 -3826
  83. package/dist/client/accordion-T2UD2ZTH.mjs +120 -0
  84. package/dist/client/altcha-LIGLPZS5.mjs +2755 -0
  85. package/dist/client/bookingForm-GUP75FKN.mjs +3022 -0
  86. package/dist/client/bookings.mjs +32 -10
  87. package/dist/client/carousel-2NQA6V57.mjs +47 -0
  88. package/dist/client/cart-5TFIAFDS.mjs +18 -0
  89. package/dist/client/checkout-TP4WAHZE.mjs +18 -0
  90. package/dist/client/chunk-2PHQZ666.mjs +383 -0
  91. package/dist/client/chunk-3DCJ45Z2.mjs +36 -0
  92. package/dist/client/chunk-3PEDD5KJ.mjs +146 -0
  93. package/dist/client/chunk-CY2ZTSE5.mjs +204 -0
  94. package/dist/client/chunk-F7LHOKEH.mjs +146 -0
  95. package/dist/client/chunk-FU2QRZMX.mjs +7617 -0
  96. package/dist/client/chunk-I2MMZO53.mjs +6 -0
  97. package/dist/client/chunk-II7O4XN3.mjs +2206 -0
  98. package/dist/client/chunk-M3L3KYYR.mjs +1181 -0
  99. package/dist/client/chunk-N7PBWBWQ.mjs +26 -0
  100. package/dist/client/chunk-NWOUL6JY.mjs +1378 -0
  101. package/dist/client/chunk-OJPZEZU2.mjs +31 -0
  102. package/dist/client/chunk-PMAIXMAB.mjs +1960 -0
  103. package/dist/client/chunk-RTZ3JKKX.mjs +178 -0
  104. package/dist/client/chunk-TQ5MSPDX.mjs +74 -0
  105. package/dist/client/chunk-VUAOE3AG.mjs +5592 -0
  106. package/dist/client/chunk-WJXXNDSE.mjs +245 -0
  107. package/dist/client/chunk-YLMKMCSJ.mjs +86 -0
  108. package/dist/client/chunk-ZLMS67RR.mjs +106 -0
  109. package/dist/client/client.mjs +51865 -52071
  110. package/dist/client/courseRegistration-5DPU6PDY.mjs +1737 -0
  111. package/dist/client/eventCalendar-F3GZGTEF.mjs +40 -0
  112. package/dist/client/eventCombined-BQOB6QMY.mjs +37 -0
  113. package/dist/client/eventDetails-PEM2EJWE.mjs +25 -0
  114. package/dist/client/eventListing-YMIQPVME.mjs +40 -0
  115. package/dist/client/eventRegistration-4I6ZNDUF.mjs +40 -0
  116. package/dist/client/form-ZJVAYZ6G.mjs +300 -0
  117. package/dist/client/headerSection-TOT5MGTF.mjs +729 -0
  118. package/dist/client/hooks.mjs +91 -42
  119. package/dist/client/locationMap-J66NZREU.mjs +227 -0
  120. package/dist/client/newsletterForm-ET2XUMRO.mjs +208 -0
  121. package/dist/client/productDetail-C2XIH7C5.mjs +18 -0
  122. package/dist/client/productList-T2AZLFTP.mjs +18 -0
  123. package/dist/client/rendering/client.mjs +12796 -18295
  124. package/dist/client/rendering/islands.mjs +108 -44022
  125. package/dist/client/rendering.mjs +45141 -45346
  126. package/dist/client/shop-UZ6IUZXD.mjs +20 -0
  127. package/dist/preview-next/before-render.mjs +37 -25
  128. package/dist/preview-next/client/runtime.mjs +5 -5
  129. package/dist/preview-next/middleware.mjs +37 -25
  130. package/dist/{sdk-runtime-NGDWSWOS.mjs → sdk-runtime-JCUQM63Y.mjs} +6 -6
  131. package/dist/server/components.mjs +472 -276
  132. package/dist/server/config-validation.mjs +91 -42
  133. package/dist/server/config.mjs +91 -42
  134. package/dist/server/data.mjs +91 -42
  135. package/dist/server/index.mjs +45 -33
  136. package/dist/server/next.mjs +468 -272
  137. package/dist/server/page-converter.mjs +41 -17
  138. package/dist/server/prebuild.mjs +1 -1
  139. package/dist/server/rendering/server.mjs +556 -275
  140. package/dist/server/rendering.mjs +474 -278
  141. package/dist/server/routing.mjs +99 -43
  142. package/dist/server/server.mjs +92 -43
  143. package/dist/server/theme-bridge.mjs +29 -0
  144. package/dist/styles/index.css +16 -0
  145. package/package.json +2 -1
  146. package/dist/SdkPreviewModeRuntime-FO6V7YVY.mjs +0 -8
@@ -1431,6 +1431,9 @@ function validationContext(options = {}) {
1431
1431
  function formatFieldPath(path) {
1432
1432
  return path.map((segment) => String(segment)).join(".");
1433
1433
  }
1434
+ function toZodIssuePath(path) {
1435
+ return [...path];
1436
+ }
1434
1437
  function fieldIssueToMessage(issue2) {
1435
1438
  switch (issue2.kind) {
1436
1439
  case "required":
@@ -1559,6 +1562,9 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
1559
1562
  return assertNever(field);
1560
1563
  }
1561
1564
  }
1565
+ function deriveFieldValidationPlans(fields3, parentPath = []) {
1566
+ return fields3.map((field) => deriveFieldValidationPlan(field, [...parentPath, field.id]));
1567
+ }
1562
1568
  function commonConstraints(required, ...specific) {
1563
1569
  return required ? [{ kind: "required" }, ...specific] : [...specific];
1564
1570
  }
@@ -1574,9 +1580,19 @@ function makePlan(kind, valueKind, field, path, required, constraints) {
1574
1580
  fieldType: field.type,
1575
1581
  path,
1576
1582
  required,
1583
+ visibility: fieldVisibility(field),
1577
1584
  constraints
1578
1585
  };
1579
1586
  }
1587
+ function fieldVisibility(field) {
1588
+ if (field.ui?.hidden) {
1589
+ return { kind: "hidden" };
1590
+ }
1591
+ if (field.visibleRoles && field.visibleRoles.length > 0) {
1592
+ return { kind: "roleRestricted", roles: field.visibleRoles };
1593
+ }
1594
+ return { kind: "visible" };
1595
+ }
1580
1596
  function withRepeaterItemConstraints(field, constraints) {
1581
1597
  const next = [...constraints];
1582
1598
  if (typeof field.minItems === "number") next.push({ kind: "minItems", minimum: field.minItems });
@@ -1590,7 +1606,7 @@ function deriveRepeatedItemVariants(field, parentPath) {
1590
1606
  }));
1591
1607
  }
1592
1608
  function deriveNestedFieldPlans(fields3, parentPath) {
1593
- return fields3.map((field) => deriveFieldValidationPlan(field, [...parentPath, field.id]));
1609
+ return deriveFieldValidationPlans(fields3, parentPath);
1594
1610
  }
1595
1611
  function getRepeaterFields(field) {
1596
1612
  const fields3 = field.polymorphic && field.itemTypes ? Object.values(field.itemTypes).flatMap((itemType) => itemType.fields) : field.schema?.fields ?? [];
@@ -1616,6 +1632,71 @@ function resolveSelectConstraintSource(field) {
1616
1632
  return assertNever(source);
1617
1633
  }
1618
1634
  }
1635
+ function normalizeStoredContentValues(plans, content, options = {}) {
1636
+ if (!content || typeof content !== "object" || Array.isArray(content)) {
1637
+ return {};
1638
+ }
1639
+ const planMap = new Map(plans.map((plan) => [plan.fieldId, plan]));
1640
+ const normalized = {};
1641
+ const ctx = validationContext(options);
1642
+ for (const [key, value] of Object.entries(content)) {
1643
+ const plan = planMap.get(key);
1644
+ normalized[key] = plan ? normalizeStoredFieldValueWithContext(plan, value, ctx) : value;
1645
+ }
1646
+ return normalized;
1647
+ }
1648
+ function normalizeStoredFieldValueWithContext(plan, value, ctx) {
1649
+ if (value === null && !plan.required) {
1650
+ return void 0;
1651
+ }
1652
+ switch (plan.kind) {
1653
+ case "group":
1654
+ return normalizeStoredObjectChildren(plan.children, value, childValidationContext(plan, ctx));
1655
+ case "repeater":
1656
+ return normalizeStoredRepeaterItems(plan, value, ctx);
1657
+ case "string":
1658
+ case "number":
1659
+ case "boolean":
1660
+ case "richText":
1661
+ case "media":
1662
+ case "link":
1663
+ case "select":
1664
+ case "passthrough":
1665
+ return normalizeFieldValue(plan, value, ctx);
1666
+ default:
1667
+ return assertNever(plan);
1668
+ }
1669
+ }
1670
+ function normalizeStoredObjectChildren(children, value, ctx) {
1671
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
1672
+ return value;
1673
+ }
1674
+ const normalized = { ...value };
1675
+ for (const child of children) {
1676
+ normalized[child.fieldId] = normalizeStoredFieldValueWithContext(
1677
+ child,
1678
+ normalized[child.fieldId],
1679
+ ctx
1680
+ );
1681
+ }
1682
+ return normalized;
1683
+ }
1684
+ function normalizeStoredRepeaterItems(plan, value, ctx) {
1685
+ if (!Array.isArray(value)) {
1686
+ return value;
1687
+ }
1688
+ return value.map((item) => {
1689
+ if (!item || typeof item !== "object" || Array.isArray(item)) {
1690
+ return item;
1691
+ }
1692
+ const itemRecord = item;
1693
+ const fields3 = plan.repeatedItemVariants ? plan.repeatedItemVariants.find((variant) => variant.typeId === itemRecord._type)?.fields : plan.repeatedItemPlan;
1694
+ if (!fields3) {
1695
+ return item;
1696
+ }
1697
+ return normalizeStoredObjectChildren(fields3, itemRecord, ctx);
1698
+ });
1699
+ }
1619
1700
  function normalizeFieldValue(plan, value, ctx) {
1620
1701
  switch (plan.kind) {
1621
1702
  case "number":
@@ -1870,16 +1951,19 @@ function fieldPlanToZod(plan, options = {}) {
1870
1951
  const ctx = validationContext(options);
1871
1952
  return z4.any().transform((value) => normalizeFieldValue(plan, value, ctx)).superRefine((value, zodCtx) => {
1872
1953
  for (const validationIssue of validateNormalizedFieldValue(plan, value, ctx)) {
1873
- addFieldIssueToZodContext(zodCtx, validationIssue);
1954
+ addFieldIssueToZodContext(zodCtx, validationIssue, plan.path);
1874
1955
  }
1875
1956
  });
1876
1957
  }
1877
- function addFieldIssueToZodContext(zodCtx, validationIssue) {
1958
+ function addFieldIssueToZodContext(zodCtx, validationIssue, rootPath) {
1878
1959
  const message = fieldIssueToMessage(validationIssue);
1960
+ const path = relativeZodIssuePath(validationIssue.path, rootPath);
1961
+ const issuePath = path.length > 0 ? { path: toZodIssuePath(path) } : {};
1879
1962
  switch (validationIssue.kind) {
1880
1963
  case "required":
1881
1964
  if (validationIssue.emptyOrigin) {
1882
1965
  zodCtx.addIssue({
1966
+ ...issuePath,
1883
1967
  code: "too_small",
1884
1968
  origin: validationIssue.emptyOrigin,
1885
1969
  minimum: 1,
@@ -1888,10 +1972,11 @@ function addFieldIssueToZodContext(zodCtx, validationIssue) {
1888
1972
  });
1889
1973
  return;
1890
1974
  }
1891
- zodCtx.addIssue({ code: "invalid_type", expected: "nonoptional", message });
1975
+ zodCtx.addIssue({ ...issuePath, code: "invalid_type", expected: "nonoptional", message });
1892
1976
  return;
1893
1977
  case "tooLong":
1894
1978
  zodCtx.addIssue({
1979
+ ...issuePath,
1895
1980
  code: "too_big",
1896
1981
  origin: "string",
1897
1982
  maximum: validationIssue.maximum,
@@ -1900,7 +1985,7 @@ function addFieldIssueToZodContext(zodCtx, validationIssue) {
1900
1985
  });
1901
1986
  return;
1902
1987
  case "invalidOption":
1903
- zodCtx.addIssue({ code: "invalid_value", values: [], message });
1988
+ zodCtx.addIssue({ ...issuePath, code: "invalid_value", values: [], message });
1904
1989
  return;
1905
1990
  case "wrongType":
1906
1991
  case "invalidEmail":
@@ -1917,12 +2002,15 @@ function addFieldIssueToZodContext(zodCtx, validationIssue) {
1917
2002
  case "invalidMedia":
1918
2003
  case "invalidLink":
1919
2004
  case "invalidReference":
1920
- zodCtx.addIssue({ code: "custom", message });
2005
+ zodCtx.addIssue({ ...issuePath, code: "custom", message });
1921
2006
  return;
1922
2007
  default:
1923
2008
  assertNever(validationIssue);
1924
2009
  }
1925
2010
  }
2011
+ function relativeZodIssuePath(path, rootPath) {
2012
+ return startsWithFieldPath(path, rootPath) ? path.slice(rootPath.length) : path;
2013
+ }
1926
2014
  function compilePattern(pattern) {
1927
2015
  try {
1928
2016
  return new RegExp(pattern);
@@ -2000,24 +2088,33 @@ function preprocessEmptyValues(content) {
2000
2088
  }
2001
2089
  return result;
2002
2090
  }
2003
- function deriveContentZodFromManifest(manifestOrFields, options = {}) {
2004
- const shape = {};
2005
- const fields3 = Array.isArray(manifestOrFields) ? manifestOrFields : manifestOrFields.fields ?? [];
2006
- for (const field of fields3) {
2007
- shape[field.id] = buildFieldSchema(field, options);
2008
- }
2009
- return z5.object(shape).catchall(z5.unknown()).passthrough();
2010
- }
2011
2091
  function createManifestValidator(manifestOrFields, options = {}) {
2012
2092
  const isDraft = options.mode === "draft";
2013
- const baseSchema = deriveContentZodFromManifest(manifestOrFields, options);
2093
+ const plans = derivePlansFromManifestOrFields(manifestOrFields);
2094
+ const baseSchema = deriveContentZodFromPlans(plans, options);
2014
2095
  if (isDraft) {
2015
- return z5.preprocess(preprocessEmptyValues, baseSchema);
2096
+ return z5.preprocess(
2097
+ (content) => preprocessEmptyValues(
2098
+ normalizeStoredContentValues(plans, content, options)
2099
+ ),
2100
+ baseSchema
2101
+ );
2016
2102
  }
2017
- return baseSchema;
2103
+ return z5.preprocess(
2104
+ (content) => normalizeStoredContentValues(plans, content, options),
2105
+ baseSchema
2106
+ );
2107
+ }
2108
+ function deriveContentZodFromPlans(plans, options) {
2109
+ const shape = {};
2110
+ for (const plan of plans) {
2111
+ shape[plan.fieldId] = fieldPlanToZod(plan, options);
2112
+ }
2113
+ return z5.object(shape).catchall(z5.unknown()).passthrough();
2018
2114
  }
2019
- function buildFieldSchema(field, options) {
2020
- return fieldPlanToZod(deriveFieldValidationPlan(field), options);
2115
+ function derivePlansFromManifestOrFields(manifestOrFields) {
2116
+ const fields3 = Array.isArray(manifestOrFields) ? manifestOrFields : manifestOrFields.fields ?? [];
2117
+ return deriveFieldValidationPlans(fields3);
2021
2118
  }
2022
2119
 
2023
2120
  // ../blocks/src/system/manifest/variantKey.ts
@@ -9938,7 +10035,9 @@ function backgroundLayer(path, options = {}) {
9938
10035
  imageClassName,
9939
10036
  overlayClassName = "background-overlay rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-pointer-events-none",
9940
10037
  fallbackToken,
9941
- omitImageLayer = false
10038
+ omitImageLayer = false,
10039
+ imageLoading,
10040
+ imageFetchPriority
9942
10041
  } = options;
9943
10042
  const styleLayer = el("div", {
9944
10043
  className: styleClassName,
@@ -9954,11 +10053,14 @@ function backgroundLayer(path, options = {}) {
9954
10053
  }
9955
10054
  }
9956
10055
  });
9957
- const imageLayer = createBackgroundImageNode(path, imageClassName);
10056
+ const imageLayer = createBackgroundImageNode(path, imageClassName, {
10057
+ loading: imageLoading,
10058
+ fetchPriority: imageFetchPriority
10059
+ });
9958
10060
  const overlayLayer = createBackgroundOverlayNode(path, overlayClassName);
9959
10061
  return omitImageLayer ? [styleLayer, overlayLayer] : [styleLayer, imageLayer, overlayLayer];
9960
10062
  }
9961
- function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10") {
10063
+ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10", options = {}) {
9962
10064
  const imagePath = `${path}.image`;
9963
10065
  return media(
9964
10066
  {
@@ -9979,7 +10081,9 @@ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-1
9979
10081
  transforms: [{ id: "background.resolveImageStyle" }]
9980
10082
  }
9981
10083
  },
9982
- videoPlayback: "background"
10084
+ videoPlayback: "background",
10085
+ ...options.loading ? { loading: options.loading } : {},
10086
+ ...options.fetchPriority ? { fetchPriority: options.fetchPriority } : {}
9983
10087
  },
9984
10088
  when(imagePath),
9985
10089
  bind(imagePath)
@@ -10176,12 +10280,16 @@ function styledSection(config) {
10176
10280
  bindFrom = "_sectionStyles",
10177
10281
  imageClassName = "rb-absolute rb-z-neg-10",
10178
10282
  renderBackgroundImage = true,
10283
+ backgroundImageLoading,
10284
+ backgroundImageFetchPriority,
10179
10285
  fullWidthPath
10180
10286
  } = config;
10181
10287
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
10182
10288
  imageClassName,
10183
10289
  fallbackToken: background,
10184
- omitImageLayer: !renderBackgroundImage
10290
+ omitImageLayer: !renderBackgroundImage,
10291
+ imageLoading: backgroundImageLoading,
10292
+ imageFetchPriority: backgroundImageFetchPriority
10185
10293
  });
10186
10294
  const childrenArray = Array.isArray(children) ? children : [children];
10187
10295
  return section(
@@ -10396,7 +10504,7 @@ function navRow(opts) {
10396
10504
  el(
10397
10505
  "div",
10398
10506
  {
10399
- className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-min-w-12rem rb-overflow-hidden",
10507
+ className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-overflow-hidden",
10400
10508
  id: dropdownMenuId
10401
10509
  },
10402
10510
  [dropdownLinks]
@@ -13971,6 +14079,10 @@ var heroCopyAndCta = composeFragments([
13971
14079
  { fragment: heroCopyFragment },
13972
14080
  { fragment: heroCtaRowFragment }
13973
14081
  ]);
14082
+ var heroPriorityMediaProps = {
14083
+ loading: "eager",
14084
+ fetchPriority: "high"
14085
+ };
13974
14086
  var heroContentNodes = heroCopyAndCta.layout;
13975
14087
  function heroContentCard(children, gap) {
13976
14088
  return styledContainer({
@@ -14033,7 +14145,8 @@ function heroSplitImagePane() {
14033
14145
  [
14034
14146
  media(
14035
14147
  {
14036
- className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover"
14148
+ className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover",
14149
+ ...heroPriorityMediaProps
14037
14150
  },
14038
14151
  when("_sectionStyles.background.image"),
14039
14152
  bind("_sectionStyles.background.image")
@@ -14044,13 +14157,17 @@ function heroSplitImagePane() {
14044
14157
  var classicLayout = styledSection({
14045
14158
  children: heroContainerStack(heroContentNodes, "md"),
14046
14159
  // styledContainer (rb-container) already provides horizontal padding
14047
- baseClass: ""
14160
+ baseClass: "",
14161
+ backgroundImageLoading: heroPriorityMediaProps.loading,
14162
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
14048
14163
  });
14049
14164
  var microLayout = styledSection({
14050
14165
  children: heroContainerStack(heroContentNodes, "sm"),
14051
14166
  // styledContainer (rb-container) already provides horizontal padding
14052
14167
  baseClass: "",
14053
- spacing: "compact"
14168
+ spacing: "compact",
14169
+ backgroundImageLoading: heroPriorityMediaProps.loading,
14170
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
14054
14171
  });
14055
14172
  function splitLayoutWith(children) {
14056
14173
  return styledSection({
@@ -18443,7 +18560,7 @@ var cardStylingFields = [
18443
18560
  description: "Text for the event action button",
18444
18561
  required: false,
18445
18562
  multiline: false,
18446
- defaultValue: "View event",
18563
+ defaultValue: "Book now",
18447
18564
  maxLength: 40
18448
18565
  }
18449
18566
  ];
@@ -18955,6 +19072,7 @@ var eventRegistrationBlockDefinition = {
18955
19072
  limit: "50",
18956
19073
  // Get more events for selection
18957
19074
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
19075
+ readProfile: "registration",
18958
19076
  // When rendering on an event content entry page, scope the list to that entry so
18959
19077
  // the wizard always includes the current event (and avoids stale cached "all events" responses).
18960
19078
  entryId: { $bind: { from: "$root.contentEntry._entryId", fallback: "" } }
@@ -19903,7 +20021,7 @@ var eventSpotlightLayout = [
19903
20021
  columns: { $bind: { from: "content.columns", fallback: "3" } },
19904
20022
  cardVariant: { $bind: { from: "content.cardVariant", fallback: "default" } },
19905
20023
  buttonVariant: { $bind: { from: "content.buttonVariant", fallback: "primary" } },
19906
- buttonText: { $bind: { from: "content.buttonText", fallback: "View event" } },
20024
+ buttonText: { $bind: { from: "content.buttonText", fallback: "Book now" } },
19907
20025
  ctaLabel: { $bind: { from: "content.ctaLabel" } },
19908
20026
  ctaUrl: { $bind: { from: "content.ctaUrl", transforms: [{ id: "links.resolve" }] } },
19909
20027
  showVenue: { $bind: { from: "content.showVenue" } },
@@ -19947,7 +20065,8 @@ var eventSpotlightBlockDefinition = {
19947
20065
  siteId: { $bind: { from: "$root.siteId" } },
19948
20066
  limit: { $bind: { from: "content.maxEvents", fallback: "3" } },
19949
20067
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
19950
- detailLevel: "listing"
20068
+ detailLevel: "listing",
20069
+ readProfile: "spotlight"
19951
20070
  },
19952
20071
  mode: "server"
19953
20072
  }
@@ -20419,7 +20538,7 @@ var COLUMN_CLASSES = {
20419
20538
  };
20420
20539
  function getContainerClass(layout, columns) {
20421
20540
  if (layout === "compact") {
20422
- return "rb-flex rb-flex-col rb-gap-2";
20541
+ return "event-listing-compact-container rb-flex rb-flex-col rb-gap-2";
20423
20542
  }
20424
20543
  if (layout === "stack") {
20425
20544
  return "rb-flex rb-flex-col rb-gap-6";
@@ -20550,7 +20669,7 @@ function formatEventPrice(event) {
20550
20669
  }
20551
20670
  function resolveEventCta(event, buttonText) {
20552
20671
  const { isFull: isSoldOut } = getEventAvailability(event);
20553
- const defaultButtonText = event.kind === "course_session" ? "View course" : "View event";
20672
+ const defaultButtonText = event.kind === "course_session" ? "Book course" : "Book now";
20554
20673
  const effectiveButtonText = buttonText ?? defaultButtonText;
20555
20674
  if (isSoldOut) {
20556
20675
  return { label: "Sold out", href: event.path, hidden: true };
@@ -21752,6 +21871,8 @@ var MediaNodeServer = ({
21752
21871
  className,
21753
21872
  style,
21754
21873
  videoPlayback = "inline",
21874
+ loading = "lazy",
21875
+ fetchPriority,
21755
21876
  size = ImagePresets.full,
21756
21877
  fieldPath,
21757
21878
  blockKind,
@@ -21788,7 +21909,8 @@ var MediaNodeServer = ({
21788
21909
  alt: value.alt ?? "",
21789
21910
  className,
21790
21911
  style: computedStyle,
21791
- loading: "lazy",
21912
+ loading,
21913
+ fetchPriority,
21792
21914
  decoding: "async"
21793
21915
  }
21794
21916
  );
@@ -22162,7 +22284,7 @@ var eventListingBlockRuntime = defineProgressiveBlockRuntime({
22162
22284
  containerClass: getContainerClass(layout, source.columns ?? "3"),
22163
22285
  cardVariant: source.cardVariant ?? "default",
22164
22286
  buttonVariant: source.buttonVariant ?? "primary",
22165
- buttonText: source.buttonText ?? "View event",
22287
+ buttonText: source.buttonText ?? "Book now",
22166
22288
  showVenue: source.showVenue ?? true,
22167
22289
  showMap: source.showMap ?? true,
22168
22290
  showCapacity: source.showCapacity ?? true,
@@ -22409,7 +22531,7 @@ var eventListingLayout = [
22409
22531
  loadMoreText: { $bind: { from: "content.loadMoreText", fallback: "Load more events" } },
22410
22532
  cardVariant: { $bind: { from: "content.cardVariant", fallback: "default" } },
22411
22533
  buttonVariant: { $bind: { from: "content.buttonVariant", fallback: "primary" } },
22412
- buttonText: { $bind: { from: "content.buttonText", fallback: "View event" } },
22534
+ buttonText: { $bind: { from: "content.buttonText", fallback: "Book now" } },
22413
22535
  showVenue: { $bind: { from: "content.showVenue" } },
22414
22536
  showMap: { $bind: { from: "content.showMap" } },
22415
22537
  showCapacity: { $bind: { from: "content.showCapacity" } },
@@ -22487,6 +22609,7 @@ var eventListingBlockDefinition = {
22487
22609
  limit: { $bind: { from: "content.eventsPerPage", fallback: "12" } },
22488
22610
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
22489
22611
  detailLevel: "listing",
22612
+ readProfile: { $bind: { from: "content.layout", fallback: "listing-card" } },
22490
22613
  kind: { $bind: { from: "content.kind" } },
22491
22614
  eventSurface: { $bind: { from: "content.eventSurface" } },
22492
22615
  eventPresets: {
@@ -22626,7 +22749,7 @@ function buildEventCalendarDisplay(source) {
22626
22749
  ),
22627
22750
  filterVenueId: normalizeEventVenueId(source.filterVenueId),
22628
22751
  buttonVariant: source.buttonVariant ?? "primary",
22629
- buttonText: source.buttonText ?? "View event",
22752
+ buttonText: source.buttonText ?? "Book now",
22630
22753
  showVenue: source.showVenue ?? true,
22631
22754
  showMap: source.showMap ?? true,
22632
22755
  showCapacity: source.showCapacity ?? true,
@@ -22815,7 +22938,7 @@ var eventCalendarLayout = [
22815
22938
  $bind: { from: "content.buttonVariant", fallback: "primary" }
22816
22939
  },
22817
22940
  buttonText: {
22818
- $bind: { from: "content.buttonText", fallback: "View event" }
22941
+ $bind: { from: "content.buttonText", fallback: "Book now" }
22819
22942
  },
22820
22943
  emptyMessage: { $bind: { from: "content.emptyMessage" } }
22821
22944
  })
@@ -23276,6 +23399,7 @@ var eventCalendarBlockDefinition = {
23276
23399
  limit: 100,
23277
23400
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
23278
23401
  detailLevel: "listing",
23402
+ readProfile: { $bind: { from: "content.variant", fallback: "listing-card" } },
23279
23403
  // Pass filter params if configured
23280
23404
  kind: { $bind: { from: "content.kind" } },
23281
23405
  eventSurface: { $bind: { from: "content.eventSurface" } },
@@ -29607,9 +29731,9 @@ function getEmbedUrl(info) {
29607
29731
  const kind = info.kind ?? "p";
29608
29732
  return `https://www.instagram.com/${kind}/${info.id}/embed`;
29609
29733
  }
29610
- default:
29611
- return "";
29612
29734
  }
29735
+ const exhaustive = info.provider;
29736
+ return exhaustive;
29613
29737
  }
29614
29738
  function getThumbnailUrl(info) {
29615
29739
  switch (info.provider) {
@@ -29619,9 +29743,20 @@ function getThumbnailUrl(info) {
29619
29743
  return `https://vumbnail.com/${info.id}.jpg`;
29620
29744
  case "instagram":
29621
29745
  return "";
29622
- default:
29623
- return "";
29624
29746
  }
29747
+ const exhaustive = info.provider;
29748
+ return exhaustive;
29749
+ }
29750
+ function getVideoEmbedLoadingStrategy(provider) {
29751
+ switch (provider) {
29752
+ case "youtube":
29753
+ case "vimeo":
29754
+ return "native-lazy";
29755
+ case "instagram":
29756
+ return "defer-until-near-viewport";
29757
+ }
29758
+ const exhaustive = provider;
29759
+ return exhaustive;
29625
29760
  }
29626
29761
  function getVideoEmbed(url) {
29627
29762
  const info = parseVideoUrl(url);
@@ -29636,7 +29771,7 @@ function getVideoEmbed(url) {
29636
29771
  }
29637
29772
 
29638
29773
  // ../blocks/src/system/runtime/nodes/video-embed.tsx
29639
- import { jsx as jsx18 } from "react/jsx-runtime";
29774
+ import { jsx as jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
29640
29775
  var VideoEmbedNode = ({
29641
29776
  value,
29642
29777
  className,
@@ -29679,34 +29814,43 @@ var VideoEmbedNode = ({
29679
29814
  );
29680
29815
  }
29681
29816
  const title = getVideoTitle(embedInfo);
29682
- return /* @__PURE__ */ jsx18("div", { ...rest, children: /* @__PURE__ */ jsx18(
29817
+ const loadingStrategy = getVideoEmbedLoadingStrategy(embedInfo.provider);
29818
+ const shouldDeferSrc = loadingStrategy === "defer-until-near-viewport";
29819
+ return /* @__PURE__ */ jsx18("div", { ...rest, children: /* @__PURE__ */ jsxs7(
29683
29820
  "div",
29684
29821
  {
29685
29822
  className,
29823
+ "data-rb-video-embed-wrapper": shouldDeferSrc ? "true" : void 0,
29686
29824
  style: {
29687
29825
  ...style,
29688
29826
  aspectRatio: resolvedAspectRatio,
29689
29827
  position: "relative",
29690
29828
  width: "100%"
29691
29829
  },
29692
- children: /* @__PURE__ */ jsx18(
29693
- "iframe",
29694
- {
29695
- src: embedInfo.embedUrl,
29696
- title,
29697
- style: {
29698
- position: "absolute",
29699
- top: 0,
29700
- left: 0,
29701
- width: "100%",
29702
- height: "100%",
29703
- border: "none"
29704
- },
29705
- allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
29706
- referrerPolicy: "no-referrer-when-downgrade",
29707
- allowFullScreen: true
29708
- }
29709
- )
29830
+ children: [
29831
+ /* @__PURE__ */ jsx18(
29832
+ "iframe",
29833
+ {
29834
+ src: shouldDeferSrc ? void 0 : embedInfo.embedUrl,
29835
+ title,
29836
+ loading: "lazy",
29837
+ "data-rb-video-embed-deferred": shouldDeferSrc ? "true" : void 0,
29838
+ "data-rb-video-embed-src": shouldDeferSrc ? embedInfo.embedUrl : void 0,
29839
+ style: {
29840
+ position: "absolute",
29841
+ top: 0,
29842
+ left: 0,
29843
+ width: "100%",
29844
+ height: "100%",
29845
+ border: "none"
29846
+ },
29847
+ allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
29848
+ referrerPolicy: "no-referrer-when-downgrade",
29849
+ allowFullScreen: true
29850
+ }
29851
+ ),
29852
+ shouldDeferSrc ? /* @__PURE__ */ jsx18("noscript", { children: /* @__PURE__ */ jsx18("a", { href: embedInfo.url, children: "View on Instagram" }) }) : null
29853
+ ]
29710
29854
  }
29711
29855
  ) });
29712
29856
  };
@@ -29721,9 +29865,9 @@ function getVideoTitle(info) {
29721
29865
  const label = kind === "reel" ? "reel" : kind === "tv" ? "video" : "post";
29722
29866
  return `Instagram ${label} ${info.id}`;
29723
29867
  }
29724
- default:
29725
- return "Embedded video";
29726
29868
  }
29869
+ const exhaustive = info.provider;
29870
+ return exhaustive;
29727
29871
  }
29728
29872
  function getAspectRatio(propAspectRatio, style) {
29729
29873
  const styleAspectRatio = style?.aspectRatio;
@@ -29805,7 +29949,7 @@ function getCarouselSlidesToShowCssVars(value) {
29805
29949
  }
29806
29950
 
29807
29951
  // ../blocks/src/system/runtime/nodes/carousel.server.tsx
29808
- import { jsx as jsx20, jsxs as jsxs7 } from "react/jsx-runtime";
29952
+ import { jsx as jsx20, jsxs as jsxs8 } from "react/jsx-runtime";
29809
29953
  var CarouselNodeSSR = ({
29810
29954
  blockId,
29811
29955
  children,
@@ -29824,7 +29968,7 @@ var CarouselNodeSSR = ({
29824
29968
  const resolvedSlides = resolveSlidesToShowMobile(normalizedSlidesToShow);
29825
29969
  const controlsEnabled = arrowVisibility === "never" ? false : normalizeBoolean2(showControls);
29826
29970
  const shouldSnap = transition === "slide";
29827
- return /* @__PURE__ */ jsxs7(
29971
+ return /* @__PURE__ */ jsxs8(
29828
29972
  "div",
29829
29973
  {
29830
29974
  className: clsx_default("carousel-root rb-relative", className),
@@ -29888,7 +30032,7 @@ function normalizeBoolean2(value) {
29888
30032
  }
29889
30033
 
29890
30034
  // ../blocks/src/system/runtime/nodes/accordion.server.tsx
29891
- import { jsx as jsx21, jsxs as jsxs8 } from "react/jsx-runtime";
30035
+ import { jsx as jsx21, jsxs as jsxs9 } from "react/jsx-runtime";
29892
30036
  var ACCORDION_ICONS = {
29893
30037
  Plus,
29894
30038
  Minus,
@@ -29905,7 +30049,7 @@ var AccordionNodeSSR = ({
29905
30049
  defaultValue,
29906
30050
  collapsible
29907
30051
  }) => {
29908
- return /* @__PURE__ */ jsxs8(
30052
+ return /* @__PURE__ */ jsxs9(
29909
30053
  "div",
29910
30054
  {
29911
30055
  className: clsx_default("accordion-root", className),
@@ -29935,16 +30079,16 @@ var AccordionItemNodeSSR = ({
29935
30079
  const iconConfig = ICON_CONFIG[resolvedIconStyle];
29936
30080
  const ClosedIconComponent = ACCORDION_ICONS[iconConfig.closedIcon];
29937
30081
  const OpenIconComponent = iconConfig.openIcon ? ACCORDION_ICONS[iconConfig.openIcon] : null;
29938
- return /* @__PURE__ */ jsxs8(
30082
+ return /* @__PURE__ */ jsxs9(
29939
30083
  "div",
29940
30084
  {
29941
30085
  className: clsx_default("accordion-item", className),
29942
30086
  "data-accordion-value": resolvedValue,
29943
30087
  "data-state": "closed",
29944
30088
  children: [
29945
- /* @__PURE__ */ jsxs8("div", { className: "accordion-trigger", role: "button", tabIndex: 0, "aria-expanded": "false", children: [
30089
+ /* @__PURE__ */ jsxs9("div", { className: "accordion-trigger", role: "button", tabIndex: 0, "aria-expanded": "false", children: [
29946
30090
  /* @__PURE__ */ jsx21("span", { className: "accordion-trigger-text", children: resolveNode(triggerSource) }),
29947
- /* @__PURE__ */ jsxs8("span", { className: "accordion-icon", "aria-hidden": "true", children: [
30091
+ /* @__PURE__ */ jsxs9("span", { className: "accordion-icon", "aria-hidden": "true", children: [
29948
30092
  ClosedIconComponent && /* @__PURE__ */ jsx21(ClosedIconComponent, { className: "accordion-icon-closed" }),
29949
30093
  OpenIconComponent && /* @__PURE__ */ jsx21(OpenIconComponent, { className: "accordion-icon-open" })
29950
30094
  ] })
@@ -29973,7 +30117,7 @@ function resolveNode(value) {
29973
30117
  }
29974
30118
 
29975
30119
  // ../blocks/src/system/runtime/nodes/header-section.server.tsx
29976
- import { jsx as jsx22, jsxs as jsxs9 } from "react/jsx-runtime";
30120
+ import { jsx as jsx22, jsxs as jsxs10 } from "react/jsx-runtime";
29977
30121
  function hasShrinkClasses(className) {
29978
30122
  return typeof className === "string" && className.includes("rb-header-shrink");
29979
30123
  }
@@ -29981,16 +30125,21 @@ var HeaderSectionNode = ({
29981
30125
  blockId,
29982
30126
  children,
29983
30127
  className,
30128
+ "data-preview-site-chrome-surface": previewSiteChromeSurface,
29984
30129
  ...rest
29985
30130
  }) => {
29986
30131
  const { wrapperClasses, sectionClasses } = splitPositioningClasses(className);
29987
- const wrapperClassName = `block-site-header${wrapperClasses ? ` ${wrapperClasses}` : ""}`;
30132
+ const wrapperClassName = [
30133
+ "block-site-header",
30134
+ wrapperClasses,
30135
+ previewSiteChromeSurface ? "group/site-chrome rb-relative" : ""
30136
+ ].filter(Boolean).join(" ");
29988
30137
  const asProp = rest.as;
29989
30138
  const styleProp = rest.style;
29990
30139
  const backgroundProp = typeof rest.background === "string" ? rest.background : void 0;
29991
30140
  const allowOverflowProp = typeof rest.allowOverflow === "boolean" ? rest.allowOverflow : void 0;
29992
30141
  const dataSlotProp = typeof rest["data-slot"] === "string" ? rest["data-slot"] : void 0;
29993
- return /* @__PURE__ */ jsxs9(
30142
+ return /* @__PURE__ */ jsxs10(
29994
30143
  "nav",
29995
30144
  {
29996
30145
  ...getIslandRootProps("headerSection", blockId),
@@ -30000,6 +30149,7 @@ var HeaderSectionNode = ({
30000
30149
  "data-block": "site-header",
30001
30150
  "data-block-kind": "block.site-header",
30002
30151
  "data-block-id": blockId ?? void 0,
30152
+ "data-preview-site-chrome-surface": previewSiteChromeSurface,
30003
30153
  children: [
30004
30154
  /* @__PURE__ */ jsx22(IslandPropsScript, { value: { enabled: hasShrinkClasses(className) } }),
30005
30155
  /* @__PURE__ */ jsx22(
@@ -30021,7 +30171,7 @@ var HeaderSectionNode = ({
30021
30171
  var header_section_server_default = HeaderSectionNode;
30022
30172
 
30023
30173
  // ../blocks/src/system/runtime/nodes/spinner.tsx
30024
- import { jsx as jsx23, jsxs as jsxs10 } from "react/jsx-runtime";
30174
+ import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
30025
30175
  function resolveColorStyle(color) {
30026
30176
  switch (color) {
30027
30177
  case "inherit":
@@ -30048,7 +30198,7 @@ function SpinnerNode({
30048
30198
  const accessibilityProps = srLabel ? { role: "status", "aria-live": "polite" } : hasExplicitAriaLabel ? {} : { "aria-hidden": true };
30049
30199
  const trackStroke = color === "inherit" ? "currentColor" : "var(--rb-spinner-track-color)";
30050
30200
  const trackOpacity = color === "inherit" ? 0.25 : 1;
30051
- return /* @__PURE__ */ jsxs10(
30201
+ return /* @__PURE__ */ jsxs11(
30052
30202
  "span",
30053
30203
  {
30054
30204
  ...accessibilityProps,
@@ -30064,7 +30214,7 @@ function SpinnerNode({
30064
30214
  },
30065
30215
  ...rest,
30066
30216
  children: [
30067
- /* @__PURE__ */ jsxs10("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
30217
+ /* @__PURE__ */ jsxs11("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
30068
30218
  /* @__PURE__ */ jsx23(
30069
30219
  "circle",
30070
30220
  {
@@ -30448,7 +30598,7 @@ function buildBookingFormInteractiveIslandProps(props2) {
30448
30598
  }
30449
30599
 
30450
30600
  // ../blocks/src/system/runtime/nodes/booking-form.server.tsx
30451
- import { Fragment as Fragment2, jsx as jsx24, jsxs as jsxs11 } from "react/jsx-runtime";
30601
+ import { Fragment as Fragment2, jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
30452
30602
  function BookingFormSSR({
30453
30603
  blockId,
30454
30604
  siteId,
@@ -30492,14 +30642,14 @@ function BookingFormSSR({
30492
30642
  className
30493
30643
  });
30494
30644
  const display = islandProps.render.display;
30495
- return /* @__PURE__ */ jsxs11(
30645
+ return /* @__PURE__ */ jsxs12(
30496
30646
  "div",
30497
30647
  {
30498
30648
  className: `booking-form-ssr ${className ?? ""}`.trim(),
30499
30649
  ...getIslandRootProps("booking-form", blockId),
30500
30650
  children: [
30501
30651
  /* @__PURE__ */ jsx24(IslandPropsScript, { value: islandProps }),
30502
- /* @__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: [
30652
+ /* @__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: [
30503
30653
  /* @__PURE__ */ jsx24("strong", { children: display.submitLabel }),
30504
30654
  display.successMessage ? /* @__PURE__ */ jsx24("p", { className: "booking-form-ssr__success", children: display.successMessage }) : null
30505
30655
  ] }) }),
@@ -30609,22 +30759,22 @@ function filterMembershipsForEvent(siteMemberships, event) {
30609
30759
  }
30610
30760
 
30611
30761
  // ../blocks/src/system/runtime/nodes/event-details/CoursePricingDisplay.tsx
30612
- import { jsx as jsx25, jsxs as jsxs12 } from "react/jsx-runtime";
30762
+ import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
30613
30763
  function CoursePricingDisplay({
30614
30764
  pricing,
30615
30765
  acceptedItems
30616
30766
  }) {
30617
- return /* @__PURE__ */ jsxs12("div", { className: "rb-mt-6", children: [
30767
+ return /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
30618
30768
  /* @__PURE__ */ jsx25("div", { className: "rb-label rb-mb-2", children: pricing.selectableOptions.length > 1 ? "Pricing" : "Cost" }),
30619
- 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: [
30620
- /* @__PURE__ */ jsxs12("strong", { children: [
30769
+ 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: [
30770
+ /* @__PURE__ */ jsxs13("strong", { children: [
30621
30771
  option.name,
30622
30772
  ": ",
30623
30773
  formatCoursePriceAmount(option.priceAmount, pricing.currency)
30624
30774
  ] }),
30625
30775
  option.description ? /* @__PURE__ */ jsx25("p", { className: "rb-caption status-muted", children: option.description }) : null
30626
30776
  ] }, option.id)) }) : /* @__PURE__ */ jsx25("p", { children: /* @__PURE__ */ jsx25("strong", { children: formatCoursePriceDisplay(pricing.display) }) }),
30627
- acceptedItems.length > 0 ? /* @__PURE__ */ jsxs12("p", { className: "rb-caption rb-mt-1", children: [
30777
+ acceptedItems.length > 0 ? /* @__PURE__ */ jsxs13("p", { className: "rb-caption rb-mt-1", children: [
30628
30778
  "You can also attend with: ",
30629
30779
  acceptedItems.join(", ")
30630
30780
  ] }) : null
@@ -30632,7 +30782,7 @@ function CoursePricingDisplay({
30632
30782
  }
30633
30783
 
30634
30784
  // ../blocks/src/system/runtime/nodes/event-details/view.tsx
30635
- import { Fragment as Fragment3, jsx as jsx26, jsxs as jsxs13 } from "react/jsx-runtime";
30785
+ import { Fragment as Fragment3, jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
30636
30786
  function formatAutoApplyDiscountLine(preview, currency) {
30637
30787
  const rate = preview.discountType === "percent" ? `${preview.discountPercent}% off` : `${formatCoursePriceAmount(preview.discountAmountCents, currency)} off`;
30638
30788
  const label = preview.publicLabel.trim() || "Discount";
@@ -30683,10 +30833,10 @@ function EventDetailsView({
30683
30833
  acceptedItems.push(...applicableMemberships.map((m) => m.name));
30684
30834
  }
30685
30835
  const hasAcceptedItems = acceptedItems.length > 0;
30686
- return /* @__PURE__ */ jsxs13("div", { className: "rb-flex rb-flex-col rb-gap-6 rb-text-left", children: [
30687
- /* @__PURE__ */ jsxs13("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
30688
- /* @__PURE__ */ jsxs13("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
30689
- /* @__PURE__ */ jsxs13("div", { children: [
30836
+ return /* @__PURE__ */ jsxs14("div", { className: "rb-flex rb-flex-col rb-gap-6 rb-text-left", children: [
30837
+ /* @__PURE__ */ jsxs14("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
30838
+ /* @__PURE__ */ jsxs14("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
30839
+ /* @__PURE__ */ jsxs14("div", { children: [
30690
30840
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: selection.mode === "next" ? "Next date" : "Date" }),
30691
30841
  (() => {
30692
30842
  const { date, timeRange } = formatEventDateParts({
@@ -30694,20 +30844,20 @@ function EventDetailsView({
30694
30844
  endsAt: selected.endsAt,
30695
30845
  timeZone: selection.timeZone
30696
30846
  });
30697
- return /* @__PURE__ */ jsxs13(Fragment3, { children: [
30847
+ return /* @__PURE__ */ jsxs14(Fragment3, { children: [
30698
30848
  /* @__PURE__ */ jsx26("p", { children: /* @__PURE__ */ jsx26("strong", { children: date }) }),
30699
30849
  /* @__PURE__ */ jsx26("p", { className: "rb-caption", children: timeRange })
30700
30850
  ] });
30701
30851
  })()
30702
30852
  ] }),
30703
- venue ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
30853
+ venue ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
30704
30854
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Venue" }),
30705
30855
  /* @__PURE__ */ jsx26("p", { children: /* @__PURE__ */ jsx26("strong", { children: venue.name }) }),
30706
30856
  venue.address ? /* @__PURE__ */ jsx26("p", { className: "rb-caption", children: venue.address }) : null
30707
30857
  ] }) : null,
30708
- teamMembers.length > 0 ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
30858
+ teamMembers.length > 0 ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
30709
30859
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Team members" }),
30710
- /* @__PURE__ */ jsx26("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs13("div", { children: [
30860
+ /* @__PURE__ */ jsx26("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs14("div", { children: [
30711
30861
  /* @__PURE__ */ jsx26("p", { children: /* @__PURE__ */ jsx26(
30712
30862
  TeamMemberName,
30713
30863
  {
@@ -30718,7 +30868,7 @@ function EventDetailsView({
30718
30868
  teamMember.summary ? /* @__PURE__ */ jsx26("p", { className: "rb-caption status-muted", children: teamMember.summary }) : null
30719
30869
  ] }, teamMember.id)) })
30720
30870
  ] }) : null,
30721
- isDropIn ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
30871
+ isDropIn ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
30722
30872
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Registration" }),
30723
30873
  /* @__PURE__ */ jsx26("p", { className: "rb-caption status-muted", children: "No registration required - just show up" })
30724
30874
  ] }) : shouldShowCoursePricing ? /* @__PURE__ */ jsx26(
@@ -30727,22 +30877,22 @@ function EventDetailsView({
30727
30877
  pricing: coursePricing,
30728
30878
  acceptedItems
30729
30879
  }
30730
- ) : shouldShowEventCost ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
30880
+ ) : shouldShowEventCost ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
30731
30881
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Cost" }),
30732
30882
  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" }),
30733
30883
  autoApplyDiscount ? /* @__PURE__ */ jsx26("p", { className: "rb-caption rb-mt-1", children: formatAutoApplyDiscountLine(autoApplyDiscount, selected.currency ?? "USD") }) : null,
30734
- hasAcceptedItems ? /* @__PURE__ */ jsxs13("p", { className: "rb-caption rb-mt-1", children: [
30884
+ hasAcceptedItems ? /* @__PURE__ */ jsxs14("p", { className: "rb-caption rb-mt-1", children: [
30735
30885
  "You can also attend with: ",
30736
30886
  acceptedItems.join(", ")
30737
30887
  ] }) : null
30738
- ] }) : hasAcceptedItems ? /* @__PURE__ */ jsx26("div", { className: "rb-mt-6", children: /* @__PURE__ */ jsxs13("p", { className: "rb-caption", children: [
30888
+ ] }) : hasAcceptedItems ? /* @__PURE__ */ jsx26("div", { className: "rb-mt-6", children: /* @__PURE__ */ jsxs14("p", { className: "rb-caption", children: [
30739
30889
  "You can also attend with: ",
30740
30890
  acceptedItems.join(", ")
30741
30891
  ] }) }) : null
30742
30892
  ] }),
30743
30893
  showMap && renderVenueMap && venue?.location ? /* @__PURE__ */ jsx26(Fragment3, { children: renderVenueMap({ venueName: venue.name, location: venue.location, className: mapClassName, height: mapHeight }) }) : null
30744
30894
  ] }),
30745
- showOtherDates && selection.otherDates.length > 0 ? /* @__PURE__ */ jsxs13("div", { children: [
30895
+ showOtherDates && selection.otherDates.length > 0 ? /* @__PURE__ */ jsxs14("div", { children: [
30746
30896
  /* @__PURE__ */ jsx26("div", { className: "rb-label", children: "Other dates" }),
30747
30897
  /* @__PURE__ */ jsx26("div", { className: "rb-mt-2 rb-tiles-grid", children: selection.otherDates.map((e) => /* @__PURE__ */ jsx26(
30748
30898
  "a",
@@ -30765,7 +30915,7 @@ function EventDetailsView({
30765
30915
  }
30766
30916
 
30767
30917
  // ../blocks/src/system/runtime/nodes/event-details.server.tsx
30768
- import { jsx as jsx27, jsxs as jsxs14 } from "react/jsx-runtime";
30918
+ import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
30769
30919
  function EventDetailsSSR({
30770
30920
  blockId,
30771
30921
  occurrenceContext,
@@ -30794,7 +30944,7 @@ function EventDetailsSSR({
30794
30944
  const membershipsArray = siteMemberships?.memberships ?? null;
30795
30945
  const applicablePasses = filterPassesForEvent(passesArray, selection.selected);
30796
30946
  const applicableMemberships = filterMembershipsForEvent(membershipsArray, selection.selected);
30797
- return /* @__PURE__ */ jsxs14(
30947
+ return /* @__PURE__ */ jsxs15(
30798
30948
  "div",
30799
30949
  {
30800
30950
  className: `event-details ${className ?? ""}`.trim(),
@@ -30860,7 +31010,7 @@ function EventDetailsSSR({
30860
31010
  var event_details_server_default = EventDetailsSSR;
30861
31011
 
30862
31012
  // ../blocks/src/system/runtime/nodes/location-map.view.tsx
30863
- import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
31013
+ import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
30864
31014
  function LocationMapView({
30865
31015
  addressText,
30866
31016
  location: location2,
@@ -30876,7 +31026,7 @@ function LocationMapView({
30876
31026
  if (!location2 && !addressText && !directionsUrl) {
30877
31027
  return /* @__PURE__ */ jsx28("p", { className: "rb-caption", style: textColorStyle("mutedText"), children: unresolvedMessage ?? "Location details coming soon." });
30878
31028
  }
30879
- return /* @__PURE__ */ jsxs15("div", { className: "rb-flex rb-flex-col rb-gap-4 rb-text-left", children: [
31029
+ return /* @__PURE__ */ jsxs16("div", { className: "rb-flex rb-flex-col rb-gap-4 rb-text-left", children: [
30880
31030
  location2 && renderMap ? renderMap({
30881
31031
  addressText,
30882
31032
  location: location2,
@@ -30904,11 +31054,11 @@ function LocationMapView({
30904
31054
  }
30905
31055
 
30906
31056
  // ../blocks/src/system/runtime/nodes/location-map.server.tsx
30907
- import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
31057
+ import { jsx as jsx29, jsxs as jsxs17 } from "react/jsx-runtime";
30908
31058
  function LocationMapSSR(props2) {
30909
31059
  const normalized = normalizeLocationMapProps(props2);
30910
31060
  const hydrationProps = toLocationMapHydrationProps(props2);
30911
- return /* @__PURE__ */ jsxs16(
31061
+ return /* @__PURE__ */ jsxs17(
30912
31062
  "div",
30913
31063
  {
30914
31064
  className: `location-map ${normalized.className ?? ""}`.trim(),
@@ -31063,7 +31213,7 @@ function formatCourseDateRange(range) {
31063
31213
  }
31064
31214
 
31065
31215
  // ../blocks/src/system/runtime/nodes/course-details/view.tsx
31066
- import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
31216
+ import { jsx as jsx30, jsxs as jsxs18 } from "react/jsx-runtime";
31067
31217
  function TeamMemberName2({
31068
31218
  name,
31069
31219
  profilePath
@@ -31098,14 +31248,14 @@ function CourseDetailsView(props2) {
31098
31248
  const hasMoreSessions = sessionLimit !== "all" && sortedSessions.length > sessionLimit;
31099
31249
  const descriptionDoc = showDescription ? coerceRichTextDoc(course.description) : null;
31100
31250
  const teamMembers = course.teamMembers ?? [];
31101
- return /* @__PURE__ */ jsxs17("div", { className: "rb-flex rb-flex-col rb-gap-6", children: [
31251
+ return /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-6", children: [
31102
31252
  showTitle && /* @__PURE__ */ jsx30("h3", { children: course.title }),
31103
- /* @__PURE__ */ jsxs17("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
31104
- /* @__PURE__ */ jsxs17("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31105
- showPrice && /* @__PURE__ */ jsxs17("div", { children: [
31253
+ /* @__PURE__ */ jsxs18("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
31254
+ /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31255
+ showPrice && /* @__PURE__ */ jsxs18("div", { children: [
31106
31256
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: pricing.selectableOptions.length > 0 ? "Pricing" : "Price" }),
31107
- 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: [
31108
- /* @__PURE__ */ jsxs17("strong", { children: [
31257
+ 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: [
31258
+ /* @__PURE__ */ jsxs18("strong", { children: [
31109
31259
  option.name,
31110
31260
  ": ",
31111
31261
  formatCoursePriceAmount(
@@ -31116,17 +31266,17 @@ function CourseDetailsView(props2) {
31116
31266
  option.description ? /* @__PURE__ */ jsx30("p", { className: "rb-caption status-muted", children: option.description }) : null
31117
31267
  ] }, option.id)) }) : /* @__PURE__ */ jsx30("div", { children: /* @__PURE__ */ jsx30("strong", { children: formatCoursePriceDisplay(pricing.display) }) })
31118
31268
  ] }),
31119
- showCapacity && /* @__PURE__ */ jsxs17("div", { children: [
31269
+ showCapacity && /* @__PURE__ */ jsxs18("div", { children: [
31120
31270
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Spots" }),
31121
31271
  /* @__PURE__ */ jsx30("div", { children: /* @__PURE__ */ jsx30("strong", { children: course.enrollmentCapacity === null ? "Unlimited" : `${course.availableSpots ?? Math.max(0, course.enrollmentCapacity - course.enrolledCount)} left` }) })
31122
31272
  ] }),
31123
- showMembershipNote && course.acceptsMemberships && /* @__PURE__ */ jsxs17("div", { children: [
31273
+ showMembershipNote && course.acceptsMemberships && /* @__PURE__ */ jsxs18("div", { children: [
31124
31274
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Membership" }),
31125
31275
  /* @__PURE__ */ jsx30("p", { className: "rb-caption status-muted", children: "Eligible memberships can be used for free enrollment" })
31126
31276
  ] }),
31127
- teamMembers.length > 0 && /* @__PURE__ */ jsxs17("div", { children: [
31277
+ teamMembers.length > 0 && /* @__PURE__ */ jsxs18("div", { children: [
31128
31278
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Team members" }),
31129
- /* @__PURE__ */ jsx30("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs17("div", { children: [
31279
+ /* @__PURE__ */ jsx30("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs18("div", { children: [
31130
31280
  /* @__PURE__ */ jsx30("p", { children: /* @__PURE__ */ jsx30(
31131
31281
  TeamMemberName2,
31132
31282
  {
@@ -31138,23 +31288,23 @@ function CourseDetailsView(props2) {
31138
31288
  ] }, teamMember.id)) })
31139
31289
  ] })
31140
31290
  ] }),
31141
- /* @__PURE__ */ jsxs17("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31142
- showVenue && course.venue && /* @__PURE__ */ jsxs17("div", { children: [
31291
+ /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31292
+ showVenue && course.venue && /* @__PURE__ */ jsxs18("div", { children: [
31143
31293
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Venue" }),
31144
31294
  /* @__PURE__ */ jsx30("h3", { children: course.venue.name }),
31145
31295
  course.venue.address && /* @__PURE__ */ jsx30("p", { className: "rb-caption status-muted", children: course.venue.address })
31146
31296
  ] }),
31147
- showEnrollmentStatus && /* @__PURE__ */ jsxs17("div", { children: [
31297
+ showEnrollmentStatus && /* @__PURE__ */ jsxs18("div", { children: [
31148
31298
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Enrollment" }),
31149
31299
  /* @__PURE__ */ jsx30("p", { className: course.enrollmentOpen ? "cd-enrollment--open" : "cd-enrollment--closed", children: /* @__PURE__ */ jsx30("strong", { children: course.enrollmentOpen ? "Open" : "Closed" }) })
31150
31300
  ] })
31151
31301
  ] })
31152
31302
  ] }),
31153
31303
  descriptionDoc && /* @__PURE__ */ jsx30("div", { className: "cd-description", children: /* @__PURE__ */ jsx30(RichText, { doc: descriptionDoc }) }),
31154
- showSessions && visibleSessions.length > 0 && /* @__PURE__ */ jsxs17("div", { children: [
31304
+ showSessions && visibleSessions.length > 0 && /* @__PURE__ */ jsxs18("div", { children: [
31155
31305
  /* @__PURE__ */ jsx30("div", { className: "rb-label", children: "Sessions" }),
31156
31306
  /* @__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)) }),
31157
- hasMoreSessions && /* @__PURE__ */ jsxs17("p", { className: "cd-sessions__more", children: [
31307
+ hasMoreSessions && /* @__PURE__ */ jsxs18("p", { className: "cd-sessions__more", children: [
31158
31308
  "Showing ",
31159
31309
  visibleSessions.length,
31160
31310
  " of ",
@@ -31166,7 +31316,7 @@ function CourseDetailsView(props2) {
31166
31316
  }
31167
31317
 
31168
31318
  // ../blocks/src/system/runtime/nodes/course-details.server.tsx
31169
- import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
31319
+ import { jsx as jsx31, jsxs as jsxs19 } from "react/jsx-runtime";
31170
31320
  function CourseDetailsSSR({
31171
31321
  courses,
31172
31322
  contentEntry,
@@ -31204,7 +31354,7 @@ function CourseDetailsSSR({
31204
31354
  const pastRuns = scopedWithRange.filter(({ range }) => Boolean(range.end && range.end <= now)).sort((a, b) => (b.range.end?.getTime() ?? 0) - (a.range.end?.getTime() ?? 0));
31205
31355
  const lastPastRun = pastRuns[0] ?? null;
31206
31356
  const nonPastRuns = scopedSorted.filter(({ range }) => !(range.end && range.end <= now));
31207
- return /* @__PURE__ */ jsxs18("div", { className: `course-details ${className ?? ""}`.trim(), "data-block": "course-details", children: [
31357
+ return /* @__PURE__ */ jsxs19("div", { className: `course-details ${className ?? ""}`.trim(), "data-block": "course-details", children: [
31208
31358
  selection.selected ? /* @__PURE__ */ jsx31(
31209
31359
  CourseDetailsView,
31210
31360
  {
@@ -31219,8 +31369,8 @@ function CourseDetailsSSR({
31219
31369
  showEnrollmentStatus,
31220
31370
  showMembershipNote
31221
31371
  }
31222
- ) : selection.scoped.length > 0 ? /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-3", children: [
31223
- /* @__PURE__ */ jsxs18("div", { children: [
31372
+ ) : selection.scoped.length > 0 ? /* @__PURE__ */ jsxs19("div", { className: "rb-flex rb-flex-col rb-gap-3", children: [
31373
+ /* @__PURE__ */ jsxs19("div", { children: [
31224
31374
  /* @__PURE__ */ jsx31("div", { className: "rb-label rb-mb-2", children: "Upcoming runs" }),
31225
31375
  /* @__PURE__ */ jsx31("p", { className: "rb-caption status-muted", children: "Choose a run to see sessions and details." })
31226
31376
  ] }),
@@ -31229,15 +31379,15 @@ function CourseDetailsSSR({
31229
31379
  const end = range.end;
31230
31380
  const isInProgress = Boolean(start && end && start <= now && end > now);
31231
31381
  const href = basePath ? `${basePath.replace(/\/$/, "")}/${course.slug}` : null;
31232
- 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: [
31233
- /* @__PURE__ */ jsxs18("div", { className: "rb-min-w-0", children: [
31382
+ 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: [
31383
+ /* @__PURE__ */ jsxs19("div", { className: "rb-min-w-0", children: [
31234
31384
  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 }) }),
31235
31385
  /* @__PURE__ */ jsx31("div", { className: "rb-caption status-muted", children: formatCourseDateRange(range) })
31236
31386
  ] }),
31237
31387
  /* @__PURE__ */ jsx31("div", { className: "rb-caption status-muted rb-shrink-0", children: course.enrollmentOpen ? "Enrollment open" : isInProgress ? "Currently in progress" : "Enrollment closed" })
31238
31388
  ] }) }) }, course.id);
31239
31389
  }) }) : /* @__PURE__ */ jsx31("p", { className: "rb-caption status-muted", children: "No upcoming runs." }),
31240
- lastPastRun ? /* @__PURE__ */ jsxs18("div", { className: "rb-caption status-muted", children: [
31390
+ lastPastRun ? /* @__PURE__ */ jsxs19("div", { className: "rb-caption status-muted", children: [
31241
31391
  "Last run: ",
31242
31392
  /* @__PURE__ */ jsx31("strong", { children: lastPastRun.course.title }),
31243
31393
  " (",
@@ -31265,14 +31415,14 @@ function CourseDetailsSSR({
31265
31415
  var course_details_server_default = CourseDetailsSSR;
31266
31416
 
31267
31417
  // ../blocks/src/system/runtime/nodes/events/EventSpotlight.tsx
31268
- import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
31418
+ import { jsx as jsx32, jsxs as jsxs20 } from "react/jsx-runtime";
31269
31419
  var EventSpotlight = ({
31270
31420
  events,
31271
31421
  layout = "grid",
31272
31422
  columns = "3",
31273
31423
  cardVariant = "default",
31274
31424
  buttonVariant = "primary",
31275
- buttonText = "View event",
31425
+ buttonText = "Book now",
31276
31426
  ctaLabel,
31277
31427
  ctaUrl,
31278
31428
  showVenue = true,
@@ -31288,7 +31438,7 @@ var EventSpotlight = ({
31288
31438
  const containerClass = getContainerClass(layout, columns);
31289
31439
  const cardOrientation = getCardOrientation(layout);
31290
31440
  const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
31291
- return /* @__PURE__ */ jsxs19("div", { className: `event-spotlight-section ${className || ""}`, "data-block": "event-spotlight", children: [
31441
+ return /* @__PURE__ */ jsxs20("div", { className: `event-spotlight-section ${className || ""}`, "data-block": "event-spotlight", children: [
31292
31442
  /* @__PURE__ */ jsx32("div", { className: `event-spotlight ${containerClass}`, children: normalizedEvents.map((event) => /* @__PURE__ */ jsx32(
31293
31443
  EventCard,
31294
31444
  {
@@ -31426,7 +31576,7 @@ function buildEventCombinedDisplay(source) {
31426
31576
  showMap: source.showMap ?? true,
31427
31577
  showCapacity: source.showCapacity ?? true,
31428
31578
  buttonVariant: source.buttonVariant ?? "primary",
31429
- buttonText: source.buttonText ?? "View event",
31579
+ buttonText: source.buttonText ?? "Book now",
31430
31580
  emptyMessage: source.emptyMessage ?? "No upcoming events scheduled."
31431
31581
  };
31432
31582
  }
@@ -31527,7 +31677,7 @@ function renderEventListItem(event, display) {
31527
31677
  }
31528
31678
 
31529
31679
  // ../blocks/src/system/runtime/nodes/events/EventCombined.server.tsx
31530
- import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
31680
+ import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
31531
31681
  var EventCombinedSSR = ({
31532
31682
  blockId,
31533
31683
  ...source
@@ -31536,7 +31686,7 @@ var EventCombinedSSR = ({
31536
31686
  const listDisplay = buildEventCombinedListingDisplay(render);
31537
31687
  const islandProps = buildEventCombinedInteractiveIslandProps(source);
31538
31688
  const ssrEmptyMessage = render.hydration.prefetchedEvents ? render.display.emptyMessage : listDisplay.loadingMessage;
31539
- return /* @__PURE__ */ jsxs20(
31689
+ return /* @__PURE__ */ jsxs21(
31540
31690
  "div",
31541
31691
  {
31542
31692
  className: `event-combined ${render.display.className || ""}`,
@@ -31544,7 +31694,7 @@ var EventCombinedSSR = ({
31544
31694
  ...getIslandRootProps("event-combined", blockId),
31545
31695
  children: [
31546
31696
  /* @__PURE__ */ jsx34(IslandPropsScript, { value: islandProps }),
31547
- /* @__PURE__ */ jsxs20("div", { className: "nav-tabs", role: "tablist", children: [
31697
+ /* @__PURE__ */ jsxs21("div", { className: "nav-tabs", role: "tablist", children: [
31548
31698
  /* @__PURE__ */ jsx34(
31549
31699
  "button",
31550
31700
  {
@@ -31573,7 +31723,7 @@ var EventCombinedSSR = ({
31573
31723
  };
31574
31724
 
31575
31725
  // ../blocks/src/system/runtime/nodes/commerce/shared/view.tsx
31576
- import { Fragment as Fragment4, jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
31726
+ import { Fragment as Fragment4, jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
31577
31727
  function ProductBadgesView({ badges }) {
31578
31728
  if (badges.length === 0) return null;
31579
31729
  return /* @__PURE__ */ jsx35("div", { className: "rb-flex rb-flex-wrap rb-gap-2", children: badges.map((badge) => /* @__PURE__ */ jsx35(
@@ -31588,7 +31738,7 @@ function ProductBadgesView({ badges }) {
31588
31738
  function VariantSelectView(props2) {
31589
31739
  const { options, selectedVariantId, disabled = false, onChange } = props2;
31590
31740
  if (options.length === 0) return null;
31591
- return /* @__PURE__ */ jsxs21("label", { className: "rb-flex rb-flex-col rb-gap-1", children: [
31741
+ return /* @__PURE__ */ jsxs22("label", { className: "rb-flex rb-flex-col rb-gap-1", children: [
31592
31742
  /* @__PURE__ */ jsx35("span", { className: "rb-label", children: "Variant" }),
31593
31743
  /* @__PURE__ */ jsx35(
31594
31744
  "select",
@@ -31597,7 +31747,7 @@ function VariantSelectView(props2) {
31597
31747
  value: selectedVariantId ?? "",
31598
31748
  disabled,
31599
31749
  onChange: onChange ? (event) => onChange(event.target.value || null) : void 0,
31600
- children: options.map((variant) => /* @__PURE__ */ jsxs21("option", { value: variant.id, children: [
31750
+ children: options.map((variant) => /* @__PURE__ */ jsxs22("option", { value: variant.id, children: [
31601
31751
  variant.label,
31602
31752
  " ",
31603
31753
  variant.soldOut ? "(Sold out)" : ""
@@ -31608,12 +31758,12 @@ function VariantSelectView(props2) {
31608
31758
  }
31609
31759
  function ProductCardView(props2) {
31610
31760
  const { display, layout, variantControl, actions, feedback } = props2;
31611
- 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: [
31761
+ 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: [
31612
31762
  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,
31613
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-1 rb-flex-col rb-gap-3", children: [
31614
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
31615
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-items-start rb-justify-between rb-gap-3", children: [
31616
- /* @__PURE__ */ jsxs21("div", { children: [
31763
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-1 rb-flex-col rb-gap-3", children: [
31764
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
31765
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-items-start rb-justify-between rb-gap-3", children: [
31766
+ /* @__PURE__ */ jsxs22("div", { children: [
31617
31767
  display.path ? /* @__PURE__ */ jsx35("a", { href: display.path, children: /* @__PURE__ */ jsx35("h3", { children: display.title }) }) : /* @__PURE__ */ jsx35("h3", { children: display.title }),
31618
31768
  display.summary ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.summary }) : null
31619
31769
  ] }),
@@ -31630,7 +31780,7 @@ function ProductCardView(props2) {
31630
31780
  }
31631
31781
  function ProductListSectionView(props2) {
31632
31782
  const { display, children } = props2;
31633
- return /* @__PURE__ */ jsxs21("div", { className: `shop shop--product-list ${display.className ?? ""}`.trim(), "data-block": "shop", children: [
31783
+ return /* @__PURE__ */ jsxs22("div", { className: `shop shop--product-list ${display.className ?? ""}`.trim(), "data-block": "shop", children: [
31634
31784
  display.heading ? /* @__PURE__ */ jsx35("h2", { children: display.heading }) : null,
31635
31785
  display.state === "empty" ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.emptyMessage }) : /* @__PURE__ */ jsx35(
31636
31786
  "div",
@@ -31647,18 +31797,18 @@ function ProductDetailView(props2) {
31647
31797
  if (display.state === "empty") {
31648
31798
  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 }) });
31649
31799
  }
31650
- 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: [
31800
+ 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: [
31651
31801
  /* @__PURE__ */ jsx35("div", { className: "rb-flex rb-flex-col rb-gap-4", children: gallery }),
31652
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31802
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31653
31803
  display.heading ? /* @__PURE__ */ jsx35("p", { className: "rb-label", children: display.heading }) : null,
31654
- /* @__PURE__ */ jsxs21("div", { children: [
31804
+ /* @__PURE__ */ jsxs22("div", { children: [
31655
31805
  /* @__PURE__ */ jsx35("h2", { children: display.title }),
31656
31806
  /* @__PURE__ */ jsx35("div", { className: "rb-mt-2", children: /* @__PURE__ */ jsx35("strong", { children: display.priceLabel }) })
31657
31807
  ] }),
31658
31808
  /* @__PURE__ */ jsx35(ProductBadgesView, { badges: display.badges }),
31659
31809
  display.summary ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.summary }) : null,
31660
31810
  variantControl,
31661
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-items-center rb-gap-3", children: [
31811
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-items-center rb-gap-3", children: [
31662
31812
  actions,
31663
31813
  display.categoryLabel ? /* @__PURE__ */ jsx35("span", { className: "rb-caption status-muted", children: display.categoryLabel }) : null
31664
31814
  ] }),
@@ -31684,15 +31834,15 @@ function ProductGalleryFrameView(props2) {
31684
31834
  return /* @__PURE__ */ jsx35(Fragment4, { children: renderCarousel(slides) });
31685
31835
  }
31686
31836
  function PassCardView(props2) {
31687
- return /* @__PURE__ */ jsxs21("article", { className: "shop__card shop__card--pass", children: [
31688
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-header", children: [
31837
+ return /* @__PURE__ */ jsxs22("article", { className: "shop__card shop__card--pass", children: [
31838
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-header", children: [
31689
31839
  /* @__PURE__ */ jsx35("h4", { className: "shop__card-name", children: props2.display.title }),
31690
31840
  /* @__PURE__ */ jsx35("div", { className: "shop__card-price", children: props2.display.priceLabel })
31691
31841
  ] }),
31692
31842
  props2.display.description ? /* @__PURE__ */ jsx35("p", { className: "shop__card-description", children: props2.display.description }) : null,
31693
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-details", children: [
31843
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-details", children: [
31694
31844
  /* @__PURE__ */ jsx35("span", { className: "shop__card-credits", children: props2.display.creditsLabel }),
31695
- props2.display.perCreditLabel ? /* @__PURE__ */ jsxs21("span", { className: "shop__card-per-credit", children: [
31845
+ props2.display.perCreditLabel ? /* @__PURE__ */ jsxs22("span", { className: "shop__card-per-credit", children: [
31696
31846
  "(",
31697
31847
  props2.display.perCreditLabel,
31698
31848
  ")"
@@ -31704,10 +31854,10 @@ function PassCardView(props2) {
31704
31854
  ] });
31705
31855
  }
31706
31856
  function MembershipCardView(props2) {
31707
- return /* @__PURE__ */ jsxs21("article", { className: "shop__card shop__card--membership", children: [
31708
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-header", children: [
31857
+ return /* @__PURE__ */ jsxs22("article", { className: "shop__card shop__card--membership", children: [
31858
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-header", children: [
31709
31859
  /* @__PURE__ */ jsx35("h4", { className: "shop__card-name", children: props2.display.title }),
31710
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-price", children: [
31860
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-price", children: [
31711
31861
  props2.display.priceLabel,
31712
31862
  /* @__PURE__ */ jsx35("span", { className: "shop__card-interval", children: props2.display.intervalLabel })
31713
31863
  ] })
@@ -31721,7 +31871,7 @@ function PassesMembershipsSectionView(props2) {
31721
31871
  const { display, beforeContent, passCards, membershipCards } = props2;
31722
31872
  const productsClass = `shop__products shop__products--${display.layout}`;
31723
31873
  const gridStyle = display.state === "ready" ? { "--shop-columns": display.columns } : void 0;
31724
- return /* @__PURE__ */ jsxs21(
31874
+ return /* @__PURE__ */ jsxs22(
31725
31875
  "div",
31726
31876
  {
31727
31877
  className: `shop ${display.state === "ready" ? `shop--${display.layout}` : "shop--empty"} ${display.className ?? ""}`.trim(),
@@ -31731,11 +31881,11 @@ function PassesMembershipsSectionView(props2) {
31731
31881
  children: [
31732
31882
  beforeContent,
31733
31883
  display.state === "empty" ? /* @__PURE__ */ jsx35("p", { className: "shop__empty-text", children: display.emptyMessage }) : null,
31734
- display.passes.length > 0 ? /* @__PURE__ */ jsxs21("section", { className: "shop__section shop__section--passes", children: [
31884
+ display.passes.length > 0 ? /* @__PURE__ */ jsxs22("section", { className: "shop__section shop__section--passes", children: [
31735
31885
  /* @__PURE__ */ jsx35("h3", { className: "shop__section-heading", children: display.passesHeading }),
31736
31886
  /* @__PURE__ */ jsx35("div", { className: productsClass, children: passCards })
31737
31887
  ] }) : null,
31738
- display.memberships.length > 0 ? /* @__PURE__ */ jsxs21("section", { className: "shop__section shop__section--memberships", children: [
31888
+ display.memberships.length > 0 ? /* @__PURE__ */ jsxs22("section", { className: "shop__section shop__section--memberships", children: [
31739
31889
  /* @__PURE__ */ jsx35("h3", { className: "shop__section-heading", children: display.membershipsHeading }),
31740
31890
  /* @__PURE__ */ jsx35("div", { className: productsClass, children: membershipCards })
31741
31891
  ] }) : null
@@ -31745,21 +31895,21 @@ function PassesMembershipsSectionView(props2) {
31745
31895
  }
31746
31896
  function CartShellView(props2) {
31747
31897
  const { display, renderControls, footerActions } = props2;
31748
- return /* @__PURE__ */ jsxs21("div", { className: `shop shop--cart ${display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-cart", children: [
31898
+ return /* @__PURE__ */ jsxs22("div", { className: `shop shop--cart ${display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-cart", children: [
31749
31899
  display.heading ? /* @__PURE__ */ jsx35("h2", { children: display.heading }) : null,
31750
- display.state === "empty" ? /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
31900
+ display.state === "empty" ? /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
31751
31901
  /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.emptyMessage }),
31752
31902
  display.supportText ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.supportText }) : null
31753
- ] }) : /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31754
- /* @__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: [
31755
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-1", children: [
31903
+ ] }) : /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
31904
+ /* @__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: [
31905
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-1", children: [
31756
31906
  /* @__PURE__ */ jsx35("strong", { children: item.title }),
31757
31907
  /* @__PURE__ */ jsx35("span", { className: "rb-caption status-muted", children: item.priceLabel })
31758
31908
  ] }),
31759
31909
  /* @__PURE__ */ jsx35("div", { className: "rb-flex rb-items-center rb-gap-2", children: renderControls ? renderControls(item) : null })
31760
31910
  ] }, item.key)) }),
31761
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-items-center rb-justify-between rb-gap-4", children: [
31762
- /* @__PURE__ */ jsxs21("div", { children: [
31911
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-items-center rb-justify-between rb-gap-4", children: [
31912
+ /* @__PURE__ */ jsxs22("div", { children: [
31763
31913
  /* @__PURE__ */ jsx35("strong", { children: "Subtotal" }),
31764
31914
  /* @__PURE__ */ jsx35("div", { children: display.subtotalLabel })
31765
31915
  ] }),
@@ -31769,7 +31919,7 @@ function CartShellView(props2) {
31769
31919
  ] });
31770
31920
  }
31771
31921
  function CheckoutShellView(props2) {
31772
- return /* @__PURE__ */ jsxs21("div", { className: `shop shop--checkout ${props2.display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-checkout", children: [
31922
+ return /* @__PURE__ */ jsxs22("div", { className: `shop shop--checkout ${props2.display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-checkout", children: [
31773
31923
  props2.display.heading ? /* @__PURE__ */ jsx35("h2", { children: props2.display.heading }) : null,
31774
31924
  props2.notice,
31775
31925
  props2.display.state === "ready" ? props2.body : /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: props2.display.message })
@@ -31777,9 +31927,9 @@ function CheckoutShellView(props2) {
31777
31927
  }
31778
31928
 
31779
31929
  // ../blocks/src/system/runtime/nodes/shop-commerce.server.tsx
31780
- import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
31930
+ import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
31781
31931
  function renderServerPendingAction(label, soldOut) {
31782
- return /* @__PURE__ */ jsxs22(Fragment5, { children: [
31932
+ return /* @__PURE__ */ jsxs23(Fragment5, { children: [
31783
31933
  /* @__PURE__ */ jsx36(
31784
31934
  "button",
31785
31935
  {
@@ -31807,7 +31957,7 @@ function ProductListServerContent(props2) {
31807
31957
  disabled: true
31808
31958
  }
31809
31959
  ),
31810
- actions: /* @__PURE__ */ jsxs22(Fragment5, { children: [
31960
+ actions: /* @__PURE__ */ jsxs23(Fragment5, { children: [
31811
31961
  renderServerPendingAction(card.actionLabel, card.soldOut),
31812
31962
  card.path ? /* @__PURE__ */ jsx36(
31813
31963
  "a",
@@ -31858,7 +32008,7 @@ function CheckoutServerContent(props2) {
31858
32008
  }
31859
32009
 
31860
32010
  // ../blocks/src/system/runtime/nodes/cart.server.tsx
31861
- import { jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
32011
+ import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
31862
32012
  function CartSSR({
31863
32013
  blockId,
31864
32014
  siteId,
@@ -31873,7 +32023,7 @@ function CartSSR({
31873
32023
  stage,
31874
32024
  ...rest
31875
32025
  });
31876
- return /* @__PURE__ */ jsxs23(
32026
+ return /* @__PURE__ */ jsxs24(
31877
32027
  "div",
31878
32028
  {
31879
32029
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -31893,7 +32043,7 @@ function CartSSR({
31893
32043
  var cart_server_default = CartSSR;
31894
32044
 
31895
32045
  // ../blocks/src/system/runtime/nodes/checkout.server.tsx
31896
- import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
32046
+ import { jsx as jsx38, jsxs as jsxs25 } from "react/jsx-runtime";
31897
32047
  function CheckoutSSR({
31898
32048
  blockId,
31899
32049
  siteId,
@@ -31908,7 +32058,7 @@ function CheckoutSSR({
31908
32058
  stage,
31909
32059
  ...rest
31910
32060
  });
31911
- return /* @__PURE__ */ jsxs24(
32061
+ return /* @__PURE__ */ jsxs25(
31912
32062
  "div",
31913
32063
  {
31914
32064
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -31928,7 +32078,7 @@ function CheckoutSSR({
31928
32078
  var checkout_server_default = CheckoutSSR;
31929
32079
 
31930
32080
  // ../blocks/src/system/runtime/nodes/course-registration.server.tsx
31931
- import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
32081
+ import { jsx as jsx39, jsxs as jsxs26 } from "react/jsx-runtime";
31932
32082
  function CourseRegistrationSSR({
31933
32083
  blockId,
31934
32084
  siteId,
@@ -31969,7 +32119,7 @@ function CourseRegistrationSSR({
31969
32119
  buttonVariant,
31970
32120
  stage
31971
32121
  });
31972
- return /* @__PURE__ */ jsxs25(
32122
+ return /* @__PURE__ */ jsxs26(
31973
32123
  "div",
31974
32124
  {
31975
32125
  className: `course-registration ${className ?? ""}`.trim(),
@@ -31986,14 +32136,14 @@ function CourseRegistrationSSR({
31986
32136
  var course_registration_server_default = CourseRegistrationSSR;
31987
32137
 
31988
32138
  // ../blocks/src/system/runtime/nodes/gifting.server.tsx
31989
- import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
32139
+ import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
31990
32140
  function GiftingSSR({ blockId, ...rest }) {
31991
32141
  const islandProps = buildGiftingInteractiveIslandProps(rest);
31992
32142
  const offers = islandProps.render.hydration.offers;
31993
32143
  const hasOffers = Boolean(
31994
32144
  (offers?.giftCards.length ?? 0) > 0 || (offers?.vouchers.length ?? 0) > 0
31995
32145
  );
31996
- return /* @__PURE__ */ jsxs26(
32146
+ return /* @__PURE__ */ jsxs27(
31997
32147
  "section",
31998
32148
  {
31999
32149
  className: rest.className ?? void 0,
@@ -32004,7 +32154,7 @@ function GiftingSSR({ blockId, ...rest }) {
32004
32154
  ...getIslandRootProps("gifting", blockId),
32005
32155
  children: [
32006
32156
  /* @__PURE__ */ jsx40(IslandPropsScript, { value: islandProps }),
32007
- /* @__PURE__ */ jsxs26(
32157
+ /* @__PURE__ */ jsxs27(
32008
32158
  "div",
32009
32159
  {
32010
32160
  className: "rb-grid",
@@ -32012,14 +32162,14 @@ function GiftingSSR({ blockId, ...rest }) {
32012
32162
  gap: "1.5rem"
32013
32163
  },
32014
32164
  children: [
32015
- /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "0.5rem" }, children: [
32165
+ /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "0.5rem" }, children: [
32016
32166
  /* @__PURE__ */ jsx40("h2", { style: { fontSize: "clamp(1.75rem, 3vw, 2.5rem)", fontWeight: 700, margin: 0 }, children: islandProps.render.display.heading }),
32017
32167
  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
32018
32168
  ] }),
32019
- hasOffers ? /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "1.5rem" }, children: [
32020
- (offers?.giftCards.length ?? 0) > 0 ? /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
32169
+ hasOffers ? /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "1.5rem" }, children: [
32170
+ (offers?.giftCards.length ?? 0) > 0 ? /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
32021
32171
  /* @__PURE__ */ jsx40("h3", { style: { margin: 0, fontSize: "1.25rem", fontWeight: 700 }, children: islandProps.render.display.giftCardsHeading }),
32022
- /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.giftCards.map((offer) => /* @__PURE__ */ jsxs26(
32172
+ /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.giftCards.map((offer) => /* @__PURE__ */ jsxs27(
32023
32173
  "article",
32024
32174
  {
32025
32175
  style: {
@@ -32036,9 +32186,9 @@ function GiftingSSR({ blockId, ...rest }) {
32036
32186
  offer.id
32037
32187
  )) })
32038
32188
  ] }) : null,
32039
- (offers?.vouchers.length ?? 0) > 0 ? /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
32189
+ (offers?.vouchers.length ?? 0) > 0 ? /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
32040
32190
  /* @__PURE__ */ jsx40("h3", { style: { margin: 0, fontSize: "1.25rem", fontWeight: 700 }, children: islandProps.render.display.vouchersHeading }),
32041
- /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.vouchers.map((offer) => /* @__PURE__ */ jsxs26(
32191
+ /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.vouchers.map((offer) => /* @__PURE__ */ jsxs27(
32042
32192
  "article",
32043
32193
  {
32044
32194
  style: {
@@ -32066,10 +32216,10 @@ function GiftingSSR({ blockId, ...rest }) {
32066
32216
  var gifting_server_default = GiftingSSR;
32067
32217
 
32068
32218
  // ../blocks/src/system/runtime/nodes/events/EventListing.view.tsx
32069
- import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
32219
+ import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
32070
32220
  function EventListingFrameView(props2) {
32071
32221
  const { display, filters, emptyState: emptyState4, footer, renderEventCard: renderEventCard2 } = props2;
32072
- return /* @__PURE__ */ jsxs27("div", { className: `event-listing ${display.className ?? ""}`, "data-block": "event-listing", children: [
32222
+ return /* @__PURE__ */ jsxs28("div", { className: `event-listing ${display.className ?? ""}`, "data-block": "event-listing", children: [
32073
32223
  filters,
32074
32224
  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)) }),
32075
32225
  footer
@@ -32148,7 +32298,7 @@ function formatShortDayLabel(date) {
32148
32298
  }
32149
32299
 
32150
32300
  // ../blocks/src/system/runtime/nodes/events/EventCalendar.server.tsx
32151
- import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
32301
+ import { jsx as jsx42, jsxs as jsxs29 } from "react/jsx-runtime";
32152
32302
  function assertNeverDisplayMode(value) {
32153
32303
  throw new Error(`Unsupported event-calendar displayMode: ${String(value)}`);
32154
32304
  }
@@ -32160,8 +32310,8 @@ function renderEventCard(event, display) {
32160
32310
  }
32161
32311
  function renderCombinedSsr(display, prefetchedEvents) {
32162
32312
  const listDisplay = buildEventCalendarListingDisplay(display, prefetchedEvents, "event-combined-content");
32163
- return /* @__PURE__ */ jsxs28("div", { className: clsx_default("event-combined", display.className ?? void 0), "data-block": "event-combined", children: [
32164
- /* @__PURE__ */ jsxs28("div", { className: "nav-tabs", role: "tablist", children: [
32313
+ return /* @__PURE__ */ jsxs29("div", { className: clsx_default("event-combined", display.className ?? void 0), "data-block": "event-combined", children: [
32314
+ /* @__PURE__ */ jsxs29("div", { className: "nav-tabs", role: "tablist", children: [
32165
32315
  /* @__PURE__ */ jsx42(
32166
32316
  "button",
32167
32317
  {
@@ -32209,9 +32359,9 @@ function renderCalendarGrid(display) {
32209
32359
  const eventsByDate = groupEventsByDate([...display.events]);
32210
32360
  const dayNames = getOrderedDayNames(display.startOfWeek);
32211
32361
  const headerTitle = formatCalendarTitle(viewDate, calendarView, calendarDays);
32212
- return /* @__PURE__ */ jsxs28("div", { className: clsx_default("event-calendar", display.className ?? void 0), "data-block": "event-calendar", children: [
32213
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-header", children: [
32214
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-nav", children: [
32362
+ return /* @__PURE__ */ jsxs29("div", { className: clsx_default("event-calendar", display.className ?? void 0), "data-block": "event-calendar", children: [
32363
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-header", children: [
32364
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-nav", children: [
32215
32365
  /* @__PURE__ */ jsx42(
32216
32366
  "button",
32217
32367
  {
@@ -32244,7 +32394,7 @@ function renderCalendarGrid(display) {
32244
32394
  }
32245
32395
  )
32246
32396
  ] }),
32247
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-container", children: [
32397
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-container", children: [
32248
32398
  /* @__PURE__ */ jsx42("div", { className: "event-calendar-day-headers", children: dayNames.map((day) => /* @__PURE__ */ jsx42("div", { className: "event-calendar-day-header", children: day }, day)) }),
32249
32399
  /* @__PURE__ */ jsx42("div", { className: "event-calendar-grid", children: calendarDays.map((date) => {
32250
32400
  const dateKey = formatDateKey2(date);
@@ -32256,10 +32406,10 @@ function renderCalendarGrid(display) {
32256
32406
  !isCurrentMonth && "event-calendar-day--other-month",
32257
32407
  today && "event-calendar-day--today"
32258
32408
  );
32259
- return /* @__PURE__ */ jsxs28("div", { className: dayClasses, children: [
32409
+ return /* @__PURE__ */ jsxs29("div", { className: dayClasses, children: [
32260
32410
  /* @__PURE__ */ jsx42("div", { className: "event-calendar-day-number", children: date.getDate() }),
32261
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-events", children: [
32262
- dayEvents.slice(0, MAX_EVENTS_PER_DAY).map((event) => /* @__PURE__ */ jsxs28(
32411
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-events", children: [
32412
+ dayEvents.slice(0, MAX_EVENTS_PER_DAY).map((event) => /* @__PURE__ */ jsxs29(
32263
32413
  "a",
32264
32414
  {
32265
32415
  href: event.path,
@@ -32273,7 +32423,7 @@ function renderCalendarGrid(display) {
32273
32423
  },
32274
32424
  event.occurrenceId || event.id
32275
32425
  )),
32276
- dayEvents.length > MAX_EVENTS_PER_DAY ? /* @__PURE__ */ jsxs28("div", { className: "event-calendar-more", children: [
32426
+ dayEvents.length > MAX_EVENTS_PER_DAY ? /* @__PURE__ */ jsxs29("div", { className: "event-calendar-more", children: [
32277
32427
  "+",
32278
32428
  dayEvents.length - MAX_EVENTS_PER_DAY,
32279
32429
  " more"
@@ -32295,9 +32445,9 @@ function renderTimetableSsr(display) {
32295
32445
  const calendarDays = getWeekCalendarDays(viewDate, display.startOfWeek);
32296
32446
  const headerTitle = formatCalendarTitle(viewDate, "week", calendarDays);
32297
32447
  const selectedDayKey = model.days.find((day) => day.isToday)?.dateKey ?? model.days[0]?.dateKey ?? "";
32298
- return /* @__PURE__ */ jsxs28("div", { className: clsx_default("event-calendar", "event-calendar--timetable", display.className ?? void 0), "data-block": "event-calendar", children: [
32299
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-header", children: [
32300
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-nav", children: [
32448
+ return /* @__PURE__ */ jsxs29("div", { className: clsx_default("event-calendar", "event-calendar--timetable", display.className ?? void 0), "data-block": "event-calendar", children: [
32449
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-header", children: [
32450
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-nav", children: [
32301
32451
  /* @__PURE__ */ jsx42(
32302
32452
  "button",
32303
32453
  {
@@ -32330,7 +32480,7 @@ function renderTimetableSsr(display) {
32330
32480
  }
32331
32481
  )
32332
32482
  ] }),
32333
- /* @__PURE__ */ jsxs28("div", { className: "event-timetable", children: [
32483
+ /* @__PURE__ */ jsxs29("div", { className: "event-timetable", children: [
32334
32484
  /* @__PURE__ */ jsx42("div", { className: "event-timetable-day-selector", "aria-label": "Choose timetable day", children: model.days.map((day) => /* @__PURE__ */ jsx42(
32335
32485
  "button",
32336
32486
  {
@@ -32343,8 +32493,8 @@ function renderTimetableSsr(display) {
32343
32493
  },
32344
32494
  day.dateKey
32345
32495
  )) }),
32346
- /* @__PURE__ */ jsx42("div", { className: "event-timetable-container", children: /* @__PURE__ */ jsxs28("div", { className: "event-timetable-grid", "aria-label": "Weekly timetable", children: [
32347
- /* @__PURE__ */ jsxs28("div", { className: "event-timetable-time-rail", "aria-hidden": "true", children: [
32496
+ /* @__PURE__ */ jsx42("div", { className: "event-timetable-container", children: /* @__PURE__ */ jsxs29("div", { className: "event-timetable-grid", "aria-label": "Weekly timetable", children: [
32497
+ /* @__PURE__ */ jsxs29("div", { className: "event-timetable-time-rail", "aria-hidden": "true", children: [
32348
32498
  /* @__PURE__ */ jsx42("div", { className: "event-timetable-day-heading" }),
32349
32499
  /* @__PURE__ */ jsx42("div", { className: "event-timetable-time-body", children: model.hourTicks.map((hour) => /* @__PURE__ */ jsx42(
32350
32500
  "div",
@@ -32356,7 +32506,7 @@ function renderTimetableSsr(display) {
32356
32506
  hour
32357
32507
  )) })
32358
32508
  ] }),
32359
- model.days.map((day) => /* @__PURE__ */ jsxs28(
32509
+ model.days.map((day) => /* @__PURE__ */ jsxs29(
32360
32510
  "section",
32361
32511
  {
32362
32512
  className: clsx_default(
@@ -32365,11 +32515,11 @@ function renderTimetableSsr(display) {
32365
32515
  ),
32366
32516
  "data-selected": day.dateKey === selectedDayKey ? "true" : "false",
32367
32517
  children: [
32368
- /* @__PURE__ */ jsxs28("h4", { className: "event-timetable-day-heading", children: [
32518
+ /* @__PURE__ */ jsxs29("h4", { className: "event-timetable-day-heading", children: [
32369
32519
  day.label,
32370
32520
  day.isToday ? /* @__PURE__ */ jsx42("span", { className: "event-timetable-today-badge", children: "Today" }) : null
32371
32521
  ] }),
32372
- /* @__PURE__ */ jsxs28(
32522
+ /* @__PURE__ */ jsxs29(
32373
32523
  "div",
32374
32524
  {
32375
32525
  className: "event-timetable-day-body",
@@ -32384,7 +32534,7 @@ function renderTimetableSsr(display) {
32384
32534
  },
32385
32535
  hour
32386
32536
  )),
32387
- day.events.length === 0 ? /* @__PURE__ */ jsx42("p", { className: "event-timetable-day-empty", children: "No classes" }) : day.events.map((cell) => /* @__PURE__ */ jsxs28(
32537
+ day.events.length === 0 ? /* @__PURE__ */ jsx42("p", { className: "event-timetable-day-empty", children: "No classes" }) : day.events.map((cell) => /* @__PURE__ */ jsxs29(
32388
32538
  "a",
32389
32539
  {
32390
32540
  href: cell.event.path,
@@ -32461,18 +32611,18 @@ var EventCalendarSSR = (props2) => {
32461
32611
  default:
32462
32612
  content = assertNeverDisplayMode(display.displayMode);
32463
32613
  }
32464
- return /* @__PURE__ */ jsxs28("div", { ...getIslandRootProps("event-calendar", props2.blockId), children: [
32614
+ return /* @__PURE__ */ jsxs29("div", { ...getIslandRootProps("event-calendar", props2.blockId), children: [
32465
32615
  /* @__PURE__ */ jsx42(IslandPropsScript, { value: islandProps }),
32466
32616
  content
32467
32617
  ] });
32468
32618
  };
32469
32619
 
32470
32620
  // ../blocks/src/system/runtime/nodes/events/EventListing.server.tsx
32471
- import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
32621
+ import { jsx as jsx43, jsxs as jsxs30 } from "react/jsx-runtime";
32472
32622
  var EventListingSSR = (props2) => {
32473
32623
  const islandProps = buildEventListingInteractiveIslandProps(props2);
32474
32624
  const display = islandProps.render.display;
32475
- return /* @__PURE__ */ jsxs29("div", { ...getIslandRootProps("event-listing", props2.blockId), children: [
32625
+ return /* @__PURE__ */ jsxs30("div", { ...getIslandRootProps("event-listing", props2.blockId), children: [
32476
32626
  /* @__PURE__ */ jsx43(IslandPropsScript, { value: islandProps }),
32477
32627
  /* @__PURE__ */ jsx43(
32478
32628
  EventListingFrameView,
@@ -32485,7 +32635,7 @@ var EventListingSSR = (props2) => {
32485
32635
  };
32486
32636
 
32487
32637
  // ../blocks/src/system/runtime/nodes/event-registration.server.tsx
32488
- import { jsx as jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
32638
+ import { jsx as jsx44, jsxs as jsxs31 } from "react/jsx-runtime";
32489
32639
  function EventRegistrationSSR({
32490
32640
  blockId,
32491
32641
  siteId,
@@ -32526,7 +32676,7 @@ function EventRegistrationSSR({
32526
32676
  stage,
32527
32677
  supportEmail
32528
32678
  });
32529
- return /* @__PURE__ */ jsxs30(
32679
+ return /* @__PURE__ */ jsxs31(
32530
32680
  "div",
32531
32681
  {
32532
32682
  className: `event-registration ${className ?? ""}`.trim(),
@@ -32542,7 +32692,7 @@ function EventRegistrationSSR({
32542
32692
  var event_registration_server_default = EventRegistrationSSR;
32543
32693
 
32544
32694
  // ../blocks/src/system/runtime/shared/components/FeedbackMessage.tsx
32545
- import { jsx as jsx45, jsxs as jsxs31 } from "react/jsx-runtime";
32695
+ import { jsx as jsx45, jsxs as jsxs32 } from "react/jsx-runtime";
32546
32696
  function joinClasses5(...parts) {
32547
32697
  return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
32548
32698
  }
@@ -32558,7 +32708,7 @@ function FeedbackMessage({
32558
32708
  }) {
32559
32709
  const resolvedLive = live ?? (role === "alert" ? "assertive" : "polite");
32560
32710
  const shouldWrapBody = Boolean(title || bodyClassName);
32561
- return /* @__PURE__ */ jsxs31(
32711
+ return /* @__PURE__ */ jsxs32(
32562
32712
  "div",
32563
32713
  {
32564
32714
  className,
@@ -32574,7 +32724,7 @@ function FeedbackMessage({
32574
32724
  }
32575
32725
 
32576
32726
  // ../blocks/src/system/runtime/nodes/form.server.tsx
32577
- import { jsx as jsx46, jsxs as jsxs32 } from "react/jsx-runtime";
32727
+ import { jsx as jsx46, jsxs as jsxs33 } from "react/jsx-runtime";
32578
32728
  var FormNodeSSR = ({
32579
32729
  blockId,
32580
32730
  value,
@@ -32599,7 +32749,7 @@ var FormNodeSSR = ({
32599
32749
  const display = islandProps.render.display;
32600
32750
  const form2 = display.form;
32601
32751
  if (!form2) {
32602
- return /* @__PURE__ */ jsxs32("div", { ...getIslandRootProps("form", blockId), children: [
32752
+ return /* @__PURE__ */ jsxs33("div", { ...getIslandRootProps("form", blockId), children: [
32603
32753
  /* @__PURE__ */ jsx46(IslandPropsScript, { value: islandProps }),
32604
32754
  /* @__PURE__ */ jsx46(FeedbackMessage, { tone: "warning", className: clsx_default("fb-empty", className), role: "status", children: "Missing or unknown form." })
32605
32755
  ] });
@@ -32611,7 +32761,7 @@ var FormNodeSSR = ({
32611
32761
  const required = Boolean(field.required);
32612
32762
  const type = String(field.type ?? "text");
32613
32763
  if (type === "textarea") {
32614
- return /* @__PURE__ */ jsxs32("div", { className: "fb-field", children: [
32764
+ return /* @__PURE__ */ jsxs33("div", { className: "fb-field", children: [
32615
32765
  /* @__PURE__ */ jsx46("label", { htmlFor: inputId, className: "form-label", children: label }),
32616
32766
  /* @__PURE__ */ jsx46(
32617
32767
  "textarea",
@@ -32629,9 +32779,9 @@ var FormNodeSSR = ({
32629
32779
  if (type === "select") {
32630
32780
  const options = field.options ?? [];
32631
32781
  const multiple = Boolean(field.multiple);
32632
- return /* @__PURE__ */ jsxs32("div", { className: "fb-field", children: [
32782
+ return /* @__PURE__ */ jsxs33("div", { className: "fb-field", children: [
32633
32783
  /* @__PURE__ */ jsx46("label", { htmlFor: inputId, className: "form-label", children: label }),
32634
- /* @__PURE__ */ jsxs32("select", { id: inputId, name: field.id, multiple, required, className: "form-select", children: [
32784
+ /* @__PURE__ */ jsxs33("select", { id: inputId, name: field.id, multiple, required, className: "form-select", children: [
32635
32785
  !multiple && /* @__PURE__ */ jsx46("option", { value: "", children: "Select\u2026" }),
32636
32786
  options.map((opt) => /* @__PURE__ */ jsx46("option", { value: opt.value, children: opt.label }, opt.value))
32637
32787
  ] })
@@ -32639,9 +32789,9 @@ var FormNodeSSR = ({
32639
32789
  }
32640
32790
  if (type === "radio") {
32641
32791
  const options = field.options ?? [];
32642
- return /* @__PURE__ */ jsxs32("fieldset", { className: "fb-fieldset", children: [
32792
+ return /* @__PURE__ */ jsxs33("fieldset", { className: "fb-fieldset", children: [
32643
32793
  /* @__PURE__ */ jsx46("legend", { className: "form-label", children: label }),
32644
- options.map((opt) => /* @__PURE__ */ jsxs32("label", { className: "fb-inline form-label", children: [
32794
+ options.map((opt) => /* @__PURE__ */ jsxs33("label", { className: "fb-inline form-label", children: [
32645
32795
  /* @__PURE__ */ jsx46(
32646
32796
  "input",
32647
32797
  {
@@ -32657,7 +32807,7 @@ var FormNodeSSR = ({
32657
32807
  ] }, field.id);
32658
32808
  }
32659
32809
  if (type === "checkbox" || type === "consent") {
32660
- return /* @__PURE__ */ jsxs32("label", { className: "fb-inline form-label", children: [
32810
+ return /* @__PURE__ */ jsxs33("label", { className: "fb-inline form-label", children: [
32661
32811
  /* @__PURE__ */ jsx46("input", { type: "checkbox", name: field.id, required, className: "form-checkbox" }),
32662
32812
  /* @__PURE__ */ jsx46("span", { children: label })
32663
32813
  ] }, field.id);
@@ -32673,7 +32823,7 @@ var FormNodeSSR = ({
32673
32823
  if (typeof field.min === "number") extra.min = field.min;
32674
32824
  if (typeof field.max === "number") extra.max = field.max;
32675
32825
  }
32676
- return /* @__PURE__ */ jsxs32("div", { className: "fb-field", children: [
32826
+ return /* @__PURE__ */ jsxs33("div", { className: "fb-field", children: [
32677
32827
  /* @__PURE__ */ jsx46("label", { htmlFor: inputId, className: "form-label", children: label }),
32678
32828
  /* @__PURE__ */ jsx46(
32679
32829
  "input",
@@ -32689,9 +32839,9 @@ var FormNodeSSR = ({
32689
32839
  )
32690
32840
  ] }, field.id);
32691
32841
  };
32692
- return /* @__PURE__ */ jsxs32("div", { ...getIslandRootProps("form", blockId), children: [
32842
+ return /* @__PURE__ */ jsxs33("div", { ...getIslandRootProps("form", blockId), children: [
32693
32843
  /* @__PURE__ */ jsx46(IslandPropsScript, { value: islandProps }),
32694
- /* @__PURE__ */ jsxs32(
32844
+ /* @__PURE__ */ jsxs33(
32695
32845
  "form",
32696
32846
  {
32697
32847
  method: "POST",
@@ -32726,7 +32876,7 @@ var FormNodeSSR = ({
32726
32876
  };
32727
32877
 
32728
32878
  // ../blocks/src/system/runtime/nodes/newsletter-form.server.tsx
32729
- import { jsx as jsx47, jsxs as jsxs33 } from "react/jsx-runtime";
32879
+ import { jsx as jsx47, jsxs as jsxs34 } from "react/jsx-runtime";
32730
32880
  function NewsletterFormSSR({
32731
32881
  blockId,
32732
32882
  siteId,
@@ -32758,8 +32908,8 @@ function NewsletterFormSSR({
32758
32908
  const fields3 = display.fields;
32759
32909
  const renderField = (field) => {
32760
32910
  const inputId = `newsletter_${field.id}`;
32761
- return /* @__PURE__ */ jsxs33("div", { className: "fb-field newsletter-field", children: [
32762
- /* @__PURE__ */ jsxs33("label", { htmlFor: inputId, className: "form-label", children: [
32911
+ return /* @__PURE__ */ jsxs34("div", { className: "fb-field newsletter-field", children: [
32912
+ /* @__PURE__ */ jsxs34("label", { htmlFor: inputId, className: "form-label", children: [
32763
32913
  field.label,
32764
32914
  field.required && /* @__PURE__ */ jsx47("span", { className: "newsletter-required", "aria-hidden": "true", children: "*" })
32765
32915
  ] }),
@@ -32777,14 +32927,14 @@ function NewsletterFormSSR({
32777
32927
  )
32778
32928
  ] }, field.id);
32779
32929
  };
32780
- return /* @__PURE__ */ jsxs33(
32930
+ return /* @__PURE__ */ jsxs34(
32781
32931
  "div",
32782
32932
  {
32783
32933
  ...getIslandRootProps("newsletter-form", blockId),
32784
32934
  className: clsx_default("newsletter-form-ssr", className),
32785
32935
  children: [
32786
32936
  /* @__PURE__ */ jsx47(IslandPropsScript, { value: islandProps }),
32787
- /* @__PURE__ */ jsxs33("form", { method: "POST", className: "newsletter-form fb-form", children: [
32937
+ /* @__PURE__ */ jsxs34("form", { method: "POST", className: "newsletter-form fb-form", children: [
32788
32938
  /* @__PURE__ */ jsx47(
32789
32939
  "input",
32790
32940
  {
@@ -32796,7 +32946,7 @@ function NewsletterFormSSR({
32796
32946
  "aria-hidden": "true"
32797
32947
  }
32798
32948
  ),
32799
- /* @__PURE__ */ jsxs33("div", { className: "newsletter-form-fields", children: [
32949
+ /* @__PURE__ */ jsxs34("div", { className: "newsletter-form-fields", children: [
32800
32950
  fields3.map(renderField),
32801
32951
  /* @__PURE__ */ jsx47("div", { className: "newsletter-submit", children: /* @__PURE__ */ jsx47(
32802
32952
  "button",
@@ -32816,7 +32966,7 @@ function NewsletterFormSSR({
32816
32966
  var newsletter_form_server_default = NewsletterFormSSR;
32817
32967
 
32818
32968
  // ../blocks/src/system/runtime/nodes/product-detail.server.tsx
32819
- import { jsx as jsx48, jsxs as jsxs34 } from "react/jsx-runtime";
32969
+ import { jsx as jsx48, jsxs as jsxs35 } from "react/jsx-runtime";
32820
32970
  function ProductDetailSSR({
32821
32971
  blockId,
32822
32972
  siteId,
@@ -32831,7 +32981,7 @@ function ProductDetailSSR({
32831
32981
  stage,
32832
32982
  ...rest
32833
32983
  });
32834
- return /* @__PURE__ */ jsxs34(
32984
+ return /* @__PURE__ */ jsxs35(
32835
32985
  "div",
32836
32986
  {
32837
32987
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -32851,7 +33001,7 @@ function ProductDetailSSR({
32851
33001
  var product_detail_server_default = ProductDetailSSR;
32852
33002
 
32853
33003
  // ../blocks/src/system/runtime/nodes/product-list.server.tsx
32854
- import { jsx as jsx49, jsxs as jsxs35 } from "react/jsx-runtime";
33004
+ import { jsx as jsx49, jsxs as jsxs36 } from "react/jsx-runtime";
32855
33005
  function ProductListSSR({
32856
33006
  blockId,
32857
33007
  siteId,
@@ -32866,7 +33016,7 @@ function ProductListSSR({
32866
33016
  stage,
32867
33017
  ...rest
32868
33018
  });
32869
- return /* @__PURE__ */ jsxs35(
33019
+ return /* @__PURE__ */ jsxs36(
32870
33020
  "div",
32871
33021
  {
32872
33022
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -32886,7 +33036,7 @@ function ProductListSSR({
32886
33036
  var product_list_server_default = ProductListSSR;
32887
33037
 
32888
33038
  // ../blocks/src/system/runtime/nodes/shop.server.tsx
32889
- import { jsx as jsx50, jsxs as jsxs36 } from "react/jsx-runtime";
33039
+ import { jsx as jsx50, jsxs as jsxs37 } from "react/jsx-runtime";
32890
33040
  function ShopSSR({
32891
33041
  blockId,
32892
33042
  siteId,
@@ -32903,7 +33053,7 @@ function ShopSSR({
32903
33053
  ...rest
32904
33054
  });
32905
33055
  const render = islandProps.render;
32906
- return /* @__PURE__ */ jsxs36(
33056
+ return /* @__PURE__ */ jsxs37(
32907
33057
  "div",
32908
33058
  {
32909
33059
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -33124,6 +33274,10 @@ function getAbsoluteSegments(fromPath, context) {
33124
33274
  if (scoped?.basePathSegments && scoped.basePathSegments.length > 0) {
33125
33275
  return [...scoped.basePathSegments, ...rest];
33126
33276
  }
33277
+ const hasContentScope = context.scopes.some((entry) => entry.name === "content");
33278
+ if (hasContentScope && !(first in context.viewModel)) {
33279
+ return ["content", ...segments];
33280
+ }
33127
33281
  return void 0;
33128
33282
  }
33129
33283
  function readFromSource(source, segments) {
@@ -33772,7 +33926,7 @@ function makeDefaultBlockComponent(args) {
33772
33926
  pathBase,
33773
33927
  blockId,
33774
33928
  blockKind,
33775
- blockContent: content,
33929
+ blockContent: mergedContent,
33776
33930
  blockBindings,
33777
33931
  editableRouteMetadataFieldIds,
33778
33932
  fragmentRegistry: fragmentRegistry2
@@ -34808,6 +34962,19 @@ function getNavLinkPreset(presetId) {
34808
34962
  }
34809
34963
  var NAV_LINK_PRESET_IDS = Object.keys(NAV_LINK_PRESETS);
34810
34964
 
34965
+ // ../theme-core/src/header/navDropdownSizing.ts
34966
+ var NAV_DROPDOWN_MIN_WIDTH_REM = 12;
34967
+ var NAV_DROPDOWN_MAX_WIDTH_REM = 22;
34968
+ var NAV_DROPDOWN_VIEWPORT_GUTTER_REM = 1;
34969
+ var NAV_DROPDOWN_SHIFT_PROPERTY = "--nav-dropdown-shift-x";
34970
+ var NAV_DROPDOWN_MAX_WIDTH_CSS = `min(${NAV_DROPDOWN_MAX_WIDTH_REM}rem, calc(100vw - ${NAV_DROPDOWN_VIEWPORT_GUTTER_REM * 2}rem))`;
34971
+ var NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES = [
34972
+ `min-width: ${NAV_DROPDOWN_MIN_WIDTH_REM}rem;`,
34973
+ `width: max-content;`,
34974
+ `max-width: ${NAV_DROPDOWN_MAX_WIDTH_CSS};`,
34975
+ `transform: translateX(var(${NAV_DROPDOWN_SHIFT_PROPERTY}, 0px));`
34976
+ ];
34977
+
34811
34978
  // ../theme-core/src/header/generateHeaderCss.ts
34812
34979
  var HEADER_BLUR = "blur(12px)";
34813
34980
  var FLOATING_BLUR = "blur(16px)";
@@ -35082,6 +35249,7 @@ function generateDropdownContainerStyles(header, themeId, tokens) {
35082
35249
  const selector = `:where([data-theme-scope="${themeId}"]) .nav-dropdown-menu`;
35083
35250
  const rules = [];
35084
35251
  const dropdownStyle = header.dropdownStyle;
35252
+ rules.push(...NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES);
35085
35253
  const bgToken = dropdownStyle?.background ?? "surface";
35086
35254
  rules.push(`background-color: ${tokens.getColor(bgToken)};`);
35087
35255
  const textToken = dropdownStyle?.textColor ?? "text";
@@ -45149,6 +45317,17 @@ var containerResponsiveThemeCss = `/*
45149
45317
  * =============================================================================
45150
45318
  */
45151
45319
 
45320
+ :where(.theme-scope) .nav-dropdown-menu {
45321
+ /*
45322
+ * Keep these rails in sync with header/navDropdownSizing.ts.
45323
+ * The JS placement gutter is 16px, matching the 1rem per-side gutter in calc(100vw - 2rem).
45324
+ */
45325
+ min-width: 12rem;
45326
+ width: max-content;
45327
+ max-width: min(22rem, calc(100vw - 2rem));
45328
+ transform: translateX(var(--nav-dropdown-shift-x, 0px));
45329
+ }
45330
+
45152
45331
  :where(.theme-scope) .nav-dropdown:hover > .nav-dropdown-menu,
45153
45332
  :where(.theme-scope) .nav-dropdown:focus-within > .nav-dropdown-menu,
45154
45333
  :where(.theme-scope) .nav-dropdown .nav-dropdown-trigger[aria-expanded="true"] + .nav-dropdown-menu {
@@ -46619,6 +46798,11 @@ var containerResponsiveThemeCss = `/*
46619
46798
  * Dense row layout for event-calendar compact list mode
46620
46799
  * ============================================================================= */
46621
46800
 
46801
+ :where(.theme-scope) .event-listing-compact-container {
46802
+ width: min(100%, 56rem);
46803
+ margin-inline: auto;
46804
+ }
46805
+
46622
46806
  :where(.theme-scope) .event-compact-row {
46623
46807
  display: flex;
46624
46808
  align-items: center;
@@ -46744,7 +46928,7 @@ var containerResponsiveThemeCss = `/*
46744
46928
  }`;
46745
46929
 
46746
46930
  // ../theme-core/src/ThemeScopeCore.tsx
46747
- import { jsx as jsx52, jsxs as jsxs37 } from "react/jsx-runtime";
46931
+ import { jsx as jsx52, jsxs as jsxs38 } from "react/jsx-runtime";
46748
46932
  function ThemeScopeCore({
46749
46933
  cssVars,
46750
46934
  buttonCss,
@@ -46776,7 +46960,7 @@ function ThemeScopeCore({
46776
46960
  containerType: "inline-size",
46777
46961
  containerName: responsiveScope.containerName
46778
46962
  } : cssVars;
46779
- return /* @__PURE__ */ jsxs37(
46963
+ return /* @__PURE__ */ jsxs38(
46780
46964
  "div",
46781
46965
  {
46782
46966
  className: className ? `theme-scope ${className}` : "theme-scope",
@@ -46994,10 +47178,10 @@ function resolveFooterRenderPlan(params) {
46994
47178
 
46995
47179
  // ../theme-core/src/ThemeFontLoader.tsx
46996
47180
  import * as React7 from "react";
46997
- import { Fragment as Fragment7, jsx as jsx54, jsxs as jsxs38 } from "react/jsx-runtime";
47181
+ import { Fragment as Fragment7, jsx as jsx54, jsxs as jsxs39 } from "react/jsx-runtime";
46998
47182
 
46999
47183
  // ../theme-core/src/siteChrome.tsx
47000
- import { Fragment as Fragment8, jsx as jsx55, jsxs as jsxs39 } from "react/jsx-runtime";
47184
+ import { Fragment as Fragment8, jsx as jsx55, jsxs as jsxs40 } from "react/jsx-runtime";
47001
47185
 
47002
47186
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
47003
47187
  import { z as z64 } from "zod";
@@ -47031,10 +47215,10 @@ var themeBridgeConfigSchema = z64.object({
47031
47215
  }).passthrough();
47032
47216
 
47033
47217
  // ../theme-core/src/mock-themes/components/swatch.tsx
47034
- import { jsx as jsx56, jsxs as jsxs40 } from "react/jsx-runtime";
47218
+ import { jsx as jsx56, jsxs as jsxs41 } from "react/jsx-runtime";
47035
47219
 
47036
47220
  // ../theme-core/src/mock-themes/components/PaletteCard.tsx
47037
- import { jsx as jsx57, jsxs as jsxs41 } from "react/jsx-runtime";
47221
+ import { jsx as jsx57, jsxs as jsxs42 } from "react/jsx-runtime";
47038
47222
 
47039
47223
  // src/rendering/blocks-theme-runtime.ts
47040
47224
  var AXES_TONE_OPTIONS = ["minimal", "classic", "bold"];
@@ -47206,10 +47390,10 @@ function PageContent({
47206
47390
  }
47207
47391
 
47208
47392
  // src/rendering/components/Page.tsx
47209
- import { Fragment as Fragment9, jsx as jsx59, jsxs as jsxs42 } from "react/jsx-runtime";
47393
+ import { Fragment as Fragment9, jsx as jsx59, jsxs as jsxs43 } from "react/jsx-runtime";
47210
47394
  var HydratorWithContextProps = BlocksIslandsHydrator;
47211
47395
  function Page(props2) {
47212
- return /* @__PURE__ */ jsxs42(Fragment9, { children: [
47396
+ return /* @__PURE__ */ jsxs43(Fragment9, { children: [
47213
47397
  /* @__PURE__ */ jsx59(HydratorWithContextProps, { ...toPageHydrationBootstrapConfig(props2) }),
47214
47398
  /* @__PURE__ */ jsx59(PageContent, { ...props2 })
47215
47399
  ] });
@@ -47649,7 +47833,7 @@ function buildLogo(logo, fallbackAlt) {
47649
47833
  }
47650
47834
 
47651
47835
  // src/rendering/components/Layout.tsx
47652
- import { Fragment as Fragment10, jsx as jsx60, jsxs as jsxs43 } from "react/jsx-runtime";
47836
+ import { Fragment as Fragment10, jsx as jsx60, jsxs as jsxs44 } from "react/jsx-runtime";
47653
47837
  async function Layout({
47654
47838
  siteData: providedSiteData,
47655
47839
  client,
@@ -47784,14 +47968,14 @@ async function Layout({
47784
47968
  themeConfig: blocksTheme,
47785
47969
  viewModelOverrides
47786
47970
  }) : null;
47787
- footerElement = footerPlan.mode === "default+blocks" ? /* @__PURE__ */ jsxs43(Fragment10, { children: [
47971
+ footerElement = footerPlan.mode === "default+blocks" ? /* @__PURE__ */ jsxs44(Fragment10, { children: [
47788
47972
  footerBlocksElement,
47789
47973
  defaultFooterElement
47790
47974
  ] }) : footerPlan.mode === "blocks" ? footerBlocksElement : footerPlan.mode === "none" ? null : defaultFooterElement;
47791
47975
  } else if (typeof footer === "function") {
47792
47976
  footerElement = footer(footerData);
47793
47977
  }
47794
- const content = /* @__PURE__ */ jsxs43(Fragment10, { children: [
47978
+ const content = /* @__PURE__ */ jsxs44(Fragment10, { children: [
47795
47979
  headerElement,
47796
47980
  children,
47797
47981
  footerElement
@@ -49053,6 +49237,18 @@ var TAG_TEMPLATES = {
49053
49237
  siteForms: "riverbank:site:{siteId}:forms",
49054
49238
  formById: "riverbank:form:{formId}",
49055
49239
  formSubmissionsBySlug: "riverbank:form-submissions:{slug}",
49240
+ // Public data loaders
49241
+ publicEvents: "riverbank:site:{siteId}:public-events",
49242
+ publicEventFilters: "riverbank:site:{siteId}:public-event-filters",
49243
+ publicCourses: "riverbank:site:{siteId}:public-courses",
49244
+ publicTeamMembers: "riverbank:site:{siteId}:public-team-members",
49245
+ publicProducts: "riverbank:site:{siteId}:public-products",
49246
+ publicPasses: "riverbank:site:{siteId}:public-passes",
49247
+ publicMemberships: "riverbank:site:{siteId}:public-memberships",
49248
+ publicGifting: "riverbank:site:{siteId}:public-gifting",
49249
+ publicShop: "riverbank:site:{siteId}:public-shop",
49250
+ publicCheckout: "riverbank:site:{siteId}:public-checkout",
49251
+ publicBookingServices: "riverbank:site:{siteId}:public-booking-services",
49056
49252
  // Navigation
49057
49253
  siteNavigation: "riverbank:site:{siteId}:navigation",
49058
49254
  navigationMenuById: "riverbank:navigation-menu:{menuId}",
@@ -52739,7 +52935,7 @@ var ENDPOINT_DEFINITIONS = {
52739
52935
  path: "/public/sites/{siteId}/events",
52740
52936
  method: "GET",
52741
52937
  revalidate: 60,
52742
- tags: ["public-events-{siteId}"],
52938
+ tags: [TAG_TEMPLATES.publicEvents],
52743
52939
  auth: "public",
52744
52940
  responseKind: "json"
52745
52941
  },
@@ -52748,7 +52944,7 @@ var ENDPOINT_DEFINITIONS = {
52748
52944
  path: "/public/sites/{siteId}/events/filters",
52749
52945
  method: "GET",
52750
52946
  revalidate: 60,
52751
- tags: ["public-event-filters-{siteId}"],
52947
+ tags: [TAG_TEMPLATES.publicEventFilters],
52752
52948
  auth: "public",
52753
52949
  responseKind: "json"
52754
52950
  },
@@ -52757,7 +52953,7 @@ var ENDPOINT_DEFINITIONS = {
52757
52953
  path: "/public/sites/{siteId}/courses",
52758
52954
  method: "GET",
52759
52955
  revalidate: 60,
52760
- tags: ["public-courses-{siteId}"],
52956
+ tags: [TAG_TEMPLATES.publicCourses],
52761
52957
  auth: "public",
52762
52958
  responseKind: "json"
52763
52959
  },
@@ -52765,7 +52961,7 @@ var ENDPOINT_DEFINITIONS = {
52765
52961
  path: "/public/sites/{siteId}/team-members",
52766
52962
  method: "GET",
52767
52963
  revalidate: 60,
52768
- tags: ["public-team-members-{siteId}"],
52964
+ tags: [TAG_TEMPLATES.publicTeamMembers],
52769
52965
  errors: [],
52770
52966
  auth: "public",
52771
52967
  responseKind: "json"
@@ -52774,21 +52970,21 @@ var ENDPOINT_DEFINITIONS = {
52774
52970
  path: "/public/sites/{siteId}/courses/{courseId}",
52775
52971
  method: "GET",
52776
52972
  revalidate: 60,
52777
- tags: ["public-courses-{siteId}"],
52973
+ tags: [TAG_TEMPLATES.publicCourses],
52778
52974
  auth: "public",
52779
52975
  responseKind: "json"
52780
52976
  },
52781
52977
  enrollInCourse: {
52782
52978
  path: "/public/sites/{siteId}/courses/enroll",
52783
52979
  method: "POST",
52784
- tags: ["public-courses-{siteId}", "course-enrollment"],
52980
+ tags: [TAG_TEMPLATES.publicCourses, "course-enrollment"],
52785
52981
  auth: "public",
52786
52982
  responseKind: "json"
52787
52983
  },
52788
52984
  checkCourseEligibility: {
52789
52985
  path: "/public/sites/{siteId}/courses/check-eligibility",
52790
52986
  method: "POST",
52791
- tags: ["public-courses-{siteId}", "course-enrollment"],
52987
+ tags: [TAG_TEMPLATES.publicCourses, "course-enrollment"],
52792
52988
  auth: "public",
52793
52989
  responseKind: "json"
52794
52990
  },
@@ -52796,8 +52992,8 @@ var ENDPOINT_DEFINITIONS = {
52796
52992
  path: "/public/sites/{siteId}/waitlists/claim/resolve",
52797
52993
  method: "POST",
52798
52994
  tags: [
52799
- "public-courses-{siteId}",
52800
- "public-events-{siteId}",
52995
+ TAG_TEMPLATES.publicCourses,
52996
+ TAG_TEMPLATES.publicEvents,
52801
52997
  "waitlist-claims"
52802
52998
  ],
52803
52999
  auth: "public",
@@ -52812,7 +53008,7 @@ var ENDPOINT_DEFINITIONS = {
52812
53008
  createCourseCheckout: {
52813
53009
  path: "/public/sites/{siteId}/courses/checkout",
52814
53010
  method: "POST",
52815
- tags: ["public-courses-{siteId}", "course-checkout"],
53011
+ tags: [TAG_TEMPLATES.publicCourses, "course-checkout"],
52816
53012
  auth: "public",
52817
53013
  responseKind: "json",
52818
53014
  errors: [
@@ -52826,7 +53022,7 @@ var ENDPOINT_DEFINITIONS = {
52826
53022
  getCourseRegistrationStatus: {
52827
53023
  path: "/public/sites/{siteId}/courses/registration-status",
52828
53024
  method: "GET",
52829
- tags: ["public-courses-{siteId}", "course-checkout"],
53025
+ tags: [TAG_TEMPLATES.publicCourses, "course-checkout"],
52830
53026
  auth: "public",
52831
53027
  responseKind: "json"
52832
53028
  },
@@ -52835,7 +53031,7 @@ var ENDPOINT_DEFINITIONS = {
52835
53031
  path: "/public/sites/{siteId}/bookings/products/passes",
52836
53032
  method: "GET",
52837
53033
  revalidate: 300,
52838
- tags: ["public-passes-{siteId}"],
53034
+ tags: [TAG_TEMPLATES.publicPasses],
52839
53035
  auth: "public",
52840
53036
  responseKind: "json"
52841
53037
  },
@@ -52844,7 +53040,7 @@ var ENDPOINT_DEFINITIONS = {
52844
53040
  path: "/public/sites/{siteId}/bookings/products/memberships",
52845
53041
  method: "GET",
52846
53042
  revalidate: 300,
52847
- tags: ["public-memberships-{siteId}"],
53043
+ tags: [TAG_TEMPLATES.publicMemberships],
52848
53044
  auth: "public",
52849
53045
  responseKind: "json"
52850
53046
  },
@@ -52853,7 +53049,7 @@ var ENDPOINT_DEFINITIONS = {
52853
53049
  path: "/public/sites/{siteId}/products",
52854
53050
  method: "GET",
52855
53051
  revalidate: 300,
52856
- tags: ["public-products-{siteId}"],
53052
+ tags: [TAG_TEMPLATES.publicProducts],
52857
53053
  errors: [],
52858
53054
  auth: "public",
52859
53055
  responseKind: "json"
@@ -52862,7 +53058,7 @@ var ENDPOINT_DEFINITIONS = {
52862
53058
  path: "/public/sites/{siteId}/gifting/offers",
52863
53059
  method: "GET",
52864
53060
  revalidate: 300,
52865
- tags: ["public-gifting-{siteId}"],
53061
+ tags: [TAG_TEMPLATES.publicGifting],
52866
53062
  errors: [],
52867
53063
  auth: "public",
52868
53064
  responseKind: "json"
@@ -52870,7 +53066,7 @@ var ENDPOINT_DEFINITIONS = {
52870
53066
  createPublicGiftingCheckout: {
52871
53067
  path: "/public/sites/{siteId}/gifting/checkout",
52872
53068
  method: "POST",
52873
- tags: ["public-gifting-{siteId}"],
53069
+ tags: [TAG_TEMPLATES.publicGifting],
52874
53070
  errors: [],
52875
53071
  auth: "public",
52876
53072
  responseKind: "json"
@@ -52878,7 +53074,7 @@ var ENDPOINT_DEFINITIONS = {
52878
53074
  claimGiftCardPublic: {
52879
53075
  path: "/public/sites/{siteId}/gifting/claim",
52880
53076
  method: "POST",
52881
- tags: ["public-gifting-{siteId}"],
53077
+ tags: [TAG_TEMPLATES.publicGifting],
52882
53078
  errors: [],
52883
53079
  auth: "public",
52884
53080
  responseKind: "json"
@@ -52886,14 +53082,14 @@ var ENDPOINT_DEFINITIONS = {
52886
53082
  createShopCheckout: {
52887
53083
  path: "/public/sites/{siteId}/bookings/checkout",
52888
53084
  method: "POST",
52889
- tags: ["public-shop-{siteId}", "shop-checkout"],
53085
+ tags: [TAG_TEMPLATES.publicShop, "shop-checkout"],
52890
53086
  auth: "public",
52891
53087
  responseKind: "json"
52892
53088
  },
52893
53089
  createUnifiedCheckout: {
52894
53090
  path: "/public/sites/{siteId}/checkout",
52895
53091
  method: "POST",
52896
- tags: ["public-checkout-{siteId}"],
53092
+ tags: [TAG_TEMPLATES.publicCheckout],
52897
53093
  auth: "public",
52898
53094
  responseKind: "json",
52899
53095
  errors: [
@@ -52932,7 +53128,7 @@ var ENDPOINT_DEFINITIONS = {
52932
53128
  path: "/public/sites/{siteId}/events/occurrences/resolve",
52933
53129
  method: "GET",
52934
53130
  revalidate: 60,
52935
- tags: ["public-events-{siteId}", "event-occurrence"],
53131
+ tags: [TAG_TEMPLATES.publicEvents, "event-occurrence"],
52936
53132
  auth: "public",
52937
53133
  responseKind: "json"
52938
53134
  },
@@ -52940,7 +53136,7 @@ var ENDPOINT_DEFINITIONS = {
52940
53136
  registerForEvent: {
52941
53137
  path: "/public/sites/{siteId}/events/register",
52942
53138
  method: "POST",
52943
- tags: ["public-events-{siteId}", "event-registration"],
53139
+ tags: [TAG_TEMPLATES.publicEvents, "event-registration"],
52944
53140
  auth: "public",
52945
53141
  responseKind: "json"
52946
53142
  },
@@ -52948,7 +53144,7 @@ var ENDPOINT_DEFINITIONS = {
52948
53144
  createPublicEventCheckout: {
52949
53145
  path: "/public/sites/{siteId}/events/checkout",
52950
53146
  method: "POST",
52951
- tags: ["public-events-{siteId}", "event-checkout"],
53147
+ tags: [TAG_TEMPLATES.publicEvents, "event-checkout"],
52952
53148
  auth: "public",
52953
53149
  responseKind: "json"
52954
53150
  },
@@ -52956,7 +53152,7 @@ var ENDPOINT_DEFINITIONS = {
52956
53152
  checkPublicEventEligibility: {
52957
53153
  path: "/public/sites/{siteId}/events/check-eligibility",
52958
53154
  method: "POST",
52959
- tags: ["public-events-{siteId}", "event-eligibility"],
53155
+ tags: [TAG_TEMPLATES.publicEvents, "event-eligibility"],
52960
53156
  auth: "public",
52961
53157
  responseKind: "json"
52962
53158
  },
@@ -52964,7 +53160,7 @@ var ENDPOINT_DEFINITIONS = {
52964
53160
  getPublicEventRegistrationStatus: {
52965
53161
  path: "/public/sites/{siteId}/events/registration-status",
52966
53162
  method: "GET",
52967
- tags: ["public-events-{siteId}", "event-registration"],
53163
+ tags: [TAG_TEMPLATES.publicEvents, "event-registration"],
52968
53164
  auth: "public",
52969
53165
  responseKind: "json"
52970
53166
  },
@@ -52972,7 +53168,7 @@ var ENDPOINT_DEFINITIONS = {
52972
53168
  getPublicEventTicketQrSvg: {
52973
53169
  path: "/public/sites/{siteId}/events/tickets/qr",
52974
53170
  method: "GET",
52975
- tags: ["public-events-{siteId}", "event-ticket-qr"],
53171
+ tags: [TAG_TEMPLATES.publicEvents, "event-ticket-qr"],
52976
53172
  auth: "public",
52977
53173
  responseKind: "text"
52978
53174
  },
@@ -56260,10 +56456,10 @@ var MultiPageUpdateResponse = z71.object({
56260
56456
  });
56261
56457
 
56262
56458
  // src/rendering/components/Block.shared.tsx
56263
- import { jsx as jsx61, jsxs as jsxs44 } from "react/jsx-runtime";
56459
+ import { jsx as jsx61, jsxs as jsxs45 } from "react/jsx-runtime";
56264
56460
 
56265
56461
  // src/rendering/components/Block.tsx
56266
- import { Fragment as Fragment11, jsx as jsx62, jsxs as jsxs45 } from "react/jsx-runtime";
56462
+ import { Fragment as Fragment11, jsx as jsx62, jsxs as jsxs46 } from "react/jsx-runtime";
56267
56463
 
56268
56464
  // src/contracts/bindings.ts
56269
56465
  var BINDING_TRANSFORMS = {