@riverbankcms/sdk 0.74.0 → 0.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/{PreviewEditorSidebar-5XL7M3OM.mjs → PreviewEditorSidebar-U2IHCBYN.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-ZDFRDJID.mjs → PreviewEditorUI-ZGH2RQNP.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-MTUGBTLQ.mjs +8 -0
  4. package/dist/_dts/api/src/cache-tags.d.ts +22 -0
  5. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  6. package/dist/_dts/api/src/endpoints.d.ts +24 -24
  7. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +2 -1
  8. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +4 -1
  9. package/dist/_dts/blocks/src/client/booking-form.d.ts +2 -0
  10. package/dist/_dts/blocks/src/client/carousel.d.ts +1 -0
  11. package/dist/_dts/blocks/src/client/course-registration.d.ts +2 -0
  12. package/dist/_dts/blocks/src/client/events.d.ts +4 -0
  13. package/dist/_dts/blocks/src/client/form.d.ts +2 -0
  14. package/dist/_dts/blocks/src/client/header.d.ts +1 -0
  15. package/dist/_dts/blocks/src/client/location-map.d.ts +1 -0
  16. package/dist/_dts/blocks/src/client/newsletter-form.d.ts +2 -0
  17. package/dist/_dts/blocks/src/client/shop.d.ts +6 -0
  18. package/dist/_dts/blocks/src/lib/video.d.ts +2 -0
  19. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +21 -1
  20. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +1 -0
  21. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -2
  22. package/dist/_dts/blocks/src/system/runtime/nodes/events/index.d.ts +3 -0
  23. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +1 -0
  24. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +1 -0
  25. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +5 -0
  26. package/dist/_dts/preview-next/src/client/preview/SiteChromeEditableSurface.d.ts +12 -2
  27. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -0
  28. package/dist/_dts/sdk/src/rendering/islands/deferredVideoEmbeds.d.ts +2 -0
  29. package/dist/_dts/sdk/src/rendering/server.d.ts +3 -0
  30. package/dist/_dts/sdk/src/version.d.ts +1 -1
  31. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  32. package/dist/{chunk-YY7K3QD2.mjs → chunk-BGMNDF6T.mjs} +7 -7
  33. package/dist/{chunk-2MIWNFJM.mjs → chunk-GFE74WRD.mjs} +309 -84
  34. package/dist/{chunk-CEQBBLMJ.mjs → chunk-RWXQBRQZ.mjs} +1 -1
  35. package/dist/{chunk-7RX72SK2.mjs → chunk-VX7B5VAC.mjs} +36 -25
  36. package/dist/{chunk-YRJKZEQ3.mjs → chunk-Z7JLNTJR.mjs} +1 -1
  37. package/dist/{chunk-CBD47MTM.mjs → chunk-ZSHFGFUG.mjs} +2 -2
  38. package/dist/cli/index.mjs +3395 -3753
  39. package/dist/client/{accordion-ZZVXWV3N.mjs → accordion-T2UD2ZTH.mjs} +1 -1
  40. package/dist/client/bookingForm-GUP75FKN.mjs +3022 -0
  41. package/dist/client/bookings.mjs +19 -10
  42. package/dist/client/{carousel-25WK2H7G.mjs → carousel-2NQA6V57.mjs} +3 -2
  43. package/dist/client/cart-5TFIAFDS.mjs +18 -0
  44. package/dist/client/checkout-TP4WAHZE.mjs +18 -0
  45. package/dist/client/chunk-2PHQZ666.mjs +383 -0
  46. package/dist/client/chunk-3DCJ45Z2.mjs +36 -0
  47. package/dist/client/chunk-3PEDD5KJ.mjs +146 -0
  48. package/dist/client/chunk-CY2ZTSE5.mjs +204 -0
  49. package/dist/client/chunk-F7LHOKEH.mjs +146 -0
  50. package/dist/client/{chunk-6VGXRE34.mjs → chunk-FU2QRZMX.mjs} +6 -6
  51. package/dist/client/chunk-I2MMZO53.mjs +6 -0
  52. package/dist/client/chunk-II7O4XN3.mjs +2206 -0
  53. package/dist/client/chunk-M3L3KYYR.mjs +1181 -0
  54. package/dist/client/chunk-NWOUL6JY.mjs +1378 -0
  55. package/dist/client/chunk-OJPZEZU2.mjs +31 -0
  56. package/dist/client/chunk-RTZ3JKKX.mjs +178 -0
  57. package/dist/client/chunk-TQ5MSPDX.mjs +74 -0
  58. package/dist/client/chunk-VUAOE3AG.mjs +5592 -0
  59. package/dist/client/chunk-WJXXNDSE.mjs +245 -0
  60. package/dist/client/chunk-YLMKMCSJ.mjs +86 -0
  61. package/dist/client/chunk-ZLMS67RR.mjs +106 -0
  62. package/dist/client/client.mjs +51626 -52074
  63. package/dist/client/courseRegistration-5DPU6PDY.mjs +1737 -0
  64. package/dist/client/{eventCalendar-X6GIPYFM.mjs → eventCalendar-F3GZGTEF.mjs} +13 -2
  65. package/dist/client/{eventCombined-EZUOPM3G.mjs → eventCombined-BQOB6QMY.mjs} +13 -2
  66. package/dist/client/eventDetails-PEM2EJWE.mjs +25 -0
  67. package/dist/client/{eventListing-HEFGAETC.mjs → eventListing-YMIQPVME.mjs} +13 -2
  68. package/dist/client/{eventRegistration-3LCP2V3P.mjs → eventRegistration-4I6ZNDUF.mjs} +13 -2
  69. package/dist/client/form-ZJVAYZ6G.mjs +300 -0
  70. package/dist/client/headerSection-TOT5MGTF.mjs +729 -0
  71. package/dist/client/hooks.mjs +49 -33
  72. package/dist/client/locationMap-J66NZREU.mjs +227 -0
  73. package/dist/client/newsletterForm-ET2XUMRO.mjs +208 -0
  74. package/dist/client/productDetail-C2XIH7C5.mjs +18 -0
  75. package/dist/client/productList-T2AZLFTP.mjs +18 -0
  76. package/dist/client/rendering/client.mjs +11763 -12445
  77. package/dist/client/rendering/islands.mjs +98 -21
  78. package/dist/client/rendering.mjs +46778 -47229
  79. package/dist/client/shop-UZ6IUZXD.mjs +20 -0
  80. package/dist/preview-next/before-render.mjs +37 -25
  81. package/dist/preview-next/client/runtime.mjs +5 -5
  82. package/dist/preview-next/middleware.mjs +37 -25
  83. package/dist/{sdk-runtime-OHNONZ5U.mjs → sdk-runtime-JCUQM63Y.mjs} +6 -6
  84. package/dist/server/components.mjs +409 -266
  85. package/dist/server/config-validation.mjs +49 -33
  86. package/dist/server/config.mjs +49 -33
  87. package/dist/server/data.mjs +49 -33
  88. package/dist/server/index.mjs +45 -33
  89. package/dist/server/next.mjs +405 -262
  90. package/dist/server/page-converter.mjs +12 -8
  91. package/dist/server/prebuild.mjs +1 -1
  92. package/dist/server/rendering/server.mjs +493 -265
  93. package/dist/server/rendering.mjs +411 -268
  94. package/dist/server/routing.mjs +49 -33
  95. package/dist/server/server.mjs +50 -34
  96. package/dist/server/theme-bridge.mjs +5 -0
  97. package/dist/styles/index.css +5 -0
  98. package/package.json +2 -1
  99. package/dist/SdkPreviewModeRuntime-CRYNDSPL.mjs +0 -8
  100. package/dist/client/bookingForm-4X77HKDS.mjs +0 -34
  101. package/dist/client/cart-JWD2VRFU.mjs +0 -11
  102. package/dist/client/checkout-V7KYGWL7.mjs +0 -11
  103. package/dist/client/chunk-5IYGMTUE.mjs +0 -18614
  104. package/dist/client/chunk-RKCFVIMS.mjs +0 -26
  105. package/dist/client/courseRegistration-O6ZPK4YT.mjs +0 -29
  106. package/dist/client/eventDetails-3WODIXET.mjs +0 -14
  107. package/dist/client/form-AKXQMY6Z.mjs +0 -85
  108. package/dist/client/headerSection-5KHCMU6B.mjs +0 -12
  109. package/dist/client/locationMap-7HIADW76.mjs +0 -14
  110. package/dist/client/newsletterForm-5N4YTMU3.mjs +0 -60
  111. package/dist/client/productDetail-IZUA7ZP3.mjs +0 -11
  112. package/dist/client/productList-KWIIJE6I.mjs +0 -11
  113. package/dist/client/shop-XZQFRQWZ.mjs +0 -13
@@ -63,6 +63,18 @@ var TAG_TEMPLATES = {
63
63
  siteForms: "riverbank:site:{siteId}:forms",
64
64
  formById: "riverbank:form:{formId}",
65
65
  formSubmissionsBySlug: "riverbank:form-submissions:{slug}",
66
+ // Public data loaders
67
+ publicEvents: "riverbank:site:{siteId}:public-events",
68
+ publicEventFilters: "riverbank:site:{siteId}:public-event-filters",
69
+ publicCourses: "riverbank:site:{siteId}:public-courses",
70
+ publicTeamMembers: "riverbank:site:{siteId}:public-team-members",
71
+ publicProducts: "riverbank:site:{siteId}:public-products",
72
+ publicPasses: "riverbank:site:{siteId}:public-passes",
73
+ publicMemberships: "riverbank:site:{siteId}:public-memberships",
74
+ publicGifting: "riverbank:site:{siteId}:public-gifting",
75
+ publicShop: "riverbank:site:{siteId}:public-shop",
76
+ publicCheckout: "riverbank:site:{siteId}:public-checkout",
77
+ publicBookingServices: "riverbank:site:{siteId}:public-booking-services",
66
78
  // Navigation
67
79
  siteNavigation: "riverbank:site:{siteId}:navigation",
68
80
  navigationMenuById: "riverbank:navigation-menu:{menuId}",
@@ -3749,7 +3761,7 @@ var ENDPOINT_DEFINITIONS = {
3749
3761
  path: "/public/sites/{siteId}/events",
3750
3762
  method: "GET",
3751
3763
  revalidate: 60,
3752
- tags: ["public-events-{siteId}"],
3764
+ tags: [TAG_TEMPLATES.publicEvents],
3753
3765
  auth: "public",
3754
3766
  responseKind: "json"
3755
3767
  },
@@ -3758,7 +3770,7 @@ var ENDPOINT_DEFINITIONS = {
3758
3770
  path: "/public/sites/{siteId}/events/filters",
3759
3771
  method: "GET",
3760
3772
  revalidate: 60,
3761
- tags: ["public-event-filters-{siteId}"],
3773
+ tags: [TAG_TEMPLATES.publicEventFilters],
3762
3774
  auth: "public",
3763
3775
  responseKind: "json"
3764
3776
  },
@@ -3767,7 +3779,7 @@ var ENDPOINT_DEFINITIONS = {
3767
3779
  path: "/public/sites/{siteId}/courses",
3768
3780
  method: "GET",
3769
3781
  revalidate: 60,
3770
- tags: ["public-courses-{siteId}"],
3782
+ tags: [TAG_TEMPLATES.publicCourses],
3771
3783
  auth: "public",
3772
3784
  responseKind: "json"
3773
3785
  },
@@ -3775,7 +3787,7 @@ var ENDPOINT_DEFINITIONS = {
3775
3787
  path: "/public/sites/{siteId}/team-members",
3776
3788
  method: "GET",
3777
3789
  revalidate: 60,
3778
- tags: ["public-team-members-{siteId}"],
3790
+ tags: [TAG_TEMPLATES.publicTeamMembers],
3779
3791
  errors: [],
3780
3792
  auth: "public",
3781
3793
  responseKind: "json"
@@ -3784,21 +3796,21 @@ var ENDPOINT_DEFINITIONS = {
3784
3796
  path: "/public/sites/{siteId}/courses/{courseId}",
3785
3797
  method: "GET",
3786
3798
  revalidate: 60,
3787
- tags: ["public-courses-{siteId}"],
3799
+ tags: [TAG_TEMPLATES.publicCourses],
3788
3800
  auth: "public",
3789
3801
  responseKind: "json"
3790
3802
  },
3791
3803
  enrollInCourse: {
3792
3804
  path: "/public/sites/{siteId}/courses/enroll",
3793
3805
  method: "POST",
3794
- tags: ["public-courses-{siteId}", "course-enrollment"],
3806
+ tags: [TAG_TEMPLATES.publicCourses, "course-enrollment"],
3795
3807
  auth: "public",
3796
3808
  responseKind: "json"
3797
3809
  },
3798
3810
  checkCourseEligibility: {
3799
3811
  path: "/public/sites/{siteId}/courses/check-eligibility",
3800
3812
  method: "POST",
3801
- tags: ["public-courses-{siteId}", "course-enrollment"],
3813
+ tags: [TAG_TEMPLATES.publicCourses, "course-enrollment"],
3802
3814
  auth: "public",
3803
3815
  responseKind: "json"
3804
3816
  },
@@ -3806,8 +3818,8 @@ var ENDPOINT_DEFINITIONS = {
3806
3818
  path: "/public/sites/{siteId}/waitlists/claim/resolve",
3807
3819
  method: "POST",
3808
3820
  tags: [
3809
- "public-courses-{siteId}",
3810
- "public-events-{siteId}",
3821
+ TAG_TEMPLATES.publicCourses,
3822
+ TAG_TEMPLATES.publicEvents,
3811
3823
  "waitlist-claims"
3812
3824
  ],
3813
3825
  auth: "public",
@@ -3822,7 +3834,7 @@ var ENDPOINT_DEFINITIONS = {
3822
3834
  createCourseCheckout: {
3823
3835
  path: "/public/sites/{siteId}/courses/checkout",
3824
3836
  method: "POST",
3825
- tags: ["public-courses-{siteId}", "course-checkout"],
3837
+ tags: [TAG_TEMPLATES.publicCourses, "course-checkout"],
3826
3838
  auth: "public",
3827
3839
  responseKind: "json",
3828
3840
  errors: [
@@ -3836,7 +3848,7 @@ var ENDPOINT_DEFINITIONS = {
3836
3848
  getCourseRegistrationStatus: {
3837
3849
  path: "/public/sites/{siteId}/courses/registration-status",
3838
3850
  method: "GET",
3839
- tags: ["public-courses-{siteId}", "course-checkout"],
3851
+ tags: [TAG_TEMPLATES.publicCourses, "course-checkout"],
3840
3852
  auth: "public",
3841
3853
  responseKind: "json"
3842
3854
  },
@@ -3845,7 +3857,7 @@ var ENDPOINT_DEFINITIONS = {
3845
3857
  path: "/public/sites/{siteId}/bookings/products/passes",
3846
3858
  method: "GET",
3847
3859
  revalidate: 300,
3848
- tags: ["public-passes-{siteId}"],
3860
+ tags: [TAG_TEMPLATES.publicPasses],
3849
3861
  auth: "public",
3850
3862
  responseKind: "json"
3851
3863
  },
@@ -3854,7 +3866,7 @@ var ENDPOINT_DEFINITIONS = {
3854
3866
  path: "/public/sites/{siteId}/bookings/products/memberships",
3855
3867
  method: "GET",
3856
3868
  revalidate: 300,
3857
- tags: ["public-memberships-{siteId}"],
3869
+ tags: [TAG_TEMPLATES.publicMemberships],
3858
3870
  auth: "public",
3859
3871
  responseKind: "json"
3860
3872
  },
@@ -3863,7 +3875,7 @@ var ENDPOINT_DEFINITIONS = {
3863
3875
  path: "/public/sites/{siteId}/products",
3864
3876
  method: "GET",
3865
3877
  revalidate: 300,
3866
- tags: ["public-products-{siteId}"],
3878
+ tags: [TAG_TEMPLATES.publicProducts],
3867
3879
  errors: [],
3868
3880
  auth: "public",
3869
3881
  responseKind: "json"
@@ -3872,7 +3884,7 @@ var ENDPOINT_DEFINITIONS = {
3872
3884
  path: "/public/sites/{siteId}/gifting/offers",
3873
3885
  method: "GET",
3874
3886
  revalidate: 300,
3875
- tags: ["public-gifting-{siteId}"],
3887
+ tags: [TAG_TEMPLATES.publicGifting],
3876
3888
  errors: [],
3877
3889
  auth: "public",
3878
3890
  responseKind: "json"
@@ -3880,7 +3892,7 @@ var ENDPOINT_DEFINITIONS = {
3880
3892
  createPublicGiftingCheckout: {
3881
3893
  path: "/public/sites/{siteId}/gifting/checkout",
3882
3894
  method: "POST",
3883
- tags: ["public-gifting-{siteId}"],
3895
+ tags: [TAG_TEMPLATES.publicGifting],
3884
3896
  errors: [],
3885
3897
  auth: "public",
3886
3898
  responseKind: "json"
@@ -3888,7 +3900,7 @@ var ENDPOINT_DEFINITIONS = {
3888
3900
  claimGiftCardPublic: {
3889
3901
  path: "/public/sites/{siteId}/gifting/claim",
3890
3902
  method: "POST",
3891
- tags: ["public-gifting-{siteId}"],
3903
+ tags: [TAG_TEMPLATES.publicGifting],
3892
3904
  errors: [],
3893
3905
  auth: "public",
3894
3906
  responseKind: "json"
@@ -3896,14 +3908,14 @@ var ENDPOINT_DEFINITIONS = {
3896
3908
  createShopCheckout: {
3897
3909
  path: "/public/sites/{siteId}/bookings/checkout",
3898
3910
  method: "POST",
3899
- tags: ["public-shop-{siteId}", "shop-checkout"],
3911
+ tags: [TAG_TEMPLATES.publicShop, "shop-checkout"],
3900
3912
  auth: "public",
3901
3913
  responseKind: "json"
3902
3914
  },
3903
3915
  createUnifiedCheckout: {
3904
3916
  path: "/public/sites/{siteId}/checkout",
3905
3917
  method: "POST",
3906
- tags: ["public-checkout-{siteId}"],
3918
+ tags: [TAG_TEMPLATES.publicCheckout],
3907
3919
  auth: "public",
3908
3920
  responseKind: "json",
3909
3921
  errors: [
@@ -3942,7 +3954,7 @@ var ENDPOINT_DEFINITIONS = {
3942
3954
  path: "/public/sites/{siteId}/events/occurrences/resolve",
3943
3955
  method: "GET",
3944
3956
  revalidate: 60,
3945
- tags: ["public-events-{siteId}", "event-occurrence"],
3957
+ tags: [TAG_TEMPLATES.publicEvents, "event-occurrence"],
3946
3958
  auth: "public",
3947
3959
  responseKind: "json"
3948
3960
  },
@@ -3950,7 +3962,7 @@ var ENDPOINT_DEFINITIONS = {
3950
3962
  registerForEvent: {
3951
3963
  path: "/public/sites/{siteId}/events/register",
3952
3964
  method: "POST",
3953
- tags: ["public-events-{siteId}", "event-registration"],
3965
+ tags: [TAG_TEMPLATES.publicEvents, "event-registration"],
3954
3966
  auth: "public",
3955
3967
  responseKind: "json"
3956
3968
  },
@@ -3958,7 +3970,7 @@ var ENDPOINT_DEFINITIONS = {
3958
3970
  createPublicEventCheckout: {
3959
3971
  path: "/public/sites/{siteId}/events/checkout",
3960
3972
  method: "POST",
3961
- tags: ["public-events-{siteId}", "event-checkout"],
3973
+ tags: [TAG_TEMPLATES.publicEvents, "event-checkout"],
3962
3974
  auth: "public",
3963
3975
  responseKind: "json"
3964
3976
  },
@@ -3966,7 +3978,7 @@ var ENDPOINT_DEFINITIONS = {
3966
3978
  checkPublicEventEligibility: {
3967
3979
  path: "/public/sites/{siteId}/events/check-eligibility",
3968
3980
  method: "POST",
3969
- tags: ["public-events-{siteId}", "event-eligibility"],
3981
+ tags: [TAG_TEMPLATES.publicEvents, "event-eligibility"],
3970
3982
  auth: "public",
3971
3983
  responseKind: "json"
3972
3984
  },
@@ -3974,7 +3986,7 @@ var ENDPOINT_DEFINITIONS = {
3974
3986
  getPublicEventRegistrationStatus: {
3975
3987
  path: "/public/sites/{siteId}/events/registration-status",
3976
3988
  method: "GET",
3977
- tags: ["public-events-{siteId}", "event-registration"],
3989
+ tags: [TAG_TEMPLATES.publicEvents, "event-registration"],
3978
3990
  auth: "public",
3979
3991
  responseKind: "json"
3980
3992
  },
@@ -3982,7 +3994,7 @@ var ENDPOINT_DEFINITIONS = {
3982
3994
  getPublicEventTicketQrSvg: {
3983
3995
  path: "/public/sites/{siteId}/events/tickets/qr",
3984
3996
  method: "GET",
3985
- tags: ["public-events-{siteId}", "event-ticket-qr"],
3997
+ tags: [TAG_TEMPLATES.publicEvents, "event-ticket-qr"],
3986
3998
  auth: "public",
3987
3999
  responseKind: "text"
3988
4000
  },
@@ -7780,6 +7792,9 @@ function validationContext(options = {}) {
7780
7792
  function formatFieldPath(path) {
7781
7793
  return path.map((segment) => String(segment)).join(".");
7782
7794
  }
7795
+ function toZodIssuePath(path) {
7796
+ return [...path];
7797
+ }
7783
7798
  function fieldIssueToMessage(issue2) {
7784
7799
  switch (issue2.kind) {
7785
7800
  case "required":
@@ -7908,6 +7923,9 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
7908
7923
  return assertNever(field);
7909
7924
  }
7910
7925
  }
7926
+ function deriveFieldValidationPlans(fields3, parentPath = []) {
7927
+ return fields3.map((field) => deriveFieldValidationPlan(field, [...parentPath, field.id]));
7928
+ }
7911
7929
  function commonConstraints(required, ...specific) {
7912
7930
  return required ? [{ kind: "required" }, ...specific] : [...specific];
7913
7931
  }
@@ -7923,9 +7941,19 @@ function makePlan(kind, valueKind, field, path, required, constraints) {
7923
7941
  fieldType: field.type,
7924
7942
  path,
7925
7943
  required,
7944
+ visibility: fieldVisibility(field),
7926
7945
  constraints
7927
7946
  };
7928
7947
  }
7948
+ function fieldVisibility(field) {
7949
+ if (field.ui?.hidden) {
7950
+ return { kind: "hidden" };
7951
+ }
7952
+ if (field.visibleRoles && field.visibleRoles.length > 0) {
7953
+ return { kind: "roleRestricted", roles: field.visibleRoles };
7954
+ }
7955
+ return { kind: "visible" };
7956
+ }
7929
7957
  function withRepeaterItemConstraints(field, constraints) {
7930
7958
  const next = [...constraints];
7931
7959
  if (typeof field.minItems === "number") next.push({ kind: "minItems", minimum: field.minItems });
@@ -7939,7 +7967,7 @@ function deriveRepeatedItemVariants(field, parentPath) {
7939
7967
  }));
7940
7968
  }
7941
7969
  function deriveNestedFieldPlans(fields3, parentPath) {
7942
- return fields3.map((field) => deriveFieldValidationPlan(field, [...parentPath, field.id]));
7970
+ return deriveFieldValidationPlans(fields3, parentPath);
7943
7971
  }
7944
7972
  function getRepeaterFields(field) {
7945
7973
  const fields3 = field.polymorphic && field.itemTypes ? Object.values(field.itemTypes).flatMap((itemType) => itemType.fields) : field.schema?.fields ?? [];
@@ -7965,6 +7993,71 @@ function resolveSelectConstraintSource(field) {
7965
7993
  return assertNever(source);
7966
7994
  }
7967
7995
  }
7996
+ function normalizeStoredContentValues(plans, content, options = {}) {
7997
+ if (!content || typeof content !== "object" || Array.isArray(content)) {
7998
+ return {};
7999
+ }
8000
+ const planMap = new Map(plans.map((plan) => [plan.fieldId, plan]));
8001
+ const normalized = {};
8002
+ const ctx = validationContext(options);
8003
+ for (const [key, value] of Object.entries(content)) {
8004
+ const plan = planMap.get(key);
8005
+ normalized[key] = plan ? normalizeStoredFieldValueWithContext(plan, value, ctx) : value;
8006
+ }
8007
+ return normalized;
8008
+ }
8009
+ function normalizeStoredFieldValueWithContext(plan, value, ctx) {
8010
+ if (value === null && !plan.required) {
8011
+ return void 0;
8012
+ }
8013
+ switch (plan.kind) {
8014
+ case "group":
8015
+ return normalizeStoredObjectChildren(plan.children, value, childValidationContext(plan, ctx));
8016
+ case "repeater":
8017
+ return normalizeStoredRepeaterItems(plan, value, ctx);
8018
+ case "string":
8019
+ case "number":
8020
+ case "boolean":
8021
+ case "richText":
8022
+ case "media":
8023
+ case "link":
8024
+ case "select":
8025
+ case "passthrough":
8026
+ return normalizeFieldValue(plan, value, ctx);
8027
+ default:
8028
+ return assertNever(plan);
8029
+ }
8030
+ }
8031
+ function normalizeStoredObjectChildren(children, value, ctx) {
8032
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
8033
+ return value;
8034
+ }
8035
+ const normalized = { ...value };
8036
+ for (const child of children) {
8037
+ normalized[child.fieldId] = normalizeStoredFieldValueWithContext(
8038
+ child,
8039
+ normalized[child.fieldId],
8040
+ ctx
8041
+ );
8042
+ }
8043
+ return normalized;
8044
+ }
8045
+ function normalizeStoredRepeaterItems(plan, value, ctx) {
8046
+ if (!Array.isArray(value)) {
8047
+ return value;
8048
+ }
8049
+ return value.map((item) => {
8050
+ if (!item || typeof item !== "object" || Array.isArray(item)) {
8051
+ return item;
8052
+ }
8053
+ const itemRecord = item;
8054
+ const fields3 = plan.repeatedItemVariants ? plan.repeatedItemVariants.find((variant) => variant.typeId === itemRecord._type)?.fields : plan.repeatedItemPlan;
8055
+ if (!fields3) {
8056
+ return item;
8057
+ }
8058
+ return normalizeStoredObjectChildren(fields3, itemRecord, ctx);
8059
+ });
8060
+ }
7968
8061
  function normalizeFieldValue(plan, value, ctx) {
7969
8062
  switch (plan.kind) {
7970
8063
  case "number":
@@ -8219,16 +8312,19 @@ function fieldPlanToZod(plan, options = {}) {
8219
8312
  const ctx = validationContext(options);
8220
8313
  return z6.any().transform((value) => normalizeFieldValue(plan, value, ctx)).superRefine((value, zodCtx) => {
8221
8314
  for (const validationIssue of validateNormalizedFieldValue(plan, value, ctx)) {
8222
- addFieldIssueToZodContext(zodCtx, validationIssue);
8315
+ addFieldIssueToZodContext(zodCtx, validationIssue, plan.path);
8223
8316
  }
8224
8317
  });
8225
8318
  }
8226
- function addFieldIssueToZodContext(zodCtx, validationIssue) {
8319
+ function addFieldIssueToZodContext(zodCtx, validationIssue, rootPath) {
8227
8320
  const message = fieldIssueToMessage(validationIssue);
8321
+ const path = relativeZodIssuePath(validationIssue.path, rootPath);
8322
+ const issuePath = path.length > 0 ? { path: toZodIssuePath(path) } : {};
8228
8323
  switch (validationIssue.kind) {
8229
8324
  case "required":
8230
8325
  if (validationIssue.emptyOrigin) {
8231
8326
  zodCtx.addIssue({
8327
+ ...issuePath,
8232
8328
  code: "too_small",
8233
8329
  origin: validationIssue.emptyOrigin,
8234
8330
  minimum: 1,
@@ -8237,10 +8333,11 @@ function addFieldIssueToZodContext(zodCtx, validationIssue) {
8237
8333
  });
8238
8334
  return;
8239
8335
  }
8240
- zodCtx.addIssue({ code: "invalid_type", expected: "nonoptional", message });
8336
+ zodCtx.addIssue({ ...issuePath, code: "invalid_type", expected: "nonoptional", message });
8241
8337
  return;
8242
8338
  case "tooLong":
8243
8339
  zodCtx.addIssue({
8340
+ ...issuePath,
8244
8341
  code: "too_big",
8245
8342
  origin: "string",
8246
8343
  maximum: validationIssue.maximum,
@@ -8249,7 +8346,7 @@ function addFieldIssueToZodContext(zodCtx, validationIssue) {
8249
8346
  });
8250
8347
  return;
8251
8348
  case "invalidOption":
8252
- zodCtx.addIssue({ code: "invalid_value", values: [], message });
8349
+ zodCtx.addIssue({ ...issuePath, code: "invalid_value", values: [], message });
8253
8350
  return;
8254
8351
  case "wrongType":
8255
8352
  case "invalidEmail":
@@ -8266,12 +8363,15 @@ function addFieldIssueToZodContext(zodCtx, validationIssue) {
8266
8363
  case "invalidMedia":
8267
8364
  case "invalidLink":
8268
8365
  case "invalidReference":
8269
- zodCtx.addIssue({ code: "custom", message });
8366
+ zodCtx.addIssue({ ...issuePath, code: "custom", message });
8270
8367
  return;
8271
8368
  default:
8272
8369
  assertNever(validationIssue);
8273
8370
  }
8274
8371
  }
8372
+ function relativeZodIssuePath(path, rootPath) {
8373
+ return startsWithFieldPath(path, rootPath) ? path.slice(rootPath.length) : path;
8374
+ }
8275
8375
  function compilePattern(pattern) {
8276
8376
  try {
8277
8377
  return new RegExp(pattern);
@@ -8349,24 +8449,33 @@ function preprocessEmptyValues(content) {
8349
8449
  }
8350
8450
  return result;
8351
8451
  }
8352
- function deriveContentZodFromManifest(manifestOrFields, options = {}) {
8353
- const shape = {};
8354
- const fields3 = Array.isArray(manifestOrFields) ? manifestOrFields : manifestOrFields.fields ?? [];
8355
- for (const field of fields3) {
8356
- shape[field.id] = buildFieldSchema(field, options);
8357
- }
8358
- return z7.object(shape).catchall(z7.unknown()).passthrough();
8359
- }
8360
8452
  function createManifestValidator(manifestOrFields, options = {}) {
8361
8453
  const isDraft = options.mode === "draft";
8362
- const baseSchema = deriveContentZodFromManifest(manifestOrFields, options);
8454
+ const plans = derivePlansFromManifestOrFields(manifestOrFields);
8455
+ const baseSchema = deriveContentZodFromPlans(plans, options);
8363
8456
  if (isDraft) {
8364
- return z7.preprocess(preprocessEmptyValues, baseSchema);
8457
+ return z7.preprocess(
8458
+ (content) => preprocessEmptyValues(
8459
+ normalizeStoredContentValues(plans, content, options)
8460
+ ),
8461
+ baseSchema
8462
+ );
8365
8463
  }
8366
- return baseSchema;
8464
+ return z7.preprocess(
8465
+ (content) => normalizeStoredContentValues(plans, content, options),
8466
+ baseSchema
8467
+ );
8367
8468
  }
8368
- function buildFieldSchema(field, options) {
8369
- return fieldPlanToZod(deriveFieldValidationPlan(field), options);
8469
+ function deriveContentZodFromPlans(plans, options) {
8470
+ const shape = {};
8471
+ for (const plan of plans) {
8472
+ shape[plan.fieldId] = fieldPlanToZod(plan, options);
8473
+ }
8474
+ return z7.object(shape).catchall(z7.unknown()).passthrough();
8475
+ }
8476
+ function derivePlansFromManifestOrFields(manifestOrFields) {
8477
+ const fields3 = Array.isArray(manifestOrFields) ? manifestOrFields : manifestOrFields.fields ?? [];
8478
+ return deriveFieldValidationPlans(fields3);
8370
8479
  }
8371
8480
 
8372
8481
  // ../blocks/src/system/manifest/variantKey.ts
@@ -24812,7 +24921,7 @@ var cardStylingFields = [
24812
24921
  description: "Text for the event action button",
24813
24922
  required: false,
24814
24923
  multiline: false,
24815
- defaultValue: "View event",
24924
+ defaultValue: "Book now",
24816
24925
  maxLength: 40
24817
24926
  }
24818
24927
  ];
@@ -25324,6 +25433,7 @@ var eventRegistrationBlockDefinition = {
25324
25433
  limit: "50",
25325
25434
  // Get more events for selection
25326
25435
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
25436
+ readProfile: "registration",
25327
25437
  // When rendering on an event content entry page, scope the list to that entry so
25328
25438
  // the wizard always includes the current event (and avoids stale cached "all events" responses).
25329
25439
  entryId: { $bind: { from: "$root.contentEntry._entryId", fallback: "" } }
@@ -26272,7 +26382,7 @@ var eventSpotlightLayout = [
26272
26382
  columns: { $bind: { from: "content.columns", fallback: "3" } },
26273
26383
  cardVariant: { $bind: { from: "content.cardVariant", fallback: "default" } },
26274
26384
  buttonVariant: { $bind: { from: "content.buttonVariant", fallback: "primary" } },
26275
- buttonText: { $bind: { from: "content.buttonText", fallback: "View event" } },
26385
+ buttonText: { $bind: { from: "content.buttonText", fallback: "Book now" } },
26276
26386
  ctaLabel: { $bind: { from: "content.ctaLabel" } },
26277
26387
  ctaUrl: { $bind: { from: "content.ctaUrl", transforms: [{ id: "links.resolve" }] } },
26278
26388
  showVenue: { $bind: { from: "content.showVenue" } },
@@ -26316,7 +26426,8 @@ var eventSpotlightBlockDefinition = {
26316
26426
  siteId: { $bind: { from: "$root.siteId" } },
26317
26427
  limit: { $bind: { from: "content.maxEvents", fallback: "3" } },
26318
26428
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
26319
- detailLevel: "listing"
26429
+ detailLevel: "listing",
26430
+ readProfile: "spotlight"
26320
26431
  },
26321
26432
  mode: "server"
26322
26433
  }
@@ -26788,7 +26899,7 @@ var COLUMN_CLASSES = {
26788
26899
  };
26789
26900
  function getContainerClass(layout, columns) {
26790
26901
  if (layout === "compact") {
26791
- return "rb-flex rb-flex-col rb-gap-2";
26902
+ return "event-listing-compact-container rb-flex rb-flex-col rb-gap-2";
26792
26903
  }
26793
26904
  if (layout === "stack") {
26794
26905
  return "rb-flex rb-flex-col rb-gap-6";
@@ -26919,7 +27030,7 @@ function formatEventPrice(event) {
26919
27030
  }
26920
27031
  function resolveEventCta(event, buttonText) {
26921
27032
  const { isFull: isSoldOut } = getEventAvailability(event);
26922
- const defaultButtonText = event.kind === "course_session" ? "View course" : "View event";
27033
+ const defaultButtonText = event.kind === "course_session" ? "Book course" : "Book now";
26923
27034
  const effectiveButtonText = buttonText ?? defaultButtonText;
26924
27035
  if (isSoldOut) {
26925
27036
  return { label: "Sold out", href: event.path, hidden: true };
@@ -28531,7 +28642,7 @@ var eventListingBlockRuntime = defineProgressiveBlockRuntime({
28531
28642
  containerClass: getContainerClass(layout, source.columns ?? "3"),
28532
28643
  cardVariant: source.cardVariant ?? "default",
28533
28644
  buttonVariant: source.buttonVariant ?? "primary",
28534
- buttonText: source.buttonText ?? "View event",
28645
+ buttonText: source.buttonText ?? "Book now",
28535
28646
  showVenue: source.showVenue ?? true,
28536
28647
  showMap: source.showMap ?? true,
28537
28648
  showCapacity: source.showCapacity ?? true,
@@ -28778,7 +28889,7 @@ var eventListingLayout = [
28778
28889
  loadMoreText: { $bind: { from: "content.loadMoreText", fallback: "Load more events" } },
28779
28890
  cardVariant: { $bind: { from: "content.cardVariant", fallback: "default" } },
28780
28891
  buttonVariant: { $bind: { from: "content.buttonVariant", fallback: "primary" } },
28781
- buttonText: { $bind: { from: "content.buttonText", fallback: "View event" } },
28892
+ buttonText: { $bind: { from: "content.buttonText", fallback: "Book now" } },
28782
28893
  showVenue: { $bind: { from: "content.showVenue" } },
28783
28894
  showMap: { $bind: { from: "content.showMap" } },
28784
28895
  showCapacity: { $bind: { from: "content.showCapacity" } },
@@ -28856,6 +28967,7 @@ var eventListingBlockDefinition = {
28856
28967
  limit: { $bind: { from: "content.eventsPerPage", fallback: "12" } },
28857
28968
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
28858
28969
  detailLevel: "listing",
28970
+ readProfile: { $bind: { from: "content.layout", fallback: "listing-card" } },
28859
28971
  kind: { $bind: { from: "content.kind" } },
28860
28972
  eventSurface: { $bind: { from: "content.eventSurface" } },
28861
28973
  eventPresets: {
@@ -28995,7 +29107,7 @@ function buildEventCalendarDisplay(source) {
28995
29107
  ),
28996
29108
  filterVenueId: normalizeEventVenueId(source.filterVenueId),
28997
29109
  buttonVariant: source.buttonVariant ?? "primary",
28998
- buttonText: source.buttonText ?? "View event",
29110
+ buttonText: source.buttonText ?? "Book now",
28999
29111
  showVenue: source.showVenue ?? true,
29000
29112
  showMap: source.showMap ?? true,
29001
29113
  showCapacity: source.showCapacity ?? true,
@@ -29184,7 +29296,7 @@ var eventCalendarLayout = [
29184
29296
  $bind: { from: "content.buttonVariant", fallback: "primary" }
29185
29297
  },
29186
29298
  buttonText: {
29187
- $bind: { from: "content.buttonText", fallback: "View event" }
29299
+ $bind: { from: "content.buttonText", fallback: "Book now" }
29188
29300
  },
29189
29301
  emptyMessage: { $bind: { from: "content.emptyMessage" } }
29190
29302
  })
@@ -29645,6 +29757,7 @@ var eventCalendarBlockDefinition = {
29645
29757
  limit: 100,
29646
29758
  stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
29647
29759
  detailLevel: "listing",
29760
+ readProfile: { $bind: { from: "content.variant", fallback: "listing-card" } },
29648
29761
  // Pass filter params if configured
29649
29762
  kind: { $bind: { from: "content.kind" } },
29650
29763
  eventSurface: { $bind: { from: "content.eventSurface" } },
@@ -35973,9 +36086,9 @@ function getEmbedUrl(info) {
35973
36086
  const kind = info.kind ?? "p";
35974
36087
  return `https://www.instagram.com/${kind}/${info.id}/embed`;
35975
36088
  }
35976
- default:
35977
- return "";
35978
36089
  }
36090
+ const exhaustive = info.provider;
36091
+ return exhaustive;
35979
36092
  }
35980
36093
  function getThumbnailUrl(info) {
35981
36094
  switch (info.provider) {
@@ -35985,9 +36098,20 @@ function getThumbnailUrl(info) {
35985
36098
  return `https://vumbnail.com/${info.id}.jpg`;
35986
36099
  case "instagram":
35987
36100
  return "";
35988
- default:
35989
- return "";
35990
36101
  }
36102
+ const exhaustive = info.provider;
36103
+ return exhaustive;
36104
+ }
36105
+ function getVideoEmbedLoadingStrategy(provider) {
36106
+ switch (provider) {
36107
+ case "youtube":
36108
+ case "vimeo":
36109
+ return "native-lazy";
36110
+ case "instagram":
36111
+ return "defer-until-near-viewport";
36112
+ }
36113
+ const exhaustive = provider;
36114
+ return exhaustive;
35991
36115
  }
35992
36116
  function getVideoEmbed(url) {
35993
36117
  const info = parseVideoUrl(url);
@@ -36002,7 +36126,7 @@ function getVideoEmbed(url) {
36002
36126
  }
36003
36127
 
36004
36128
  // ../blocks/src/system/runtime/nodes/video-embed.tsx
36005
- import { jsx as jsx18 } from "react/jsx-runtime";
36129
+ import { jsx as jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
36006
36130
  var VideoEmbedNode = ({
36007
36131
  value,
36008
36132
  className,
@@ -36045,35 +36169,43 @@ var VideoEmbedNode = ({
36045
36169
  );
36046
36170
  }
36047
36171
  const title = getVideoTitle(embedInfo);
36048
- return /* @__PURE__ */ jsx18("div", { ...rest, children: /* @__PURE__ */ jsx18(
36172
+ const loadingStrategy = getVideoEmbedLoadingStrategy(embedInfo.provider);
36173
+ const shouldDeferSrc = loadingStrategy === "defer-until-near-viewport";
36174
+ return /* @__PURE__ */ jsx18("div", { ...rest, children: /* @__PURE__ */ jsxs7(
36049
36175
  "div",
36050
36176
  {
36051
36177
  className,
36178
+ "data-rb-video-embed-wrapper": shouldDeferSrc ? "true" : void 0,
36052
36179
  style: {
36053
36180
  ...style,
36054
36181
  aspectRatio: resolvedAspectRatio,
36055
36182
  position: "relative",
36056
36183
  width: "100%"
36057
36184
  },
36058
- children: /* @__PURE__ */ jsx18(
36059
- "iframe",
36060
- {
36061
- src: embedInfo.embedUrl,
36062
- title,
36063
- style: {
36064
- position: "absolute",
36065
- top: 0,
36066
- left: 0,
36067
- width: "100%",
36068
- height: "100%",
36069
- border: "none"
36070
- },
36071
- loading: "lazy",
36072
- allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
36073
- referrerPolicy: "no-referrer-when-downgrade",
36074
- allowFullScreen: true
36075
- }
36076
- )
36185
+ children: [
36186
+ /* @__PURE__ */ jsx18(
36187
+ "iframe",
36188
+ {
36189
+ src: shouldDeferSrc ? void 0 : embedInfo.embedUrl,
36190
+ title,
36191
+ loading: "lazy",
36192
+ "data-rb-video-embed-deferred": shouldDeferSrc ? "true" : void 0,
36193
+ "data-rb-video-embed-src": shouldDeferSrc ? embedInfo.embedUrl : void 0,
36194
+ style: {
36195
+ position: "absolute",
36196
+ top: 0,
36197
+ left: 0,
36198
+ width: "100%",
36199
+ height: "100%",
36200
+ border: "none"
36201
+ },
36202
+ allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
36203
+ referrerPolicy: "no-referrer-when-downgrade",
36204
+ allowFullScreen: true
36205
+ }
36206
+ ),
36207
+ shouldDeferSrc ? /* @__PURE__ */ jsx18("noscript", { children: /* @__PURE__ */ jsx18("a", { href: embedInfo.url, children: "View on Instagram" }) }) : null
36208
+ ]
36077
36209
  }
36078
36210
  ) });
36079
36211
  };
@@ -36088,9 +36220,9 @@ function getVideoTitle(info) {
36088
36220
  const label = kind === "reel" ? "reel" : kind === "tv" ? "video" : "post";
36089
36221
  return `Instagram ${label} ${info.id}`;
36090
36222
  }
36091
- default:
36092
- return "Embedded video";
36093
36223
  }
36224
+ const exhaustive = info.provider;
36225
+ return exhaustive;
36094
36226
  }
36095
36227
  function getAspectRatio(propAspectRatio, style) {
36096
36228
  const styleAspectRatio = style?.aspectRatio;
@@ -36172,7 +36304,7 @@ function getCarouselSlidesToShowCssVars(value) {
36172
36304
  }
36173
36305
 
36174
36306
  // ../blocks/src/system/runtime/nodes/carousel.server.tsx
36175
- import { jsx as jsx20, jsxs as jsxs7 } from "react/jsx-runtime";
36307
+ import { jsx as jsx20, jsxs as jsxs8 } from "react/jsx-runtime";
36176
36308
  var CarouselNodeSSR = ({
36177
36309
  blockId,
36178
36310
  children,
@@ -36191,7 +36323,7 @@ var CarouselNodeSSR = ({
36191
36323
  const resolvedSlides = resolveSlidesToShowMobile(normalizedSlidesToShow);
36192
36324
  const controlsEnabled = arrowVisibility === "never" ? false : normalizeBoolean2(showControls);
36193
36325
  const shouldSnap = transition === "slide";
36194
- return /* @__PURE__ */ jsxs7(
36326
+ return /* @__PURE__ */ jsxs8(
36195
36327
  "div",
36196
36328
  {
36197
36329
  className: clsx_default("carousel-root rb-relative", className),
@@ -36255,7 +36387,7 @@ function normalizeBoolean2(value) {
36255
36387
  }
36256
36388
 
36257
36389
  // ../blocks/src/system/runtime/nodes/accordion.server.tsx
36258
- import { jsx as jsx21, jsxs as jsxs8 } from "react/jsx-runtime";
36390
+ import { jsx as jsx21, jsxs as jsxs9 } from "react/jsx-runtime";
36259
36391
  var ACCORDION_ICONS = {
36260
36392
  Plus,
36261
36393
  Minus,
@@ -36272,7 +36404,7 @@ var AccordionNodeSSR = ({
36272
36404
  defaultValue,
36273
36405
  collapsible
36274
36406
  }) => {
36275
- return /* @__PURE__ */ jsxs8(
36407
+ return /* @__PURE__ */ jsxs9(
36276
36408
  "div",
36277
36409
  {
36278
36410
  className: clsx_default("accordion-root", className),
@@ -36302,16 +36434,16 @@ var AccordionItemNodeSSR = ({
36302
36434
  const iconConfig = ICON_CONFIG[resolvedIconStyle];
36303
36435
  const ClosedIconComponent = ACCORDION_ICONS[iconConfig.closedIcon];
36304
36436
  const OpenIconComponent = iconConfig.openIcon ? ACCORDION_ICONS[iconConfig.openIcon] : null;
36305
- return /* @__PURE__ */ jsxs8(
36437
+ return /* @__PURE__ */ jsxs9(
36306
36438
  "div",
36307
36439
  {
36308
36440
  className: clsx_default("accordion-item", className),
36309
36441
  "data-accordion-value": resolvedValue,
36310
36442
  "data-state": "closed",
36311
36443
  children: [
36312
- /* @__PURE__ */ jsxs8("div", { className: "accordion-trigger", role: "button", tabIndex: 0, "aria-expanded": "false", children: [
36444
+ /* @__PURE__ */ jsxs9("div", { className: "accordion-trigger", role: "button", tabIndex: 0, "aria-expanded": "false", children: [
36313
36445
  /* @__PURE__ */ jsx21("span", { className: "accordion-trigger-text", children: resolveNode(triggerSource) }),
36314
- /* @__PURE__ */ jsxs8("span", { className: "accordion-icon", "aria-hidden": "true", children: [
36446
+ /* @__PURE__ */ jsxs9("span", { className: "accordion-icon", "aria-hidden": "true", children: [
36315
36447
  ClosedIconComponent && /* @__PURE__ */ jsx21(ClosedIconComponent, { className: "accordion-icon-closed" }),
36316
36448
  OpenIconComponent && /* @__PURE__ */ jsx21(OpenIconComponent, { className: "accordion-icon-open" })
36317
36449
  ] })
@@ -36340,7 +36472,7 @@ function resolveNode(value) {
36340
36472
  }
36341
36473
 
36342
36474
  // ../blocks/src/system/runtime/nodes/header-section.server.tsx
36343
- import { jsx as jsx22, jsxs as jsxs9 } from "react/jsx-runtime";
36475
+ import { jsx as jsx22, jsxs as jsxs10 } from "react/jsx-runtime";
36344
36476
  function hasShrinkClasses(className) {
36345
36477
  return typeof className === "string" && className.includes("rb-header-shrink");
36346
36478
  }
@@ -36348,16 +36480,21 @@ var HeaderSectionNode = ({
36348
36480
  blockId,
36349
36481
  children,
36350
36482
  className,
36483
+ "data-preview-site-chrome-surface": previewSiteChromeSurface,
36351
36484
  ...rest
36352
36485
  }) => {
36353
36486
  const { wrapperClasses, sectionClasses } = splitPositioningClasses(className);
36354
- const wrapperClassName = `block-site-header${wrapperClasses ? ` ${wrapperClasses}` : ""}`;
36487
+ const wrapperClassName = [
36488
+ "block-site-header",
36489
+ wrapperClasses,
36490
+ previewSiteChromeSurface ? "group/site-chrome rb-relative" : ""
36491
+ ].filter(Boolean).join(" ");
36355
36492
  const asProp = rest.as;
36356
36493
  const styleProp = rest.style;
36357
36494
  const backgroundProp = typeof rest.background === "string" ? rest.background : void 0;
36358
36495
  const allowOverflowProp = typeof rest.allowOverflow === "boolean" ? rest.allowOverflow : void 0;
36359
36496
  const dataSlotProp = typeof rest["data-slot"] === "string" ? rest["data-slot"] : void 0;
36360
- return /* @__PURE__ */ jsxs9(
36497
+ return /* @__PURE__ */ jsxs10(
36361
36498
  "nav",
36362
36499
  {
36363
36500
  ...getIslandRootProps("headerSection", blockId),
@@ -36367,6 +36504,7 @@ var HeaderSectionNode = ({
36367
36504
  "data-block": "site-header",
36368
36505
  "data-block-kind": "block.site-header",
36369
36506
  "data-block-id": blockId ?? void 0,
36507
+ "data-preview-site-chrome-surface": previewSiteChromeSurface,
36370
36508
  children: [
36371
36509
  /* @__PURE__ */ jsx22(IslandPropsScript, { value: { enabled: hasShrinkClasses(className) } }),
36372
36510
  /* @__PURE__ */ jsx22(
@@ -36388,7 +36526,7 @@ var HeaderSectionNode = ({
36388
36526
  var header_section_server_default = HeaderSectionNode;
36389
36527
 
36390
36528
  // ../blocks/src/system/runtime/nodes/spinner.tsx
36391
- import { jsx as jsx23, jsxs as jsxs10 } from "react/jsx-runtime";
36529
+ import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
36392
36530
  function resolveColorStyle(color) {
36393
36531
  switch (color) {
36394
36532
  case "inherit":
@@ -36415,7 +36553,7 @@ function SpinnerNode({
36415
36553
  const accessibilityProps = srLabel ? { role: "status", "aria-live": "polite" } : hasExplicitAriaLabel ? {} : { "aria-hidden": true };
36416
36554
  const trackStroke = color === "inherit" ? "currentColor" : "var(--rb-spinner-track-color)";
36417
36555
  const trackOpacity = color === "inherit" ? 0.25 : 1;
36418
- return /* @__PURE__ */ jsxs10(
36556
+ return /* @__PURE__ */ jsxs11(
36419
36557
  "span",
36420
36558
  {
36421
36559
  ...accessibilityProps,
@@ -36431,7 +36569,7 @@ function SpinnerNode({
36431
36569
  },
36432
36570
  ...rest,
36433
36571
  children: [
36434
- /* @__PURE__ */ jsxs10("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
36572
+ /* @__PURE__ */ jsxs11("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
36435
36573
  /* @__PURE__ */ jsx23(
36436
36574
  "circle",
36437
36575
  {
@@ -36815,7 +36953,7 @@ function buildBookingFormInteractiveIslandProps(props2) {
36815
36953
  }
36816
36954
 
36817
36955
  // ../blocks/src/system/runtime/nodes/booking-form.server.tsx
36818
- import { Fragment as Fragment2, jsx as jsx24, jsxs as jsxs11 } from "react/jsx-runtime";
36956
+ import { Fragment as Fragment2, jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
36819
36957
  function BookingFormSSR({
36820
36958
  blockId,
36821
36959
  siteId,
@@ -36859,14 +36997,14 @@ function BookingFormSSR({
36859
36997
  className
36860
36998
  });
36861
36999
  const display = islandProps.render.display;
36862
- return /* @__PURE__ */ jsxs11(
37000
+ return /* @__PURE__ */ jsxs12(
36863
37001
  "div",
36864
37002
  {
36865
37003
  className: `booking-form-ssr ${className ?? ""}`.trim(),
36866
37004
  ...getIslandRootProps("booking-form", blockId),
36867
37005
  children: [
36868
37006
  /* @__PURE__ */ jsx24(IslandPropsScript, { value: islandProps }),
36869
- /* @__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: [
37007
+ /* @__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: [
36870
37008
  /* @__PURE__ */ jsx24("strong", { children: display.submitLabel }),
36871
37009
  display.successMessage ? /* @__PURE__ */ jsx24("p", { className: "booking-form-ssr__success", children: display.successMessage }) : null
36872
37010
  ] }) }),
@@ -36976,22 +37114,22 @@ function filterMembershipsForEvent(siteMemberships, event) {
36976
37114
  }
36977
37115
 
36978
37116
  // ../blocks/src/system/runtime/nodes/event-details/CoursePricingDisplay.tsx
36979
- import { jsx as jsx25, jsxs as jsxs12 } from "react/jsx-runtime";
37117
+ import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
36980
37118
  function CoursePricingDisplay({
36981
37119
  pricing,
36982
37120
  acceptedItems
36983
37121
  }) {
36984
- return /* @__PURE__ */ jsxs12("div", { className: "rb-mt-6", children: [
37122
+ return /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
36985
37123
  /* @__PURE__ */ jsx25("div", { className: "rb-label rb-mb-2", children: pricing.selectableOptions.length > 1 ? "Pricing" : "Cost" }),
36986
- 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: [
36987
- /* @__PURE__ */ jsxs12("strong", { children: [
37124
+ 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: [
37125
+ /* @__PURE__ */ jsxs13("strong", { children: [
36988
37126
  option.name,
36989
37127
  ": ",
36990
37128
  formatCoursePriceAmount(option.priceAmount, pricing.currency)
36991
37129
  ] }),
36992
37130
  option.description ? /* @__PURE__ */ jsx25("p", { className: "rb-caption status-muted", children: option.description }) : null
36993
37131
  ] }, option.id)) }) : /* @__PURE__ */ jsx25("p", { children: /* @__PURE__ */ jsx25("strong", { children: formatCoursePriceDisplay(pricing.display) }) }),
36994
- acceptedItems.length > 0 ? /* @__PURE__ */ jsxs12("p", { className: "rb-caption rb-mt-1", children: [
37132
+ acceptedItems.length > 0 ? /* @__PURE__ */ jsxs13("p", { className: "rb-caption rb-mt-1", children: [
36995
37133
  "You can also attend with: ",
36996
37134
  acceptedItems.join(", ")
36997
37135
  ] }) : null
@@ -36999,7 +37137,7 @@ function CoursePricingDisplay({
36999
37137
  }
37000
37138
 
37001
37139
  // ../blocks/src/system/runtime/nodes/event-details/view.tsx
37002
- import { Fragment as Fragment3, jsx as jsx26, jsxs as jsxs13 } from "react/jsx-runtime";
37140
+ import { Fragment as Fragment3, jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
37003
37141
  function formatAutoApplyDiscountLine(preview, currency) {
37004
37142
  const rate = preview.discountType === "percent" ? `${preview.discountPercent}% off` : `${formatCoursePriceAmount(preview.discountAmountCents, currency)} off`;
37005
37143
  const label = preview.publicLabel.trim() || "Discount";
@@ -37050,10 +37188,10 @@ function EventDetailsView({
37050
37188
  acceptedItems.push(...applicableMemberships.map((m) => m.name));
37051
37189
  }
37052
37190
  const hasAcceptedItems = acceptedItems.length > 0;
37053
- return /* @__PURE__ */ jsxs13("div", { className: "rb-flex rb-flex-col rb-gap-6 rb-text-left", children: [
37054
- /* @__PURE__ */ jsxs13("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
37055
- /* @__PURE__ */ jsxs13("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
37056
- /* @__PURE__ */ jsxs13("div", { children: [
37191
+ return /* @__PURE__ */ jsxs14("div", { className: "rb-flex rb-flex-col rb-gap-6 rb-text-left", children: [
37192
+ /* @__PURE__ */ jsxs14("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
37193
+ /* @__PURE__ */ jsxs14("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
37194
+ /* @__PURE__ */ jsxs14("div", { children: [
37057
37195
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: selection.mode === "next" ? "Next date" : "Date" }),
37058
37196
  (() => {
37059
37197
  const { date, timeRange } = formatEventDateParts({
@@ -37061,20 +37199,20 @@ function EventDetailsView({
37061
37199
  endsAt: selected.endsAt,
37062
37200
  timeZone: selection.timeZone
37063
37201
  });
37064
- return /* @__PURE__ */ jsxs13(Fragment3, { children: [
37202
+ return /* @__PURE__ */ jsxs14(Fragment3, { children: [
37065
37203
  /* @__PURE__ */ jsx26("p", { children: /* @__PURE__ */ jsx26("strong", { children: date }) }),
37066
37204
  /* @__PURE__ */ jsx26("p", { className: "rb-caption", children: timeRange })
37067
37205
  ] });
37068
37206
  })()
37069
37207
  ] }),
37070
- venue ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
37208
+ venue ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
37071
37209
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Venue" }),
37072
37210
  /* @__PURE__ */ jsx26("p", { children: /* @__PURE__ */ jsx26("strong", { children: venue.name }) }),
37073
37211
  venue.address ? /* @__PURE__ */ jsx26("p", { className: "rb-caption", children: venue.address }) : null
37074
37212
  ] }) : null,
37075
- teamMembers.length > 0 ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
37213
+ teamMembers.length > 0 ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
37076
37214
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Team members" }),
37077
- /* @__PURE__ */ jsx26("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs13("div", { children: [
37215
+ /* @__PURE__ */ jsx26("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs14("div", { children: [
37078
37216
  /* @__PURE__ */ jsx26("p", { children: /* @__PURE__ */ jsx26(
37079
37217
  TeamMemberName,
37080
37218
  {
@@ -37085,7 +37223,7 @@ function EventDetailsView({
37085
37223
  teamMember.summary ? /* @__PURE__ */ jsx26("p", { className: "rb-caption status-muted", children: teamMember.summary }) : null
37086
37224
  ] }, teamMember.id)) })
37087
37225
  ] }) : null,
37088
- isDropIn ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
37226
+ isDropIn ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
37089
37227
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Registration" }),
37090
37228
  /* @__PURE__ */ jsx26("p", { className: "rb-caption status-muted", children: "No registration required - just show up" })
37091
37229
  ] }) : shouldShowCoursePricing ? /* @__PURE__ */ jsx26(
@@ -37094,22 +37232,22 @@ function EventDetailsView({
37094
37232
  pricing: coursePricing,
37095
37233
  acceptedItems
37096
37234
  }
37097
- ) : shouldShowEventCost ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
37235
+ ) : shouldShowEventCost ? /* @__PURE__ */ jsxs14("div", { className: "rb-mt-6", children: [
37098
37236
  /* @__PURE__ */ jsx26("div", { className: "rb-label rb-mb-2", children: "Cost" }),
37099
37237
  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" }),
37100
37238
  autoApplyDiscount ? /* @__PURE__ */ jsx26("p", { className: "rb-caption rb-mt-1", children: formatAutoApplyDiscountLine(autoApplyDiscount, selected.currency ?? "USD") }) : null,
37101
- hasAcceptedItems ? /* @__PURE__ */ jsxs13("p", { className: "rb-caption rb-mt-1", children: [
37239
+ hasAcceptedItems ? /* @__PURE__ */ jsxs14("p", { className: "rb-caption rb-mt-1", children: [
37102
37240
  "You can also attend with: ",
37103
37241
  acceptedItems.join(", ")
37104
37242
  ] }) : null
37105
- ] }) : hasAcceptedItems ? /* @__PURE__ */ jsx26("div", { className: "rb-mt-6", children: /* @__PURE__ */ jsxs13("p", { className: "rb-caption", children: [
37243
+ ] }) : hasAcceptedItems ? /* @__PURE__ */ jsx26("div", { className: "rb-mt-6", children: /* @__PURE__ */ jsxs14("p", { className: "rb-caption", children: [
37106
37244
  "You can also attend with: ",
37107
37245
  acceptedItems.join(", ")
37108
37246
  ] }) }) : null
37109
37247
  ] }),
37110
37248
  showMap && renderVenueMap && venue?.location ? /* @__PURE__ */ jsx26(Fragment3, { children: renderVenueMap({ venueName: venue.name, location: venue.location, className: mapClassName, height: mapHeight }) }) : null
37111
37249
  ] }),
37112
- showOtherDates && selection.otherDates.length > 0 ? /* @__PURE__ */ jsxs13("div", { children: [
37250
+ showOtherDates && selection.otherDates.length > 0 ? /* @__PURE__ */ jsxs14("div", { children: [
37113
37251
  /* @__PURE__ */ jsx26("div", { className: "rb-label", children: "Other dates" }),
37114
37252
  /* @__PURE__ */ jsx26("div", { className: "rb-mt-2 rb-tiles-grid", children: selection.otherDates.map((e) => /* @__PURE__ */ jsx26(
37115
37253
  "a",
@@ -37132,7 +37270,7 @@ function EventDetailsView({
37132
37270
  }
37133
37271
 
37134
37272
  // ../blocks/src/system/runtime/nodes/event-details.server.tsx
37135
- import { jsx as jsx27, jsxs as jsxs14 } from "react/jsx-runtime";
37273
+ import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
37136
37274
  function EventDetailsSSR({
37137
37275
  blockId,
37138
37276
  occurrenceContext,
@@ -37161,7 +37299,7 @@ function EventDetailsSSR({
37161
37299
  const membershipsArray = siteMemberships?.memberships ?? null;
37162
37300
  const applicablePasses = filterPassesForEvent(passesArray, selection.selected);
37163
37301
  const applicableMemberships = filterMembershipsForEvent(membershipsArray, selection.selected);
37164
- return /* @__PURE__ */ jsxs14(
37302
+ return /* @__PURE__ */ jsxs15(
37165
37303
  "div",
37166
37304
  {
37167
37305
  className: `event-details ${className ?? ""}`.trim(),
@@ -37227,7 +37365,7 @@ function EventDetailsSSR({
37227
37365
  var event_details_server_default = EventDetailsSSR;
37228
37366
 
37229
37367
  // ../blocks/src/system/runtime/nodes/location-map.view.tsx
37230
- import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
37368
+ import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
37231
37369
  function LocationMapView({
37232
37370
  addressText,
37233
37371
  location: location2,
@@ -37243,7 +37381,7 @@ function LocationMapView({
37243
37381
  if (!location2 && !addressText && !directionsUrl) {
37244
37382
  return /* @__PURE__ */ jsx28("p", { className: "rb-caption", style: textColorStyle("mutedText"), children: unresolvedMessage ?? "Location details coming soon." });
37245
37383
  }
37246
- return /* @__PURE__ */ jsxs15("div", { className: "rb-flex rb-flex-col rb-gap-4 rb-text-left", children: [
37384
+ return /* @__PURE__ */ jsxs16("div", { className: "rb-flex rb-flex-col rb-gap-4 rb-text-left", children: [
37247
37385
  location2 && renderMap ? renderMap({
37248
37386
  addressText,
37249
37387
  location: location2,
@@ -37271,11 +37409,11 @@ function LocationMapView({
37271
37409
  }
37272
37410
 
37273
37411
  // ../blocks/src/system/runtime/nodes/location-map.server.tsx
37274
- import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
37412
+ import { jsx as jsx29, jsxs as jsxs17 } from "react/jsx-runtime";
37275
37413
  function LocationMapSSR(props2) {
37276
37414
  const normalized = normalizeLocationMapProps(props2);
37277
37415
  const hydrationProps = toLocationMapHydrationProps(props2);
37278
- return /* @__PURE__ */ jsxs16(
37416
+ return /* @__PURE__ */ jsxs17(
37279
37417
  "div",
37280
37418
  {
37281
37419
  className: `location-map ${normalized.className ?? ""}`.trim(),
@@ -37430,7 +37568,7 @@ function formatCourseDateRange(range) {
37430
37568
  }
37431
37569
 
37432
37570
  // ../blocks/src/system/runtime/nodes/course-details/view.tsx
37433
- import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
37571
+ import { jsx as jsx30, jsxs as jsxs18 } from "react/jsx-runtime";
37434
37572
  function TeamMemberName2({
37435
37573
  name,
37436
37574
  profilePath
@@ -37465,14 +37603,14 @@ function CourseDetailsView(props2) {
37465
37603
  const hasMoreSessions = sessionLimit !== "all" && sortedSessions.length > sessionLimit;
37466
37604
  const descriptionDoc = showDescription ? coerceRichTextDoc(course.description) : null;
37467
37605
  const teamMembers = course.teamMembers ?? [];
37468
- return /* @__PURE__ */ jsxs17("div", { className: "rb-flex rb-flex-col rb-gap-6", children: [
37606
+ return /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-6", children: [
37469
37607
  showTitle && /* @__PURE__ */ jsx30("h3", { children: course.title }),
37470
- /* @__PURE__ */ jsxs17("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
37471
- /* @__PURE__ */ jsxs17("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
37472
- showPrice && /* @__PURE__ */ jsxs17("div", { children: [
37608
+ /* @__PURE__ */ jsxs18("div", { className: "rb-grid rb-grid-cols-1 rb-gap-6 rb-items-start rb-sm-grid-cols-2", children: [
37609
+ /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
37610
+ showPrice && /* @__PURE__ */ jsxs18("div", { children: [
37473
37611
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: pricing.selectableOptions.length > 0 ? "Pricing" : "Price" }),
37474
- 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: [
37475
- /* @__PURE__ */ jsxs17("strong", { children: [
37612
+ 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: [
37613
+ /* @__PURE__ */ jsxs18("strong", { children: [
37476
37614
  option.name,
37477
37615
  ": ",
37478
37616
  formatCoursePriceAmount(
@@ -37483,17 +37621,17 @@ function CourseDetailsView(props2) {
37483
37621
  option.description ? /* @__PURE__ */ jsx30("p", { className: "rb-caption status-muted", children: option.description }) : null
37484
37622
  ] }, option.id)) }) : /* @__PURE__ */ jsx30("div", { children: /* @__PURE__ */ jsx30("strong", { children: formatCoursePriceDisplay(pricing.display) }) })
37485
37623
  ] }),
37486
- showCapacity && /* @__PURE__ */ jsxs17("div", { children: [
37624
+ showCapacity && /* @__PURE__ */ jsxs18("div", { children: [
37487
37625
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Spots" }),
37488
37626
  /* @__PURE__ */ jsx30("div", { children: /* @__PURE__ */ jsx30("strong", { children: course.enrollmentCapacity === null ? "Unlimited" : `${course.availableSpots ?? Math.max(0, course.enrollmentCapacity - course.enrolledCount)} left` }) })
37489
37627
  ] }),
37490
- showMembershipNote && course.acceptsMemberships && /* @__PURE__ */ jsxs17("div", { children: [
37628
+ showMembershipNote && course.acceptsMemberships && /* @__PURE__ */ jsxs18("div", { children: [
37491
37629
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Membership" }),
37492
37630
  /* @__PURE__ */ jsx30("p", { className: "rb-caption status-muted", children: "Eligible memberships can be used for free enrollment" })
37493
37631
  ] }),
37494
- teamMembers.length > 0 && /* @__PURE__ */ jsxs17("div", { children: [
37632
+ teamMembers.length > 0 && /* @__PURE__ */ jsxs18("div", { children: [
37495
37633
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Team members" }),
37496
- /* @__PURE__ */ jsx30("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs17("div", { children: [
37634
+ /* @__PURE__ */ jsx30("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs18("div", { children: [
37497
37635
  /* @__PURE__ */ jsx30("p", { children: /* @__PURE__ */ jsx30(
37498
37636
  TeamMemberName2,
37499
37637
  {
@@ -37505,23 +37643,23 @@ function CourseDetailsView(props2) {
37505
37643
  ] }, teamMember.id)) })
37506
37644
  ] })
37507
37645
  ] }),
37508
- /* @__PURE__ */ jsxs17("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
37509
- showVenue && course.venue && /* @__PURE__ */ jsxs17("div", { children: [
37646
+ /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
37647
+ showVenue && course.venue && /* @__PURE__ */ jsxs18("div", { children: [
37510
37648
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Venue" }),
37511
37649
  /* @__PURE__ */ jsx30("h3", { children: course.venue.name }),
37512
37650
  course.venue.address && /* @__PURE__ */ jsx30("p", { className: "rb-caption status-muted", children: course.venue.address })
37513
37651
  ] }),
37514
- showEnrollmentStatus && /* @__PURE__ */ jsxs17("div", { children: [
37652
+ showEnrollmentStatus && /* @__PURE__ */ jsxs18("div", { children: [
37515
37653
  /* @__PURE__ */ jsx30("div", { className: "rb-label rb-mb-2", children: "Enrollment" }),
37516
37654
  /* @__PURE__ */ jsx30("p", { className: course.enrollmentOpen ? "cd-enrollment--open" : "cd-enrollment--closed", children: /* @__PURE__ */ jsx30("strong", { children: course.enrollmentOpen ? "Open" : "Closed" }) })
37517
37655
  ] })
37518
37656
  ] })
37519
37657
  ] }),
37520
37658
  descriptionDoc && /* @__PURE__ */ jsx30("div", { className: "cd-description", children: /* @__PURE__ */ jsx30(RichText, { doc: descriptionDoc }) }),
37521
- showSessions && visibleSessions.length > 0 && /* @__PURE__ */ jsxs17("div", { children: [
37659
+ showSessions && visibleSessions.length > 0 && /* @__PURE__ */ jsxs18("div", { children: [
37522
37660
  /* @__PURE__ */ jsx30("div", { className: "rb-label", children: "Sessions" }),
37523
37661
  /* @__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)) }),
37524
- hasMoreSessions && /* @__PURE__ */ jsxs17("p", { className: "cd-sessions__more", children: [
37662
+ hasMoreSessions && /* @__PURE__ */ jsxs18("p", { className: "cd-sessions__more", children: [
37525
37663
  "Showing ",
37526
37664
  visibleSessions.length,
37527
37665
  " of ",
@@ -37533,7 +37671,7 @@ function CourseDetailsView(props2) {
37533
37671
  }
37534
37672
 
37535
37673
  // ../blocks/src/system/runtime/nodes/course-details.server.tsx
37536
- import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
37674
+ import { jsx as jsx31, jsxs as jsxs19 } from "react/jsx-runtime";
37537
37675
  function CourseDetailsSSR({
37538
37676
  courses,
37539
37677
  contentEntry,
@@ -37571,7 +37709,7 @@ function CourseDetailsSSR({
37571
37709
  const pastRuns = scopedWithRange.filter(({ range }) => Boolean(range.end && range.end <= now)).sort((a, b) => (b.range.end?.getTime() ?? 0) - (a.range.end?.getTime() ?? 0));
37572
37710
  const lastPastRun = pastRuns[0] ?? null;
37573
37711
  const nonPastRuns = scopedSorted.filter(({ range }) => !(range.end && range.end <= now));
37574
- return /* @__PURE__ */ jsxs18("div", { className: `course-details ${className ?? ""}`.trim(), "data-block": "course-details", children: [
37712
+ return /* @__PURE__ */ jsxs19("div", { className: `course-details ${className ?? ""}`.trim(), "data-block": "course-details", children: [
37575
37713
  selection.selected ? /* @__PURE__ */ jsx31(
37576
37714
  CourseDetailsView,
37577
37715
  {
@@ -37586,8 +37724,8 @@ function CourseDetailsSSR({
37586
37724
  showEnrollmentStatus,
37587
37725
  showMembershipNote
37588
37726
  }
37589
- ) : selection.scoped.length > 0 ? /* @__PURE__ */ jsxs18("div", { className: "rb-flex rb-flex-col rb-gap-3", children: [
37590
- /* @__PURE__ */ jsxs18("div", { children: [
37727
+ ) : selection.scoped.length > 0 ? /* @__PURE__ */ jsxs19("div", { className: "rb-flex rb-flex-col rb-gap-3", children: [
37728
+ /* @__PURE__ */ jsxs19("div", { children: [
37591
37729
  /* @__PURE__ */ jsx31("div", { className: "rb-label rb-mb-2", children: "Upcoming runs" }),
37592
37730
  /* @__PURE__ */ jsx31("p", { className: "rb-caption status-muted", children: "Choose a run to see sessions and details." })
37593
37731
  ] }),
@@ -37596,15 +37734,15 @@ function CourseDetailsSSR({
37596
37734
  const end = range.end;
37597
37735
  const isInProgress = Boolean(start && end && start <= now && end > now);
37598
37736
  const href = basePath ? `${basePath.replace(/\/$/, "")}/${course.slug}` : null;
37599
- 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: [
37600
- /* @__PURE__ */ jsxs18("div", { className: "rb-min-w-0", children: [
37737
+ 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: [
37738
+ /* @__PURE__ */ jsxs19("div", { className: "rb-min-w-0", children: [
37601
37739
  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 }) }),
37602
37740
  /* @__PURE__ */ jsx31("div", { className: "rb-caption status-muted", children: formatCourseDateRange(range) })
37603
37741
  ] }),
37604
37742
  /* @__PURE__ */ jsx31("div", { className: "rb-caption status-muted rb-shrink-0", children: course.enrollmentOpen ? "Enrollment open" : isInProgress ? "Currently in progress" : "Enrollment closed" })
37605
37743
  ] }) }) }, course.id);
37606
37744
  }) }) : /* @__PURE__ */ jsx31("p", { className: "rb-caption status-muted", children: "No upcoming runs." }),
37607
- lastPastRun ? /* @__PURE__ */ jsxs18("div", { className: "rb-caption status-muted", children: [
37745
+ lastPastRun ? /* @__PURE__ */ jsxs19("div", { className: "rb-caption status-muted", children: [
37608
37746
  "Last run: ",
37609
37747
  /* @__PURE__ */ jsx31("strong", { children: lastPastRun.course.title }),
37610
37748
  " (",
@@ -37632,14 +37770,14 @@ function CourseDetailsSSR({
37632
37770
  var course_details_server_default = CourseDetailsSSR;
37633
37771
 
37634
37772
  // ../blocks/src/system/runtime/nodes/events/EventSpotlight.tsx
37635
- import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
37773
+ import { jsx as jsx32, jsxs as jsxs20 } from "react/jsx-runtime";
37636
37774
  var EventSpotlight = ({
37637
37775
  events,
37638
37776
  layout = "grid",
37639
37777
  columns = "3",
37640
37778
  cardVariant = "default",
37641
37779
  buttonVariant = "primary",
37642
- buttonText = "View event",
37780
+ buttonText = "Book now",
37643
37781
  ctaLabel,
37644
37782
  ctaUrl,
37645
37783
  showVenue = true,
@@ -37655,7 +37793,7 @@ var EventSpotlight = ({
37655
37793
  const containerClass = getContainerClass(layout, columns);
37656
37794
  const cardOrientation = getCardOrientation(layout);
37657
37795
  const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
37658
- return /* @__PURE__ */ jsxs19("div", { className: `event-spotlight-section ${className || ""}`, "data-block": "event-spotlight", children: [
37796
+ return /* @__PURE__ */ jsxs20("div", { className: `event-spotlight-section ${className || ""}`, "data-block": "event-spotlight", children: [
37659
37797
  /* @__PURE__ */ jsx32("div", { className: `event-spotlight ${containerClass}`, children: normalizedEvents.map((event) => /* @__PURE__ */ jsx32(
37660
37798
  EventCard,
37661
37799
  {
@@ -37793,7 +37931,7 @@ function buildEventCombinedDisplay(source) {
37793
37931
  showMap: source.showMap ?? true,
37794
37932
  showCapacity: source.showCapacity ?? true,
37795
37933
  buttonVariant: source.buttonVariant ?? "primary",
37796
- buttonText: source.buttonText ?? "View event",
37934
+ buttonText: source.buttonText ?? "Book now",
37797
37935
  emptyMessage: source.emptyMessage ?? "No upcoming events scheduled."
37798
37936
  };
37799
37937
  }
@@ -37894,7 +38032,7 @@ function renderEventListItem(event, display) {
37894
38032
  }
37895
38033
 
37896
38034
  // ../blocks/src/system/runtime/nodes/events/EventCombined.server.tsx
37897
- import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
38035
+ import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
37898
38036
  var EventCombinedSSR = ({
37899
38037
  blockId,
37900
38038
  ...source
@@ -37903,7 +38041,7 @@ var EventCombinedSSR = ({
37903
38041
  const listDisplay = buildEventCombinedListingDisplay(render);
37904
38042
  const islandProps = buildEventCombinedInteractiveIslandProps(source);
37905
38043
  const ssrEmptyMessage = render.hydration.prefetchedEvents ? render.display.emptyMessage : listDisplay.loadingMessage;
37906
- return /* @__PURE__ */ jsxs20(
38044
+ return /* @__PURE__ */ jsxs21(
37907
38045
  "div",
37908
38046
  {
37909
38047
  className: `event-combined ${render.display.className || ""}`,
@@ -37911,7 +38049,7 @@ var EventCombinedSSR = ({
37911
38049
  ...getIslandRootProps("event-combined", blockId),
37912
38050
  children: [
37913
38051
  /* @__PURE__ */ jsx34(IslandPropsScript, { value: islandProps }),
37914
- /* @__PURE__ */ jsxs20("div", { className: "nav-tabs", role: "tablist", children: [
38052
+ /* @__PURE__ */ jsxs21("div", { className: "nav-tabs", role: "tablist", children: [
37915
38053
  /* @__PURE__ */ jsx34(
37916
38054
  "button",
37917
38055
  {
@@ -37940,7 +38078,7 @@ var EventCombinedSSR = ({
37940
38078
  };
37941
38079
 
37942
38080
  // ../blocks/src/system/runtime/nodes/commerce/shared/view.tsx
37943
- import { Fragment as Fragment4, jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
38081
+ import { Fragment as Fragment4, jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
37944
38082
  function ProductBadgesView({ badges }) {
37945
38083
  if (badges.length === 0) return null;
37946
38084
  return /* @__PURE__ */ jsx35("div", { className: "rb-flex rb-flex-wrap rb-gap-2", children: badges.map((badge) => /* @__PURE__ */ jsx35(
@@ -37955,7 +38093,7 @@ function ProductBadgesView({ badges }) {
37955
38093
  function VariantSelectView(props2) {
37956
38094
  const { options, selectedVariantId, disabled = false, onChange } = props2;
37957
38095
  if (options.length === 0) return null;
37958
- return /* @__PURE__ */ jsxs21("label", { className: "rb-flex rb-flex-col rb-gap-1", children: [
38096
+ return /* @__PURE__ */ jsxs22("label", { className: "rb-flex rb-flex-col rb-gap-1", children: [
37959
38097
  /* @__PURE__ */ jsx35("span", { className: "rb-label", children: "Variant" }),
37960
38098
  /* @__PURE__ */ jsx35(
37961
38099
  "select",
@@ -37964,7 +38102,7 @@ function VariantSelectView(props2) {
37964
38102
  value: selectedVariantId ?? "",
37965
38103
  disabled,
37966
38104
  onChange: onChange ? (event) => onChange(event.target.value || null) : void 0,
37967
- children: options.map((variant) => /* @__PURE__ */ jsxs21("option", { value: variant.id, children: [
38105
+ children: options.map((variant) => /* @__PURE__ */ jsxs22("option", { value: variant.id, children: [
37968
38106
  variant.label,
37969
38107
  " ",
37970
38108
  variant.soldOut ? "(Sold out)" : ""
@@ -37975,12 +38113,12 @@ function VariantSelectView(props2) {
37975
38113
  }
37976
38114
  function ProductCardView(props2) {
37977
38115
  const { display, layout, variantControl, actions, feedback } = props2;
37978
- 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: [
38116
+ 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: [
37979
38117
  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,
37980
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-1 rb-flex-col rb-gap-3", children: [
37981
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
37982
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-items-start rb-justify-between rb-gap-3", children: [
37983
- /* @__PURE__ */ jsxs21("div", { children: [
38118
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-1 rb-flex-col rb-gap-3", children: [
38119
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
38120
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-items-start rb-justify-between rb-gap-3", children: [
38121
+ /* @__PURE__ */ jsxs22("div", { children: [
37984
38122
  display.path ? /* @__PURE__ */ jsx35("a", { href: display.path, children: /* @__PURE__ */ jsx35("h3", { children: display.title }) }) : /* @__PURE__ */ jsx35("h3", { children: display.title }),
37985
38123
  display.summary ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.summary }) : null
37986
38124
  ] }),
@@ -37997,7 +38135,7 @@ function ProductCardView(props2) {
37997
38135
  }
37998
38136
  function ProductListSectionView(props2) {
37999
38137
  const { display, children } = props2;
38000
- return /* @__PURE__ */ jsxs21("div", { className: `shop shop--product-list ${display.className ?? ""}`.trim(), "data-block": "shop", children: [
38138
+ return /* @__PURE__ */ jsxs22("div", { className: `shop shop--product-list ${display.className ?? ""}`.trim(), "data-block": "shop", children: [
38001
38139
  display.heading ? /* @__PURE__ */ jsx35("h2", { children: display.heading }) : null,
38002
38140
  display.state === "empty" ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.emptyMessage }) : /* @__PURE__ */ jsx35(
38003
38141
  "div",
@@ -38014,18 +38152,18 @@ function ProductDetailView(props2) {
38014
38152
  if (display.state === "empty") {
38015
38153
  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 }) });
38016
38154
  }
38017
- 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: [
38155
+ 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: [
38018
38156
  /* @__PURE__ */ jsx35("div", { className: "rb-flex rb-flex-col rb-gap-4", children: gallery }),
38019
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
38157
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
38020
38158
  display.heading ? /* @__PURE__ */ jsx35("p", { className: "rb-label", children: display.heading }) : null,
38021
- /* @__PURE__ */ jsxs21("div", { children: [
38159
+ /* @__PURE__ */ jsxs22("div", { children: [
38022
38160
  /* @__PURE__ */ jsx35("h2", { children: display.title }),
38023
38161
  /* @__PURE__ */ jsx35("div", { className: "rb-mt-2", children: /* @__PURE__ */ jsx35("strong", { children: display.priceLabel }) })
38024
38162
  ] }),
38025
38163
  /* @__PURE__ */ jsx35(ProductBadgesView, { badges: display.badges }),
38026
38164
  display.summary ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.summary }) : null,
38027
38165
  variantControl,
38028
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-items-center rb-gap-3", children: [
38166
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-items-center rb-gap-3", children: [
38029
38167
  actions,
38030
38168
  display.categoryLabel ? /* @__PURE__ */ jsx35("span", { className: "rb-caption status-muted", children: display.categoryLabel }) : null
38031
38169
  ] }),
@@ -38051,15 +38189,15 @@ function ProductGalleryFrameView(props2) {
38051
38189
  return /* @__PURE__ */ jsx35(Fragment4, { children: renderCarousel(slides) });
38052
38190
  }
38053
38191
  function PassCardView(props2) {
38054
- return /* @__PURE__ */ jsxs21("article", { className: "shop__card shop__card--pass", children: [
38055
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-header", children: [
38192
+ return /* @__PURE__ */ jsxs22("article", { className: "shop__card shop__card--pass", children: [
38193
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-header", children: [
38056
38194
  /* @__PURE__ */ jsx35("h4", { className: "shop__card-name", children: props2.display.title }),
38057
38195
  /* @__PURE__ */ jsx35("div", { className: "shop__card-price", children: props2.display.priceLabel })
38058
38196
  ] }),
38059
38197
  props2.display.description ? /* @__PURE__ */ jsx35("p", { className: "shop__card-description", children: props2.display.description }) : null,
38060
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-details", children: [
38198
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-details", children: [
38061
38199
  /* @__PURE__ */ jsx35("span", { className: "shop__card-credits", children: props2.display.creditsLabel }),
38062
- props2.display.perCreditLabel ? /* @__PURE__ */ jsxs21("span", { className: "shop__card-per-credit", children: [
38200
+ props2.display.perCreditLabel ? /* @__PURE__ */ jsxs22("span", { className: "shop__card-per-credit", children: [
38063
38201
  "(",
38064
38202
  props2.display.perCreditLabel,
38065
38203
  ")"
@@ -38071,10 +38209,10 @@ function PassCardView(props2) {
38071
38209
  ] });
38072
38210
  }
38073
38211
  function MembershipCardView(props2) {
38074
- return /* @__PURE__ */ jsxs21("article", { className: "shop__card shop__card--membership", children: [
38075
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-header", children: [
38212
+ return /* @__PURE__ */ jsxs22("article", { className: "shop__card shop__card--membership", children: [
38213
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-header", children: [
38076
38214
  /* @__PURE__ */ jsx35("h4", { className: "shop__card-name", children: props2.display.title }),
38077
- /* @__PURE__ */ jsxs21("div", { className: "shop__card-price", children: [
38215
+ /* @__PURE__ */ jsxs22("div", { className: "shop__card-price", children: [
38078
38216
  props2.display.priceLabel,
38079
38217
  /* @__PURE__ */ jsx35("span", { className: "shop__card-interval", children: props2.display.intervalLabel })
38080
38218
  ] })
@@ -38088,7 +38226,7 @@ function PassesMembershipsSectionView(props2) {
38088
38226
  const { display, beforeContent, passCards, membershipCards } = props2;
38089
38227
  const productsClass = `shop__products shop__products--${display.layout}`;
38090
38228
  const gridStyle = display.state === "ready" ? { "--shop-columns": display.columns } : void 0;
38091
- return /* @__PURE__ */ jsxs21(
38229
+ return /* @__PURE__ */ jsxs22(
38092
38230
  "div",
38093
38231
  {
38094
38232
  className: `shop ${display.state === "ready" ? `shop--${display.layout}` : "shop--empty"} ${display.className ?? ""}`.trim(),
@@ -38098,11 +38236,11 @@ function PassesMembershipsSectionView(props2) {
38098
38236
  children: [
38099
38237
  beforeContent,
38100
38238
  display.state === "empty" ? /* @__PURE__ */ jsx35("p", { className: "shop__empty-text", children: display.emptyMessage }) : null,
38101
- display.passes.length > 0 ? /* @__PURE__ */ jsxs21("section", { className: "shop__section shop__section--passes", children: [
38239
+ display.passes.length > 0 ? /* @__PURE__ */ jsxs22("section", { className: "shop__section shop__section--passes", children: [
38102
38240
  /* @__PURE__ */ jsx35("h3", { className: "shop__section-heading", children: display.passesHeading }),
38103
38241
  /* @__PURE__ */ jsx35("div", { className: productsClass, children: passCards })
38104
38242
  ] }) : null,
38105
- display.memberships.length > 0 ? /* @__PURE__ */ jsxs21("section", { className: "shop__section shop__section--memberships", children: [
38243
+ display.memberships.length > 0 ? /* @__PURE__ */ jsxs22("section", { className: "shop__section shop__section--memberships", children: [
38106
38244
  /* @__PURE__ */ jsx35("h3", { className: "shop__section-heading", children: display.membershipsHeading }),
38107
38245
  /* @__PURE__ */ jsx35("div", { className: productsClass, children: membershipCards })
38108
38246
  ] }) : null
@@ -38112,21 +38250,21 @@ function PassesMembershipsSectionView(props2) {
38112
38250
  }
38113
38251
  function CartShellView(props2) {
38114
38252
  const { display, renderControls, footerActions } = props2;
38115
- return /* @__PURE__ */ jsxs21("div", { className: `shop shop--cart ${display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-cart", children: [
38253
+ return /* @__PURE__ */ jsxs22("div", { className: `shop shop--cart ${display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-cart", children: [
38116
38254
  display.heading ? /* @__PURE__ */ jsx35("h2", { children: display.heading }) : null,
38117
- display.state === "empty" ? /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
38255
+ display.state === "empty" ? /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-2", children: [
38118
38256
  /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.emptyMessage }),
38119
38257
  display.supportText ? /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: display.supportText }) : null
38120
- ] }) : /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
38121
- /* @__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: [
38122
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-flex-col rb-gap-1", children: [
38258
+ ] }) : /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-4", children: [
38259
+ /* @__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: [
38260
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-flex-col rb-gap-1", children: [
38123
38261
  /* @__PURE__ */ jsx35("strong", { children: item.title }),
38124
38262
  /* @__PURE__ */ jsx35("span", { className: "rb-caption status-muted", children: item.priceLabel })
38125
38263
  ] }),
38126
38264
  /* @__PURE__ */ jsx35("div", { className: "rb-flex rb-items-center rb-gap-2", children: renderControls ? renderControls(item) : null })
38127
38265
  ] }, item.key)) }),
38128
- /* @__PURE__ */ jsxs21("div", { className: "rb-flex rb-items-center rb-justify-between rb-gap-4", children: [
38129
- /* @__PURE__ */ jsxs21("div", { children: [
38266
+ /* @__PURE__ */ jsxs22("div", { className: "rb-flex rb-items-center rb-justify-between rb-gap-4", children: [
38267
+ /* @__PURE__ */ jsxs22("div", { children: [
38130
38268
  /* @__PURE__ */ jsx35("strong", { children: "Subtotal" }),
38131
38269
  /* @__PURE__ */ jsx35("div", { children: display.subtotalLabel })
38132
38270
  ] }),
@@ -38136,7 +38274,7 @@ function CartShellView(props2) {
38136
38274
  ] });
38137
38275
  }
38138
38276
  function CheckoutShellView(props2) {
38139
- return /* @__PURE__ */ jsxs21("div", { className: `shop shop--checkout ${props2.display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-checkout", children: [
38277
+ return /* @__PURE__ */ jsxs22("div", { className: `shop shop--checkout ${props2.display.className ?? ""}`.trim(), "data-block": "shop", id: "shop-checkout", children: [
38140
38278
  props2.display.heading ? /* @__PURE__ */ jsx35("h2", { children: props2.display.heading }) : null,
38141
38279
  props2.notice,
38142
38280
  props2.display.state === "ready" ? props2.body : /* @__PURE__ */ jsx35("p", { className: "rb-caption status-muted", children: props2.display.message })
@@ -38144,9 +38282,9 @@ function CheckoutShellView(props2) {
38144
38282
  }
38145
38283
 
38146
38284
  // ../blocks/src/system/runtime/nodes/shop-commerce.server.tsx
38147
- import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
38285
+ import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
38148
38286
  function renderServerPendingAction(label, soldOut) {
38149
- return /* @__PURE__ */ jsxs22(Fragment5, { children: [
38287
+ return /* @__PURE__ */ jsxs23(Fragment5, { children: [
38150
38288
  /* @__PURE__ */ jsx36(
38151
38289
  "button",
38152
38290
  {
@@ -38174,7 +38312,7 @@ function ProductListServerContent(props2) {
38174
38312
  disabled: true
38175
38313
  }
38176
38314
  ),
38177
- actions: /* @__PURE__ */ jsxs22(Fragment5, { children: [
38315
+ actions: /* @__PURE__ */ jsxs23(Fragment5, { children: [
38178
38316
  renderServerPendingAction(card.actionLabel, card.soldOut),
38179
38317
  card.path ? /* @__PURE__ */ jsx36(
38180
38318
  "a",
@@ -38225,7 +38363,7 @@ function CheckoutServerContent(props2) {
38225
38363
  }
38226
38364
 
38227
38365
  // ../blocks/src/system/runtime/nodes/cart.server.tsx
38228
- import { jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
38366
+ import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
38229
38367
  function CartSSR({
38230
38368
  blockId,
38231
38369
  siteId,
@@ -38240,7 +38378,7 @@ function CartSSR({
38240
38378
  stage,
38241
38379
  ...rest
38242
38380
  });
38243
- return /* @__PURE__ */ jsxs23(
38381
+ return /* @__PURE__ */ jsxs24(
38244
38382
  "div",
38245
38383
  {
38246
38384
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -38260,7 +38398,7 @@ function CartSSR({
38260
38398
  var cart_server_default = CartSSR;
38261
38399
 
38262
38400
  // ../blocks/src/system/runtime/nodes/checkout.server.tsx
38263
- import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
38401
+ import { jsx as jsx38, jsxs as jsxs25 } from "react/jsx-runtime";
38264
38402
  function CheckoutSSR({
38265
38403
  blockId,
38266
38404
  siteId,
@@ -38275,7 +38413,7 @@ function CheckoutSSR({
38275
38413
  stage,
38276
38414
  ...rest
38277
38415
  });
38278
- return /* @__PURE__ */ jsxs24(
38416
+ return /* @__PURE__ */ jsxs25(
38279
38417
  "div",
38280
38418
  {
38281
38419
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -38295,7 +38433,7 @@ function CheckoutSSR({
38295
38433
  var checkout_server_default = CheckoutSSR;
38296
38434
 
38297
38435
  // ../blocks/src/system/runtime/nodes/course-registration.server.tsx
38298
- import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
38436
+ import { jsx as jsx39, jsxs as jsxs26 } from "react/jsx-runtime";
38299
38437
  function CourseRegistrationSSR({
38300
38438
  blockId,
38301
38439
  siteId,
@@ -38336,7 +38474,7 @@ function CourseRegistrationSSR({
38336
38474
  buttonVariant,
38337
38475
  stage
38338
38476
  });
38339
- return /* @__PURE__ */ jsxs25(
38477
+ return /* @__PURE__ */ jsxs26(
38340
38478
  "div",
38341
38479
  {
38342
38480
  className: `course-registration ${className ?? ""}`.trim(),
@@ -38353,14 +38491,14 @@ function CourseRegistrationSSR({
38353
38491
  var course_registration_server_default = CourseRegistrationSSR;
38354
38492
 
38355
38493
  // ../blocks/src/system/runtime/nodes/gifting.server.tsx
38356
- import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
38494
+ import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
38357
38495
  function GiftingSSR({ blockId, ...rest }) {
38358
38496
  const islandProps = buildGiftingInteractiveIslandProps(rest);
38359
38497
  const offers = islandProps.render.hydration.offers;
38360
38498
  const hasOffers = Boolean(
38361
38499
  (offers?.giftCards.length ?? 0) > 0 || (offers?.vouchers.length ?? 0) > 0
38362
38500
  );
38363
- return /* @__PURE__ */ jsxs26(
38501
+ return /* @__PURE__ */ jsxs27(
38364
38502
  "section",
38365
38503
  {
38366
38504
  className: rest.className ?? void 0,
@@ -38371,7 +38509,7 @@ function GiftingSSR({ blockId, ...rest }) {
38371
38509
  ...getIslandRootProps("gifting", blockId),
38372
38510
  children: [
38373
38511
  /* @__PURE__ */ jsx40(IslandPropsScript, { value: islandProps }),
38374
- /* @__PURE__ */ jsxs26(
38512
+ /* @__PURE__ */ jsxs27(
38375
38513
  "div",
38376
38514
  {
38377
38515
  className: "rb-grid",
@@ -38379,14 +38517,14 @@ function GiftingSSR({ blockId, ...rest }) {
38379
38517
  gap: "1.5rem"
38380
38518
  },
38381
38519
  children: [
38382
- /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "0.5rem" }, children: [
38520
+ /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "0.5rem" }, children: [
38383
38521
  /* @__PURE__ */ jsx40("h2", { style: { fontSize: "clamp(1.75rem, 3vw, 2.5rem)", fontWeight: 700, margin: 0 }, children: islandProps.render.display.heading }),
38384
38522
  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
38385
38523
  ] }),
38386
- hasOffers ? /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "1.5rem" }, children: [
38387
- (offers?.giftCards.length ?? 0) > 0 ? /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
38524
+ hasOffers ? /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "1.5rem" }, children: [
38525
+ (offers?.giftCards.length ?? 0) > 0 ? /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
38388
38526
  /* @__PURE__ */ jsx40("h3", { style: { margin: 0, fontSize: "1.25rem", fontWeight: 700 }, children: islandProps.render.display.giftCardsHeading }),
38389
- /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.giftCards.map((offer) => /* @__PURE__ */ jsxs26(
38527
+ /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.giftCards.map((offer) => /* @__PURE__ */ jsxs27(
38390
38528
  "article",
38391
38529
  {
38392
38530
  style: {
@@ -38403,9 +38541,9 @@ function GiftingSSR({ blockId, ...rest }) {
38403
38541
  offer.id
38404
38542
  )) })
38405
38543
  ] }) : null,
38406
- (offers?.vouchers.length ?? 0) > 0 ? /* @__PURE__ */ jsxs26("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
38544
+ (offers?.vouchers.length ?? 0) > 0 ? /* @__PURE__ */ jsxs27("div", { className: "rb-grid", style: { gap: "1rem" }, children: [
38407
38545
  /* @__PURE__ */ jsx40("h3", { style: { margin: 0, fontSize: "1.25rem", fontWeight: 700 }, children: islandProps.render.display.vouchersHeading }),
38408
- /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.vouchers.map((offer) => /* @__PURE__ */ jsxs26(
38546
+ /* @__PURE__ */ jsx40("div", { className: "rb-grid", style: { gap: "1rem" }, children: offers?.vouchers.map((offer) => /* @__PURE__ */ jsxs27(
38409
38547
  "article",
38410
38548
  {
38411
38549
  style: {
@@ -38433,10 +38571,10 @@ function GiftingSSR({ blockId, ...rest }) {
38433
38571
  var gifting_server_default = GiftingSSR;
38434
38572
 
38435
38573
  // ../blocks/src/system/runtime/nodes/events/EventListing.view.tsx
38436
- import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
38574
+ import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
38437
38575
  function EventListingFrameView(props2) {
38438
38576
  const { display, filters, emptyState: emptyState4, footer, renderEventCard: renderEventCard2 } = props2;
38439
- return /* @__PURE__ */ jsxs27("div", { className: `event-listing ${display.className ?? ""}`, "data-block": "event-listing", children: [
38577
+ return /* @__PURE__ */ jsxs28("div", { className: `event-listing ${display.className ?? ""}`, "data-block": "event-listing", children: [
38440
38578
  filters,
38441
38579
  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)) }),
38442
38580
  footer
@@ -38515,7 +38653,7 @@ function formatShortDayLabel(date) {
38515
38653
  }
38516
38654
 
38517
38655
  // ../blocks/src/system/runtime/nodes/events/EventCalendar.server.tsx
38518
- import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
38656
+ import { jsx as jsx42, jsxs as jsxs29 } from "react/jsx-runtime";
38519
38657
  function assertNeverDisplayMode(value) {
38520
38658
  throw new Error(`Unsupported event-calendar displayMode: ${String(value)}`);
38521
38659
  }
@@ -38527,8 +38665,8 @@ function renderEventCard(event, display) {
38527
38665
  }
38528
38666
  function renderCombinedSsr(display, prefetchedEvents) {
38529
38667
  const listDisplay = buildEventCalendarListingDisplay(display, prefetchedEvents, "event-combined-content");
38530
- return /* @__PURE__ */ jsxs28("div", { className: clsx_default("event-combined", display.className ?? void 0), "data-block": "event-combined", children: [
38531
- /* @__PURE__ */ jsxs28("div", { className: "nav-tabs", role: "tablist", children: [
38668
+ return /* @__PURE__ */ jsxs29("div", { className: clsx_default("event-combined", display.className ?? void 0), "data-block": "event-combined", children: [
38669
+ /* @__PURE__ */ jsxs29("div", { className: "nav-tabs", role: "tablist", children: [
38532
38670
  /* @__PURE__ */ jsx42(
38533
38671
  "button",
38534
38672
  {
@@ -38576,9 +38714,9 @@ function renderCalendarGrid(display) {
38576
38714
  const eventsByDate = groupEventsByDate([...display.events]);
38577
38715
  const dayNames = getOrderedDayNames(display.startOfWeek);
38578
38716
  const headerTitle = formatCalendarTitle(viewDate, calendarView, calendarDays);
38579
- return /* @__PURE__ */ jsxs28("div", { className: clsx_default("event-calendar", display.className ?? void 0), "data-block": "event-calendar", children: [
38580
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-header", children: [
38581
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-nav", children: [
38717
+ return /* @__PURE__ */ jsxs29("div", { className: clsx_default("event-calendar", display.className ?? void 0), "data-block": "event-calendar", children: [
38718
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-header", children: [
38719
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-nav", children: [
38582
38720
  /* @__PURE__ */ jsx42(
38583
38721
  "button",
38584
38722
  {
@@ -38611,7 +38749,7 @@ function renderCalendarGrid(display) {
38611
38749
  }
38612
38750
  )
38613
38751
  ] }),
38614
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-container", children: [
38752
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-container", children: [
38615
38753
  /* @__PURE__ */ jsx42("div", { className: "event-calendar-day-headers", children: dayNames.map((day) => /* @__PURE__ */ jsx42("div", { className: "event-calendar-day-header", children: day }, day)) }),
38616
38754
  /* @__PURE__ */ jsx42("div", { className: "event-calendar-grid", children: calendarDays.map((date) => {
38617
38755
  const dateKey = formatDateKey2(date);
@@ -38623,10 +38761,10 @@ function renderCalendarGrid(display) {
38623
38761
  !isCurrentMonth && "event-calendar-day--other-month",
38624
38762
  today && "event-calendar-day--today"
38625
38763
  );
38626
- return /* @__PURE__ */ jsxs28("div", { className: dayClasses, children: [
38764
+ return /* @__PURE__ */ jsxs29("div", { className: dayClasses, children: [
38627
38765
  /* @__PURE__ */ jsx42("div", { className: "event-calendar-day-number", children: date.getDate() }),
38628
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-events", children: [
38629
- dayEvents.slice(0, MAX_EVENTS_PER_DAY).map((event) => /* @__PURE__ */ jsxs28(
38766
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-events", children: [
38767
+ dayEvents.slice(0, MAX_EVENTS_PER_DAY).map((event) => /* @__PURE__ */ jsxs29(
38630
38768
  "a",
38631
38769
  {
38632
38770
  href: event.path,
@@ -38640,7 +38778,7 @@ function renderCalendarGrid(display) {
38640
38778
  },
38641
38779
  event.occurrenceId || event.id
38642
38780
  )),
38643
- dayEvents.length > MAX_EVENTS_PER_DAY ? /* @__PURE__ */ jsxs28("div", { className: "event-calendar-more", children: [
38781
+ dayEvents.length > MAX_EVENTS_PER_DAY ? /* @__PURE__ */ jsxs29("div", { className: "event-calendar-more", children: [
38644
38782
  "+",
38645
38783
  dayEvents.length - MAX_EVENTS_PER_DAY,
38646
38784
  " more"
@@ -38662,9 +38800,9 @@ function renderTimetableSsr(display) {
38662
38800
  const calendarDays = getWeekCalendarDays(viewDate, display.startOfWeek);
38663
38801
  const headerTitle = formatCalendarTitle(viewDate, "week", calendarDays);
38664
38802
  const selectedDayKey = model.days.find((day) => day.isToday)?.dateKey ?? model.days[0]?.dateKey ?? "";
38665
- return /* @__PURE__ */ jsxs28("div", { className: clsx_default("event-calendar", "event-calendar--timetable", display.className ?? void 0), "data-block": "event-calendar", children: [
38666
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-header", children: [
38667
- /* @__PURE__ */ jsxs28("div", { className: "event-calendar-nav", children: [
38803
+ return /* @__PURE__ */ jsxs29("div", { className: clsx_default("event-calendar", "event-calendar--timetable", display.className ?? void 0), "data-block": "event-calendar", children: [
38804
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-header", children: [
38805
+ /* @__PURE__ */ jsxs29("div", { className: "event-calendar-nav", children: [
38668
38806
  /* @__PURE__ */ jsx42(
38669
38807
  "button",
38670
38808
  {
@@ -38697,7 +38835,7 @@ function renderTimetableSsr(display) {
38697
38835
  }
38698
38836
  )
38699
38837
  ] }),
38700
- /* @__PURE__ */ jsxs28("div", { className: "event-timetable", children: [
38838
+ /* @__PURE__ */ jsxs29("div", { className: "event-timetable", children: [
38701
38839
  /* @__PURE__ */ jsx42("div", { className: "event-timetable-day-selector", "aria-label": "Choose timetable day", children: model.days.map((day) => /* @__PURE__ */ jsx42(
38702
38840
  "button",
38703
38841
  {
@@ -38710,8 +38848,8 @@ function renderTimetableSsr(display) {
38710
38848
  },
38711
38849
  day.dateKey
38712
38850
  )) }),
38713
- /* @__PURE__ */ jsx42("div", { className: "event-timetable-container", children: /* @__PURE__ */ jsxs28("div", { className: "event-timetable-grid", "aria-label": "Weekly timetable", children: [
38714
- /* @__PURE__ */ jsxs28("div", { className: "event-timetable-time-rail", "aria-hidden": "true", children: [
38851
+ /* @__PURE__ */ jsx42("div", { className: "event-timetable-container", children: /* @__PURE__ */ jsxs29("div", { className: "event-timetable-grid", "aria-label": "Weekly timetable", children: [
38852
+ /* @__PURE__ */ jsxs29("div", { className: "event-timetable-time-rail", "aria-hidden": "true", children: [
38715
38853
  /* @__PURE__ */ jsx42("div", { className: "event-timetable-day-heading" }),
38716
38854
  /* @__PURE__ */ jsx42("div", { className: "event-timetable-time-body", children: model.hourTicks.map((hour) => /* @__PURE__ */ jsx42(
38717
38855
  "div",
@@ -38723,7 +38861,7 @@ function renderTimetableSsr(display) {
38723
38861
  hour
38724
38862
  )) })
38725
38863
  ] }),
38726
- model.days.map((day) => /* @__PURE__ */ jsxs28(
38864
+ model.days.map((day) => /* @__PURE__ */ jsxs29(
38727
38865
  "section",
38728
38866
  {
38729
38867
  className: clsx_default(
@@ -38732,11 +38870,11 @@ function renderTimetableSsr(display) {
38732
38870
  ),
38733
38871
  "data-selected": day.dateKey === selectedDayKey ? "true" : "false",
38734
38872
  children: [
38735
- /* @__PURE__ */ jsxs28("h4", { className: "event-timetable-day-heading", children: [
38873
+ /* @__PURE__ */ jsxs29("h4", { className: "event-timetable-day-heading", children: [
38736
38874
  day.label,
38737
38875
  day.isToday ? /* @__PURE__ */ jsx42("span", { className: "event-timetable-today-badge", children: "Today" }) : null
38738
38876
  ] }),
38739
- /* @__PURE__ */ jsxs28(
38877
+ /* @__PURE__ */ jsxs29(
38740
38878
  "div",
38741
38879
  {
38742
38880
  className: "event-timetable-day-body",
@@ -38751,7 +38889,7 @@ function renderTimetableSsr(display) {
38751
38889
  },
38752
38890
  hour
38753
38891
  )),
38754
- day.events.length === 0 ? /* @__PURE__ */ jsx42("p", { className: "event-timetable-day-empty", children: "No classes" }) : day.events.map((cell) => /* @__PURE__ */ jsxs28(
38892
+ day.events.length === 0 ? /* @__PURE__ */ jsx42("p", { className: "event-timetable-day-empty", children: "No classes" }) : day.events.map((cell) => /* @__PURE__ */ jsxs29(
38755
38893
  "a",
38756
38894
  {
38757
38895
  href: cell.event.path,
@@ -38828,18 +38966,18 @@ var EventCalendarSSR = (props2) => {
38828
38966
  default:
38829
38967
  content = assertNeverDisplayMode(display.displayMode);
38830
38968
  }
38831
- return /* @__PURE__ */ jsxs28("div", { ...getIslandRootProps("event-calendar", props2.blockId), children: [
38969
+ return /* @__PURE__ */ jsxs29("div", { ...getIslandRootProps("event-calendar", props2.blockId), children: [
38832
38970
  /* @__PURE__ */ jsx42(IslandPropsScript, { value: islandProps }),
38833
38971
  content
38834
38972
  ] });
38835
38973
  };
38836
38974
 
38837
38975
  // ../blocks/src/system/runtime/nodes/events/EventListing.server.tsx
38838
- import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
38976
+ import { jsx as jsx43, jsxs as jsxs30 } from "react/jsx-runtime";
38839
38977
  var EventListingSSR = (props2) => {
38840
38978
  const islandProps = buildEventListingInteractiveIslandProps(props2);
38841
38979
  const display = islandProps.render.display;
38842
- return /* @__PURE__ */ jsxs29("div", { ...getIslandRootProps("event-listing", props2.blockId), children: [
38980
+ return /* @__PURE__ */ jsxs30("div", { ...getIslandRootProps("event-listing", props2.blockId), children: [
38843
38981
  /* @__PURE__ */ jsx43(IslandPropsScript, { value: islandProps }),
38844
38982
  /* @__PURE__ */ jsx43(
38845
38983
  EventListingFrameView,
@@ -38852,7 +38990,7 @@ var EventListingSSR = (props2) => {
38852
38990
  };
38853
38991
 
38854
38992
  // ../blocks/src/system/runtime/nodes/event-registration.server.tsx
38855
- import { jsx as jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
38993
+ import { jsx as jsx44, jsxs as jsxs31 } from "react/jsx-runtime";
38856
38994
  function EventRegistrationSSR({
38857
38995
  blockId,
38858
38996
  siteId,
@@ -38893,7 +39031,7 @@ function EventRegistrationSSR({
38893
39031
  stage,
38894
39032
  supportEmail
38895
39033
  });
38896
- return /* @__PURE__ */ jsxs30(
39034
+ return /* @__PURE__ */ jsxs31(
38897
39035
  "div",
38898
39036
  {
38899
39037
  className: `event-registration ${className ?? ""}`.trim(),
@@ -38909,7 +39047,7 @@ function EventRegistrationSSR({
38909
39047
  var event_registration_server_default = EventRegistrationSSR;
38910
39048
 
38911
39049
  // ../blocks/src/system/runtime/shared/components/FeedbackMessage.tsx
38912
- import { jsx as jsx45, jsxs as jsxs31 } from "react/jsx-runtime";
39050
+ import { jsx as jsx45, jsxs as jsxs32 } from "react/jsx-runtime";
38913
39051
  function joinClasses5(...parts) {
38914
39052
  return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
38915
39053
  }
@@ -38925,7 +39063,7 @@ function FeedbackMessage({
38925
39063
  }) {
38926
39064
  const resolvedLive = live ?? (role === "alert" ? "assertive" : "polite");
38927
39065
  const shouldWrapBody = Boolean(title || bodyClassName);
38928
- return /* @__PURE__ */ jsxs31(
39066
+ return /* @__PURE__ */ jsxs32(
38929
39067
  "div",
38930
39068
  {
38931
39069
  className,
@@ -38941,7 +39079,7 @@ function FeedbackMessage({
38941
39079
  }
38942
39080
 
38943
39081
  // ../blocks/src/system/runtime/nodes/form.server.tsx
38944
- import { jsx as jsx46, jsxs as jsxs32 } from "react/jsx-runtime";
39082
+ import { jsx as jsx46, jsxs as jsxs33 } from "react/jsx-runtime";
38945
39083
  var FormNodeSSR = ({
38946
39084
  blockId,
38947
39085
  value,
@@ -38966,7 +39104,7 @@ var FormNodeSSR = ({
38966
39104
  const display = islandProps.render.display;
38967
39105
  const form2 = display.form;
38968
39106
  if (!form2) {
38969
- return /* @__PURE__ */ jsxs32("div", { ...getIslandRootProps("form", blockId), children: [
39107
+ return /* @__PURE__ */ jsxs33("div", { ...getIslandRootProps("form", blockId), children: [
38970
39108
  /* @__PURE__ */ jsx46(IslandPropsScript, { value: islandProps }),
38971
39109
  /* @__PURE__ */ jsx46(FeedbackMessage, { tone: "warning", className: clsx_default("fb-empty", className), role: "status", children: "Missing or unknown form." })
38972
39110
  ] });
@@ -38978,7 +39116,7 @@ var FormNodeSSR = ({
38978
39116
  const required = Boolean(field.required);
38979
39117
  const type = String(field.type ?? "text");
38980
39118
  if (type === "textarea") {
38981
- return /* @__PURE__ */ jsxs32("div", { className: "fb-field", children: [
39119
+ return /* @__PURE__ */ jsxs33("div", { className: "fb-field", children: [
38982
39120
  /* @__PURE__ */ jsx46("label", { htmlFor: inputId, className: "form-label", children: label }),
38983
39121
  /* @__PURE__ */ jsx46(
38984
39122
  "textarea",
@@ -38996,9 +39134,9 @@ var FormNodeSSR = ({
38996
39134
  if (type === "select") {
38997
39135
  const options = field.options ?? [];
38998
39136
  const multiple = Boolean(field.multiple);
38999
- return /* @__PURE__ */ jsxs32("div", { className: "fb-field", children: [
39137
+ return /* @__PURE__ */ jsxs33("div", { className: "fb-field", children: [
39000
39138
  /* @__PURE__ */ jsx46("label", { htmlFor: inputId, className: "form-label", children: label }),
39001
- /* @__PURE__ */ jsxs32("select", { id: inputId, name: field.id, multiple, required, className: "form-select", children: [
39139
+ /* @__PURE__ */ jsxs33("select", { id: inputId, name: field.id, multiple, required, className: "form-select", children: [
39002
39140
  !multiple && /* @__PURE__ */ jsx46("option", { value: "", children: "Select\u2026" }),
39003
39141
  options.map((opt) => /* @__PURE__ */ jsx46("option", { value: opt.value, children: opt.label }, opt.value))
39004
39142
  ] })
@@ -39006,9 +39144,9 @@ var FormNodeSSR = ({
39006
39144
  }
39007
39145
  if (type === "radio") {
39008
39146
  const options = field.options ?? [];
39009
- return /* @__PURE__ */ jsxs32("fieldset", { className: "fb-fieldset", children: [
39147
+ return /* @__PURE__ */ jsxs33("fieldset", { className: "fb-fieldset", children: [
39010
39148
  /* @__PURE__ */ jsx46("legend", { className: "form-label", children: label }),
39011
- options.map((opt) => /* @__PURE__ */ jsxs32("label", { className: "fb-inline form-label", children: [
39149
+ options.map((opt) => /* @__PURE__ */ jsxs33("label", { className: "fb-inline form-label", children: [
39012
39150
  /* @__PURE__ */ jsx46(
39013
39151
  "input",
39014
39152
  {
@@ -39024,7 +39162,7 @@ var FormNodeSSR = ({
39024
39162
  ] }, field.id);
39025
39163
  }
39026
39164
  if (type === "checkbox" || type === "consent") {
39027
- return /* @__PURE__ */ jsxs32("label", { className: "fb-inline form-label", children: [
39165
+ return /* @__PURE__ */ jsxs33("label", { className: "fb-inline form-label", children: [
39028
39166
  /* @__PURE__ */ jsx46("input", { type: "checkbox", name: field.id, required, className: "form-checkbox" }),
39029
39167
  /* @__PURE__ */ jsx46("span", { children: label })
39030
39168
  ] }, field.id);
@@ -39040,7 +39178,7 @@ var FormNodeSSR = ({
39040
39178
  if (typeof field.min === "number") extra.min = field.min;
39041
39179
  if (typeof field.max === "number") extra.max = field.max;
39042
39180
  }
39043
- return /* @__PURE__ */ jsxs32("div", { className: "fb-field", children: [
39181
+ return /* @__PURE__ */ jsxs33("div", { className: "fb-field", children: [
39044
39182
  /* @__PURE__ */ jsx46("label", { htmlFor: inputId, className: "form-label", children: label }),
39045
39183
  /* @__PURE__ */ jsx46(
39046
39184
  "input",
@@ -39056,9 +39194,9 @@ var FormNodeSSR = ({
39056
39194
  )
39057
39195
  ] }, field.id);
39058
39196
  };
39059
- return /* @__PURE__ */ jsxs32("div", { ...getIslandRootProps("form", blockId), children: [
39197
+ return /* @__PURE__ */ jsxs33("div", { ...getIslandRootProps("form", blockId), children: [
39060
39198
  /* @__PURE__ */ jsx46(IslandPropsScript, { value: islandProps }),
39061
- /* @__PURE__ */ jsxs32(
39199
+ /* @__PURE__ */ jsxs33(
39062
39200
  "form",
39063
39201
  {
39064
39202
  method: "POST",
@@ -39093,7 +39231,7 @@ var FormNodeSSR = ({
39093
39231
  };
39094
39232
 
39095
39233
  // ../blocks/src/system/runtime/nodes/newsletter-form.server.tsx
39096
- import { jsx as jsx47, jsxs as jsxs33 } from "react/jsx-runtime";
39234
+ import { jsx as jsx47, jsxs as jsxs34 } from "react/jsx-runtime";
39097
39235
  function NewsletterFormSSR({
39098
39236
  blockId,
39099
39237
  siteId,
@@ -39125,8 +39263,8 @@ function NewsletterFormSSR({
39125
39263
  const fields3 = display.fields;
39126
39264
  const renderField = (field) => {
39127
39265
  const inputId = `newsletter_${field.id}`;
39128
- return /* @__PURE__ */ jsxs33("div", { className: "fb-field newsletter-field", children: [
39129
- /* @__PURE__ */ jsxs33("label", { htmlFor: inputId, className: "form-label", children: [
39266
+ return /* @__PURE__ */ jsxs34("div", { className: "fb-field newsletter-field", children: [
39267
+ /* @__PURE__ */ jsxs34("label", { htmlFor: inputId, className: "form-label", children: [
39130
39268
  field.label,
39131
39269
  field.required && /* @__PURE__ */ jsx47("span", { className: "newsletter-required", "aria-hidden": "true", children: "*" })
39132
39270
  ] }),
@@ -39144,14 +39282,14 @@ function NewsletterFormSSR({
39144
39282
  )
39145
39283
  ] }, field.id);
39146
39284
  };
39147
- return /* @__PURE__ */ jsxs33(
39285
+ return /* @__PURE__ */ jsxs34(
39148
39286
  "div",
39149
39287
  {
39150
39288
  ...getIslandRootProps("newsletter-form", blockId),
39151
39289
  className: clsx_default("newsletter-form-ssr", className),
39152
39290
  children: [
39153
39291
  /* @__PURE__ */ jsx47(IslandPropsScript, { value: islandProps }),
39154
- /* @__PURE__ */ jsxs33("form", { method: "POST", className: "newsletter-form fb-form", children: [
39292
+ /* @__PURE__ */ jsxs34("form", { method: "POST", className: "newsletter-form fb-form", children: [
39155
39293
  /* @__PURE__ */ jsx47(
39156
39294
  "input",
39157
39295
  {
@@ -39163,7 +39301,7 @@ function NewsletterFormSSR({
39163
39301
  "aria-hidden": "true"
39164
39302
  }
39165
39303
  ),
39166
- /* @__PURE__ */ jsxs33("div", { className: "newsletter-form-fields", children: [
39304
+ /* @__PURE__ */ jsxs34("div", { className: "newsletter-form-fields", children: [
39167
39305
  fields3.map(renderField),
39168
39306
  /* @__PURE__ */ jsx47("div", { className: "newsletter-submit", children: /* @__PURE__ */ jsx47(
39169
39307
  "button",
@@ -39183,7 +39321,7 @@ function NewsletterFormSSR({
39183
39321
  var newsletter_form_server_default = NewsletterFormSSR;
39184
39322
 
39185
39323
  // ../blocks/src/system/runtime/nodes/product-detail.server.tsx
39186
- import { jsx as jsx48, jsxs as jsxs34 } from "react/jsx-runtime";
39324
+ import { jsx as jsx48, jsxs as jsxs35 } from "react/jsx-runtime";
39187
39325
  function ProductDetailSSR({
39188
39326
  blockId,
39189
39327
  siteId,
@@ -39198,7 +39336,7 @@ function ProductDetailSSR({
39198
39336
  stage,
39199
39337
  ...rest
39200
39338
  });
39201
- return /* @__PURE__ */ jsxs34(
39339
+ return /* @__PURE__ */ jsxs35(
39202
39340
  "div",
39203
39341
  {
39204
39342
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -39218,7 +39356,7 @@ function ProductDetailSSR({
39218
39356
  var product_detail_server_default = ProductDetailSSR;
39219
39357
 
39220
39358
  // ../blocks/src/system/runtime/nodes/product-list.server.tsx
39221
- import { jsx as jsx49, jsxs as jsxs35 } from "react/jsx-runtime";
39359
+ import { jsx as jsx49, jsxs as jsxs36 } from "react/jsx-runtime";
39222
39360
  function ProductListSSR({
39223
39361
  blockId,
39224
39362
  siteId,
@@ -39233,7 +39371,7 @@ function ProductListSSR({
39233
39371
  stage,
39234
39372
  ...rest
39235
39373
  });
39236
- return /* @__PURE__ */ jsxs35(
39374
+ return /* @__PURE__ */ jsxs36(
39237
39375
  "div",
39238
39376
  {
39239
39377
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -39253,7 +39391,7 @@ function ProductListSSR({
39253
39391
  var product_list_server_default = ProductListSSR;
39254
39392
 
39255
39393
  // ../blocks/src/system/runtime/nodes/shop.server.tsx
39256
- import { jsx as jsx50, jsxs as jsxs36 } from "react/jsx-runtime";
39394
+ import { jsx as jsx50, jsxs as jsxs37 } from "react/jsx-runtime";
39257
39395
  function ShopSSR({
39258
39396
  blockId,
39259
39397
  siteId,
@@ -39270,7 +39408,7 @@ function ShopSSR({
39270
39408
  ...rest
39271
39409
  });
39272
39410
  const render = islandProps.render;
39273
- return /* @__PURE__ */ jsxs36(
39411
+ return /* @__PURE__ */ jsxs37(
39274
39412
  "div",
39275
39413
  {
39276
39414
  className: `shop ${rest.className ?? ""}`.trim(),
@@ -44124,10 +44262,10 @@ function summarizeValue(value) {
44124
44262
  }
44125
44263
 
44126
44264
  // ../theme-core/src/mock-themes/components/swatch.tsx
44127
- import { jsx as jsx52, jsxs as jsxs37 } from "react/jsx-runtime";
44265
+ import { jsx as jsx52, jsxs as jsxs38 } from "react/jsx-runtime";
44128
44266
 
44129
44267
  // ../theme-core/src/mock-themes/components/PaletteCard.tsx
44130
- import { jsx as jsx53, jsxs as jsxs38 } from "react/jsx-runtime";
44268
+ import { jsx as jsx53, jsxs as jsxs39 } from "react/jsx-runtime";
44131
44269
 
44132
44270
  // ../../node_modules/.pnpm/@vibrant+image@4.0.4/node_modules/@vibrant/image/dist/esm/histogram.js
44133
44271
  var Histogram = class {
@@ -54181,6 +54319,11 @@ var containerResponsiveThemeCss = `/*
54181
54319
  * Dense row layout for event-calendar compact list mode
54182
54320
  * ============================================================================= */
54183
54321
 
54322
+ :where(.theme-scope) .event-listing-compact-container {
54323
+ width: min(100%, 56rem);
54324
+ margin-inline: auto;
54325
+ }
54326
+
54184
54327
  :where(.theme-scope) .event-compact-row {
54185
54328
  display: flex;
54186
54329
  align-items: center;
@@ -54306,7 +54449,7 @@ var containerResponsiveThemeCss = `/*
54306
54449
  }`;
54307
54450
 
54308
54451
  // ../theme-core/src/ThemeScopeCore.tsx
54309
- import { jsx as jsx54, jsxs as jsxs39 } from "react/jsx-runtime";
54452
+ import { jsx as jsx54, jsxs as jsxs40 } from "react/jsx-runtime";
54310
54453
  function ThemeScopeCore({
54311
54454
  cssVars,
54312
54455
  buttonCss,
@@ -54338,7 +54481,7 @@ function ThemeScopeCore({
54338
54481
  containerType: "inline-size",
54339
54482
  containerName: responsiveScope.containerName
54340
54483
  } : cssVars;
54341
- return /* @__PURE__ */ jsxs39(
54484
+ return /* @__PURE__ */ jsxs40(
54342
54485
  "div",
54343
54486
  {
54344
54487
  className: className ? `theme-scope ${className}` : "theme-scope",
@@ -54537,7 +54680,7 @@ function ThemeScope({
54537
54680
 
54538
54681
  // ../theme-core/src/ThemeFontLoader.tsx
54539
54682
  import * as React7 from "react";
54540
- import { Fragment as Fragment7, jsx as jsx56, jsxs as jsxs40 } from "react/jsx-runtime";
54683
+ import { Fragment as Fragment7, jsx as jsx56, jsxs as jsxs41 } from "react/jsx-runtime";
54541
54684
 
54542
54685
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
54543
54686
  import { z as z66 } from "zod";
@@ -54571,7 +54714,7 @@ var themeBridgeConfigSchema = z66.object({
54571
54714
  }).passthrough();
54572
54715
 
54573
54716
  // ../theme-core/src/siteChrome.tsx
54574
- import { Fragment as Fragment8, jsx as jsx57, jsxs as jsxs41 } from "react/jsx-runtime";
54717
+ import { Fragment as Fragment8, jsx as jsx57, jsxs as jsxs42 } from "react/jsx-runtime";
54575
54718
 
54576
54719
  // ../blocks/src/system/runtime/bindings.ts
54577
54720
  var shouldLogWarnings = isNonProductionEnv();
@@ -57881,7 +58024,7 @@ function getEntrySubrouteMetadataOverrides(args) {
57881
58024
  }
57882
58025
 
57883
58026
  // src/next/catch-all.tsx
57884
- import { jsx as jsx60, jsxs as jsxs42 } from "react/jsx-runtime";
58027
+ import { jsx as jsx60, jsxs as jsxs43 } from "react/jsx-runtime";
57885
58028
  function isExpectedNotFoundError(error) {
57886
58029
  return typeof error === "object" && error !== null && "status" in error && Reflect.get(error, "status") === 404;
57887
58030
  }
@@ -58062,7 +58205,7 @@ function createCatchAllPage(options) {
58062
58205
  }
58063
58206
  )
58064
58207
  );
58065
- const pageWithLayout = /* @__PURE__ */ jsxs42("main", { children: [
58208
+ const pageWithLayout = /* @__PURE__ */ jsxs43("main", { children: [
58066
58209
  hydrationBootstrap,
58067
58210
  rendered
58068
58211
  ] });
@@ -58244,7 +58387,7 @@ var SimpleCache = class {
58244
58387
  };
58245
58388
 
58246
58389
  // src/version.ts
58247
- var SDK_VERSION = "0.74.0";
58390
+ var SDK_VERSION = "0.75.0";
58248
58391
 
58249
58392
  // src/client/error.ts
58250
58393
  var RiverbankApiError = class _RiverbankApiError extends Error {