@riverbankcms/sdk 0.98.0 → 0.99.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 (120) hide show
  1. package/dist/{PreviewEditorSidebar-CG3SSJND.mjs → PreviewEditorSidebar-TPOKCCKY.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-RHNGKAAU.mjs → PreviewEditorUI-Y347GLC2.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-OGTXRQ4M.mjs +8 -0
  4. package/dist/_dts/ai/src/contracts/proposals.d.ts +36 -36
  5. package/dist/_dts/api/src/billing.d.ts +2 -0
  6. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +5 -1
  7. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  8. package/dist/_dts/api/src/index.d.ts +1 -1
  9. package/dist/_dts/api/src/siteOperations.d.ts +65 -1
  10. package/dist/_dts/billing/src/site-arrangements.d.ts +151 -0
  11. package/dist/_dts/billing/src/subscriptions/store.d.ts +2 -0
  12. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/resolveThumbnail.d.ts +2 -1
  13. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -0
  14. package/dist/_dts/blocks/src/system/runtime/components/booking/DatePicker.d.ts +6 -2
  15. package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +3 -1
  16. package/dist/_dts/blocks/src/system/runtime/components/booking/TimeSlotSelector.d.ts +10 -4
  17. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +2 -2
  18. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +11 -0
  19. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/StepIndicator.d.ts +3 -1
  20. package/dist/_dts/blocks/src/system/runtime/shared/components/FeedbackMessage.d.ts +2 -1
  21. package/dist/_dts/blocks/src/system/runtime/{nodes/event-registration → shared/components}/SelectableOptionCard.d.ts +11 -2
  22. package/dist/_dts/blocks/src/system/runtime/shared/components/StepIndicator.d.ts +16 -5
  23. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  24. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  25. package/dist/_dts/blocks/src/utils/date-formatting.d.ts +17 -1
  26. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +274 -30
  27. package/dist/_dts/sdk/src/__mocks__/next-cache.d.ts +1 -1
  28. package/dist/_dts/sdk/src/cli/commands/push.d.ts +13 -0
  29. package/dist/_dts/sdk/src/cli/merge-remote/entryMergeReport.d.ts +6 -18
  30. package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +2 -4
  31. package/dist/_dts/sdk/src/cli/merge-remote/pageMergeReport.d.ts +6 -18
  32. package/dist/_dts/sdk/src/cli/merge-remote/pageSnapshots.d.ts +2 -4
  33. package/dist/_dts/sdk/src/cli/merge-remote/sharedBaseSnapshots.d.ts +32 -0
  34. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergePlan.d.ts +27 -0
  35. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergeReport.d.ts +63 -0
  36. package/dist/_dts/sdk/src/client/index.d.ts +6 -0
  37. package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +6 -1
  38. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  39. package/dist/_dts/sdk/src/prebuild/loader.d.ts +8 -1
  40. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  41. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -0
  42. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -0
  43. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +8 -0
  44. package/dist/_dts/sdk/src/rendering/index.d.ts +7 -7
  45. package/dist/_dts/sdk/src/rendering/overrides.d.ts +2 -0
  46. package/dist/_dts/sdk/src/routing/resolveRoute.d.ts +18 -0
  47. package/dist/_dts/sdk/src/test/apiClient.d.ts +17 -0
  48. package/dist/_dts/sdk/src/test/bunDom.setup.d.ts +1 -0
  49. package/dist/_dts/sdk/src/test/env.d.ts +4 -0
  50. package/dist/_dts/sdk/src/version.d.ts +1 -1
  51. package/dist/_dts/site-commands/src/commands.d.ts +3 -3
  52. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  53. package/dist/_dts/theme-core/src/interactive/generateBaseCSS.d.ts +6 -0
  54. package/dist/_dts/theme-core/src/status/contextualColors.d.ts +6 -0
  55. package/dist/_dts/theme-core/src/status/index.d.ts +1 -0
  56. package/dist/{chunk-H24OU7WG.mjs → chunk-4HXF2QLH.mjs} +2 -2
  57. package/dist/{chunk-QPXE2OUZ.mjs → chunk-EMJIT3ZJ.mjs} +1 -1
  58. package/dist/{chunk-PKDPQHB5.mjs → chunk-PM7HGDHM.mjs} +2 -2
  59. package/dist/{chunk-DBRI3PQF.mjs → chunk-XO34WBBP.mjs} +1383 -1143
  60. package/dist/{chunk-6WDBXCPX.mjs → chunk-YGTTEVUM.mjs} +7 -7
  61. package/dist/{chunk-V2BYFSPW.mjs → chunk-YWTCCOSF.mjs} +8 -0
  62. package/dist/cli/index.mjs +1010 -921
  63. package/dist/client/{accordion-Q2BDNL53.mjs → accordion-QSUEYL4L.mjs} +2 -2
  64. package/dist/client/{bookingForm-ZMP4P7EK.mjs → bookingForm-QYGAHPDP.mjs} +364 -300
  65. package/dist/client/bookings.mjs +697 -411
  66. package/dist/client/{carousel-LW3UXPWO.mjs → carousel-SM2LEWAU.mjs} +3 -3
  67. package/dist/client/{cart-Z6D3KS6K.mjs → cart-3N3SFKNQ.mjs} +7 -7
  68. package/dist/client/{checkout-YMT2QJQM.mjs → checkout-YFAYPKPZ.mjs} +7 -7
  69. package/dist/client/{chunk-XNTHVZ25.mjs → chunk-5DLGREUB.mjs} +1 -1
  70. package/dist/client/{chunk-SK2BMD22.mjs → chunk-CLZ7NBSP.mjs} +147 -75
  71. package/dist/client/{chunk-R4XK3CKR.mjs → chunk-CYJ3MUFP.mjs} +6 -5
  72. package/dist/client/{chunk-JNE6UI6U.mjs → chunk-H3H3ODO7.mjs} +1 -1
  73. package/dist/client/{chunk-IEOECM7U.mjs → chunk-HPEQ4YWW.mjs} +28 -73
  74. package/dist/client/{chunk-PCHACQEB.mjs → chunk-IIUIKJ4K.mjs} +15 -7
  75. package/dist/client/{chunk-KDP7ZRZV.mjs → chunk-IOAHWAQG.mjs} +2 -0
  76. package/dist/client/{chunk-26ZBRXFR.mjs → chunk-JTKBF3W2.mjs} +3 -3
  77. package/dist/client/{chunk-OLAOAZEO.mjs → chunk-K7KTSACR.mjs} +1 -1
  78. package/dist/client/{chunk-ET2MDQQT.mjs → chunk-R32M5HFS.mjs} +6 -6
  79. package/dist/client/{chunk-DRRQ7QSL.mjs → chunk-WEVT46PX.mjs} +3 -3
  80. package/dist/client/{chunk-HBQEAOG4.mjs → chunk-ZU65LTI3.mjs} +1 -1
  81. package/dist/client/client.mjs +1875 -1581
  82. package/dist/client/{courseRegistration-DGKCMC77.mjs → courseRegistration-LYBE7VVK.mjs} +7 -7
  83. package/dist/client/{eventCalendar-74Z2NNFM.mjs → eventCalendar-FMTB75X6.mjs} +9 -9
  84. package/dist/client/{eventCombined-GK2ODOX2.mjs → eventCombined-E4LUCJXT.mjs} +9 -9
  85. package/dist/client/{eventDetails-MONAGT3N.mjs → eventDetails-GELSRR4Z.mjs} +9 -9
  86. package/dist/client/{eventListing-SKGAO6PS.mjs → eventListing-TB623B6R.mjs} +9 -9
  87. package/dist/client/{eventRegistration-6KISGXRD.mjs → eventRegistration-NRIKHXTI.mjs} +9 -9
  88. package/dist/client/{form-FXPRTXHI.mjs → form-Y4U4IAXE.mjs} +3 -3
  89. package/dist/client/{headerSection-7NAN5WNB.mjs → headerSection-QSOVV5P7.mjs} +3 -3
  90. package/dist/client/hooks.mjs +115 -21
  91. package/dist/client/{locationMap-UERN74U4.mjs → locationMap-QYCAHH7H.mjs} +3 -3
  92. package/dist/client/{newsletterForm-SGWXMJ7U.mjs → newsletterForm-NWHY5TBY.mjs} +3 -3
  93. package/dist/client/{productDetail-HN3HWZQZ.mjs → productDetail-FYDMU2CE.mjs} +7 -7
  94. package/dist/client/{productList-YT22Z5UR.mjs → productList-D76CGACQ.mjs} +7 -7
  95. package/dist/client/rendering/client.mjs +1209 -975
  96. package/dist/client/rendering/islands.mjs +19 -19
  97. package/dist/client/rendering.mjs +1952 -1638
  98. package/dist/client/{shop-TKEDNWUS.mjs → shop-SOUACT5N.mjs} +7 -7
  99. package/dist/preview-next/before-render.mjs +8 -0
  100. package/dist/preview-next/client/runtime.mjs +5 -5
  101. package/dist/preview-next/middleware.mjs +8 -0
  102. package/dist/{sdk-runtime-LWNYCQF2.mjs → sdk-runtime-XPVE3LBA.mjs} +6 -6
  103. package/dist/server/components.mjs +917 -765
  104. package/dist/server/config-validation.mjs +100 -19
  105. package/dist/server/config.mjs +100 -19
  106. package/dist/server/data.mjs +115 -21
  107. package/dist/server/index.mjs +59 -25
  108. package/dist/server/next.mjs +1017 -816
  109. package/dist/server/page-converter.mjs +92 -19
  110. package/dist/server/prebuild-loader.mjs +42 -23
  111. package/dist/server/prebuild.mjs +1 -1
  112. package/dist/server/rendering/server.mjs +932 -767
  113. package/dist/server/rendering.mjs +968 -776
  114. package/dist/server/routing.mjs +162 -36
  115. package/dist/server/server.mjs +156 -32
  116. package/dist/server/theme-bridge.mjs +597 -505
  117. package/dist/server/theme.mjs +5 -4
  118. package/dist/styles/index.css +499 -490
  119. package/package.json +6 -4
  120. package/dist/SdkPreviewModeRuntime-OV5PNJBB.mjs +0 -8
@@ -1751,6 +1751,13 @@ var init_resolver = __esm({
1751
1751
  }
1752
1752
  });
1753
1753
 
1754
+ // ../theme-core/src/interactive/generateBaseCSS.ts
1755
+ var init_generateBaseCSS = __esm({
1756
+ "../theme-core/src/interactive/generateBaseCSS.ts"() {
1757
+ "use strict";
1758
+ }
1759
+ });
1760
+
1754
1761
  // ../theme-core/src/buttons/effects/presets/background.ts
1755
1762
  var init_background = __esm({
1756
1763
  "../theme-core/src/buttons/effects/presets/background.ts"() {
@@ -1886,6 +1893,7 @@ var init_generateButtonCss = __esm({
1886
1893
  init_types2();
1887
1894
  init_classNames();
1888
1895
  init_resolver();
1896
+ init_generateBaseCSS();
1889
1897
  init_generateEffectsCSS();
1890
1898
  init_constants();
1891
1899
  init_generateDefaultButtonSystem();
@@ -2453,15 +2461,16 @@ var init_joy_stamp = __esm({
2453
2461
  // 700, matching the mockup's chunky button labels.
2454
2462
  typography: "heading",
2455
2463
  fontWeight: 700,
2464
+ fontSize: "text-lg",
2456
2465
  borderWidth: 2,
2457
2466
  hoverTransform: "none",
2458
2467
  hoverColor: "none"
2459
2468
  },
2460
2469
  sizes: {
2461
- sm: { padding: "0.625rem 1.25rem", fontSize: "text-sm" },
2462
- md: { padding: "0.875rem 1.75rem", fontSize: "text-base" },
2463
- lg: { padding: "1.125rem 2.25rem", fontSize: "text-lg" },
2464
- xl: { padding: "1.25rem 2.75rem", fontSize: "text-xl" }
2470
+ sm: { padding: "0.625rem 1.25rem", fontSize: "text-base" },
2471
+ md: { padding: "0.875rem 1.75rem", fontSize: "text-lg" },
2472
+ lg: { padding: "1.125rem 2.25rem", fontSize: "text-xl" },
2473
+ xl: { padding: "1.25rem 2.75rem", fontSize: "text-2xl" }
2465
2474
  },
2466
2475
  variants: [
2467
2476
  {
@@ -3605,13 +3614,14 @@ function formatBookingTime(input, format = {
3605
3614
  format
3606
3615
  });
3607
3616
  }
3608
- function formatBookingDateTime(input, format = {
3609
- weekday: "short",
3610
- month: "short",
3611
- day: "numeric",
3612
- hour: "numeric",
3613
- minute: "2-digit"
3614
- }) {
3617
+ function formatBookingDateTime(input, format = DEFAULT_BOOKING_DATE_TIME_FORMAT) {
3618
+ if (format === DEFAULT_BOOKING_DATE_TIME_FORMAT) {
3619
+ return `${formatBookingDate(input, {
3620
+ weekday: "short",
3621
+ month: "short",
3622
+ day: "numeric"
3623
+ })}, ${formatBookingTime(input)}`;
3624
+ }
3615
3625
  return formatBookingInstant(input.startsAt, {
3616
3626
  locale: input.locale,
3617
3627
  timeZone: input.timeZone,
@@ -3671,13 +3681,20 @@ function addLocalScheduleDays(date, days) {
3671
3681
  day: utcDate.getUTCDate()
3672
3682
  };
3673
3683
  }
3674
- var DEFAULT_LOCALE, FALLBACK_TIMEZONE, LOCAL_DATE_PATTERN, DEFAULT_BOOKING_TIME_ZONE;
3684
+ var DEFAULT_LOCALE, FALLBACK_TIMEZONE, DEFAULT_BOOKING_DATE_TIME_FORMAT, LOCAL_DATE_PATTERN, DEFAULT_BOOKING_TIME_ZONE;
3675
3685
  var init_booking_date_time = __esm({
3676
3686
  "../core/src/booking-date-time.ts"() {
3677
3687
  "use strict";
3678
3688
  init_result();
3679
3689
  DEFAULT_LOCALE = "en-US";
3680
3690
  FALLBACK_TIMEZONE = "UTC";
3691
+ DEFAULT_BOOKING_DATE_TIME_FORMAT = {
3692
+ weekday: "short",
3693
+ month: "short",
3694
+ day: "numeric",
3695
+ hour: "numeric",
3696
+ minute: "2-digit"
3697
+ };
3681
3698
  LOCAL_DATE_PATTERN = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/u;
3682
3699
  DEFAULT_BOOKING_TIME_ZONE = FALLBACK_TIMEZONE;
3683
3700
  }
@@ -10055,6 +10072,13 @@ var init_generateDefaultCardSystem = __esm({
10055
10072
  }
10056
10073
  });
10057
10074
 
10075
+ // ../theme-core/src/status/contextualColors.ts
10076
+ var init_contextualColors = __esm({
10077
+ "../theme-core/src/status/contextualColors.ts"() {
10078
+ "use strict";
10079
+ }
10080
+ });
10081
+
10058
10082
  // ../theme-core/src/cards/generateCardCss.ts
10059
10083
  var init_generateCardCss = __esm({
10060
10084
  "../theme-core/src/cards/generateCardCss.ts"() {
@@ -10062,6 +10086,7 @@ var init_generateCardCss = __esm({
10062
10086
  init_resolver();
10063
10087
  init_constants2();
10064
10088
  init_generateDefaultCardSystem();
10089
+ init_contextualColors();
10065
10090
  }
10066
10091
  });
10067
10092
 
@@ -25103,6 +25128,7 @@ function FeedbackMessage({
25103
25128
  tone,
25104
25129
  children,
25105
25130
  className,
25131
+ id,
25106
25132
  title,
25107
25133
  titleClassName,
25108
25134
  bodyClassName,
@@ -25114,6 +25140,7 @@ function FeedbackMessage({
25114
25140
  return /* @__PURE__ */ jsxs37(
25115
25141
  "div",
25116
25142
  {
25143
+ id,
25117
25144
  className,
25118
25145
  "data-feedback-tone": tone,
25119
25146
  role,
@@ -27952,32 +27979,120 @@ var init_client2 = __esm({
27952
27979
  }
27953
27980
  });
27954
27981
 
27982
+ // ../blocks/src/system/runtime/shared/components/CheckIcon.tsx
27983
+ import { jsx as jsx60 } from "react/jsx-runtime";
27984
+ function CheckIcon2({ className, strokeWidth = 2 }) {
27985
+ return /* @__PURE__ */ jsx60(
27986
+ "svg",
27987
+ {
27988
+ fill: "none",
27989
+ strokeLinecap: "round",
27990
+ strokeLinejoin: "round",
27991
+ strokeWidth,
27992
+ viewBox: "0 0 24 24",
27993
+ stroke: "currentColor",
27994
+ className,
27995
+ width: "1em",
27996
+ height: "1em",
27997
+ "aria-hidden": "true",
27998
+ children: /* @__PURE__ */ jsx60("path", { d: "M5 13l4 4L19 7" })
27999
+ }
28000
+ );
28001
+ }
28002
+ var init_CheckIcon = __esm({
28003
+ "../blocks/src/system/runtime/shared/components/CheckIcon.tsx"() {
28004
+ "use strict";
28005
+ }
28006
+ });
28007
+
28008
+ // ../blocks/src/system/runtime/shared/components/StateIcon.tsx
28009
+ import { jsx as jsx61 } from "react/jsx-runtime";
28010
+ function StateIcon({ variant, children }) {
28011
+ return /* @__PURE__ */ jsx61("div", { className: `rb-state-icon rb-state-icon--${variant}`, "aria-hidden": "true", children });
28012
+ }
28013
+ var init_StateIcon = __esm({
28014
+ "../blocks/src/system/runtime/shared/components/StateIcon.tsx"() {
28015
+ "use strict";
28016
+ }
28017
+ });
28018
+
28019
+ // ../blocks/src/system/runtime/shared/components/TerminalPanel.tsx
28020
+ import { jsx as jsx62, jsxs as jsxs43 } from "react/jsx-runtime";
28021
+ function joinClasses5(...parts) {
28022
+ return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
28023
+ }
28024
+ function TerminalPanel({
28025
+ tone,
28026
+ title,
28027
+ titleAs: Title = "h3",
28028
+ body,
28029
+ secondaryBody,
28030
+ icon: icon2,
28031
+ actions,
28032
+ className,
28033
+ titleClassName,
28034
+ bodyClassName,
28035
+ secondaryBodyClassName,
28036
+ iconClassName,
28037
+ actionsClassName,
28038
+ role,
28039
+ live
28040
+ }) {
28041
+ const resolvedRole = role ?? (tone === "error" ? "alert" : "status");
28042
+ const resolvedLive = live ?? (resolvedRole === "alert" ? "assertive" : "polite");
28043
+ return /* @__PURE__ */ jsxs43(
28044
+ "div",
28045
+ {
28046
+ className,
28047
+ "data-terminal-panel": true,
28048
+ "data-terminal-tone": tone,
28049
+ role: resolvedRole,
28050
+ "aria-live": resolvedLive === "off" ? void 0 : resolvedLive,
28051
+ children: [
28052
+ icon2 ? /* @__PURE__ */ jsx62("div", { className: joinClasses5(iconClassName), "data-terminal-icon": true, children: icon2 }) : null,
28053
+ /* @__PURE__ */ jsx62(Title, { className: joinClasses5(titleClassName), "data-terminal-title": true, children: title }),
28054
+ body ? /* @__PURE__ */ jsx62("div", { className: joinClasses5(bodyClassName), "data-terminal-body": true, children: body }) : null,
28055
+ actions ? /* @__PURE__ */ jsx62("div", { className: joinClasses5(actionsClassName), "data-terminal-actions": true, children: actions }) : null,
28056
+ secondaryBody ? /* @__PURE__ */ jsx62("div", { className: joinClasses5(secondaryBodyClassName), "data-terminal-secondary-body": true, children: secondaryBody }) : null
28057
+ ]
28058
+ }
28059
+ );
28060
+ }
28061
+ var init_TerminalPanel = __esm({
28062
+ "../blocks/src/system/runtime/shared/components/TerminalPanel.tsx"() {
28063
+ "use strict";
28064
+ }
28065
+ });
28066
+
27955
28067
  // ../blocks/src/system/runtime/components/booking/SuccessMessage.tsx
27956
- import { Fragment as Fragment8, jsx as jsx60, jsxs as jsxs43 } from "react/jsx-runtime";
28068
+ import { jsx as jsx63, jsxs as jsxs44 } from "react/jsx-runtime";
27957
28069
  var SuccessMessage;
27958
28070
  var init_SuccessMessage = __esm({
27959
28071
  "../blocks/src/system/runtime/components/booking/SuccessMessage.tsx"() {
27960
28072
  "use strict";
27961
- init_FeedbackMessage();
28073
+ init_CheckIcon();
28074
+ init_StateIcon();
28075
+ init_TerminalPanel();
27962
28076
  SuccessMessage = ({
27963
28077
  message,
27964
28078
  resourceName,
27965
28079
  className
27966
28080
  }) => {
27967
- return /* @__PURE__ */ jsx60(
27968
- FeedbackMessage,
28081
+ return /* @__PURE__ */ jsx63(
28082
+ TerminalPanel,
27969
28083
  {
27970
28084
  tone: "success",
27971
- className: `ab-alert ab-alert--success ${className ?? ""}`,
28085
+ title: "Booking confirmed",
28086
+ icon: /* @__PURE__ */ jsx63(StateIcon, { variant: "success", children: /* @__PURE__ */ jsx63(CheckIcon2, { strokeWidth: 3 }) }),
28087
+ body: /* @__PURE__ */ jsx63("p", { className: "ab-text", children: message }),
28088
+ secondaryBody: resourceName ? /* @__PURE__ */ jsxs44("p", { className: "ab-text rb-on-surface--muted", children: [
28089
+ "Practitioner: ",
28090
+ resourceName
28091
+ ] }) : null,
28092
+ className: ["ab-center", className ?? ""].join(" ").trim(),
28093
+ titleClassName: "ab-terminal-title",
27972
28094
  role: "alert",
27973
- live: "polite",
27974
- children: /* @__PURE__ */ jsxs43(Fragment8, { children: [
27975
- /* @__PURE__ */ jsx60("p", { className: "ab-text", children: message }),
27976
- resourceName ? /* @__PURE__ */ jsxs43("p", { className: "ab-text ab-text--muted", children: [
27977
- "Practitioner: ",
27978
- resourceName
27979
- ] }) : null
27980
- ] })
28095
+ live: "polite"
27981
28096
  }
27982
28097
  );
27983
28098
  };
@@ -28061,9 +28176,30 @@ function formatDate2(dateStr) {
28061
28176
  }
28062
28177
  });
28063
28178
  }
28064
- function formatTime2(isoString) {
28065
- return formatBookingInstant(isoString, {
28179
+ function formatDatePillParts(dateStr) {
28180
+ const instant = `${dateStr}T00:00:00.000Z`;
28181
+ const partFormat = (format) => formatBookingInstant(instant, {
28066
28182
  timeZone: DEFAULT_BOOKING_TIME_ZONE,
28183
+ format
28184
+ });
28185
+ return {
28186
+ weekday: partFormat({ weekday: "short" }),
28187
+ day: partFormat({ day: "numeric" }),
28188
+ month: partFormat({ month: "short" })
28189
+ };
28190
+ }
28191
+ function formatTimeShort(isoString, timeZone = DEFAULT_BOOKING_TIME_ZONE) {
28192
+ return formatBookingInstant(isoString, {
28193
+ timeZone,
28194
+ format: {
28195
+ hour: "numeric",
28196
+ minute: "2-digit"
28197
+ }
28198
+ });
28199
+ }
28200
+ function formatTime2(isoString, timeZone = DEFAULT_BOOKING_TIME_ZONE) {
28201
+ return formatBookingInstant(isoString, {
28202
+ timeZone,
28067
28203
  format: {
28068
28204
  hour: "numeric",
28069
28205
  minute: "2-digit",
@@ -29306,6 +29442,24 @@ function toBookingSlotView(slot) {
29306
29442
  function toBookingSlotViews(slots) {
29307
29443
  return slots.map(toBookingSlotView);
29308
29444
  }
29445
+ function deriveBookingSlotDisplayOptions(input) {
29446
+ const seenStartTimes = /* @__PURE__ */ new Set();
29447
+ const options = [];
29448
+ for (const slot of input.slots) {
29449
+ if (!input.hasSelectedResource) {
29450
+ if (seenStartTimes.has(slot.startAt)) continue;
29451
+ seenStartTimes.add(slot.startAt);
29452
+ }
29453
+ options.push({
29454
+ key: slot.key,
29455
+ startAt: slot.startAt,
29456
+ endAt: slot.endAt,
29457
+ resourceId: slot.resourceId,
29458
+ slot
29459
+ });
29460
+ }
29461
+ return options;
29462
+ }
29309
29463
  function toBookingFormData(state) {
29310
29464
  return {
29311
29465
  ...state.fieldValues,
@@ -30675,7 +30829,17 @@ var init_useAppointmentCheckoutVerification = __esm({
30675
30829
  });
30676
30830
 
30677
30831
  // ../blocks/src/system/runtime/components/booking/DatePicker.tsx
30678
- import { jsx as jsx61, jsxs as jsxs44 } from "react/jsx-runtime";
30832
+ import React6 from "react";
30833
+ import { jsx as jsx64, jsxs as jsxs45 } from "react/jsx-runtime";
30834
+ function DateFieldLabel({
30835
+ labelId,
30836
+ required
30837
+ }) {
30838
+ return /* @__PURE__ */ jsxs45("span", { className: "form-label", id: labelId, children: [
30839
+ "Select Date",
30840
+ required && /* @__PURE__ */ jsx64("span", { className: "required-marker", children: "*" })
30841
+ ] });
30842
+ }
30679
30843
  var DatePicker;
30680
30844
  var init_DatePicker = __esm({
30681
30845
  "../blocks/src/system/runtime/components/booking/DatePicker.tsx"() {
@@ -30687,67 +30851,91 @@ var init_DatePicker = __esm({
30687
30851
  onChange,
30688
30852
  dateOptions,
30689
30853
  required = true,
30854
+ ariaDescribedBy,
30855
+ ariaInvalid,
30690
30856
  isLoading = false,
30691
30857
  isEmpty = false,
30692
30858
  hasMore = false,
30693
30859
  onLoadMore
30694
30860
  }) => {
30861
+ const generatedId = React6.useId();
30862
+ const labelId = `${generatedId}-date-label`;
30863
+ const gridRef = React6.useRef(null);
30864
+ const previousCountRef = React6.useRef(dateOptions.length);
30865
+ React6.useEffect(() => {
30866
+ const previousCount = previousCountRef.current;
30867
+ previousCountRef.current = dateOptions.length;
30868
+ if (previousCount === 0 || dateOptions.length <= previousCount) return;
30869
+ const pills = gridRef.current?.querySelectorAll(
30870
+ "button[aria-pressed]"
30871
+ );
30872
+ pills?.[previousCount]?.focus();
30873
+ }, [dateOptions.length]);
30695
30874
  if (isLoading) {
30696
- return /* @__PURE__ */ jsxs44("div", { className: "ab-stack--sm", children: [
30697
- /* @__PURE__ */ jsxs44("label", { className: "ab-label", children: [
30698
- "Select Date",
30699
- required && /* @__PURE__ */ jsx61("span", { className: "ab-required", children: "*" })
30700
- ] }),
30701
- /* @__PURE__ */ jsx61("div", { className: "ab-skeleton" }),
30702
- /* @__PURE__ */ jsx61("p", { className: "ab-text ab-text--muted ab-text--sm", children: "Loading available dates..." })
30875
+ return /* @__PURE__ */ jsxs45("div", { className: "rb-reg-stack rb-reg-stack--sm", children: [
30876
+ /* @__PURE__ */ jsx64(DateFieldLabel, { labelId, required }),
30877
+ /* @__PURE__ */ jsx64("div", { className: "rb-shell-block" }),
30878
+ /* @__PURE__ */ jsx64("p", { className: "ab-text ab-text--sm rb-on-surface--muted", children: "Loading available dates..." })
30703
30879
  ] });
30704
30880
  }
30705
30881
  if (isEmpty) {
30706
- return /* @__PURE__ */ jsxs44("div", { className: "ab-stack--sm", children: [
30707
- /* @__PURE__ */ jsxs44("label", { className: "ab-label", children: [
30708
- "Select Date",
30709
- required && /* @__PURE__ */ jsx61("span", { className: "ab-required", children: "*" })
30710
- ] }),
30711
- /* @__PURE__ */ jsx61(FeedbackMessage, { tone: "warning", className: "ab-alert ab-alert--warning", role: "status", children: /* @__PURE__ */ jsxs44("p", { className: "ab-text", children: [
30882
+ return /* @__PURE__ */ jsxs45("div", { className: "rb-reg-stack rb-reg-stack--sm", children: [
30883
+ /* @__PURE__ */ jsx64(DateFieldLabel, { labelId, required }),
30884
+ /* @__PURE__ */ jsx64(FeedbackMessage, { tone: "warning", className: "alert alert-warning", role: "status", children: /* @__PURE__ */ jsxs45("p", { className: "ab-text", children: [
30712
30885
  "No available dates in this period.",
30713
- hasMore && onLoadMore && /* @__PURE__ */ jsx61(
30886
+ hasMore && onLoadMore && /* @__PURE__ */ jsx64(
30714
30887
  "button",
30715
30888
  {
30716
30889
  type: "button",
30717
30890
  onClick: onLoadMore,
30718
- className: "ab-link",
30891
+ className: "ab-link rb-ml-2",
30719
30892
  children: "Check later dates"
30720
30893
  }
30721
30894
  )
30722
30895
  ] }) })
30723
30896
  ] });
30724
30897
  }
30725
- return /* @__PURE__ */ jsxs44("div", { className: "ab-stack--sm", children: [
30726
- /* @__PURE__ */ jsxs44("label", { htmlFor: "booking-date", className: "ab-label", children: [
30727
- "Select Date",
30728
- required && /* @__PURE__ */ jsx61("span", { className: "ab-required", children: "*" })
30729
- ] }),
30730
- /* @__PURE__ */ jsxs44(
30731
- "select",
30898
+ return /* @__PURE__ */ jsxs45("div", { className: "rb-reg-stack rb-reg-stack--sm", children: [
30899
+ /* @__PURE__ */ jsx64(DateFieldLabel, { labelId, required }),
30900
+ /* @__PURE__ */ jsx64(
30901
+ "div",
30732
30902
  {
30733
- id: "booking-date",
30734
- value,
30735
- onChange: (e) => onChange(e.target.value),
30736
- required,
30737
- className: "ab-select",
30738
- children: [
30739
- /* @__PURE__ */ jsx61("option", { value: "", children: "Choose a date..." }),
30740
- dateOptions.map((date) => /* @__PURE__ */ jsx61("option", { value: date, children: formatDate2(date) }, date))
30741
- ]
30903
+ ref: gridRef,
30904
+ role: "group",
30905
+ "aria-labelledby": labelId,
30906
+ "aria-describedby": ariaDescribedBy,
30907
+ "aria-invalid": ariaInvalid || void 0,
30908
+ "aria-required": required || void 0,
30909
+ className: "ab-pill-grid",
30910
+ children: dateOptions.map((date) => {
30911
+ const isSelected = value === date;
30912
+ const parts = formatDatePillParts(date);
30913
+ return /* @__PURE__ */ jsxs45(
30914
+ "button",
30915
+ {
30916
+ type: "button",
30917
+ onClick: () => onChange(isSelected ? "" : date),
30918
+ "aria-pressed": isSelected,
30919
+ "aria-label": formatDate2(date),
30920
+ className: `rb-option-card ab-date-pill${isSelected ? " rb-option-card--selected" : ""}`,
30921
+ children: [
30922
+ /* @__PURE__ */ jsx64("span", { className: "ab-pill-caption", "aria-hidden": "true", children: parts.weekday }),
30923
+ /* @__PURE__ */ jsx64("span", { className: "ab-pill-value", "aria-hidden": "true", children: parts.day }),
30924
+ /* @__PURE__ */ jsx64("span", { className: "ab-pill-caption", "aria-hidden": "true", children: parts.month })
30925
+ ]
30926
+ },
30927
+ date
30928
+ );
30929
+ })
30742
30930
  }
30743
30931
  ),
30744
- hasMore && onLoadMore && /* @__PURE__ */ jsx61(
30932
+ hasMore && onLoadMore && /* @__PURE__ */ jsx64(
30745
30933
  "button",
30746
30934
  {
30747
30935
  type: "button",
30748
30936
  onClick: onLoadMore,
30749
30937
  className: "ab-link",
30750
- children: "Load more dates \u2192"
30938
+ children: "More dates \u2192"
30751
30939
  }
30752
30940
  )
30753
30941
  ] });
@@ -30756,7 +30944,8 @@ var init_DatePicker = __esm({
30756
30944
  });
30757
30945
 
30758
30946
  // ../blocks/src/system/runtime/components/booking/TimeSlotSelector.tsx
30759
- import { jsx as jsx62, jsxs as jsxs45 } from "react/jsx-runtime";
30947
+ import React7 from "react";
30948
+ import { jsx as jsx65, jsxs as jsxs46 } from "react/jsx-runtime";
30760
30949
  var TimeSlotSelector;
30761
30950
  var init_TimeSlotSelector = __esm({
30762
30951
  "../blocks/src/system/runtime/components/booking/TimeSlotSelector.tsx"() {
@@ -30768,25 +30957,52 @@ var init_TimeSlotSelector = __esm({
30768
30957
  onChange,
30769
30958
  slots,
30770
30959
  isLoading,
30771
- required = true
30960
+ timezone,
30961
+ required = true,
30962
+ ariaDescribedBy,
30963
+ ariaInvalid
30772
30964
  }) => {
30773
- return /* @__PURE__ */ jsxs45("div", { className: "ab-stack--sm", children: [
30774
- /* @__PURE__ */ jsxs45("label", { htmlFor: "booking-slot", className: "ab-label", children: [
30965
+ const generatedId = React7.useId();
30966
+ const labelId = `${generatedId}-time-label`;
30967
+ const groupRef = React7.useRef(null);
30968
+ const hadSlotsRef = React7.useRef(false);
30969
+ React7.useEffect(() => {
30970
+ const hasSlots = !isLoading && slots.length > 0;
30971
+ if (hasSlots && !hadSlotsRef.current) {
30972
+ groupRef.current?.scrollIntoView({ block: "nearest", behavior: "smooth" });
30973
+ }
30974
+ hadSlotsRef.current = hasSlots;
30975
+ }, [isLoading, slots.length]);
30976
+ return /* @__PURE__ */ jsxs46("div", { className: "rb-reg-stack rb-reg-stack--sm", children: [
30977
+ /* @__PURE__ */ jsxs46("span", { className: "form-label", id: labelId, children: [
30775
30978
  "Select Time",
30776
- required && /* @__PURE__ */ jsx62("span", { className: "ab-required", children: "*" })
30979
+ required && /* @__PURE__ */ jsx65("span", { className: "required-marker", children: "*" })
30777
30980
  ] }),
30778
- isLoading ? /* @__PURE__ */ jsx62(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info ab-center", role: "status", children: "Loading available times..." }) : slots.length === 0 ? /* @__PURE__ */ jsx62(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info ab-center", role: "status", children: "No available times for this date" }) : /* @__PURE__ */ jsxs45(
30779
- "select",
30981
+ isLoading ? /* @__PURE__ */ jsx65("div", { className: "rb-shell-block" }) : slots.length === 0 ? /* @__PURE__ */ jsx65(FeedbackMessage, { tone: "info", className: "alert alert-info", role: "status", children: "No available times for this date" }) : /* @__PURE__ */ jsx65(
30982
+ "div",
30780
30983
  {
30781
- id: "booking-slot",
30782
- value,
30783
- onChange: (e) => onChange(e.target.value),
30784
- required,
30785
- className: "ab-select",
30786
- children: [
30787
- /* @__PURE__ */ jsx62("option", { value: "", children: "Choose a time..." }),
30788
- slots.map((slot) => /* @__PURE__ */ jsx62("option", { value: slot.startAt, children: formatTime2(slot.startAt) }, slot.startAt))
30789
- ]
30984
+ ref: groupRef,
30985
+ role: "group",
30986
+ "aria-labelledby": labelId,
30987
+ "aria-describedby": ariaDescribedBy,
30988
+ "aria-invalid": ariaInvalid || void 0,
30989
+ "aria-required": required || void 0,
30990
+ className: "ab-pill-grid",
30991
+ children: slots.map((slot) => {
30992
+ const isSelected = value === slot.key;
30993
+ return /* @__PURE__ */ jsx65(
30994
+ "button",
30995
+ {
30996
+ type: "button",
30997
+ onClick: () => onChange(isSelected ? "" : slot.key),
30998
+ "aria-pressed": isSelected,
30999
+ "aria-label": formatTime2(slot.startAt, timezone),
31000
+ className: `rb-option-card ab-time-pill${isSelected ? " rb-option-card--selected" : ""}`,
31001
+ children: formatTimeShort(slot.startAt, timezone)
31002
+ },
31003
+ slot.key
31004
+ );
31005
+ })
30790
31006
  }
30791
31007
  )
30792
31008
  ] });
@@ -30794,9 +31010,87 @@ var init_TimeSlotSelector = __esm({
30794
31010
  }
30795
31011
  });
30796
31012
 
31013
+ // ../blocks/src/system/runtime/shared/components/StepIndicator.tsx
31014
+ import { jsx as jsx66, jsxs as jsxs47 } from "react/jsx-runtime";
31015
+ function buildClassChannels(slot, classPrefix, emitSharedClasses) {
31016
+ const classes = [];
31017
+ if (emitSharedClasses) classes.push(`rb-${slot}`);
31018
+ if (classPrefix) classes.push(`${classPrefix}-${slot}`);
31019
+ return classes;
31020
+ }
31021
+ function StepIndicator({
31022
+ currentStep,
31023
+ totalSteps,
31024
+ stepLabels,
31025
+ classPrefix,
31026
+ emitSharedClasses
31027
+ }) {
31028
+ const slotClass = (slot, modifier) => {
31029
+ const base = buildClassChannels(slot, classPrefix, emitSharedClasses);
31030
+ if (!modifier) return base.join(" ");
31031
+ const modified = buildClassChannels(
31032
+ `${slot}--${modifier}`,
31033
+ classPrefix,
31034
+ emitSharedClasses
31035
+ );
31036
+ return [...base, ...modified].join(" ");
31037
+ };
31038
+ return /* @__PURE__ */ jsx66("nav", { "aria-label": "Registration progress", className: slotClass("steps-nav"), children: /* @__PURE__ */ jsx66("ol", { className: slotClass("steps"), children: Array.from({ length: totalSteps }, (_, i) => {
31039
+ const stepNum = i + 1;
31040
+ const isActive = stepNum === currentStep;
31041
+ const isComplete = stepNum < currentStep;
31042
+ return /* @__PURE__ */ jsxs47(
31043
+ "li",
31044
+ {
31045
+ className: slotClass("step"),
31046
+ "aria-current": isActive ? "step" : void 0,
31047
+ children: [
31048
+ /* @__PURE__ */ jsx66(
31049
+ "div",
31050
+ {
31051
+ className: slotClass(
31052
+ "step-circle",
31053
+ isActive ? "active" : isComplete ? "completed" : void 0
31054
+ ),
31055
+ children: isComplete ? /* @__PURE__ */ jsx66(CheckIcon2, { className: slotClass("step-check"), strokeWidth: 3 }) : stepNum
31056
+ }
31057
+ ),
31058
+ stepLabels?.[i] && /* @__PURE__ */ jsx66(
31059
+ "span",
31060
+ {
31061
+ className: slotClass(
31062
+ "step-label",
31063
+ isActive ? "active" : void 0
31064
+ ),
31065
+ children: stepLabels[i]
31066
+ }
31067
+ ),
31068
+ stepNum < totalSteps && /* @__PURE__ */ jsx66(
31069
+ "div",
31070
+ {
31071
+ className: slotClass(
31072
+ "step-connector",
31073
+ isComplete ? "completed" : void 0
31074
+ ),
31075
+ "aria-hidden": "true"
31076
+ }
31077
+ )
31078
+ ]
31079
+ },
31080
+ i
31081
+ );
31082
+ }) }) });
31083
+ }
31084
+ var init_StepIndicator = __esm({
31085
+ "../blocks/src/system/runtime/shared/components/StepIndicator.tsx"() {
31086
+ "use strict";
31087
+ init_CheckIcon();
31088
+ }
31089
+ });
31090
+
30797
31091
  // ../blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.tsx
30798
31092
  import { useId } from "react";
30799
- import { jsx as jsx63, jsxs as jsxs46 } from "react/jsx-runtime";
31093
+ import { jsx as jsx67, jsxs as jsxs48 } from "react/jsx-runtime";
30800
31094
  function getDiscountCodeDisclosureClasses(surface) {
30801
31095
  if (surface === "theme-form") return themeFormClasses;
30802
31096
  return BLOCK_DISCOUNT_CODE_DISCLOSURE_CLASSES[surface];
@@ -30833,10 +31127,10 @@ function DiscountCodeDisclosure({
30833
31127
  onApply();
30834
31128
  };
30835
31129
  const feedbackClassName = feedback ? `${classes.feedback} status-${feedback.tone}` : classes.feedback;
30836
- return /* @__PURE__ */ jsx63("div", { className: classes.root, children: !isOpen ? /* @__PURE__ */ jsx63("button", { type: "button", className: classes.toggle, onClick: onOpen, children: toggleLabel }) : /* @__PURE__ */ jsxs46("div", { className: classes.form, children: [
30837
- /* @__PURE__ */ jsx63("label", { htmlFor: inputId, className: classes.label, children: label }),
30838
- /* @__PURE__ */ jsxs46("div", { className: classes.row, children: [
30839
- /* @__PURE__ */ jsx63(
31130
+ return /* @__PURE__ */ jsx67("div", { className: classes.root, children: !isOpen ? /* @__PURE__ */ jsx67("button", { type: "button", className: classes.toggle, onClick: onOpen, children: toggleLabel }) : /* @__PURE__ */ jsxs48("div", { className: classes.form, children: [
31131
+ /* @__PURE__ */ jsx67("label", { htmlFor: inputId, className: classes.label, children: label }),
31132
+ /* @__PURE__ */ jsxs48("div", { className: classes.row, children: [
31133
+ /* @__PURE__ */ jsx67(
30840
31134
  "input",
30841
31135
  {
30842
31136
  id: inputId,
@@ -30849,7 +31143,7 @@ function DiscountCodeDisclosure({
30849
31143
  disabled: disabled || isApplying
30850
31144
  }
30851
31145
  ),
30852
- onApply ? /* @__PURE__ */ jsx63(
31146
+ onApply ? /* @__PURE__ */ jsx67(
30853
31147
  "button",
30854
31148
  {
30855
31149
  type: "button",
@@ -30859,7 +31153,7 @@ function DiscountCodeDisclosure({
30859
31153
  children: isApplying ? "Applying..." : applyLabel
30860
31154
  }
30861
31155
  ) : null,
30862
- /* @__PURE__ */ jsx63(
31156
+ /* @__PURE__ */ jsx67(
30863
31157
  "button",
30864
31158
  {
30865
31159
  type: "button",
@@ -30870,8 +31164,8 @@ function DiscountCodeDisclosure({
30870
31164
  }
30871
31165
  )
30872
31166
  ] }),
30873
- /* @__PURE__ */ jsx63("p", { className: classes.hint, children: hint }),
30874
- feedback ? /* @__PURE__ */ jsx63(
31167
+ /* @__PURE__ */ jsx67("p", { className: classes.hint, children: hint }),
31168
+ feedback ? /* @__PURE__ */ jsx67(
30875
31169
  "p",
30876
31170
  {
30877
31171
  className: feedbackClassName,
@@ -30929,7 +31223,7 @@ var init_DiscountCodeDisclosure = __esm({
30929
31223
  });
30930
31224
 
30931
31225
  // ../blocks/src/system/runtime/shared/components/FieldValidationMessage.tsx
30932
- import { jsx as jsx64 } from "react/jsx-runtime";
31226
+ import { jsx as jsx68 } from "react/jsx-runtime";
30933
31227
  function getFieldValidationControlProps({
30934
31228
  message,
30935
31229
  messageId,
@@ -30948,7 +31242,7 @@ function FieldValidationMessage({
30948
31242
  className,
30949
31243
  live = "assertive"
30950
31244
  }) {
30951
- return /* @__PURE__ */ jsx64(
31245
+ return /* @__PURE__ */ jsx68(
30952
31246
  "p",
30953
31247
  {
30954
31248
  id,
@@ -30968,7 +31262,11 @@ var init_FieldValidationMessage = __esm({
30968
31262
  });
30969
31263
 
30970
31264
  // ../blocks/src/system/runtime/nodes/booking-form.default-ui.tsx
30971
- import { Fragment as Fragment9, jsx as jsx65, jsxs as jsxs47 } from "react/jsx-runtime";
31265
+ import React8 from "react";
31266
+ import { Fragment as Fragment8, jsx as jsx69, jsxs as jsxs49 } from "react/jsx-runtime";
31267
+ function optionCardClassName(isSelected) {
31268
+ return `rb-option-card${isSelected ? " rb-option-card--selected" : ""}`;
31269
+ }
30972
31270
  function formatBookingAmount(amount, currency) {
30973
31271
  return formatCurrencyAmount(amount, currency, { decimals: "auto" });
30974
31272
  }
@@ -30977,6 +31275,7 @@ function HeadlessBookingDefaultForm({
30977
31275
  onSubmit
30978
31276
  }) {
30979
31277
  const currentStep = booking.currentStep;
31278
+ const errorSummaryId = React8.useId();
30980
31279
  const currentStepIndex = currentStep?.visibleIndex ?? 0;
30981
31280
  const isFirstStep = currentStepIndex === 0;
30982
31281
  const isLastStep = currentStepIndex === booking.steps.length - 1;
@@ -30989,20 +31288,34 @@ function HeadlessBookingDefaultForm({
30989
31288
  }
30990
31289
  };
30991
31290
  if (!currentStep) {
30992
- return /* @__PURE__ */ jsx65("div", { className: "rb-text-center rb-py-12", children: /* @__PURE__ */ jsx65("p", { className: "status-muted", children: "No steps available" }) });
31291
+ return /* @__PURE__ */ jsx69("div", { className: "rb-text-center rb-py-12", children: /* @__PURE__ */ jsx69("p", { className: "status-muted", children: "No steps available" }) });
30993
31292
  }
30994
- return /* @__PURE__ */ jsxs47("div", { className: "multi-step-form", children: [
30995
- /* @__PURE__ */ jsx65("div", { className: "rb-mb-8", children: /* @__PURE__ */ jsx65(
30996
- DefaultBookingProgress,
31293
+ return /* @__PURE__ */ jsxs49("div", { className: "multi-step-form", children: [
31294
+ booking.steps.length > 1 ? /* @__PURE__ */ jsx69(
31295
+ StepIndicator,
30997
31296
  {
30998
- steps: booking.steps,
30999
- currentIndex: currentStepIndex
31297
+ currentStep: currentStepIndex + 1,
31298
+ totalSteps: booking.steps.length,
31299
+ stepLabels: booking.steps.map((step) => step.label),
31300
+ emitSharedClasses: true
31301
+ }
31302
+ ) : null,
31303
+ /* @__PURE__ */ jsx69("div", { className: "step-content", children: /* @__PURE__ */ jsx69(
31304
+ DefaultBookingStepContent,
31305
+ {
31306
+ booking,
31307
+ errorSummaryId
31000
31308
  }
31001
31309
  ) }),
31002
- /* @__PURE__ */ jsx65("div", { className: "step-content", children: /* @__PURE__ */ jsx65(DefaultBookingStepContent, { booking }) }),
31003
- /* @__PURE__ */ jsx65(DefaultBookingErrorSummary, { errors: currentStep.errors }),
31004
- /* @__PURE__ */ jsxs47("div", { className: "rb-flex rb-gap-3 rb-mt-8", children: [
31005
- !isFirstStep ? /* @__PURE__ */ jsx65(
31310
+ /* @__PURE__ */ jsx69(
31311
+ DefaultBookingErrorSummary,
31312
+ {
31313
+ errors: currentStep.errors,
31314
+ id: errorSummaryId
31315
+ }
31316
+ ),
31317
+ /* @__PURE__ */ jsxs49("div", { className: "rb-wizard-actions", children: [
31318
+ !isFirstStep ? /* @__PURE__ */ jsx69(
31006
31319
  "button",
31007
31320
  {
31008
31321
  type: "button",
@@ -31011,7 +31324,7 @@ function HeadlessBookingDefaultForm({
31011
31324
  children: "Back"
31012
31325
  }
31013
31326
  ) : null,
31014
- /* @__PURE__ */ jsx65(
31327
+ /* @__PURE__ */ jsx69(
31015
31328
  "button",
31016
31329
  {
31017
31330
  type: "button",
@@ -31019,13 +31332,9 @@ function HeadlessBookingDefaultForm({
31019
31332
  void handlePrimaryAction();
31020
31333
  },
31021
31334
  disabled: isSubmitting,
31022
- className: themeButtonClassName({
31023
- variant: "primary",
31024
- size: "md",
31025
- extraClassName: "rb-flex-1"
31026
- }),
31027
- children: isSubmitting ? /* @__PURE__ */ jsxs47(Fragment9, { children: [
31028
- /* @__PURE__ */ jsx65(
31335
+ className: themeButtonClassName({ variant: "primary", size: "md" }),
31336
+ children: isSubmitting ? /* @__PURE__ */ jsxs49(Fragment8, { children: [
31337
+ /* @__PURE__ */ jsx69(
31029
31338
  SpinnerNode,
31030
31339
  {
31031
31340
  size: "sm",
@@ -31039,61 +31348,32 @@ function HeadlessBookingDefaultForm({
31039
31348
  }
31040
31349
  )
31041
31350
  ] }),
31042
- /* @__PURE__ */ jsx65(DefaultBookingDiscount, { booking }),
31043
- /* @__PURE__ */ jsx65(DefaultBookingFeedback, { booking }),
31044
- /* @__PURE__ */ jsx65(DefaultBookingAltcha, { booking })
31351
+ /* @__PURE__ */ jsx69(DefaultBookingDiscount, { booking }),
31352
+ /* @__PURE__ */ jsx69(DefaultBookingFeedback, { booking }),
31353
+ /* @__PURE__ */ jsx69(DefaultBookingAltcha, { booking })
31045
31354
  ] });
31046
31355
  }
31047
- function DefaultBookingProgress({
31048
- steps,
31049
- currentIndex
31050
- }) {
31051
- return /* @__PURE__ */ jsx65("div", { className: "rb-flex rb-items-center rb-justify-between", children: steps.map((step, index) => {
31052
- const isActive = index === currentIndex;
31053
- const isCompleted = index < currentIndex;
31054
- const isLast = index === steps.length - 1;
31055
- return /* @__PURE__ */ jsxs47("div", { className: "rb-flex rb-items-center rb-flex-1", children: [
31056
- /* @__PURE__ */ jsxs47("div", { className: "rb-flex rb-items-center rb-gap-2 rb-cursor-default", children: [
31057
- /* @__PURE__ */ jsx65(
31058
- "div",
31059
- {
31060
- className: `
31061
- step-circle transition-theme-standard
31062
- ${isActive ? "step-circle-active" : ""}
31063
- ${isCompleted ? "step-circle-complete" : ""}
31064
- `,
31065
- children: isCompleted ? "\u2713" : index + 1
31066
- }
31067
- ),
31068
- /* @__PURE__ */ jsx65(
31069
- "span",
31070
- {
31071
- className: `
31072
- rb-caption rb-hidden rb-sm-inline
31073
- ${isCompleted || !isActive ? "status-muted" : ""}
31074
- `,
31075
- children: step.label
31076
- }
31077
- )
31078
- ] }),
31079
- !isLast ? /* @__PURE__ */ jsx65("div", { className: "step-connector rb-ml-2 rb-mr-2 rb-hidden rb-sm-block" }) : null
31080
- ] }, step.id);
31081
- }) });
31082
- }
31083
31356
  function DefaultBookingStepContent({
31084
- booking
31357
+ booking,
31358
+ errorSummaryId
31085
31359
  }) {
31086
31360
  const stepId = booking.currentStep?.id;
31087
31361
  if (!stepId) return null;
31088
31362
  switch (stepId) {
31089
31363
  case "service-selection":
31090
- return /* @__PURE__ */ jsx65(DefaultServiceSelectionStep, { booking });
31364
+ return /* @__PURE__ */ jsx69(DefaultServiceSelectionStep, { booking });
31091
31365
  case "datetime-selection":
31092
- return /* @__PURE__ */ jsx65(DefaultDateTimeSelectionStep, { booking });
31366
+ return /* @__PURE__ */ jsx69(
31367
+ DefaultDateTimeSelectionStep,
31368
+ {
31369
+ booking,
31370
+ errorSummaryId
31371
+ }
31372
+ );
31093
31373
  case "payment-selection":
31094
- return /* @__PURE__ */ jsx65(HeadlessBookingPaymentSelectionStep, { booking });
31374
+ return /* @__PURE__ */ jsx69(HeadlessBookingPaymentSelectionStep, { booking });
31095
31375
  case "custom-fields":
31096
- return /* @__PURE__ */ jsx65(DefaultDynamicFields, { fields: booking.fields.items, booking });
31376
+ return /* @__PURE__ */ jsx69(DefaultDynamicFields, { fields: booking.fields.items, booking });
31097
31377
  default:
31098
31378
  return assertNever7(stepId);
31099
31379
  }
@@ -31108,74 +31388,77 @@ function DefaultServiceSelectionStep({
31108
31388
  const showServiceSelect = booking.services.requiresSelection || services.length > 1;
31109
31389
  const showResourceSelect = booking.resources.requiresSelection || resources.length > 1;
31110
31390
  const allowAnyResource = !booking.resources.requiresSelection;
31111
- return /* @__PURE__ */ jsxs47("div", { className: "ab-stack", children: [
31112
- /* @__PURE__ */ jsxs47("div", { children: [
31113
- /* @__PURE__ */ jsx65("h2", { className: "ab-title", children: "Select Service" }),
31114
- /* @__PURE__ */ jsx65("p", { className: "ab-text ab-text--muted", children: "Choose the service you'd like to book" })
31391
+ return /* @__PURE__ */ jsxs49("div", { className: "rb-reg-stack", children: [
31392
+ /* @__PURE__ */ jsxs49("div", { children: [
31393
+ /* @__PURE__ */ jsx69("h2", { className: "ab-title", children: "Select Service" }),
31394
+ /* @__PURE__ */ jsx69("p", { className: "ab-text rb-on-surface--muted", children: "Choose the service you'd like to book" })
31115
31395
  ] }),
31116
- showServiceSelect ? /* @__PURE__ */ jsxs47("div", { className: "ab-stack--sm", children: [
31117
- /* @__PURE__ */ jsx65("label", { className: "ab-subtitle", children: "Service" }),
31118
- /* @__PURE__ */ jsx65("div", { className: "ab-grid", children: services.map((service) => {
31396
+ showServiceSelect ? /* @__PURE__ */ jsxs49("div", { className: "rb-reg-stack rb-reg-stack--sm", children: [
31397
+ /* @__PURE__ */ jsx69("span", { className: "ab-subtitle", children: "Service" }),
31398
+ /* @__PURE__ */ jsx69("div", { className: "rb-reg-grid", children: services.map((service) => {
31119
31399
  const isSelected = selectedServiceId === service.id;
31120
- return /* @__PURE__ */ jsx65(
31400
+ return /* @__PURE__ */ jsxs49(
31121
31401
  "button",
31122
31402
  {
31123
31403
  type: "button",
31124
31404
  onClick: () => booking.actions.selectService(service.id),
31125
- className: `ab-card ${isSelected ? "ab-card--selected" : ""}`,
31126
- children: /* @__PURE__ */ jsxs47("div", { className: "ab-row--between", children: [
31127
- /* @__PURE__ */ jsxs47("div", { children: [
31128
- /* @__PURE__ */ jsx65("div", { className: "ab-subtitle", children: service.title }),
31129
- service.description ? /* @__PURE__ */ jsx65("div", { className: "ab-text ab-text--muted", children: service.description }) : null,
31130
- service.durationMinutes ? /* @__PURE__ */ jsxs47("div", { className: "ab-text ab-text--muted", children: [
31405
+ className: optionCardClassName(isSelected),
31406
+ "aria-pressed": isSelected,
31407
+ children: [
31408
+ /* @__PURE__ */ jsxs49("div", { className: "rb-flex-1", children: [
31409
+ /* @__PURE__ */ jsx69("div", { className: "ab-subtitle", children: service.title }),
31410
+ service.description ? /* @__PURE__ */ jsx69("div", { className: "ab-text rb-on-surface--muted", children: service.description }) : null,
31411
+ service.durationMinutes ? /* @__PURE__ */ jsxs49("div", { className: "ab-text rb-on-surface--muted", children: [
31131
31412
  service.durationMinutes,
31132
31413
  " minutes"
31133
31414
  ] }) : null
31134
31415
  ] }),
31135
- isSelected ? /* @__PURE__ */ jsx65(SelectedCheck, {}) : null
31136
- ] })
31416
+ isSelected ? /* @__PURE__ */ jsx69(SelectedCheck, {}) : null
31417
+ ]
31137
31418
  },
31138
31419
  service.id
31139
31420
  );
31140
31421
  }) })
31141
31422
  ] }) : null,
31142
- booking.resources.state.tag === "loading" ? /* @__PURE__ */ jsxs47("div", { className: "ab-center", children: [
31143
- /* @__PURE__ */ jsx65(SpinnerNode, { size: "md", srLabel: "Loading practitioners" }),
31144
- /* @__PURE__ */ jsx65("p", { className: "ab-text ab-text--muted", children: "Loading practitioners..." })
31423
+ booking.resources.state.tag === "loading" ? /* @__PURE__ */ jsxs49("div", { className: "ab-center", children: [
31424
+ /* @__PURE__ */ jsx69(SpinnerNode, { size: "md", srLabel: "Loading practitioners" }),
31425
+ /* @__PURE__ */ jsx69("p", { className: "ab-text rb-on-surface--muted", children: "Loading practitioners..." })
31145
31426
  ] }) : null,
31146
- booking.resources.state.tag === "error" ? /* @__PURE__ */ jsx65(FeedbackMessage, { tone: "error", className: "ab-alert ab-alert--error", role: "alert", children: booking.resources.state.message }) : null,
31147
- showResourceSelect && booking.resources.state.tag === "loaded" && resources.length === 0 ? /* @__PURE__ */ jsx65(FeedbackMessage, { tone: "error", className: "ab-alert ab-alert--error", role: "alert", children: "No practitioners are available for this service right now." }) : null,
31148
- showResourceSelect && booking.resources.state.tag !== "loading" && (allowAnyResource || resources.length > 0) ? /* @__PURE__ */ jsxs47("div", { className: "ab-stack--sm", children: [
31149
- /* @__PURE__ */ jsxs47("label", { className: "ab-subtitle", children: [
31427
+ booking.resources.state.tag === "error" ? /* @__PURE__ */ jsx69(FeedbackMessage, { tone: "error", className: "alert alert-error", role: "alert", children: booking.resources.state.message }) : null,
31428
+ showResourceSelect && booking.resources.state.tag === "loaded" && resources.length === 0 ? /* @__PURE__ */ jsx69(FeedbackMessage, { tone: "error", className: "alert alert-error", role: "alert", children: "No practitioners are available for this service right now." }) : null,
31429
+ showResourceSelect && booking.resources.state.tag !== "loading" && (allowAnyResource || resources.length > 0) ? /* @__PURE__ */ jsxs49("div", { className: "rb-reg-stack rb-reg-stack--sm", children: [
31430
+ /* @__PURE__ */ jsxs49("span", { className: "ab-subtitle", children: [
31150
31431
  "Practitioner",
31151
31432
  booking.resources.requiresSelection ? "" : " (Optional)"
31152
31433
  ] }),
31153
- /* @__PURE__ */ jsx65("p", { className: "ab-text ab-text--muted", children: allowAnyResource ? 'Choose a specific practitioner or select "Any Available"' : "Choose the practitioner you'd like to book" }),
31154
- /* @__PURE__ */ jsxs47("div", { className: "ab-grid", children: [
31155
- allowAnyResource ? /* @__PURE__ */ jsx65(
31434
+ /* @__PURE__ */ jsx69("p", { className: "ab-text rb-on-surface--muted", children: allowAnyResource ? 'Choose a specific practitioner or select "Any Available"' : "Choose the practitioner you'd like to book" }),
31435
+ /* @__PURE__ */ jsxs49("div", { className: "rb-reg-grid", children: [
31436
+ allowAnyResource ? /* @__PURE__ */ jsxs49(
31156
31437
  "button",
31157
31438
  {
31158
31439
  type: "button",
31159
31440
  onClick: () => booking.actions.selectResource(null),
31160
- className: `ab-card ${!selectedResourceId ? "ab-card--selected" : ""}`,
31161
- children: /* @__PURE__ */ jsxs47("div", { className: "ab-row--between", children: [
31162
- /* @__PURE__ */ jsx65("div", { className: "ab-subtitle", children: "Any Available" }),
31163
- !selectedResourceId ? /* @__PURE__ */ jsx65(SelectedCheck, {}) : null
31164
- ] })
31441
+ className: optionCardClassName(!selectedResourceId),
31442
+ "aria-pressed": !selectedResourceId,
31443
+ children: [
31444
+ /* @__PURE__ */ jsx69("div", { className: "rb-flex-1 ab-subtitle", children: "Any Available" }),
31445
+ !selectedResourceId ? /* @__PURE__ */ jsx69(SelectedCheck, {}) : null
31446
+ ]
31165
31447
  }
31166
31448
  ) : null,
31167
31449
  resources.map((resource) => {
31168
31450
  const isSelected = selectedResourceId === resource.id;
31169
- return /* @__PURE__ */ jsx65(
31451
+ return /* @__PURE__ */ jsxs49(
31170
31452
  "button",
31171
31453
  {
31172
31454
  type: "button",
31173
31455
  onClick: () => booking.actions.selectResource(resource.id),
31174
- className: `ab-card ${isSelected ? "ab-card--selected" : ""}`,
31175
- children: /* @__PURE__ */ jsxs47("div", { className: "ab-row--between", children: [
31176
- /* @__PURE__ */ jsx65("div", { className: "ab-subtitle", children: resource.label }),
31177
- isSelected ? /* @__PURE__ */ jsx65(SelectedCheck, {}) : null
31178
- ] })
31456
+ className: optionCardClassName(isSelected),
31457
+ "aria-pressed": isSelected,
31458
+ children: [
31459
+ /* @__PURE__ */ jsx69("div", { className: "rb-flex-1 ab-subtitle", children: resource.label }),
31460
+ isSelected ? /* @__PURE__ */ jsx69(SelectedCheck, {}) : null
31461
+ ]
31179
31462
  },
31180
31463
  resource.id
31181
31464
  );
@@ -31185,28 +31468,31 @@ function DefaultServiceSelectionStep({
31185
31468
  ] });
31186
31469
  }
31187
31470
  function DefaultDateTimeSelectionStep({
31188
- booking
31471
+ booking,
31472
+ errorSummaryId
31189
31473
  }) {
31190
31474
  const selectedDate = booking.availability.selectedDate ?? "";
31191
- const selectedSlotStart = booking.availability.selectedSlot?.startAt ?? "";
31475
+ const selectedSlotKey = booking.availability.selectedSlot?.key ?? "";
31192
31476
  const singleService = booking.services.items.length === 1 ? booking.services.items[0] : void 0;
31193
- const slots = collapseHeadlessSlotsForDisplay({
31477
+ const slots = deriveBookingSlotDisplayOptions({
31194
31478
  slots: booking.availability.slots,
31195
31479
  hasSelectedResource: Boolean(booking.resources.selectedResourceId)
31196
31480
  });
31197
31481
  const error = booking.availability.datesState.tag === "error" ? booking.availability.datesState.message : booking.availability.slotsState.tag === "error" ? booking.availability.slotsState.message : null;
31198
- return /* @__PURE__ */ jsxs47("div", { className: "ab-stack", children: [
31199
- singleService ? /* @__PURE__ */ jsxs47("div", { className: "ab-info-box", children: [
31200
- /* @__PURE__ */ jsx65("h3", { className: "ab-subtitle", children: singleService.title }),
31201
- singleService.description ? /* @__PURE__ */ jsx65("p", { className: "ab-text ab-text--muted", children: singleService.description }) : null,
31202
- singleService.durationMinutes ? /* @__PURE__ */ jsxs47("p", { className: "ab-text ab-text--muted", children: [
31482
+ const hasValidationError = Boolean(booking.currentStep?.errors.formError);
31483
+ const validationDescribedBy = hasValidationError ? errorSummaryId : void 0;
31484
+ return /* @__PURE__ */ jsxs49("div", { className: "rb-reg-stack", children: [
31485
+ singleService ? /* @__PURE__ */ jsxs49("div", { className: "rb-reg-summary", children: [
31486
+ /* @__PURE__ */ jsx69("h3", { className: "ab-subtitle", children: singleService.title }),
31487
+ singleService.description ? /* @__PURE__ */ jsx69("p", { className: "ab-text rb-on-surface--muted", children: singleService.description }) : null,
31488
+ singleService.durationMinutes ? /* @__PURE__ */ jsxs49("p", { className: "ab-text rb-on-surface--muted", children: [
31203
31489
  "Duration: ",
31204
31490
  singleService.durationMinutes,
31205
31491
  " minutes"
31206
31492
  ] }) : null
31207
31493
  ] }) : null,
31208
- error ? /* @__PURE__ */ jsx65(FeedbackMessage, { tone: "error", className: "ab-alert ab-alert--error", role: "alert", children: error }) : null,
31209
- /* @__PURE__ */ jsx65(
31494
+ error ? /* @__PURE__ */ jsx69(FeedbackMessage, { tone: "error", className: "alert alert-error", role: "alert", children: error }) : null,
31495
+ /* @__PURE__ */ jsx69(
31210
31496
  DatePicker,
31211
31497
  {
31212
31498
  value: selectedDate,
@@ -31214,23 +31500,26 @@ function DefaultDateTimeSelectionStep({
31214
31500
  dateOptions: [...booking.availability.availableDates],
31215
31501
  isLoading: booking.availability.datesState.tag === "loading",
31216
31502
  isEmpty: booking.availability.datesState.tag !== "loading" && booking.availability.availableDates.length === 0,
31503
+ ariaDescribedBy: validationDescribedBy,
31504
+ ariaInvalid: hasValidationError,
31217
31505
  hasMore: booking.availability.hasMoreDates,
31218
31506
  onLoadMore: booking.availability.loadMoreDates
31219
31507
  }
31220
31508
  ),
31221
- selectedDate ? /* @__PURE__ */ jsx65(
31509
+ selectedDate ? /* @__PURE__ */ jsx69(
31222
31510
  TimeSlotSelector,
31223
31511
  {
31224
- value: selectedSlotStart,
31225
- onChange: (slotStartTime) => {
31512
+ value: selectedSlotKey,
31513
+ onChange: (slotKey) => {
31226
31514
  booking.actions.selectSlot(
31227
- booking.availability.slots.find(
31228
- (slot) => slot.startAt === slotStartTime
31229
- ) ?? null
31515
+ slots.find((slot) => slot.key === slotKey)?.slot ?? null
31230
31516
  );
31231
31517
  },
31232
31518
  slots,
31233
- isLoading: booking.availability.slotsState.tag === "loading"
31519
+ isLoading: booking.availability.slotsState.tag === "loading",
31520
+ timezone: booking.availability.timezone,
31521
+ ariaDescribedBy: validationDescribedBy,
31522
+ ariaInvalid: hasValidationError
31234
31523
  }
31235
31524
  ) : null
31236
31525
  ] });
@@ -31241,33 +31530,33 @@ function HeadlessBookingPaymentSelectionStep({
31241
31530
  const service = booking.services.selected;
31242
31531
  const viewModel = booking.payment.selection;
31243
31532
  if (booking.payment.kind === "unsupported") {
31244
- return /* @__PURE__ */ jsx65(FeedbackMessage, { tone: "error", className: "ab-alert ab-alert--error", role: "alert", children: booking.payment.errorMessage });
31533
+ return /* @__PURE__ */ jsx69(FeedbackMessage, { tone: "error", className: "alert alert-error", role: "alert", children: booking.payment.errorMessage });
31245
31534
  }
31246
31535
  if (!service || !viewModel) {
31247
- return /* @__PURE__ */ jsx65(FeedbackMessage, { tone: "error", className: "ab-alert ab-alert--error", role: "alert", children: "Payment options are unavailable for this service right now." });
31536
+ return /* @__PURE__ */ jsx69(FeedbackMessage, { tone: "error", className: "alert alert-error", role: "alert", children: "Payment options are unavailable for this service right now." });
31248
31537
  }
31249
31538
  const packageOptions = booking.payment.appointmentPackages.items;
31250
31539
  const hasPackageOptions = packageOptions.length > 0;
31251
31540
  const slidingScale = booking.payment.slidingScale;
31252
- return /* @__PURE__ */ jsxs47("div", { className: "ab-stack", children: [
31253
- /* @__PURE__ */ jsxs47("div", { className: "ab-info-box", children: [
31254
- /* @__PURE__ */ jsx65("h3", { className: "ab-subtitle", children: viewModel.sectionTitle }),
31255
- /* @__PURE__ */ jsx65("p", { className: "ab-text ab-text--muted", children: service.title })
31541
+ return /* @__PURE__ */ jsxs49("div", { className: "rb-reg-stack", children: [
31542
+ /* @__PURE__ */ jsxs49("div", { className: "rb-reg-summary", children: [
31543
+ /* @__PURE__ */ jsx69("h3", { className: "ab-subtitle", children: viewModel.sectionTitle }),
31544
+ /* @__PURE__ */ jsx69("p", { className: "ab-text rb-on-surface--muted", children: service.title })
31256
31545
  ] }),
31257
- booking.payment.appointmentPackages.state.tag === "loading" ? /* @__PURE__ */ jsx65(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info", role: "status", children: "Checking package credits..." }) : null,
31258
- booking.payment.appointmentPackages.state.tag === "error" ? /* @__PURE__ */ jsxs47(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info", role: "status", children: [
31546
+ booking.payment.appointmentPackages.state.tag === "loading" ? /* @__PURE__ */ jsx69(FeedbackMessage, { tone: "info", className: "alert alert-info", role: "status", children: "Checking package credits..." }) : null,
31547
+ booking.payment.appointmentPackages.state.tag === "error" ? /* @__PURE__ */ jsxs49(FeedbackMessage, { tone: "info", className: "alert alert-info", role: "status", children: [
31259
31548
  booking.payment.appointmentPackages.state.message,
31260
31549
  " You can continue with the normal payment option."
31261
31550
  ] }) : null,
31262
- slidingScale ? /* @__PURE__ */ jsxs47("div", { className: "rb-space-y-2", children: [
31263
- /* @__PURE__ */ jsx65("label", { htmlFor: "appointment-sliding-amount", className: "form-label", children: "Choose your price" }),
31264
- /* @__PURE__ */ jsxs47("p", { className: "rb-caption status-muted", children: [
31551
+ slidingScale ? /* @__PURE__ */ jsxs49("div", { className: "rb-space-y-2", children: [
31552
+ /* @__PURE__ */ jsx69("label", { htmlFor: "appointment-sliding-amount", className: "form-label", children: "Choose your price" }),
31553
+ /* @__PURE__ */ jsxs49("p", { className: "rb-caption status-muted", children: [
31265
31554
  formatBookingAmount(slidingScale.minAmount, slidingScale.currency),
31266
31555
  " to ",
31267
31556
  formatBookingAmount(slidingScale.maxAmount, slidingScale.currency),
31268
31557
  slidingScale.suggestedAmount !== null ? `, suggested ${formatBookingAmount(slidingScale.suggestedAmount, slidingScale.currency)}` : ""
31269
31558
  ] }),
31270
- /* @__PURE__ */ jsx65(
31559
+ /* @__PURE__ */ jsx69(
31271
31560
  "input",
31272
31561
  {
31273
31562
  id: "appointment-sliding-amount",
@@ -31281,47 +31570,47 @@ function HeadlessBookingPaymentSelectionStep({
31281
31570
  }
31282
31571
  )
31283
31572
  ] }) : null,
31284
- /* @__PURE__ */ jsxs47("div", { className: "ab-stack", role: "list", "aria-label": "Payment options", children: [
31285
- packageOptions.map((appointmentPackage) => {
31286
- const isSelected = booking.payment.selectedAppointmentPackageId === appointmentPackage.customerPassId;
31287
- return /* @__PURE__ */ jsx65(
31288
- "button",
31289
- {
31290
- type: "button",
31291
- className: themeButtonClassName({
31292
- variant: isSelected ? "primary" : "outline",
31293
- size: "md"
31294
- }),
31295
- style: paymentOptionLayoutStyle,
31296
- onClick: () => booking.actions.selectAppointmentPackage(
31297
- appointmentPackage.customerPassId
31298
- ),
31299
- "aria-pressed": isSelected,
31300
- children: /* @__PURE__ */ jsx65(
31301
- PaymentOptionContent,
31573
+ /* @__PURE__ */ jsxs49(
31574
+ "div",
31575
+ {
31576
+ className: "rb-reg-stack rb-reg-stack--sm",
31577
+ role: "list",
31578
+ "aria-label": "Payment options",
31579
+ children: [
31580
+ packageOptions.map((appointmentPackage) => {
31581
+ const isSelected = booking.payment.selectedAppointmentPackageId === appointmentPackage.customerPassId;
31582
+ return /* @__PURE__ */ jsxs49(
31583
+ "button",
31302
31584
  {
31303
- id: appointmentPackage.customerPassId,
31304
- title: appointmentPackage.passName,
31305
- description: "Use 1 package credit",
31306
- summaryRows: [{
31307
- label: "Balance",
31308
- value: `${appointmentPackage.creditsRemaining} of ${appointmentPackage.creditsTotal} credits remaining`
31309
- }]
31310
- }
31311
- )
31312
- },
31313
- appointmentPackage.customerPassId
31314
- );
31315
- }),
31316
- viewModel.options.map((option) => {
31317
- const isSelected = !booking.payment.selectedAppointmentPackageId && (booking.payment.selectedCollectionOptionKind === option.kind || viewModel.mode === "single_option");
31318
- if (viewModel.mode === "single_option" && !hasPackageOptions) {
31319
- return /* @__PURE__ */ jsx65(
31320
- "div",
31321
- {
31322
- className: "ab-card",
31323
- style: paymentOptionLayoutStyle,
31324
- children: /* @__PURE__ */ jsx65(
31585
+ type: "button",
31586
+ className: optionCardClassName(isSelected),
31587
+ onClick: () => booking.actions.selectAppointmentPackage(
31588
+ appointmentPackage.customerPassId
31589
+ ),
31590
+ "aria-pressed": isSelected,
31591
+ children: [
31592
+ /* @__PURE__ */ jsx69(
31593
+ PaymentOptionContent,
31594
+ {
31595
+ id: appointmentPackage.customerPassId,
31596
+ title: appointmentPackage.passName,
31597
+ description: "Use 1 package credit",
31598
+ summaryRows: [{
31599
+ label: "Balance",
31600
+ value: `${appointmentPackage.creditsRemaining} of ${appointmentPackage.creditsTotal} credits remaining`
31601
+ }]
31602
+ }
31603
+ ),
31604
+ isSelected ? /* @__PURE__ */ jsx69(SelectedCheck, {}) : null
31605
+ ]
31606
+ },
31607
+ appointmentPackage.customerPassId
31608
+ );
31609
+ }),
31610
+ viewModel.options.map((option) => {
31611
+ const isSelected = !booking.payment.selectedAppointmentPackageId && (booking.payment.selectedCollectionOptionKind === option.kind || viewModel.mode === "single_option");
31612
+ if (viewModel.mode === "single_option" && !hasPackageOptions) {
31613
+ return /* @__PURE__ */ jsx69("div", { className: "rb-reg-summary", children: /* @__PURE__ */ jsx69(
31325
31614
  PaymentOptionContent,
31326
31615
  {
31327
31616
  id: option.kind,
@@ -31330,37 +31619,35 @@ function HeadlessBookingPaymentSelectionStep({
31330
31619
  summaryRows: option.summaryRows,
31331
31620
  helperText: option.helperText
31332
31621
  }
31333
- )
31334
- },
31335
- option.kind
31336
- );
31337
- }
31338
- return /* @__PURE__ */ jsx65(
31339
- "button",
31340
- {
31341
- type: "button",
31342
- className: themeButtonClassName({
31343
- variant: isSelected ? "primary" : "outline",
31344
- size: "md"
31345
- }),
31346
- style: paymentOptionLayoutStyle,
31347
- onClick: () => booking.actions.selectPaymentOption(option.kind),
31348
- "aria-pressed": isSelected,
31349
- children: /* @__PURE__ */ jsx65(
31350
- PaymentOptionContent,
31622
+ ) }, option.kind);
31623
+ }
31624
+ return /* @__PURE__ */ jsxs49(
31625
+ "button",
31351
31626
  {
31352
- id: option.kind,
31353
- title: option.title,
31354
- description: option.description,
31355
- summaryRows: option.summaryRows,
31356
- helperText: option.helperText
31357
- }
31358
- )
31359
- },
31360
- option.kind
31361
- );
31362
- })
31363
- ] })
31627
+ type: "button",
31628
+ className: optionCardClassName(isSelected),
31629
+ onClick: () => booking.actions.selectPaymentOption(option.kind),
31630
+ "aria-pressed": isSelected,
31631
+ children: [
31632
+ /* @__PURE__ */ jsx69(
31633
+ PaymentOptionContent,
31634
+ {
31635
+ id: option.kind,
31636
+ title: option.title,
31637
+ description: option.description,
31638
+ summaryRows: option.summaryRows,
31639
+ helperText: option.helperText
31640
+ }
31641
+ ),
31642
+ isSelected ? /* @__PURE__ */ jsx69(SelectedCheck, {}) : null
31643
+ ]
31644
+ },
31645
+ option.kind
31646
+ );
31647
+ })
31648
+ ]
31649
+ }
31650
+ )
31364
31651
  ] });
31365
31652
  }
31366
31653
  function PaymentOptionContent({
@@ -31370,22 +31657,22 @@ function PaymentOptionContent({
31370
31657
  summaryRows,
31371
31658
  title
31372
31659
  }) {
31373
- return /* @__PURE__ */ jsxs47(Fragment9, { children: [
31374
- /* @__PURE__ */ jsx65("span", { children: title }),
31375
- /* @__PURE__ */ jsx65("span", { className: "ab-text ab-text--muted", children: description }),
31376
- /* @__PURE__ */ jsx65("div", { className: "ab-stack", style: summaryStackStyle, children: summaryRows.map((row) => /* @__PURE__ */ jsxs47("span", { className: "ab-text ab-text--muted", children: [
31660
+ return /* @__PURE__ */ jsxs49("div", { className: "rb-flex-1", children: [
31661
+ /* @__PURE__ */ jsx69("div", { className: "ab-subtitle", children: title }),
31662
+ /* @__PURE__ */ jsx69("div", { className: "ab-text rb-on-surface--muted", children: description }),
31663
+ /* @__PURE__ */ jsx69("div", { className: "ab-option-rows", children: summaryRows.map((row) => /* @__PURE__ */ jsxs49("span", { className: "ab-text rb-on-surface--muted", children: [
31377
31664
  row.label,
31378
31665
  ": ",
31379
31666
  row.value
31380
31667
  ] }, `${id}-${row.label}`)) }),
31381
- helperText ? /* @__PURE__ */ jsx65("span", { className: "ab-text ab-text--muted", children: helperText }) : null
31668
+ helperText ? /* @__PURE__ */ jsx69("div", { className: "ab-text rb-on-surface--muted", children: helperText }) : null
31382
31669
  ] });
31383
31670
  }
31384
31671
  function DefaultDynamicFields({
31385
31672
  booking,
31386
31673
  fields
31387
31674
  }) {
31388
- return /* @__PURE__ */ jsx65("div", { className: "rb-space-y-6", children: fields.map((field) => /* @__PURE__ */ jsx65(DefaultDynamicField, { booking, field }, field.id)) });
31675
+ return /* @__PURE__ */ jsx69("div", { className: "rb-space-y-6", children: fields.map((field) => /* @__PURE__ */ jsx69(DefaultDynamicField, { booking, field }, field.id)) });
31389
31676
  }
31390
31677
  function DefaultDynamicField({
31391
31678
  booking,
@@ -31395,13 +31682,13 @@ function DefaultDynamicField({
31395
31682
  const error = field.error;
31396
31683
  const errorId = error ? field.errorId ?? `${field.inputId}-error` : null;
31397
31684
  const describedBy = [field.helpTextId, errorId].filter(Boolean).join(" ") || void 0;
31398
- return /* @__PURE__ */ jsxs47("div", { className: "rb-space-y-2", children: [
31399
- /* @__PURE__ */ jsxs47("label", { id: field.labelId, htmlFor: field.inputId, className: "form-label", children: [
31685
+ return /* @__PURE__ */ jsxs49("div", { className: "rb-space-y-2", children: [
31686
+ /* @__PURE__ */ jsxs49("label", { id: field.labelId, htmlFor: field.inputId, className: "form-label", children: [
31400
31687
  field.label,
31401
- field.required ? /* @__PURE__ */ jsx65("span", { className: "required-marker", children: "*" }) : null
31688
+ field.required ? /* @__PURE__ */ jsx69("span", { className: "required-marker", children: "*" }) : null
31402
31689
  ] }),
31403
- field.helpText ? /* @__PURE__ */ jsx65("p", { id: field.helpTextId ?? void 0, className: "rb-caption status-muted", children: field.helpText }) : null,
31404
- /* @__PURE__ */ jsx65(
31690
+ field.helpText ? /* @__PURE__ */ jsx69("p", { id: field.helpTextId ?? void 0, className: "rb-caption status-muted", children: field.helpText }) : null,
31691
+ /* @__PURE__ */ jsx69(
31405
31692
  DefaultFieldInput,
31406
31693
  {
31407
31694
  field,
@@ -31413,7 +31700,7 @@ function DefaultDynamicField({
31413
31700
  describedBy
31414
31701
  }
31415
31702
  ),
31416
- error ? /* @__PURE__ */ jsx65(
31703
+ error ? /* @__PURE__ */ jsx69(
31417
31704
  FieldValidationMessage,
31418
31705
  {
31419
31706
  id: errorId ?? `${field.inputId}-error`,
@@ -31447,7 +31734,7 @@ function DefaultFieldInput({
31447
31734
  };
31448
31735
  switch (field.type) {
31449
31736
  case "textarea":
31450
- return /* @__PURE__ */ jsx65(
31737
+ return /* @__PURE__ */ jsx69(
31451
31738
  "textarea",
31452
31739
  {
31453
31740
  ...commonProps,
@@ -31462,7 +31749,7 @@ function DefaultFieldInput({
31462
31749
  );
31463
31750
  case "select":
31464
31751
  if (field.field.multiple) {
31465
- return /* @__PURE__ */ jsx65(
31752
+ return /* @__PURE__ */ jsx69(
31466
31753
  "select",
31467
31754
  {
31468
31755
  ...commonProps,
@@ -31475,11 +31762,11 @@ function DefaultFieldInput({
31475
31762
  },
31476
31763
  multiple: true,
31477
31764
  className: "form-select rb-h-32",
31478
- children: field.field.options?.map((option) => /* @__PURE__ */ jsx65("option", { value: option.value, children: option.label }, option.value))
31765
+ children: field.field.options?.map((option) => /* @__PURE__ */ jsx69("option", { value: option.value, children: option.label }, option.value))
31479
31766
  }
31480
31767
  );
31481
31768
  }
31482
- return /* @__PURE__ */ jsxs47(
31769
+ return /* @__PURE__ */ jsxs49(
31483
31770
  "select",
31484
31771
  {
31485
31772
  ...commonProps,
@@ -31487,14 +31774,14 @@ function DefaultFieldInput({
31487
31774
  onChange: (event) => onChange(event.target.value),
31488
31775
  className: "form-select",
31489
31776
  children: [
31490
- /* @__PURE__ */ jsx65("option", { value: "", children: "Select an option..." }),
31491
- field.field.options?.map((option) => /* @__PURE__ */ jsx65("option", { value: option.value, children: option.label }, option.value))
31777
+ /* @__PURE__ */ jsx69("option", { value: "", children: "Select an option..." }),
31778
+ field.field.options?.map((option) => /* @__PURE__ */ jsx69("option", { value: option.value, children: option.label }, option.value))
31492
31779
  ]
31493
31780
  }
31494
31781
  );
31495
31782
  case "radio":
31496
- return /* @__PURE__ */ jsx65("div", { className: "rb-space-y-2", children: field.field.options?.map((option) => /* @__PURE__ */ jsxs47("label", { className: "rb-flex rb-items-center rb-gap-2 rb-cursor-pointer", children: [
31497
- /* @__PURE__ */ jsx65(
31783
+ return /* @__PURE__ */ jsx69("div", { className: "rb-space-y-2", children: field.field.options?.map((option) => /* @__PURE__ */ jsxs49("label", { className: "rb-flex rb-items-center rb-gap-2 rb-cursor-pointer", children: [
31784
+ /* @__PURE__ */ jsx69(
31498
31785
  "input",
31499
31786
  {
31500
31787
  type: "radio",
@@ -31508,13 +31795,13 @@ function DefaultFieldInput({
31508
31795
  className: "form-radio"
31509
31796
  }
31510
31797
  ),
31511
- /* @__PURE__ */ jsx65("span", { className: "rb-caption", children: option.label })
31798
+ /* @__PURE__ */ jsx69("span", { className: "rb-caption", children: option.label })
31512
31799
  ] }, option.value)) });
31513
31800
  case "checkbox":
31514
31801
  if (field.field.options && field.field.options.length > 1) {
31515
31802
  const checkedValues = toStringArray(value);
31516
- return /* @__PURE__ */ jsx65("div", { className: "rb-space-y-2", children: field.field.options.map((option) => /* @__PURE__ */ jsxs47("label", { className: "rb-flex rb-items-center rb-gap-2 rb-cursor-pointer", children: [
31517
- /* @__PURE__ */ jsx65(
31803
+ return /* @__PURE__ */ jsx69("div", { className: "rb-space-y-2", children: field.field.options.map((option) => /* @__PURE__ */ jsxs49("label", { className: "rb-flex rb-items-center rb-gap-2 rb-cursor-pointer", children: [
31804
+ /* @__PURE__ */ jsx69(
31518
31805
  "input",
31519
31806
  {
31520
31807
  type: "checkbox",
@@ -31531,11 +31818,11 @@ function DefaultFieldInput({
31531
31818
  className: "form-checkbox"
31532
31819
  }
31533
31820
  ),
31534
- /* @__PURE__ */ jsx65("span", { className: "rb-caption", children: option.label })
31821
+ /* @__PURE__ */ jsx69("span", { className: "rb-caption", children: option.label })
31535
31822
  ] }, option.value)) });
31536
31823
  }
31537
- return /* @__PURE__ */ jsxs47("label", { className: "rb-flex rb-items-center rb-gap-2 rb-cursor-pointer", children: [
31538
- /* @__PURE__ */ jsx65(
31824
+ return /* @__PURE__ */ jsxs49("label", { className: "rb-flex rb-items-center rb-gap-2 rb-cursor-pointer", children: [
31825
+ /* @__PURE__ */ jsx69(
31539
31826
  "input",
31540
31827
  {
31541
31828
  type: "checkbox",
@@ -31549,11 +31836,11 @@ function DefaultFieldInput({
31549
31836
  className: "form-checkbox"
31550
31837
  }
31551
31838
  ),
31552
- /* @__PURE__ */ jsx65("span", { className: "rb-caption", children: field.field.placeholder || field.label })
31839
+ /* @__PURE__ */ jsx69("span", { className: "rb-caption", children: field.field.placeholder || field.label })
31553
31840
  ] });
31554
31841
  case "booking_requirement_consent":
31555
- return /* @__PURE__ */ jsxs47("label", { className: "rb-flex rb-items-start rb-gap-2 rb-cursor-pointer", children: [
31556
- /* @__PURE__ */ jsx65(
31842
+ return /* @__PURE__ */ jsxs49("label", { className: "rb-flex rb-items-start rb-gap-2 rb-cursor-pointer", children: [
31843
+ /* @__PURE__ */ jsx69(
31557
31844
  "input",
31558
31845
  {
31559
31846
  type: "checkbox",
@@ -31567,10 +31854,10 @@ function DefaultFieldInput({
31567
31854
  className: "form-checkbox rb-mt-0.5"
31568
31855
  }
31569
31856
  ),
31570
- /* @__PURE__ */ jsx65("span", { className: "rb-caption", children: field.field.placeholder || field.label })
31857
+ /* @__PURE__ */ jsx69("span", { className: "rb-caption", children: field.field.placeholder || field.label })
31571
31858
  ] });
31572
31859
  case "number":
31573
- return /* @__PURE__ */ jsx65(
31860
+ return /* @__PURE__ */ jsx69(
31574
31861
  "input",
31575
31862
  {
31576
31863
  ...commonProps,
@@ -31584,7 +31871,7 @@ function DefaultFieldInput({
31584
31871
  }
31585
31872
  );
31586
31873
  case "date":
31587
- return /* @__PURE__ */ jsx65(
31874
+ return /* @__PURE__ */ jsx69(
31588
31875
  "input",
31589
31876
  {
31590
31877
  ...commonProps,
@@ -31597,7 +31884,7 @@ function DefaultFieldInput({
31597
31884
  }
31598
31885
  );
31599
31886
  case "time":
31600
- return /* @__PURE__ */ jsx65(
31887
+ return /* @__PURE__ */ jsx69(
31601
31888
  "input",
31602
31889
  {
31603
31890
  ...commonProps,
@@ -31611,7 +31898,7 @@ function DefaultFieldInput({
31611
31898
  case "email":
31612
31899
  case "tel":
31613
31900
  case "url":
31614
- return /* @__PURE__ */ jsx65(
31901
+ return /* @__PURE__ */ jsx69(
31615
31902
  "input",
31616
31903
  {
31617
31904
  ...commonProps,
@@ -31635,8 +31922,8 @@ function DefaultBookingDiscount({
31635
31922
  }) {
31636
31923
  const shouldShowDiscountSection = !booking.payment.selectedAppointmentPackageId && !booking.discount.loading && (booking.discount.manualCodeEntryAllowed || Boolean(booking.discount.autoAppliedDiscount));
31637
31924
  if (!shouldShowDiscountSection) return null;
31638
- return /* @__PURE__ */ jsxs47("div", { className: "rb-mt-6", children: [
31639
- booking.discount.manualCodeEntryAllowed ? /* @__PURE__ */ jsx65(
31925
+ return /* @__PURE__ */ jsxs49("div", { className: "rb-mt-6", children: [
31926
+ booking.discount.manualCodeEntryAllowed ? /* @__PURE__ */ jsx69(
31640
31927
  DiscountCodeDisclosure,
31641
31928
  {
31642
31929
  surface: "theme-form",
@@ -31650,7 +31937,7 @@ function DefaultBookingDiscount({
31650
31937
  }
31651
31938
  }
31652
31939
  ) : null,
31653
- booking.discount.autoAppliedDiscount && booking.discount.code.trim().length === 0 ? /* @__PURE__ */ jsx65(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info rb-mt-4", role: "status", children: /* @__PURE__ */ jsxs47("p", { className: "ab-text", children: [
31940
+ booking.discount.autoAppliedDiscount && booking.discount.code.trim().length === 0 ? /* @__PURE__ */ jsx69(FeedbackMessage, { tone: "info", className: "alert alert-info rb-mt-4", role: "status", children: /* @__PURE__ */ jsxs49("p", { className: "ab-text", children: [
31654
31941
  "Discount available: ",
31655
31942
  booking.discount.autoAppliedDiscount.publicLabel,
31656
31943
  " ",
@@ -31662,9 +31949,9 @@ function DefaultBookingFeedback({
31662
31949
  booking
31663
31950
  }) {
31664
31951
  if (booking.feedback.kind !== "error") return null;
31665
- return /* @__PURE__ */ jsxs47(FeedbackMessage, { tone: "error", className: "ab-alert ab-alert--error", role: "alert", children: [
31666
- /* @__PURE__ */ jsx65("p", { className: "ab-text", children: booking.feedback.message }),
31667
- /* @__PURE__ */ jsx65(
31952
+ return /* @__PURE__ */ jsxs49(FeedbackMessage, { tone: "error", className: "alert alert-error rb-mt-4", role: "alert", children: [
31953
+ /* @__PURE__ */ jsx69("p", { className: "ab-text", children: booking.feedback.message }),
31954
+ /* @__PURE__ */ jsx69(
31668
31955
  "button",
31669
31956
  {
31670
31957
  type: "button",
@@ -31679,7 +31966,7 @@ function DefaultBookingAltcha({
31679
31966
  booking
31680
31967
  }) {
31681
31968
  if (!booking.spamProtection.enabled) return null;
31682
- return /* @__PURE__ */ jsx65("div", { className: "ab-altcha", children: /* @__PURE__ */ jsx65(
31969
+ return /* @__PURE__ */ jsx69("div", { className: "ab-altcha", children: /* @__PURE__ */ jsx69(
31683
31970
  AltchaWidget,
31684
31971
  {
31685
31972
  challengeUrl: booking.spamProtection.challenge.url,
@@ -31688,45 +31975,27 @@ function DefaultBookingAltcha({
31688
31975
  ) });
31689
31976
  }
31690
31977
  function DefaultBookingErrorSummary({
31691
- errors
31978
+ errors,
31979
+ id
31692
31980
  }) {
31693
31981
  if (!hasBookingValidationErrors(errors)) return null;
31694
- return /* @__PURE__ */ jsxs47(FeedbackMessage, { tone: "error", className: "rb-mt-6 alert alert-error", role: "alert", children: [
31695
- errors.formError ? /* @__PURE__ */ jsx65("p", { className: "rb-caption", children: /* @__PURE__ */ jsx65("strong", { children: errors.formError }) }) : null,
31696
- Object.entries(errors.fieldErrors).map(([key, message]) => /* @__PURE__ */ jsx65("p", { className: "rb-caption", children: message }, key))
31697
- ] });
31698
- }
31699
- function SelectedCheck() {
31700
- return /* @__PURE__ */ jsx65("div", { className: "ab-check", children: /* @__PURE__ */ jsx65(
31701
- "svg",
31982
+ return /* @__PURE__ */ jsxs49(
31983
+ FeedbackMessage,
31702
31984
  {
31703
- fill: "none",
31704
- strokeLinecap: "round",
31705
- strokeLinejoin: "round",
31706
- strokeWidth: "2",
31707
- viewBox: "0 0 24 24",
31708
- stroke: "currentColor",
31709
- children: /* @__PURE__ */ jsx65("path", { d: "M5 13l4 4L19 7" })
31985
+ tone: "error",
31986
+ className: "rb-mt-6 alert alert-error",
31987
+ id,
31988
+ role: "alert",
31989
+ children: [
31990
+ errors.formError ? /* @__PURE__ */ jsx69("p", { className: "rb-caption", children: /* @__PURE__ */ jsx69("strong", { children: errors.formError }) }) : null,
31991
+ Object.entries(errors.fieldErrors).map(([key, message]) => /* @__PURE__ */ jsx69("p", { className: "rb-caption", children: message }, key))
31992
+ ]
31710
31993
  }
31711
- ) });
31994
+ );
31712
31995
  }
31713
- function collapseHeadlessSlotsForDisplay(input) {
31714
- const seenStartTimes = /* @__PURE__ */ new Set();
31715
- const visibleSlots = [];
31716
- for (const slot of input.slots) {
31717
- if (!input.hasSelectedResource) {
31718
- if (seenStartTimes.has(slot.startAt)) continue;
31719
- seenStartTimes.add(slot.startAt);
31720
- }
31721
- visibleSlots.push({
31722
- startAt: slot.startAt,
31723
- endAt: slot.endAt,
31724
- resourceId: unsafeAsAppointmentResourceId(slot.resourceId)
31725
- });
31726
- }
31727
- return visibleSlots;
31996
+ function SelectedCheck() {
31997
+ return /* @__PURE__ */ jsx69("div", { className: "rb-option-check", children: /* @__PURE__ */ jsx69(CheckIcon2, {}) });
31728
31998
  }
31729
- var paymentOptionLayoutStyle, summaryStackStyle;
31730
31999
  var init_booking_form_default_ui = __esm({
31731
32000
  "../blocks/src/system/runtime/nodes/booking-form.default-ui.tsx"() {
31732
32001
  "use strict";
@@ -31739,20 +32008,11 @@ var init_booking_form_default_ui = __esm({
31739
32008
  init_DatePicker();
31740
32009
  init_TimeSlotSelector();
31741
32010
  init_spinner();
32011
+ init_CheckIcon();
32012
+ init_StepIndicator();
31742
32013
  init_FeedbackMessage();
31743
32014
  init_DiscountCodeDisclosure();
31744
32015
  init_FieldValidationMessage();
31745
- paymentOptionLayoutStyle = {
31746
- alignItems: "flex-start",
31747
- display: "flex",
31748
- flexDirection: "column",
31749
- gap: "0.25rem",
31750
- justifyContent: "flex-start",
31751
- width: "100%"
31752
- };
31753
- summaryStackStyle = {
31754
- gap: "0.125rem"
31755
- };
31756
32016
  }
31757
32017
  });
31758
32018
 
@@ -31952,36 +32212,10 @@ var init_utils2 = __esm({
31952
32212
  }
31953
32213
  });
31954
32214
 
31955
- // ../blocks/src/system/runtime/shared/components/CheckIcon.tsx
31956
- import { jsx as jsx66 } from "react/jsx-runtime";
31957
- function CheckIcon2({ className, strokeWidth = 2 }) {
31958
- return /* @__PURE__ */ jsx66(
31959
- "svg",
31960
- {
31961
- fill: "none",
31962
- strokeLinecap: "round",
31963
- strokeLinejoin: "round",
31964
- strokeWidth,
31965
- viewBox: "0 0 24 24",
31966
- stroke: "currentColor",
31967
- className,
31968
- width: "1em",
31969
- height: "1em",
31970
- "aria-hidden": "true",
31971
- children: /* @__PURE__ */ jsx66("path", { d: "M5 13l4 4L19 7" })
31972
- }
31973
- );
31974
- }
31975
- var init_CheckIcon = __esm({
31976
- "../blocks/src/system/runtime/shared/components/CheckIcon.tsx"() {
31977
- "use strict";
31978
- }
31979
- });
31980
-
31981
32215
  // ../blocks/src/system/runtime/shared/components/ClockIcon.tsx
31982
- import { jsx as jsx67 } from "react/jsx-runtime";
32216
+ import { jsx as jsx70 } from "react/jsx-runtime";
31983
32217
  function ClockIcon2({ className, strokeWidth = 2 }) {
31984
- return /* @__PURE__ */ jsx67(
32218
+ return /* @__PURE__ */ jsx70(
31985
32219
  "svg",
31986
32220
  {
31987
32221
  fill: "none",
@@ -31994,7 +32228,7 @@ function ClockIcon2({ className, strokeWidth = 2 }) {
31994
32228
  width: "1em",
31995
32229
  height: "1em",
31996
32230
  "aria-hidden": "true",
31997
- children: /* @__PURE__ */ jsx67("path", { d: "M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" })
32231
+ children: /* @__PURE__ */ jsx70("path", { d: "M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" })
31998
32232
  }
31999
32233
  );
32000
32234
  }
@@ -32005,9 +32239,9 @@ var init_ClockIcon = __esm({
32005
32239
  });
32006
32240
 
32007
32241
  // ../blocks/src/system/runtime/shared/components/CrossIcon.tsx
32008
- import { jsx as jsx68 } from "react/jsx-runtime";
32242
+ import { jsx as jsx71 } from "react/jsx-runtime";
32009
32243
  function CrossIcon({ className, strokeWidth = 2 }) {
32010
- return /* @__PURE__ */ jsx68(
32244
+ return /* @__PURE__ */ jsx71(
32011
32245
  "svg",
32012
32246
  {
32013
32247
  fill: "none",
@@ -32020,7 +32254,7 @@ function CrossIcon({ className, strokeWidth = 2 }) {
32020
32254
  width: "1em",
32021
32255
  height: "1em",
32022
32256
  "aria-hidden": "true",
32023
- children: /* @__PURE__ */ jsx68("path", { d: "M6 18L18 6M6 6l12 12" })
32257
+ children: /* @__PURE__ */ jsx71("path", { d: "M6 18L18 6M6 6l12 12" })
32024
32258
  }
32025
32259
  );
32026
32260
  }
@@ -32031,8 +32265,8 @@ var init_CrossIcon = __esm({
32031
32265
  });
32032
32266
 
32033
32267
  // ../blocks/src/system/runtime/shared/components/ActionRow.tsx
32034
- import { jsx as jsx69 } from "react/jsx-runtime";
32035
- function joinClasses5(...parts) {
32268
+ import { jsx as jsx72 } from "react/jsx-runtime";
32269
+ function joinClasses6(...parts) {
32036
32270
  return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
32037
32271
  }
32038
32272
  function ActionRow({
@@ -32040,10 +32274,10 @@ function ActionRow({
32040
32274
  className,
32041
32275
  align = "start"
32042
32276
  }) {
32043
- return /* @__PURE__ */ jsx69(
32277
+ return /* @__PURE__ */ jsx72(
32044
32278
  "div",
32045
32279
  {
32046
- className: joinClasses5("rb-flex rb-flex-wrap rb-items-center rb-gap-2", alignmentClasses[align], className),
32280
+ className: joinClasses6("rb-flex rb-flex-wrap rb-items-center rb-gap-2", alignmentClasses[align], className),
32047
32281
  "data-action-row": true,
32048
32282
  children
32049
32283
  }
@@ -32062,14 +32296,14 @@ var init_ActionRow = __esm({
32062
32296
  });
32063
32297
 
32064
32298
  // ../blocks/src/system/runtime/shared/components/LoggedInAsUser.tsx
32065
- import { Fragment as Fragment10, jsx as jsx70, jsxs as jsxs48 } from "react/jsx-runtime";
32299
+ import { Fragment as Fragment9, jsx as jsx73, jsxs as jsxs50 } from "react/jsx-runtime";
32066
32300
  function LoggedInAsUser({ email, onLogout, classPrefix }) {
32067
- return /* @__PURE__ */ jsxs48("p", { className: `${classPrefix}-logged-in-hint`, children: [
32301
+ return /* @__PURE__ */ jsxs50("p", { className: `${classPrefix}-logged-in-hint`, children: [
32068
32302
  "Logged in as ",
32069
32303
  email,
32070
- onLogout && /* @__PURE__ */ jsxs48(Fragment10, { children: [
32304
+ onLogout && /* @__PURE__ */ jsxs50(Fragment9, { children: [
32071
32305
  " \u2014 ",
32072
- /* @__PURE__ */ jsx70("button", { type: "button", className: `${classPrefix}-link`, onClick: onLogout, children: "Not you? Log out" })
32306
+ /* @__PURE__ */ jsx73("button", { type: "button", className: `${classPrefix}-link`, onClick: onLogout, children: "Not you? Log out" })
32073
32307
  ] })
32074
32308
  ] });
32075
32309
  }
@@ -32079,32 +32313,21 @@ var init_LoggedInAsUser = __esm({
32079
32313
  }
32080
32314
  });
32081
32315
 
32082
- // ../blocks/src/system/runtime/shared/components/StateIcon.tsx
32083
- import { jsx as jsx71 } from "react/jsx-runtime";
32084
- function StateIcon({ variant, children }) {
32085
- return /* @__PURE__ */ jsx71("div", { className: `rb-state-icon rb-state-icon--${variant}`, "aria-hidden": "true", children });
32086
- }
32087
- var init_StateIcon = __esm({
32088
- "../blocks/src/system/runtime/shared/components/StateIcon.tsx"() {
32089
- "use strict";
32090
- }
32091
- });
32092
-
32093
32316
  // ../blocks/src/system/runtime/shared/components/MembershipHero.tsx
32094
- import { jsx as jsx72, jsxs as jsxs49 } from "react/jsx-runtime";
32317
+ import { jsx as jsx74, jsxs as jsxs51 } from "react/jsx-runtime";
32095
32318
  function MembershipHero({
32096
32319
  membershipName,
32097
32320
  classPrefix,
32098
32321
  onBookForSomeoneElse
32099
32322
  }) {
32100
- return /* @__PURE__ */ jsxs49(FeedbackMessage, { tone: "success", className: `${classPrefix}-membership-hero`, role: "status", children: [
32101
- /* @__PURE__ */ jsx72("div", { className: `${classPrefix}-membership-hero__icon`, "aria-hidden": "true", children: "\u2728" }),
32102
- /* @__PURE__ */ jsxs49("h3", { className: `${classPrefix}-membership-hero__title`, children: [
32323
+ return /* @__PURE__ */ jsxs51(FeedbackMessage, { tone: "success", className: `${classPrefix}-membership-hero`, role: "status", children: [
32324
+ /* @__PURE__ */ jsx74("div", { className: `${classPrefix}-membership-hero__icon`, "aria-hidden": "true", children: "\u2728" }),
32325
+ /* @__PURE__ */ jsxs51("h3", { className: `${classPrefix}-membership-hero__title`, children: [
32103
32326
  "Included with your ",
32104
32327
  membershipName
32105
32328
  ] }),
32106
- /* @__PURE__ */ jsx72("p", { className: `${classPrefix}-membership-hero__subtitle`, children: "No payment required" }),
32107
- onBookForSomeoneElse && /* @__PURE__ */ jsx72(
32329
+ /* @__PURE__ */ jsx74("p", { className: `${classPrefix}-membership-hero__subtitle`, children: "No payment required" }),
32330
+ onBookForSomeoneElse && /* @__PURE__ */ jsx74(
32108
32331
  "button",
32109
32332
  {
32110
32333
  type: "button",
@@ -32123,9 +32346,9 @@ var init_MembershipHero = __esm({
32123
32346
  });
32124
32347
 
32125
32348
  // ../blocks/src/system/runtime/shared/components/ModalShell.tsx
32126
- import * as React6 from "react";
32349
+ import * as React9 from "react";
32127
32350
  import { createPortal } from "react-dom";
32128
- import { jsx as jsx73, jsxs as jsxs50 } from "react/jsx-runtime";
32351
+ import { jsx as jsx75, jsxs as jsxs52 } from "react/jsx-runtime";
32129
32352
  function lockBodyScroll() {
32130
32353
  if (typeof document === "undefined") {
32131
32354
  return;
@@ -32164,10 +32387,10 @@ function ModalShell({
32164
32387
  closeButtonClassName,
32165
32388
  closeIcon
32166
32389
  }) {
32167
- const closeButtonRef = React6.useRef(null);
32168
- const onCloseRef = React6.useRef(onClose);
32390
+ const closeButtonRef = React9.useRef(null);
32391
+ const onCloseRef = React9.useRef(onClose);
32169
32392
  onCloseRef.current = onClose;
32170
- React6.useEffect(() => {
32393
+ React9.useEffect(() => {
32171
32394
  closeButtonRef.current?.focus({ preventScroll: true });
32172
32395
  const onKeyDown = (event) => {
32173
32396
  if (event.key === "Escape") {
@@ -32181,7 +32404,7 @@ function ModalShell({
32181
32404
  unlockBodyScroll();
32182
32405
  };
32183
32406
  }, []);
32184
- const srOnlyTitle = renderSrOnlyTitle ? /* @__PURE__ */ jsx73(
32407
+ const srOnlyTitle = renderSrOnlyTitle ? /* @__PURE__ */ jsx75(
32185
32408
  "h2",
32186
32409
  {
32187
32410
  id: titleId,
@@ -32199,9 +32422,9 @@ function ModalShell({
32199
32422
  children: title
32200
32423
  }
32201
32424
  ) : null;
32202
- const header = renderHeader ? renderHeader({ title, titleId, onClose, closeButtonRef }) : /* @__PURE__ */ jsxs50("div", { className: headerClassName, children: [
32203
- !renderSrOnlyTitle ? /* @__PURE__ */ jsx73("h3", { className: titleClassName, id: titleId, children: title }) : null,
32204
- /* @__PURE__ */ jsx73(
32425
+ const header = renderHeader ? renderHeader({ title, titleId, onClose, closeButtonRef }) : /* @__PURE__ */ jsxs52("div", { className: headerClassName, children: [
32426
+ !renderSrOnlyTitle ? /* @__PURE__ */ jsx75("h3", { className: titleClassName, id: titleId, children: title }) : null,
32427
+ /* @__PURE__ */ jsx75(
32205
32428
  "button",
32206
32429
  {
32207
32430
  ref: closeButtonRef,
@@ -32213,7 +32436,7 @@ function ModalShell({
32213
32436
  }
32214
32437
  )
32215
32438
  ] });
32216
- const modal = /* @__PURE__ */ jsx73("div", { className: overlayClassName, onClick: onClose, children: /* @__PURE__ */ jsxs50(
32439
+ const modal = /* @__PURE__ */ jsx75("div", { className: overlayClassName, onClick: onClose, children: /* @__PURE__ */ jsxs52(
32217
32440
  "div",
32218
32441
  {
32219
32442
  className: modalClassName,
@@ -32237,7 +32460,7 @@ function ModalShell({
32237
32460
  if (!portalRoot) {
32238
32461
  return null;
32239
32462
  }
32240
- const modalNode = portalWrapperClassName || portalWrapperProps ? /* @__PURE__ */ jsx73("div", { ...portalWrapperProps, className: portalWrapperClassName, children: modal }) : modal;
32463
+ const modalNode = portalWrapperClassName || portalWrapperProps ? /* @__PURE__ */ jsx75("div", { ...portalWrapperProps, className: portalWrapperClassName, children: modal }) : modal;
32241
32464
  return createPortal(modalNode, portalRoot);
32242
32465
  }
32243
32466
  var modalBodyScrollLockCount, modalBodyOriginalOverflow;
@@ -32251,7 +32474,7 @@ var init_ModalShell = __esm({
32251
32474
  });
32252
32475
 
32253
32476
  // ../blocks/src/system/runtime/shared/components/TabBarFragment.tsx
32254
- import { jsx as jsx74 } from "react/jsx-runtime";
32477
+ import { jsx as jsx76 } from "react/jsx-runtime";
32255
32478
  function clampIndex(idx, len) {
32256
32479
  if (len <= 0) return 0;
32257
32480
  const mod = idx % len;
@@ -32266,7 +32489,7 @@ function TabBarFragment({
32266
32489
  tabClassName,
32267
32490
  activeTabClassName
32268
32491
  }) {
32269
- return /* @__PURE__ */ jsx74(
32492
+ return /* @__PURE__ */ jsx76(
32270
32493
  "div",
32271
32494
  {
32272
32495
  className,
@@ -32274,7 +32497,7 @@ function TabBarFragment({
32274
32497
  "aria-label": ariaLabel,
32275
32498
  children: tabs.map((tab, idx) => {
32276
32499
  const isActive = tab.id === activeTab;
32277
- return /* @__PURE__ */ jsx74(
32500
+ return /* @__PURE__ */ jsx76(
32278
32501
  "button",
32279
32502
  {
32280
32503
  type: "button",
@@ -32318,103 +32541,57 @@ var init_TabBarFragment = __esm({
32318
32541
  }
32319
32542
  });
32320
32543
 
32321
- // ../blocks/src/system/runtime/shared/components/TerminalPanel.tsx
32322
- import { jsx as jsx75, jsxs as jsxs51 } from "react/jsx-runtime";
32323
- function joinClasses6(...parts) {
32324
- return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
32325
- }
32326
- function TerminalPanel({
32327
- tone,
32328
- title,
32329
- titleAs: Title = "h3",
32330
- body,
32331
- secondaryBody,
32332
- icon: icon2,
32333
- actions,
32334
- className,
32335
- titleClassName,
32336
- bodyClassName,
32337
- secondaryBodyClassName,
32338
- iconClassName,
32339
- actionsClassName,
32340
- role,
32341
- live
32342
- }) {
32343
- const resolvedRole = role ?? (tone === "error" ? "alert" : "status");
32344
- const resolvedLive = live ?? (resolvedRole === "alert" ? "assertive" : "polite");
32345
- return /* @__PURE__ */ jsxs51(
32346
- "div",
32544
+ // ../blocks/src/system/runtime/shared/components/SelectableOptionCard.tsx
32545
+ import { jsx as jsx77, jsxs as jsxs53 } from "react/jsx-runtime";
32546
+ function SelectableOptionCard(props2) {
32547
+ const {
32548
+ baseClassName,
32549
+ selectedClassName,
32550
+ disabledClassName,
32551
+ iconClassName,
32552
+ labelClassName,
32553
+ detailClassName,
32554
+ icon: icon2,
32555
+ label,
32556
+ detail,
32557
+ selected,
32558
+ disabled,
32559
+ tooltip,
32560
+ extraClassNames = [],
32561
+ onClick,
32562
+ renderCheck,
32563
+ renderDisabledTooltip
32564
+ } = props2;
32565
+ const isSelected = selected && !disabled;
32566
+ const className = [
32567
+ baseClassName,
32568
+ isSelected && selectedClassName,
32569
+ disabled && disabledClassName,
32570
+ ...extraClassNames
32571
+ ].filter(Boolean).join(" ");
32572
+ const showNativeTitle = Boolean(tooltip) && !(disabled && renderDisabledTooltip);
32573
+ return /* @__PURE__ */ jsxs53(
32574
+ "button",
32347
32575
  {
32576
+ type: "button",
32348
32577
  className,
32349
- "data-terminal-panel": true,
32350
- "data-terminal-tone": tone,
32351
- role: resolvedRole,
32352
- "aria-live": resolvedLive === "off" ? void 0 : resolvedLive,
32578
+ onClick: disabled ? void 0 : onClick,
32579
+ title: showNativeTitle ? tooltip : void 0,
32580
+ "aria-disabled": disabled || void 0,
32353
32581
  children: [
32354
- icon2 ? /* @__PURE__ */ jsx75("div", { className: joinClasses6(iconClassName), "data-terminal-icon": true, children: icon2 }) : null,
32355
- /* @__PURE__ */ jsx75(Title, { className: joinClasses6(titleClassName), "data-terminal-title": true, children: title }),
32356
- body ? /* @__PURE__ */ jsx75("div", { className: joinClasses6(bodyClassName), "data-terminal-body": true, children: body }) : null,
32357
- actions ? /* @__PURE__ */ jsx75("div", { className: joinClasses6(actionsClassName), "data-terminal-actions": true, children: actions }) : null,
32358
- secondaryBody ? /* @__PURE__ */ jsx75("div", { className: joinClasses6(secondaryBodyClassName), "data-terminal-secondary-body": true, children: secondaryBody }) : null
32582
+ /* @__PURE__ */ jsx77("div", { className: iconClassName, children: icon2 }),
32583
+ /* @__PURE__ */ jsx77("div", { className: labelClassName, children: label }),
32584
+ /* @__PURE__ */ jsx77("div", { className: detailClassName, children: detail }),
32585
+ isSelected && renderCheck?.(),
32586
+ disabled && tooltip && renderDisabledTooltip?.(tooltip)
32359
32587
  ]
32360
32588
  }
32361
32589
  );
32362
32590
  }
32363
- var init_TerminalPanel = __esm({
32364
- "../blocks/src/system/runtime/shared/components/TerminalPanel.tsx"() {
32365
- "use strict";
32366
- }
32367
- });
32368
-
32369
- // ../blocks/src/system/runtime/shared/components/StepIndicator.tsx
32370
- import { jsx as jsx76, jsxs as jsxs52 } from "react/jsx-runtime";
32371
- function StepIndicator({
32372
- currentStep,
32373
- totalSteps,
32374
- stepLabels,
32375
- classPrefix
32376
- }) {
32377
- return /* @__PURE__ */ jsx76("nav", { "aria-label": "Registration progress", className: `${classPrefix}-steps-nav`, children: /* @__PURE__ */ jsx76("ol", { className: `${classPrefix}-steps`, children: Array.from({ length: totalSteps }, (_, i) => {
32378
- const stepNum = i + 1;
32379
- const isActive = stepNum === currentStep;
32380
- const isComplete = stepNum < currentStep;
32381
- return /* @__PURE__ */ jsxs52(
32382
- "li",
32383
- {
32384
- className: `${classPrefix}-step`,
32385
- "aria-current": isActive ? "step" : void 0,
32386
- children: [
32387
- /* @__PURE__ */ jsx76(
32388
- "div",
32389
- {
32390
- className: `${classPrefix}-step-circle${isActive ? ` ${classPrefix}-step-circle--active` : ""}${isComplete ? ` ${classPrefix}-step-circle--completed` : ""}`,
32391
- children: isComplete ? /* @__PURE__ */ jsx76(CheckIcon2, { className: `${classPrefix}-step-check`, strokeWidth: 3 }) : stepNum
32392
- }
32393
- ),
32394
- stepLabels?.[i] && /* @__PURE__ */ jsx76(
32395
- "span",
32396
- {
32397
- className: `${classPrefix}-step-label${isActive ? ` ${classPrefix}-step-label--active` : ""}`,
32398
- children: stepLabels[i]
32399
- }
32400
- ),
32401
- stepNum < totalSteps && /* @__PURE__ */ jsx76(
32402
- "div",
32403
- {
32404
- className: `${classPrefix}-step-connector${isComplete ? ` ${classPrefix}-step-connector--completed` : ""}`,
32405
- "aria-hidden": "true"
32406
- }
32407
- )
32408
- ]
32409
- },
32410
- i
32411
- );
32412
- }) }) });
32413
- }
32414
- var init_StepIndicator = __esm({
32415
- "../blocks/src/system/runtime/shared/components/StepIndicator.tsx"() {
32591
+ var init_SelectableOptionCard = __esm({
32592
+ "../blocks/src/system/runtime/shared/components/SelectableOptionCard.tsx"() {
32416
32593
  "use strict";
32417
- init_CheckIcon();
32594
+ "use client";
32418
32595
  }
32419
32596
  });
32420
32597
 
@@ -32432,6 +32609,7 @@ var init_components = __esm({
32432
32609
  init_MembershipHero();
32433
32610
  init_TerminalPanel();
32434
32611
  init_StepIndicator();
32612
+ init_SelectableOptionCard();
32435
32613
  }
32436
32614
  });
32437
32615
 
@@ -32446,8 +32624,8 @@ var init_shared6 = __esm({
32446
32624
  });
32447
32625
 
32448
32626
  // ../blocks/src/system/runtime/nodes/booking-form.client.tsx
32449
- import React7, { useRef as useRef9, useState as useState2 } from "react";
32450
- import { jsx as jsx77, jsxs as jsxs53 } from "react/jsx-runtime";
32627
+ import React10, { useRef as useRef9, useState as useState2 } from "react";
32628
+ import { jsx as jsx78, jsxs as jsxs54 } from "react/jsx-runtime";
32451
32629
  function getBookingRedirectLocationSnapshot() {
32452
32630
  if (typeof window === "undefined") {
32453
32631
  return { search: "", hash: "" };
@@ -32468,6 +32646,14 @@ function appendRebookFlag(url, enabled) {
32468
32646
  );
32469
32647
  return nextUrl.toString();
32470
32648
  }
32649
+ function BookingSurface({
32650
+ id,
32651
+ className,
32652
+ children
32653
+ }) {
32654
+ const classes = ["rb-reg-surface", className ?? ""].join(" ").trim();
32655
+ return /* @__PURE__ */ jsx78("div", { id, className: classes, children });
32656
+ }
32471
32657
  function buildBookingFormNodeClientProps(props2) {
32472
32658
  return buildBookingFormInteractiveIslandProps(props2);
32473
32659
  }
@@ -32528,7 +32714,7 @@ var init_booking_form_client = __esm({
32528
32714
  successMessage: render.display.successMessage ?? void 0,
32529
32715
  viewerTimeZone
32530
32716
  });
32531
- React7.useEffect(() => {
32717
+ React10.useEffect(() => {
32532
32718
  if (!siteId) {
32533
32719
  console.error("[BookingFormClient] ERROR: siteId is missing!");
32534
32720
  }
@@ -32545,7 +32731,7 @@ var init_booking_form_client = __esm({
32545
32731
  redirectState,
32546
32732
  verificationState: verification.state
32547
32733
  });
32548
- React7.useEffect(() => {
32734
+ React10.useEffect(() => {
32549
32735
  if (viewState.kind === "error") {
32550
32736
  scrollToBlock(bookingAnchorId);
32551
32737
  }
@@ -32554,12 +32740,12 @@ var init_booking_form_client = __esm({
32554
32740
  viewState.kind,
32555
32741
  viewState.kind === "error" ? viewState.message : null
32556
32742
  ]);
32557
- React7.useEffect(() => {
32743
+ React10.useEffect(() => {
32558
32744
  if (viewState.kind === "success" && redirectState.kind === "success") {
32559
32745
  scrollToBlock(bookingAnchorId);
32560
32746
  }
32561
32747
  }, [bookingAnchorId, redirectState.kind, viewState.kind]);
32562
- React7.useEffect(() => {
32748
+ React10.useEffect(() => {
32563
32749
  if (!isPortalRebook || viewState.kind !== "success") {
32564
32750
  return;
32565
32751
  }
@@ -32585,13 +32771,13 @@ var init_booking_form_client = __esm({
32585
32771
  viewState.kind
32586
32772
  ]);
32587
32773
  if (render.display.state === "missing" || !form2 || !render.hydration.formId) {
32588
- return /* @__PURE__ */ jsx77(
32774
+ return /* @__PURE__ */ jsx78(
32589
32775
  FeedbackMessage,
32590
32776
  {
32591
32777
  tone: "error",
32592
- className: `ab-alert ab-alert--error ${render.display.className ?? ""}`.trim(),
32778
+ className: `alert alert-error ${render.display.className ?? ""}`.trim(),
32593
32779
  role: "alert",
32594
- children: /* @__PURE__ */ jsx77("p", { className: "ab-text", children: render.display.message ?? "Booking form not found. Please check your configuration." })
32780
+ children: /* @__PURE__ */ jsx78("p", { className: "ab-text", children: render.display.message ?? "Booking form not found. Please check your configuration." })
32595
32781
  }
32596
32782
  );
32597
32783
  }
@@ -32611,39 +32797,31 @@ var init_booking_form_client = __esm({
32611
32797
  }
32612
32798
  };
32613
32799
  if (viewState.kind === "success") {
32614
- return /* @__PURE__ */ jsx77(
32800
+ return /* @__PURE__ */ jsx78(BookingSurface, { id: bookingAnchorId, className: render.display.className, children: /* @__PURE__ */ jsx78(
32615
32801
  SuccessMessage,
32616
32802
  {
32617
32803
  message: getBookingSuccessMessage(render.display.successMessage),
32618
- resourceName: viewState.resourceName,
32619
- className: render.display.className ?? void 0
32804
+ resourceName: viewState.resourceName
32620
32805
  }
32621
- );
32806
+ ) });
32622
32807
  }
32623
32808
  if (viewState.kind === "verifying") {
32624
- return /* @__PURE__ */ jsx77(
32625
- "div",
32626
- {
32627
- id: bookingAnchorId,
32628
- className: render.display.className ?? void 0,
32629
- children: /* @__PURE__ */ jsx77(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info", role: "status", children: /* @__PURE__ */ jsx77("p", { className: "ab-text", children: viewState.message }) })
32630
- }
32631
- );
32809
+ return /* @__PURE__ */ jsx78(BookingSurface, { id: bookingAnchorId, className: render.display.className, children: /* @__PURE__ */ jsx78(FeedbackMessage, { tone: "info", className: "alert alert-info", role: "status", children: /* @__PURE__ */ jsx78("p", { className: "ab-text", children: viewState.message }) }) });
32632
32810
  }
32633
- return /* @__PURE__ */ jsxs53("div", { id: bookingAnchorId, className: render.display.className ?? void 0, children: [
32634
- render.hydration.noticeMessage ? /* @__PURE__ */ jsx77(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info rb-mb-4", role: "status", children: /* @__PURE__ */ jsx77("p", { className: "ab-text", children: render.hydration.noticeMessage }) }) : null,
32635
- viewState.kind === "error" ? /* @__PURE__ */ jsx77(FeedbackMessage, { tone: "error", className: "ab-alert ab-alert--error", role: "alert", children: /* @__PURE__ */ jsx77("p", { className: "ab-text", children: viewState.message }) }) : null,
32636
- /* @__PURE__ */ jsx77(HeadlessBookingDefaultForm, { booking, onSubmit: handleComplete })
32811
+ return /* @__PURE__ */ jsxs54(BookingSurface, { id: bookingAnchorId, className: render.display.className, children: [
32812
+ render.hydration.noticeMessage ? /* @__PURE__ */ jsx78(FeedbackMessage, { tone: "info", className: "alert alert-info rb-mb-4", role: "status", children: /* @__PURE__ */ jsx78("p", { className: "ab-text", children: render.hydration.noticeMessage }) }) : null,
32813
+ viewState.kind === "error" ? /* @__PURE__ */ jsx78(FeedbackMessage, { tone: "error", className: "alert alert-error rb-mb-4", role: "alert", children: /* @__PURE__ */ jsx78("p", { className: "ab-text", children: viewState.message }) }) : null,
32814
+ /* @__PURE__ */ jsx78(HeadlessBookingDefaultForm, { booking, onSubmit: handleComplete })
32637
32815
  ] });
32638
32816
  };
32639
- BookingFormNodeClient = (props2) => /* @__PURE__ */ jsx77(BookingFormClient, { ...buildBookingFormNodeClientProps(props2) });
32817
+ BookingFormNodeClient = (props2) => /* @__PURE__ */ jsx78(BookingFormClient, { ...buildBookingFormNodeClientProps(props2) });
32640
32818
  }
32641
32819
  });
32642
32820
 
32643
32821
  // ../blocks/src/system/runtime/nodes/event-registration/StepIndicator.tsx
32644
- import { jsx as jsx78 } from "react/jsx-runtime";
32822
+ import { jsx as jsx79 } from "react/jsx-runtime";
32645
32823
  function StepIndicator2(props2) {
32646
- return /* @__PURE__ */ jsx78(StepIndicator, { ...props2, classPrefix: "er" });
32824
+ return /* @__PURE__ */ jsx79(StepIndicator, { ...props2, classPrefix: "er", emitSharedClasses: true });
32647
32825
  }
32648
32826
  var init_StepIndicator2 = __esm({
32649
32827
  "../blocks/src/system/runtime/nodes/event-registration/StepIndicator.tsx"() {
@@ -33558,7 +33736,7 @@ var init_sessionStorage = __esm({
33558
33736
  });
33559
33737
 
33560
33738
  // ../blocks/src/system/runtime/nodes/event-registration/EventSelectionStep.tsx
33561
- import { Fragment as Fragment11, jsx as jsx79, jsxs as jsxs54 } from "react/jsx-runtime";
33739
+ import { Fragment as Fragment10, jsx as jsx80, jsxs as jsxs55 } from "react/jsx-runtime";
33562
33740
  function getEventSelectionMode(events) {
33563
33741
  const firstSeriesId = events[0]?.seriesId;
33564
33742
  if (events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId)) {
@@ -33581,9 +33759,9 @@ var init_EventSelectionStep = __esm({
33581
33759
  }) => {
33582
33760
  const selectionMode = getEventSelectionMode(events);
33583
33761
  const isDateSelection2 = selectionMode === "date";
33584
- return /* @__PURE__ */ jsxs54("div", { className: "er-stack", children: [
33585
- /* @__PURE__ */ jsx79("h3", { className: "er-title", children: isDateSelection2 ? "Choose a date" : "Select an event" }),
33586
- /* @__PURE__ */ jsx79("div", { className: "er-event-grid", children: events.map((event) => {
33762
+ return /* @__PURE__ */ jsxs55("div", { className: "rb-reg-stack er-stack", children: [
33763
+ /* @__PURE__ */ jsx80("h3", { className: "er-title", children: isDateSelection2 ? "Choose a date" : "Select an event" }),
33764
+ /* @__PURE__ */ jsx80("div", { className: "er-event-grid", children: events.map((event) => {
33587
33765
  const isSelected = selectedEvent?.publicEventId === event.publicEventId;
33588
33766
  const isSoldOut = event.capacity !== null && event.availableSpots === 0;
33589
33767
  const canJoinWaitlist = isSoldOut && event.waitlistEnabled === true;
@@ -33601,25 +33779,25 @@ var init_EventSelectionStep = __esm({
33601
33779
  isLowCapacity && "er-capacity-badge--low",
33602
33780
  (canJoinWaitlist || !isUnavailable && !isLowCapacity) && "er-capacity-badge--available"
33603
33781
  ].filter(Boolean).join(" ");
33604
- return /* @__PURE__ */ jsx79(
33782
+ return /* @__PURE__ */ jsx80(
33605
33783
  "button",
33606
33784
  {
33607
33785
  type: "button",
33608
33786
  onClick: () => !isUnavailable && onSelect(event),
33609
33787
  disabled: isUnavailable,
33610
33788
  className: cardClasses,
33611
- children: /* @__PURE__ */ jsxs54("div", { className: "er-event-option", children: [
33612
- /* @__PURE__ */ jsxs54("div", { className: "er-event-option-main", children: [
33613
- /* @__PURE__ */ jsx79("h4", { className: "er-event-title", children: isDateSelection2 ? formatDate3(event.startsAt, { timeZone }) : event.title }),
33614
- /* @__PURE__ */ jsxs54("p", { className: "er-text er-text--muted", children: [
33789
+ children: /* @__PURE__ */ jsxs55("div", { className: "er-event-option", children: [
33790
+ /* @__PURE__ */ jsxs55("div", { className: "er-event-option-main", children: [
33791
+ /* @__PURE__ */ jsx80("h4", { className: "er-event-title", children: isDateSelection2 ? formatDate3(event.startsAt, { timeZone }) : event.title }),
33792
+ /* @__PURE__ */ jsxs55("p", { className: "er-text er-text--muted", children: [
33615
33793
  isDateSelection2 ? formatTime3(event.startsAt, { timeZone }) : `${formatDate3(event.startsAt, { timeZone })} at ${formatTime3(event.startsAt, { timeZone })}`,
33616
- showVenue && event.venue && /* @__PURE__ */ jsxs54(Fragment11, { children: [
33617
- /* @__PURE__ */ jsx79("span", { "aria-hidden": "true", children: " \xB7 " }),
33794
+ showVenue && event.venue && /* @__PURE__ */ jsxs55(Fragment10, { children: [
33795
+ /* @__PURE__ */ jsx80("span", { "aria-hidden": "true", children: " \xB7 " }),
33618
33796
  event.venue.name
33619
33797
  ] })
33620
33798
  ] })
33621
33799
  ] }),
33622
- showCapacity && event.capacity !== null && /* @__PURE__ */ jsx79("span", { className: badgeClasses, children: canJoinWaitlist ? "Waitlist" : isUnavailable ? "Sold Out" : `${event.availableSpots ?? 0} spots left` })
33800
+ showCapacity && event.capacity !== null && /* @__PURE__ */ jsx80("span", { className: badgeClasses, children: canJoinWaitlist ? "Waitlist" : isUnavailable ? "Sold Out" : `${event.availableSpots ?? 0} spots left` })
33623
33801
  ] })
33624
33802
  },
33625
33803
  event.publicEventId
@@ -33631,7 +33809,7 @@ var init_EventSelectionStep = __esm({
33631
33809
  });
33632
33810
 
33633
33811
  // ../blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.tsx
33634
- import { Fragment as Fragment12, jsx as jsx80, jsxs as jsxs55 } from "react/jsx-runtime";
33812
+ import { Fragment as Fragment11, jsx as jsx81, jsxs as jsxs56 } from "react/jsx-runtime";
33635
33813
  function getEventAttendanceModeLabel(mode) {
33636
33814
  switch (mode) {
33637
33815
  case "in_person":
@@ -33643,8 +33821,8 @@ function getEventAttendanceModeLabel(mode) {
33643
33821
  function TicketCounter(props2) {
33644
33822
  const { ticketsCount, maxAllowed, label, onTicketsChange } = props2;
33645
33823
  const minAllowed = props2.minAllowed ?? 1;
33646
- return /* @__PURE__ */ jsxs55("div", { className: "er-row er-counter", children: [
33647
- /* @__PURE__ */ jsx80(
33824
+ return /* @__PURE__ */ jsxs56("div", { className: "rb-reg-row er-row er-counter", children: [
33825
+ /* @__PURE__ */ jsx81(
33648
33826
  "button",
33649
33827
  {
33650
33828
  type: "button",
@@ -33655,8 +33833,8 @@ function TicketCounter(props2) {
33655
33833
  children: "-"
33656
33834
  }
33657
33835
  ),
33658
- /* @__PURE__ */ jsx80("span", { className: "er-counter-value", children: ticketsCount }),
33659
- /* @__PURE__ */ jsx80(
33836
+ /* @__PURE__ */ jsx81("span", { className: "er-counter-value", children: ticketsCount }),
33837
+ /* @__PURE__ */ jsx81(
33660
33838
  "button",
33661
33839
  {
33662
33840
  type: "button",
@@ -33670,11 +33848,11 @@ function TicketCounter(props2) {
33670
33848
  ] });
33671
33849
  }
33672
33850
  function TicketCounterLimit(props2) {
33673
- return /* @__PURE__ */ jsxs55("p", { className: "er-ticket-counter-limit", children: [
33674
- /* @__PURE__ */ jsx80("span", { children: props2.maximumLabel }),
33675
- props2.availabilityLabel ? /* @__PURE__ */ jsxs55(Fragment12, { children: [
33676
- /* @__PURE__ */ jsx80("br", {}),
33677
- /* @__PURE__ */ jsx80("span", { children: props2.availabilityLabel })
33851
+ return /* @__PURE__ */ jsxs56("p", { className: "er-ticket-counter-limit", children: [
33852
+ /* @__PURE__ */ jsx81("span", { children: props2.maximumLabel }),
33853
+ props2.availabilityLabel ? /* @__PURE__ */ jsxs56(Fragment11, { children: [
33854
+ /* @__PURE__ */ jsx81("br", {}),
33855
+ /* @__PURE__ */ jsx81("span", { children: props2.availabilityLabel })
33678
33856
  ] }) : null
33679
33857
  ] });
33680
33858
  }
@@ -33686,9 +33864,9 @@ function SlidingScaleAmountField(props2) {
33686
33864
  const minLabel = formatPrice(props2.slidingScale.minAmount, props2.currency);
33687
33865
  const maxLabel = formatPrice(props2.slidingScale.maxAmount, props2.currency);
33688
33866
  const suggestedLabel = props2.slidingScale.suggestedAmount !== null ? formatPrice(props2.slidingScale.suggestedAmount, props2.currency) : null;
33689
- return /* @__PURE__ */ jsxs55("div", { className: "er-field", children: [
33690
- /* @__PURE__ */ jsx80("label", { htmlFor: "er-sliding-amount", className: "er-label", children: "Amount" }),
33691
- /* @__PURE__ */ jsx80(
33867
+ return /* @__PURE__ */ jsxs56("div", { className: "er-field", children: [
33868
+ /* @__PURE__ */ jsx81("label", { htmlFor: "er-sliding-amount", className: "er-label", children: "Amount" }),
33869
+ /* @__PURE__ */ jsx81(
33692
33870
  "input",
33693
33871
  {
33694
33872
  id: "er-sliding-amount",
@@ -33702,7 +33880,7 @@ function SlidingScaleAmountField(props2) {
33702
33880
  onChange: (event) => props2.onChange?.(event.target.value)
33703
33881
  }
33704
33882
  ),
33705
- /* @__PURE__ */ jsxs55("p", { className: "er-text er-text--muted", children: [
33883
+ /* @__PURE__ */ jsxs56("p", { className: "er-text er-text--muted", children: [
33706
33884
  "Choose between ",
33707
33885
  minLabel,
33708
33886
  " and ",
@@ -33710,13 +33888,13 @@ function SlidingScaleAmountField(props2) {
33710
33888
  suggestedLabel ? `; suggested ${suggestedLabel}` : "",
33711
33889
  "."
33712
33890
  ] }),
33713
- props2.message ? /* @__PURE__ */ jsx80("p", { className: "er-text er-text--muted", children: props2.message }) : null
33891
+ props2.message ? /* @__PURE__ */ jsx81("p", { className: "er-text er-text--muted", children: props2.message }) : null
33714
33892
  ] });
33715
33893
  }
33716
33894
  function TicketTypeQuantityRows(props2) {
33717
33895
  const totalSelectedQuantity = getTicketSelectionTotal(props2.ticketSelections);
33718
- return /* @__PURE__ */ jsxs55("div", { className: "er-ticket-lines", children: [
33719
- /* @__PURE__ */ jsx80("div", { className: "er-ticket-line-list", role: "list", "aria-label": "Tickets", children: props2.ticketTypes.map((ticketType) => {
33896
+ return /* @__PURE__ */ jsxs56("div", { className: "er-ticket-lines", children: [
33897
+ /* @__PURE__ */ jsx81("div", { className: "er-ticket-line-list", role: "list", "aria-label": "Tickets", children: props2.ticketTypes.map((ticketType) => {
33720
33898
  const quantity = getTicketLineQuantity(props2.ticketSelections, ticketType.id);
33721
33899
  const disabled = ticketType.availability.kind === "unavailable";
33722
33900
  const availabilityLabel = getTicketTypeAvailabilityLabel(ticketType);
@@ -33728,24 +33906,24 @@ function TicketTypeQuantityRows(props2) {
33728
33906
  availableSpots: props2.availableSpots,
33729
33907
  ticketTypeRemainingCapacity: ticketType.availability.remainingCapacity
33730
33908
  });
33731
- return /* @__PURE__ */ jsxs55(
33909
+ return /* @__PURE__ */ jsxs56(
33732
33910
  "div",
33733
33911
  {
33734
33912
  className: `er-ticket-line${disabled ? " er-ticket-line--disabled" : ""}`,
33735
33913
  role: "listitem",
33736
33914
  children: [
33737
- /* @__PURE__ */ jsxs55("div", { className: "er-ticket-line-main", children: [
33738
- /* @__PURE__ */ jsxs55("div", { className: "er-ticket-line-heading", children: [
33739
- /* @__PURE__ */ jsx80("span", { className: "er-ticket-line-name", children: ticketType.name }),
33740
- /* @__PURE__ */ jsx80("span", { className: "er-ticket-line-price", children: priceLabel })
33915
+ /* @__PURE__ */ jsxs56("div", { className: "er-ticket-line-main", children: [
33916
+ /* @__PURE__ */ jsxs56("div", { className: "er-ticket-line-heading", children: [
33917
+ /* @__PURE__ */ jsx81("span", { className: "er-ticket-line-name", children: ticketType.name }),
33918
+ /* @__PURE__ */ jsx81("span", { className: "er-ticket-line-price", children: priceLabel })
33741
33919
  ] }),
33742
- ticketType.description ? /* @__PURE__ */ jsx80("p", { className: "er-ticket-line-detail", children: ticketType.description }) : null,
33743
- availabilityLabel ? /* @__PURE__ */ jsx80("p", { className: "er-ticket-line-detail", children: availabilityLabel }) : ticketType.availability.remainingCapacity !== null ? /* @__PURE__ */ jsxs55("p", { className: "er-ticket-line-detail", children: [
33920
+ ticketType.description ? /* @__PURE__ */ jsx81("p", { className: "er-ticket-line-detail", children: ticketType.description }) : null,
33921
+ availabilityLabel ? /* @__PURE__ */ jsx81("p", { className: "er-ticket-line-detail", children: availabilityLabel }) : ticketType.availability.remainingCapacity !== null ? /* @__PURE__ */ jsxs56("p", { className: "er-ticket-line-detail", children: [
33744
33922
  ticketType.availability.remainingCapacity,
33745
33923
  " remaining for this ticket type"
33746
33924
  ] }) : null
33747
33925
  ] }),
33748
- /* @__PURE__ */ jsx80(
33926
+ /* @__PURE__ */ jsx81(
33749
33927
  TicketCounter,
33750
33928
  {
33751
33929
  ticketsCount: quantity,
@@ -33766,14 +33944,14 @@ function TicketTypeQuantityRows(props2) {
33766
33944
  ticketType.id
33767
33945
  );
33768
33946
  }) }),
33769
- /* @__PURE__ */ jsx80(
33947
+ /* @__PURE__ */ jsx81(
33770
33948
  TicketCounterLimit,
33771
33949
  {
33772
33950
  maximumLabel: `${props2.maxTickets} tickets maximum`,
33773
33951
  availabilityLabel: props2.availableSpots != null ? `${props2.availableSpots} spots available` : null
33774
33952
  }
33775
33953
  ),
33776
- totalSelectedQuantity === 0 && props2.hasAvailableTicketTypes ? /* @__PURE__ */ jsx80("p", { className: "er-text er-text--muted", children: "Choose at least one ticket to continue." }) : totalSelectedQuantity === 0 ? /* @__PURE__ */ jsx80("p", { className: "er-text er-text--muted", children: "No ticket types are currently available." }) : null
33954
+ totalSelectedQuantity === 0 && props2.hasAvailableTicketTypes ? /* @__PURE__ */ jsx81("p", { className: "er-text er-text--muted", children: "Choose at least one ticket to continue." }) : totalSelectedQuantity === 0 ? /* @__PURE__ */ jsx81("p", { className: "er-text er-text--muted", children: "No ticket types are currently available." }) : null
33777
33955
  ] });
33778
33956
  }
33779
33957
  function getAttendanceModeDetail(attendanceMode) {
@@ -33786,9 +33964,9 @@ function getAttendanceModeDetail(attendanceMode) {
33786
33964
  return `${attendanceMode.availableSpots} spots available`;
33787
33965
  }
33788
33966
  function AttendanceModeTiles(props2) {
33789
- return /* @__PURE__ */ jsx80("div", { className: "er-payment-tiles", role: "list", "aria-label": "Attendance mode", children: props2.attendanceModes.map((attendanceMode) => {
33967
+ return /* @__PURE__ */ jsx81("div", { className: "er-payment-tiles", role: "list", "aria-label": "Attendance mode", children: props2.attendanceModes.map((attendanceMode) => {
33790
33968
  const isSelected = props2.selectedAttendanceMode === attendanceMode.mode;
33791
- return /* @__PURE__ */ jsx80("div", { role: "listitem", children: /* @__PURE__ */ jsxs55(
33969
+ return /* @__PURE__ */ jsx81("div", { role: "listitem", children: /* @__PURE__ */ jsxs56(
33792
33970
  "button",
33793
33971
  {
33794
33972
  type: "button",
@@ -33796,8 +33974,8 @@ function AttendanceModeTiles(props2) {
33796
33974
  className: `er-payment-tile${isSelected ? " er-payment-tile--selected" : ""}`,
33797
33975
  onClick: () => props2.onAttendanceModeChange?.(attendanceMode.mode),
33798
33976
  children: [
33799
- /* @__PURE__ */ jsx80("div", { className: "er-payment-tile-label", children: getEventAttendanceModeLabel(attendanceMode.mode) }),
33800
- /* @__PURE__ */ jsx80("div", { className: "er-payment-tile-detail", children: getAttendanceModeDetail(attendanceMode) })
33977
+ /* @__PURE__ */ jsx81("div", { className: "er-payment-tile-label", children: getEventAttendanceModeLabel(attendanceMode.mode) }),
33978
+ /* @__PURE__ */ jsx81("div", { className: "er-payment-tile-detail", children: getAttendanceModeDetail(attendanceMode) })
33801
33979
  ]
33802
33980
  }
33803
33981
  ) }, attendanceMode.mode);
@@ -33877,9 +34055,9 @@ var init_TicketSelectionStep = __esm({
33877
34055
  });
33878
34056
  const eventAvailabilityLabel = !canJoinWaitlist && event?.availableSpots != null ? `${event.availableSpots} spots available` : null;
33879
34057
  if (deliveryMode === "hybrid" && !selectedAttendanceMode) {
33880
- return /* @__PURE__ */ jsxs55("div", { className: "er-stack", children: [
33881
- /* @__PURE__ */ jsx80("h3", { className: "er-title", children: "How will you attend?" }),
33882
- /* @__PURE__ */ jsx80(
34058
+ return /* @__PURE__ */ jsxs56("div", { className: "rb-reg-stack er-stack", children: [
34059
+ /* @__PURE__ */ jsx81("h3", { className: "er-title", children: "How will you attend?" }),
34060
+ /* @__PURE__ */ jsx81(
33883
34061
  AttendanceModeTiles,
33884
34062
  {
33885
34063
  attendanceModes,
@@ -33887,19 +34065,19 @@ var init_TicketSelectionStep = __esm({
33887
34065
  onAttendanceModeChange
33888
34066
  }
33889
34067
  ),
33890
- /* @__PURE__ */ jsx80("p", { className: "er-text er-text--muted", children: "Choose whether you want to attend in person or online." })
34068
+ /* @__PURE__ */ jsx81("p", { className: "er-text er-text--muted", children: "Choose whether you want to attend in person or online." })
33891
34069
  ] });
33892
34070
  }
33893
34071
  if (isSoldOut && !canJoinWaitlist) {
33894
- return /* @__PURE__ */ jsxs55("div", { className: "er-stack", children: [
33895
- /* @__PURE__ */ jsx80("h3", { className: "er-title", children: "Sold Out" }),
33896
- /* @__PURE__ */ jsx80("p", { className: "er-text er-text--muted", children: "Sorry you missed out! This event is fully booked." })
34072
+ return /* @__PURE__ */ jsxs56("div", { className: "rb-reg-stack er-stack", children: [
34073
+ /* @__PURE__ */ jsx81("h3", { className: "er-title", children: "Sold Out" }),
34074
+ /* @__PURE__ */ jsx81("p", { className: "er-text er-text--muted", children: "Sorry you missed out! This event is fully booked." })
33897
34075
  ] });
33898
34076
  }
33899
- return /* @__PURE__ */ jsxs55("div", { className: "er-stack", children: [
33900
- deliveryMode === "hybrid" ? /* @__PURE__ */ jsxs55(Fragment12, { children: [
33901
- /* @__PURE__ */ jsx80("h3", { className: "er-title", children: "How will you attend?" }),
33902
- /* @__PURE__ */ jsx80(
34077
+ return /* @__PURE__ */ jsxs56("div", { className: "rb-reg-stack er-stack", children: [
34078
+ deliveryMode === "hybrid" ? /* @__PURE__ */ jsxs56(Fragment11, { children: [
34079
+ /* @__PURE__ */ jsx81("h3", { className: "er-title", children: "How will you attend?" }),
34080
+ /* @__PURE__ */ jsx81(
33903
34081
  AttendanceModeTiles,
33904
34082
  {
33905
34083
  attendanceModes,
@@ -33908,9 +34086,9 @@ var init_TicketSelectionStep = __esm({
33908
34086
  }
33909
34087
  )
33910
34088
  ] }) : null,
33911
- usesTicketTypes ? /* @__PURE__ */ jsx80(Fragment12, { children: noVisibleTicketTypes ? /* @__PURE__ */ jsx80("p", { className: "er-text er-text--muted", children: "No ticket types are currently available." }) : /* @__PURE__ */ jsxs55(Fragment12, { children: [
33912
- /* @__PURE__ */ jsx80("h3", { className: "er-title", children: "Choose tickets" }),
33913
- /* @__PURE__ */ jsx80(
34089
+ usesTicketTypes ? /* @__PURE__ */ jsx81(Fragment11, { children: noVisibleTicketTypes ? /* @__PURE__ */ jsx81("p", { className: "er-text er-text--muted", children: "No ticket types are currently available." }) : /* @__PURE__ */ jsxs56(Fragment11, { children: [
34090
+ /* @__PURE__ */ jsx81("h3", { className: "er-title", children: "Choose tickets" }),
34091
+ /* @__PURE__ */ jsx81(
33914
34092
  TicketTypeQuantityRows,
33915
34093
  {
33916
34094
  ticketTypes: visibleTicketTypes,
@@ -33922,8 +34100,8 @@ var init_TicketSelectionStep = __esm({
33922
34100
  onTicketSelectionsChange
33923
34101
  }
33924
34102
  )
33925
- ] }) }) : /* @__PURE__ */ jsxs55(Fragment12, { children: [
33926
- slidingScale ? /* @__PURE__ */ jsx80(
34103
+ ] }) }) : /* @__PURE__ */ jsxs56(Fragment11, { children: [
34104
+ slidingScale ? /* @__PURE__ */ jsx81(
33927
34105
  SlidingScaleAmountField,
33928
34106
  {
33929
34107
  slidingScale,
@@ -33933,9 +34111,9 @@ var init_TicketSelectionStep = __esm({
33933
34111
  onChange: onSlidingAmountChange
33934
34112
  }
33935
34113
  ) : null,
33936
- /* @__PURE__ */ jsx80("h3", { className: "er-title", children: canJoinWaitlist ? "How many waitlist spots?" : "How many tickets?" }),
33937
- /* @__PURE__ */ jsxs55("div", { className: "er-ticket-counter-group", children: [
33938
- /* @__PURE__ */ jsx80(
34114
+ /* @__PURE__ */ jsx81("h3", { className: "er-title", children: canJoinWaitlist ? "How many waitlist spots?" : "How many tickets?" }),
34115
+ /* @__PURE__ */ jsxs56("div", { className: "er-ticket-counter-group", children: [
34116
+ /* @__PURE__ */ jsx81(
33939
34117
  TicketCounter,
33940
34118
  {
33941
34119
  ticketsCount,
@@ -33944,7 +34122,7 @@ var init_TicketSelectionStep = __esm({
33944
34122
  onTicketsChange
33945
34123
  }
33946
34124
  ),
33947
- /* @__PURE__ */ jsx80(
34125
+ /* @__PURE__ */ jsx81(
33948
34126
  TicketCounterLimit,
33949
34127
  {
33950
34128
  maximumLabel: `${maxAllowed} ${canJoinWaitlist ? "waitlist spots" : "tickets"} maximum`,
@@ -33953,7 +34131,7 @@ var init_TicketSelectionStep = __esm({
33953
34131
  )
33954
34132
  ] })
33955
34133
  ] }),
33956
- canJoinWaitlist && /* @__PURE__ */ jsx80("p", { className: "er-text er-text--muted", children: "This event is currently full. Continue to join the waitlist if a spot opens up." })
34134
+ canJoinWaitlist && /* @__PURE__ */ jsx81("p", { className: "er-text er-text--muted", children: "This event is currently full. Continue to join the waitlist if a spot opens up." })
33957
34135
  ] });
33958
34136
  };
33959
34137
  }
@@ -33961,7 +34139,7 @@ var init_TicketSelectionStep = __esm({
33961
34139
 
33962
34140
  // ../blocks/src/system/runtime/nodes/event-registration/GuestDetailsSection.tsx
33963
34141
  import { useRef as useRef11, useEffect as useEffect10 } from "react";
33964
- import { jsx as jsx81, jsxs as jsxs56 } from "react/jsx-runtime";
34142
+ import { jsx as jsx82, jsxs as jsxs57 } from "react/jsx-runtime";
33965
34143
  function hasGuestErrors(errors) {
33966
34144
  return Object.keys(errors).length > 0;
33967
34145
  }
@@ -34004,16 +34182,16 @@ var init_GuestDetailsSection = __esm({
34004
34182
  if (guests.length === 0) return null;
34005
34183
  const showErrorBanner = hasGuestErrors(errors);
34006
34184
  const firstErrorIndex = Object.keys(errors).length > 0 ? Math.min(...Object.keys(errors).map(Number)) : -1;
34007
- return /* @__PURE__ */ jsxs56(
34185
+ return /* @__PURE__ */ jsxs57(
34008
34186
  "div",
34009
34187
  {
34010
34188
  ref: sectionRef,
34011
34189
  className: `er-guest-section ${shake ? "er-guest-section--shake" : ""}`,
34012
34190
  onAnimationEnd: handleAnimationEnd,
34013
34191
  children: [
34014
- /* @__PURE__ */ jsx81("h3", { className: "er-title", children: "Who else is coming?" }),
34015
- showErrorBanner && /* @__PURE__ */ jsx81(FeedbackMessage, { tone: "error", className: "er-guest-section-error", role: "alert", children: errorMessage }),
34016
- /* @__PURE__ */ jsx81("div", { className: "er-guest-cards", children: guests.map((guest, index) => {
34192
+ /* @__PURE__ */ jsx82("h3", { className: "er-title", children: "Who else is coming?" }),
34193
+ showErrorBanner && /* @__PURE__ */ jsx82(FeedbackMessage, { tone: "error", className: "er-guest-section-error", role: "alert", children: errorMessage }),
34194
+ /* @__PURE__ */ jsx82("div", { className: "er-guest-cards", children: guests.map((guest, index) => {
34017
34195
  const guestError = errors?.[index]?.name;
34018
34196
  const guestErrorId = `guest-${index}-error`;
34019
34197
  const guestValidationProps = getFieldValidationControlProps({
@@ -34021,13 +34199,13 @@ var init_GuestDetailsSection = __esm({
34021
34199
  messageId: guestErrorId
34022
34200
  });
34023
34201
  const isFirstError = index === firstErrorIndex;
34024
- return /* @__PURE__ */ jsxs56("div", { className: "er-guest-card", children: [
34025
- /* @__PURE__ */ jsxs56("div", { className: "er-field", children: [
34026
- /* @__PURE__ */ jsxs56("label", { className: "er-label", children: [
34202
+ return /* @__PURE__ */ jsxs57("div", { className: "er-guest-card", children: [
34203
+ /* @__PURE__ */ jsxs57("div", { className: "er-field", children: [
34204
+ /* @__PURE__ */ jsxs57("label", { className: "er-label", children: [
34027
34205
  "Name ",
34028
- /* @__PURE__ */ jsx81("span", { className: "er-required", children: "*" })
34206
+ /* @__PURE__ */ jsx82("span", { className: "er-required", children: "*" })
34029
34207
  ] }),
34030
- /* @__PURE__ */ jsx81(
34208
+ /* @__PURE__ */ jsx82(
34031
34209
  "input",
34032
34210
  {
34033
34211
  ref: isFirstError ? firstErrorRef : void 0,
@@ -34039,11 +34217,11 @@ var init_GuestDetailsSection = __esm({
34039
34217
  ...guestValidationProps
34040
34218
  }
34041
34219
  ),
34042
- guestError && /* @__PURE__ */ jsx81(FieldValidationMessage, { id: guestErrorId, className: "er-error", children: guestError })
34220
+ guestError && /* @__PURE__ */ jsx82(FieldValidationMessage, { id: guestErrorId, className: "er-error", children: guestError })
34043
34221
  ] }),
34044
- /* @__PURE__ */ jsxs56("div", { className: "er-field", children: [
34045
- /* @__PURE__ */ jsx81("label", { className: "er-label", children: "Email" }),
34046
- /* @__PURE__ */ jsx81(
34222
+ /* @__PURE__ */ jsxs57("div", { className: "er-field", children: [
34223
+ /* @__PURE__ */ jsx82("label", { className: "er-label", children: "Email" }),
34224
+ /* @__PURE__ */ jsx82(
34047
34225
  "input",
34048
34226
  {
34049
34227
  type: "email",
@@ -34054,9 +34232,9 @@ var init_GuestDetailsSection = __esm({
34054
34232
  }
34055
34233
  )
34056
34234
  ] }),
34057
- /* @__PURE__ */ jsxs56("div", { className: "er-field", children: [
34058
- /* @__PURE__ */ jsx81("label", { className: "er-label", children: "Phone" }),
34059
- /* @__PURE__ */ jsx81(
34235
+ /* @__PURE__ */ jsxs57("div", { className: "er-field", children: [
34236
+ /* @__PURE__ */ jsx82("label", { className: "er-label", children: "Phone" }),
34237
+ /* @__PURE__ */ jsx82(
34060
34238
  "input",
34061
34239
  {
34062
34240
  type: "tel",
@@ -34078,7 +34256,7 @@ var init_GuestDetailsSection = __esm({
34078
34256
 
34079
34257
  // ../blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.tsx
34080
34258
  import { useId as useId2 } from "react";
34081
- import { jsx as jsx82, jsxs as jsxs57 } from "react/jsx-runtime";
34259
+ import { jsx as jsx83, jsxs as jsxs58 } from "react/jsx-runtime";
34082
34260
  var AttendeeDetailsStep;
34083
34261
  var init_AttendeeDetailsStep = __esm({
34084
34262
  "../blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.tsx"() {
@@ -34117,15 +34295,15 @@ var init_AttendeeDetailsStep = __esm({
34117
34295
  messageId: emailErrorId
34118
34296
  });
34119
34297
  const showGuestSection = requireGuestDetails && ticketsCount > 1 && onGuestsChange;
34120
- return /* @__PURE__ */ jsxs57("div", { className: "er-stack", children: [
34121
- /* @__PURE__ */ jsx82("h3", { className: "er-title", children: "Your Information" }),
34122
- /* @__PURE__ */ jsxs57("div", { children: [
34123
- /* @__PURE__ */ jsxs57("div", { className: "er-field", children: [
34124
- /* @__PURE__ */ jsxs57("label", { className: "er-label", htmlFor: nameId, children: [
34298
+ return /* @__PURE__ */ jsxs58("div", { className: "rb-reg-stack er-stack", children: [
34299
+ /* @__PURE__ */ jsx83("h3", { className: "er-title", children: "Your Information" }),
34300
+ /* @__PURE__ */ jsxs58("div", { children: [
34301
+ /* @__PURE__ */ jsxs58("div", { className: "er-field", children: [
34302
+ /* @__PURE__ */ jsxs58("label", { className: "er-label", htmlFor: nameId, children: [
34125
34303
  "Name ",
34126
- /* @__PURE__ */ jsx82("span", { className: "er-required", children: "*" })
34304
+ /* @__PURE__ */ jsx83("span", { className: "er-required", children: "*" })
34127
34305
  ] }),
34128
- /* @__PURE__ */ jsx82(
34306
+ /* @__PURE__ */ jsx83(
34129
34307
  "input",
34130
34308
  {
34131
34309
  id: nameId,
@@ -34137,14 +34315,14 @@ var init_AttendeeDetailsStep = __esm({
34137
34315
  ...nameValidationProps
34138
34316
  }
34139
34317
  ),
34140
- errors.name && /* @__PURE__ */ jsx82(FieldValidationMessage, { id: nameErrorId, className: "er-error", children: errors.name })
34318
+ errors.name && /* @__PURE__ */ jsx83(FieldValidationMessage, { id: nameErrorId, className: "er-error", children: errors.name })
34141
34319
  ] }),
34142
- /* @__PURE__ */ jsxs57("div", { className: "er-field", children: [
34143
- /* @__PURE__ */ jsxs57("label", { className: "er-label", htmlFor: emailId, children: [
34320
+ /* @__PURE__ */ jsxs58("div", { className: "er-field", children: [
34321
+ /* @__PURE__ */ jsxs58("label", { className: "er-label", htmlFor: emailId, children: [
34144
34322
  "Email ",
34145
- /* @__PURE__ */ jsx82("span", { className: "er-required", children: "*" })
34323
+ /* @__PURE__ */ jsx83("span", { className: "er-required", children: "*" })
34146
34324
  ] }),
34147
- /* @__PURE__ */ jsx82(
34325
+ /* @__PURE__ */ jsx83(
34148
34326
  "input",
34149
34327
  {
34150
34328
  id: emailId,
@@ -34157,7 +34335,7 @@ var init_AttendeeDetailsStep = __esm({
34157
34335
  ...emailValidationProps
34158
34336
  }
34159
34337
  ),
34160
- emailLocked && /* @__PURE__ */ jsx82(
34338
+ emailLocked && /* @__PURE__ */ jsx83(
34161
34339
  LoggedInAsUser,
34162
34340
  {
34163
34341
  email: formData.email,
@@ -34165,11 +34343,11 @@ var init_AttendeeDetailsStep = __esm({
34165
34343
  classPrefix: "er"
34166
34344
  }
34167
34345
  ),
34168
- errors.email && /* @__PURE__ */ jsx82(FieldValidationMessage, { id: emailErrorId, className: "er-error", children: errors.email })
34346
+ errors.email && /* @__PURE__ */ jsx83(FieldValidationMessage, { id: emailErrorId, className: "er-error", children: errors.email })
34169
34347
  ] }),
34170
- /* @__PURE__ */ jsxs57("div", { className: "er-field", children: [
34171
- /* @__PURE__ */ jsx82("label", { className: "er-label", htmlFor: phoneId, children: "Phone" }),
34172
- /* @__PURE__ */ jsx82(
34348
+ /* @__PURE__ */ jsxs58("div", { className: "er-field", children: [
34349
+ /* @__PURE__ */ jsx83("label", { className: "er-label", htmlFor: phoneId, children: "Phone" }),
34350
+ /* @__PURE__ */ jsx83(
34173
34351
  "input",
34174
34352
  {
34175
34353
  id: phoneId,
@@ -34181,9 +34359,9 @@ var init_AttendeeDetailsStep = __esm({
34181
34359
  }
34182
34360
  )
34183
34361
  ] }),
34184
- /* @__PURE__ */ jsxs57("div", { className: "er-field", children: [
34185
- /* @__PURE__ */ jsx82("label", { className: "er-label", htmlFor: notesId, children: "Notes" }),
34186
- /* @__PURE__ */ jsx82(
34362
+ /* @__PURE__ */ jsxs58("div", { className: "er-field", children: [
34363
+ /* @__PURE__ */ jsx83("label", { className: "er-label", htmlFor: notesId, children: "Notes" }),
34364
+ /* @__PURE__ */ jsx83(
34187
34365
  "textarea",
34188
34366
  {
34189
34367
  id: notesId,
@@ -34196,7 +34374,7 @@ var init_AttendeeDetailsStep = __esm({
34196
34374
  )
34197
34375
  ] })
34198
34376
  ] }),
34199
- showGuestSection && /* @__PURE__ */ jsx82(
34377
+ showGuestSection && /* @__PURE__ */ jsx83(
34200
34378
  GuestDetailsSection,
34201
34379
  {
34202
34380
  guests,
@@ -34574,7 +34752,7 @@ var init_lucide_react = __esm({
34574
34752
  });
34575
34753
 
34576
34754
  // ../blocks/src/system/runtime/nodes/event-registration/MembershipHero.tsx
34577
- import { jsx as jsx83, jsxs as jsxs58 } from "react/jsx-runtime";
34755
+ import { jsx as jsx84, jsxs as jsxs59 } from "react/jsx-runtime";
34578
34756
  var MembershipHero2;
34579
34757
  var init_MembershipHero2 = __esm({
34580
34758
  "../blocks/src/system/runtime/nodes/event-registration/MembershipHero.tsx"() {
@@ -34584,14 +34762,14 @@ var init_MembershipHero2 = __esm({
34584
34762
  MembershipHero2 = ({
34585
34763
  membershipName
34586
34764
  }) => {
34587
- return /* @__PURE__ */ jsx83("div", { className: "er-stack", children: /* @__PURE__ */ jsxs58("div", { className: "er-booking-mode-hero", children: [
34588
- /* @__PURE__ */ jsx83("div", { className: "er-booking-mode-hero-icon", children: /* @__PURE__ */ jsx83(Sparkles, { size: 20, fill: "currentColor", "aria-hidden": "true" }) }),
34589
- /* @__PURE__ */ jsxs58("div", { className: "er-booking-mode-hero-content", children: [
34590
- /* @__PURE__ */ jsxs58("h3", { className: "er-booking-mode-hero-title", children: [
34765
+ return /* @__PURE__ */ jsx84("div", { className: "rb-reg-stack er-stack", children: /* @__PURE__ */ jsxs59("div", { className: "er-booking-mode-hero", children: [
34766
+ /* @__PURE__ */ jsx84("div", { className: "er-booking-mode-hero-icon", children: /* @__PURE__ */ jsx84(Sparkles, { size: 20, fill: "currentColor", "aria-hidden": "true" }) }),
34767
+ /* @__PURE__ */ jsxs59("div", { className: "er-booking-mode-hero-content", children: [
34768
+ /* @__PURE__ */ jsxs59("h3", { className: "er-booking-mode-hero-title", children: [
34591
34769
  "This event is included with your ",
34592
34770
  membershipName
34593
34771
  ] }),
34594
- /* @__PURE__ */ jsx83("p", { className: "er-booking-mode-hero-subtitle", children: "No payment required - your membership covers this event." })
34772
+ /* @__PURE__ */ jsx84("p", { className: "er-booking-mode-hero-subtitle", children: "No payment required - your membership covers this event." })
34595
34773
  ] })
34596
34774
  ] }) });
34597
34775
  };
@@ -34606,60 +34784,6 @@ var init_CheckIcon2 = __esm({
34606
34784
  }
34607
34785
  });
34608
34786
 
34609
- // ../blocks/src/system/runtime/nodes/event-registration/SelectableOptionCard.tsx
34610
- import { jsx as jsx84, jsxs as jsxs59 } from "react/jsx-runtime";
34611
- function SelectableOptionCard(props2) {
34612
- const {
34613
- baseClassName,
34614
- selectedClassName,
34615
- disabledClassName,
34616
- iconClassName,
34617
- labelClassName,
34618
- detailClassName,
34619
- icon: icon2,
34620
- label,
34621
- detail,
34622
- selected,
34623
- disabled,
34624
- tooltip,
34625
- extraClassNames = [],
34626
- onClick,
34627
- renderCheck,
34628
- renderDisabledTooltip
34629
- } = props2;
34630
- const isSelected = selected && !disabled;
34631
- const className = [
34632
- baseClassName,
34633
- isSelected && selectedClassName,
34634
- disabled && disabledClassName,
34635
- ...extraClassNames
34636
- ].filter(Boolean).join(" ");
34637
- const showNativeTitle = Boolean(tooltip) && !(disabled && renderDisabledTooltip);
34638
- return /* @__PURE__ */ jsxs59(
34639
- "button",
34640
- {
34641
- type: "button",
34642
- className,
34643
- onClick: disabled ? void 0 : onClick,
34644
- title: showNativeTitle ? tooltip : void 0,
34645
- "aria-disabled": disabled || void 0,
34646
- children: [
34647
- /* @__PURE__ */ jsx84("div", { className: iconClassName, children: icon2 }),
34648
- /* @__PURE__ */ jsx84("div", { className: labelClassName, children: label }),
34649
- /* @__PURE__ */ jsx84("div", { className: detailClassName, children: detail }),
34650
- isSelected && renderCheck?.(),
34651
- disabled && tooltip && renderDisabledTooltip?.(tooltip)
34652
- ]
34653
- }
34654
- );
34655
- }
34656
- var init_SelectableOptionCard = __esm({
34657
- "../blocks/src/system/runtime/nodes/event-registration/SelectableOptionCard.tsx"() {
34658
- "use strict";
34659
- "use client";
34660
- }
34661
- });
34662
-
34663
34787
  // ../blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.ts
34664
34788
  function buildEventRegistrationPaymentOptionsViewModel(input) {
34665
34789
  const supportedOptions = selectSupportedEventDirectPaymentOptions(
@@ -34749,9 +34873,9 @@ var init_eventPaymentOptions = __esm({
34749
34873
 
34750
34874
  // ../blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.tsx
34751
34875
  import { useEffect as useEffect11, useCallback as useCallback6 } from "react";
34752
- import { Fragment as Fragment13, jsx as jsx85, jsxs as jsxs60 } from "react/jsx-runtime";
34876
+ import { Fragment as Fragment12, jsx as jsx85, jsxs as jsxs60 } from "react/jsx-runtime";
34753
34877
  function PaymentCheckIcon() {
34754
- return /* @__PURE__ */ jsx85("div", { className: "er-check", children: /* @__PURE__ */ jsx85(CheckIcon2, {}) });
34878
+ return /* @__PURE__ */ jsx85("div", { className: "rb-option-check er-check", children: /* @__PURE__ */ jsx85(CheckIcon2, {}) });
34755
34879
  }
34756
34880
  function PaymentTile({
34757
34881
  icon: icon2,
@@ -34808,7 +34932,7 @@ var init_PaymentSelectionStep = __esm({
34808
34932
  init_spinner();
34809
34933
  init_buttons();
34810
34934
  init_CheckIcon2();
34811
- init_SelectableOptionCard();
34935
+ init_shared6();
34812
34936
  init_eventPaymentOptions();
34813
34937
  PaymentSelectionStep = ({
34814
34938
  event,
@@ -34900,25 +35024,25 @@ var init_PaymentSelectionStep = __esm({
34900
35024
  getButtonText
34901
35025
  ]);
34902
35026
  if (eligibilityLoading) {
34903
- return /* @__PURE__ */ jsx85("div", { className: "er-stack", children: /* @__PURE__ */ jsxs60("div", { className: "er-center", children: [
35027
+ return /* @__PURE__ */ jsx85("div", { className: "rb-reg-stack er-stack", children: /* @__PURE__ */ jsxs60("div", { className: "er-center", children: [
34904
35028
  /* @__PURE__ */ jsx85(SpinnerNode, { size: "lg", srLabel: "Checking payment options" }),
34905
35029
  /* @__PURE__ */ jsx85("p", { className: "er-text--muted", children: "Checking payment options..." })
34906
35030
  ] }) });
34907
35031
  }
34908
35032
  if (eligibilityError) {
34909
- return /* @__PURE__ */ jsx85("div", { className: "er-stack", children: /* @__PURE__ */ jsx85("div", { className: "er-center", children: /* @__PURE__ */ jsx85("p", { className: "er-text er-text--error", children: eligibilityError }) }) });
35033
+ return /* @__PURE__ */ jsx85("div", { className: "rb-reg-stack er-stack", children: /* @__PURE__ */ jsx85("div", { className: "er-center", children: /* @__PURE__ */ jsx85("p", { className: "er-text er-text--error", children: eligibilityError }) }) });
34910
35034
  }
34911
35035
  if (!eligibility) {
34912
35036
  const missing = [];
34913
35037
  if (!occurrenceId) missing.push("occurrenceId");
34914
35038
  if (!email) missing.push("email");
34915
- return /* @__PURE__ */ jsx85("div", { className: "er-stack", children: /* @__PURE__ */ jsx85("div", { className: "er-center", children: /* @__PURE__ */ jsxs60("p", { className: "er-text er-text--error", children: [
35039
+ return /* @__PURE__ */ jsx85("div", { className: "rb-reg-stack er-stack", children: /* @__PURE__ */ jsx85("div", { className: "er-center", children: /* @__PURE__ */ jsxs60("p", { className: "er-text er-text--error", children: [
34916
35040
  "Unable to determine payment options",
34917
35041
  missing.length > 0 && ` (missing: ${missing.join(", ")})`
34918
35042
  ] }) }) });
34919
35043
  }
34920
35044
  if (eligibility.isFree) {
34921
- return /* @__PURE__ */ jsxs60("div", { className: "er-stack", children: [
35045
+ return /* @__PURE__ */ jsxs60("div", { className: "rb-reg-stack er-stack", children: [
34922
35046
  /* @__PURE__ */ jsx85("h3", { className: "er-title", children: "Payment" }),
34923
35047
  /* @__PURE__ */ jsxs60("div", { className: "er-payment-summary", children: [
34924
35048
  /* @__PURE__ */ jsx85("p", { className: "er-text er-text--success", children: "This event is free!" }),
@@ -34932,15 +35056,15 @@ var init_PaymentSelectionStep = __esm({
34932
35056
  }
34933
35057
  if (!eligibility.eligible) {
34934
35058
  if (eligibility.isFull && !eligibility.canJoinWaitlist) {
34935
- return /* @__PURE__ */ jsxs60("div", { className: "er-stack", children: [
35059
+ return /* @__PURE__ */ jsxs60("div", { className: "rb-reg-stack er-stack", children: [
34936
35060
  /* @__PURE__ */ jsx85("h3", { className: "er-title", children: "Sold Out" }),
34937
35061
  /* @__PURE__ */ jsx85("div", { className: "er-center", children: /* @__PURE__ */ jsx85("p", { className: "er-text er-text--muted", children: "This event is fully booked and there is no waitlist available for this booking." }) })
34938
35062
  ] });
34939
35063
  }
34940
35064
  const shouldPromptLogin = !isAuthenticated && (eligibility.requiresAuthForPasses || eligibility.requiresAuthForMemberships);
34941
- return /* @__PURE__ */ jsxs60("div", { className: "er-stack", children: [
35065
+ return /* @__PURE__ */ jsxs60("div", { className: "rb-reg-stack er-stack", children: [
34942
35066
  /* @__PURE__ */ jsx85("h3", { className: "er-title", children: shouldPromptLogin ? "Log In Required" : "Payment Required" }),
34943
- /* @__PURE__ */ jsx85("div", { className: "er-center", children: shouldPromptLogin ? /* @__PURE__ */ jsxs60(Fragment13, { children: [
35067
+ /* @__PURE__ */ jsx85("div", { className: "er-center", children: shouldPromptLogin ? /* @__PURE__ */ jsxs60(Fragment12, { children: [
34944
35068
  /* @__PURE__ */ jsx85("p", { className: "er-text er-text--muted", children: "Have a pass or membership? Log in to use it." }),
34945
35069
  /* @__PURE__ */ jsx85(
34946
35070
  "button",
@@ -34956,7 +35080,7 @@ var init_PaymentSelectionStep = __esm({
34956
35080
  }
34957
35081
  ),
34958
35082
  !email.trim() && /* @__PURE__ */ jsx85("p", { className: "er-text er-text--muted", children: "Enter your email to request a login link." })
34959
- ] }) : /* @__PURE__ */ jsxs60(Fragment13, { children: [
35083
+ ] }) : /* @__PURE__ */ jsxs60(Fragment12, { children: [
34960
35084
  /* @__PURE__ */ jsx85("p", { className: "er-text er-text--error", children: "This event requires a valid pass or membership to register." }),
34961
35085
  eligibility.eventAcceptsPasses && !eligibility.eventAcceptsMemberships && /* @__PURE__ */ jsx85("p", { className: "er-text er-text--muted", children: "You need a pass with credits for this event category." }),
34962
35086
  eligibility.eventAcceptsMemberships && !eligibility.eventAcceptsPasses && /* @__PURE__ */ jsx85("p", { className: "er-text er-text--muted", children: "You need an active membership for this event category." })
@@ -34964,10 +35088,10 @@ var init_PaymentSelectionStep = __esm({
34964
35088
  ] });
34965
35089
  }
34966
35090
  const isMultiTicket = areEntitlementsDisabledForTicketCount(ticketsCount);
34967
- return /* @__PURE__ */ jsxs60("div", { className: "er-stack", children: [
35091
+ return /* @__PURE__ */ jsxs60("div", { className: "rb-reg-stack er-stack", children: [
34968
35092
  /* @__PURE__ */ jsx85("h3", { className: "er-title", children: "Payment Options" }),
34969
35093
  /* @__PURE__ */ jsxs60("div", { className: "er-payment-tiles", children: [
34970
- canShowDirectPaymentOptions && /* @__PURE__ */ jsx85(Fragment13, { children: directPaymentOptions.map((option) => /* @__PURE__ */ jsx85(
35094
+ canShowDirectPaymentOptions && /* @__PURE__ */ jsx85(Fragment12, { children: directPaymentOptions.map((option) => /* @__PURE__ */ jsx85(
34971
35095
  PaymentTile,
34972
35096
  {
34973
35097
  icon: /* @__PURE__ */ jsx85(CreditCard, { size: 24, "aria-hidden": "true" }),
@@ -35066,7 +35190,7 @@ var init_PaymentSelectionStep = __esm({
35066
35190
  });
35067
35191
 
35068
35192
  // ../blocks/src/system/runtime/nodes/event-registration/SuccessStep.tsx
35069
- import { Fragment as Fragment14, jsx as jsx86, jsxs as jsxs61 } from "react/jsx-runtime";
35193
+ import { Fragment as Fragment13, jsx as jsx86, jsxs as jsxs61 } from "react/jsx-runtime";
35070
35194
  var SuccessStep;
35071
35195
  var init_SuccessStep = __esm({
35072
35196
  "../blocks/src/system/runtime/nodes/event-registration/SuccessStep.tsx"() {
@@ -35087,7 +35211,7 @@ var init_SuccessStep = __esm({
35087
35211
  iconClassName: "er-icon",
35088
35212
  titleClassName: "er-title--lg er-message",
35089
35213
  bodyClassName: "er-text--muted",
35090
- icon: /* @__PURE__ */ jsx86(StateIcon, { variant: variant === "info" ? "info" : "success", children: /* @__PURE__ */ jsx86("svg", { fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: variant === "info" ? /* @__PURE__ */ jsxs61(Fragment14, { children: [
35214
+ icon: /* @__PURE__ */ jsx86(StateIcon, { variant: variant === "info" ? "info" : "success", children: /* @__PURE__ */ jsx86("svg", { fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: variant === "info" ? /* @__PURE__ */ jsxs61(Fragment13, { children: [
35091
35215
  /* @__PURE__ */ jsx86("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8h.01" }),
35092
35216
  /* @__PURE__ */ jsx86("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M11 12h1v4h1" }),
35093
35217
  /* @__PURE__ */ jsx86("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z" })
@@ -35250,7 +35374,7 @@ var init_event_registration = __esm({
35250
35374
  });
35251
35375
 
35252
35376
  // ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardContent.tsx
35253
- import { Fragment as Fragment15, jsx as jsx91, jsxs as jsxs64 } from "react/jsx-runtime";
35377
+ import { Fragment as Fragment14, jsx as jsx91, jsxs as jsxs64 } from "react/jsx-runtime";
35254
35378
  function EventRegistrationWizardContent(props2) {
35255
35379
  const { wizard } = props2;
35256
35380
  const showSpamProtection = props2.showSpamProtection ?? isSpamProtectionEnabled();
@@ -35277,7 +35401,7 @@ function EventRegistrationWizardContent(props2) {
35277
35401
  case "select-tickets": {
35278
35402
  if (!wizard.selectedEvent && !wizard.occurrenceContext) return null;
35279
35403
  const hasExistingRegistration = wizard.portalAuthState === "authenticated" && wizard.existingRegistration !== null;
35280
- return /* @__PURE__ */ jsxs64(Fragment15, { children: [
35404
+ return /* @__PURE__ */ jsxs64(Fragment14, { children: [
35281
35405
  hasExistingRegistration && /* @__PURE__ */ jsx91(
35282
35406
  TerminalPanel,
35283
35407
  {
@@ -35322,7 +35446,7 @@ function EventRegistrationWizardContent(props2) {
35322
35446
  }
35323
35447
  case "enter-details": {
35324
35448
  const showMembershipNotice = wizard.portalAuthState === "authenticated" && wizard.ticketsCount === 1 && wizard.eligibility?.eligibleMemberships[0];
35325
- return /* @__PURE__ */ jsxs64(Fragment15, { children: [
35449
+ return /* @__PURE__ */ jsxs64(Fragment14, { children: [
35326
35450
  showMembershipNotice && /* @__PURE__ */ jsx91(MembershipHero2, { membershipName: showMembershipNotice.membershipName }),
35327
35451
  /* @__PURE__ */ jsx91(
35328
35452
  AttendeeDetailsStep,
@@ -35346,7 +35470,7 @@ function EventRegistrationWizardContent(props2) {
35346
35470
  }
35347
35471
  case "select-payment":
35348
35472
  if (!wizard.api.config.siteId) return null;
35349
- return /* @__PURE__ */ jsxs64(Fragment15, { children: [
35473
+ return /* @__PURE__ */ jsxs64(Fragment14, { children: [
35350
35474
  /* @__PURE__ */ jsx91(
35351
35475
  PaymentSelectionStep,
35352
35476
  {
@@ -35434,7 +35558,7 @@ function EventRegistrationWizardActions(props2) {
35434
35558
  const ticketTypeSelectionBlocked = wizard.ticketTypeSelectionRequired && !wizard.hasValidTicketSelection;
35435
35559
  const isContinueDisabled = isWaitingForEligibility || isCheckingExistingRegistration || hasExistingRegistration || isSoldOutWithoutWaitlist || ticketTypeSelectionBlocked;
35436
35560
  const continueLabel = isCheckingExistingRegistration ? "Checking registration..." : hasExistingRegistration ? "Already registered" : isSoldOutWithoutWaitlist ? "Sold out" : ticketTypeSelectionBlocked ? "Choose a ticket" : "Continue";
35437
- return /* @__PURE__ */ jsxs65("div", { className: "er-actions", children: [
35561
+ return /* @__PURE__ */ jsxs65("div", { className: "rb-wizard-actions er-actions", children: [
35438
35562
  !wizard.hasPreSelectedContext && /* @__PURE__ */ jsx92("button", { type: "button", onClick: () => wizard.setStep("select-event"), className: "er-back-btn", children: "\u2190 Back" }),
35439
35563
  /* @__PURE__ */ jsx92(
35440
35564
  "button",
@@ -35456,7 +35580,7 @@ function EventRegistrationWizardActions(props2) {
35456
35580
  const isSoldOut = !hasWaitlistClaim && wizard.eligibility?.isFull === true && wizard.eligibility.canJoinWaitlist !== true;
35457
35581
  const isContinueDisabled = isCheckingEligibility || isSoldOut;
35458
35582
  const continueLabel = isCheckingEligibility ? "Checking availability..." : getDetailsButtonText();
35459
- return /* @__PURE__ */ jsxs65("div", { className: "er-actions", children: [
35583
+ return /* @__PURE__ */ jsxs65("div", { className: "rb-wizard-actions er-actions", children: [
35460
35584
  /* @__PURE__ */ jsx92("button", { type: "button", onClick: () => wizard.setStep(prevStepForDetails), className: "er-back-btn", children: "\u2190 Back" }),
35461
35585
  /* @__PURE__ */ jsx92(
35462
35586
  "button",
@@ -35475,7 +35599,7 @@ function EventRegistrationWizardActions(props2) {
35475
35599
  const handlePaymentContinue = () => {
35476
35600
  void wizard.handlePaymentSelect();
35477
35601
  };
35478
- return /* @__PURE__ */ jsxs65("div", { className: "er-actions", children: [
35602
+ return /* @__PURE__ */ jsxs65("div", { className: "rb-wizard-actions er-actions", children: [
35479
35603
  /* @__PURE__ */ jsx92("button", { type: "button", onClick: () => wizard.setStep("enter-details"), className: "er-back-btn", children: "\u2190 Back" }),
35480
35604
  status === "ready" && /* @__PURE__ */ jsx92(
35481
35605
  "button",
@@ -35502,7 +35626,7 @@ var init_EventRegistrationWizardActions = __esm({
35502
35626
  });
35503
35627
 
35504
35628
  // ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationSummaryBar.tsx
35505
- import { Fragment as Fragment16, jsx as jsx93, jsxs as jsxs66 } from "react/jsx-runtime";
35629
+ import { Fragment as Fragment15, jsx as jsx93, jsxs as jsxs66 } from "react/jsx-runtime";
35506
35630
  function isProductMethod(method) {
35507
35631
  return method !== null && ["pass", "membership", "pass_bundle", "membership_bundle"].includes(method);
35508
35632
  }
@@ -35555,7 +35679,7 @@ function EventRegistrationSummaryBar(props2) {
35555
35679
  } : null;
35556
35680
  if (!summaryTitle) return null;
35557
35681
  const productMethod = isProductMethod(wizard.paymentSelection.method);
35558
- return /* @__PURE__ */ jsxs66(Fragment16, { children: [
35682
+ return /* @__PURE__ */ jsxs66(Fragment15, { children: [
35559
35683
  productMethod && wizard.paymentSelection.productName && /* @__PURE__ */ jsxs66("div", { className: "er-summary-bar-product", children: [
35560
35684
  /* @__PURE__ */ jsxs66("div", { children: [
35561
35685
  /* @__PURE__ */ jsx93("div", { className: "er-summary-bar-product-name", children: wizard.paymentSelection.productName }),
@@ -35577,7 +35701,7 @@ function EventRegistrationSummaryBar(props2) {
35577
35701
  /* @__PURE__ */ jsx93("h4", { className: "er-summary-bar-event", children: summaryTitle }),
35578
35702
  /* @__PURE__ */ jsxs66("span", { className: "er-summary-bar-meta", children: [
35579
35703
  summaryDate && formatEventDateTime(summaryDate, { timeZone: summaryTimeZone }),
35580
- wizard.step !== "select-event" && wizard.step !== "select-tickets" && wizard.ticketsCount > 0 && /* @__PURE__ */ jsxs66(Fragment16, { children: [
35704
+ wizard.step !== "select-event" && wizard.step !== "select-tickets" && wizard.ticketsCount > 0 && /* @__PURE__ */ jsxs66(Fragment15, { children: [
35581
35705
  " \xB7 ",
35582
35706
  wizard.ticketsCount,
35583
35707
  " ticket",
@@ -35589,10 +35713,10 @@ function EventRegistrationSummaryBar(props2) {
35589
35713
  teamMemberNames.join(", ")
35590
35714
  ] })
35591
35715
  ] }),
35592
- subtotalCents > 0 && /* @__PURE__ */ jsx93("div", { className: "er-summary-bar-pricing", children: productMethod ? /* @__PURE__ */ jsxs66(Fragment16, { children: [
35716
+ subtotalCents > 0 && /* @__PURE__ */ jsx93("div", { className: "er-summary-bar-pricing", children: productMethod ? /* @__PURE__ */ jsxs66(Fragment15, { children: [
35593
35717
  /* @__PURE__ */ jsx93("span", { className: "er-summary-bar-price er-summary-bar-price--struck", children: formatPrice(subtotalCents, summaryCurrency) }),
35594
35718
  /* @__PURE__ */ jsx93("div", { className: "er-summary-bar-included", children: wizard.paymentSelection.method === "pass" || wizard.paymentSelection.method === "pass_bundle" ? "1 pass credit" : "Included in membership" })
35595
- ] }) : flexibleBalanceSummary ? /* @__PURE__ */ jsxs66(Fragment16, { children: [
35719
+ ] }) : flexibleBalanceSummary ? /* @__PURE__ */ jsxs66(Fragment15, { children: [
35596
35720
  flexibleBalanceSummary.total ? /* @__PURE__ */ jsxs66("div", { className: "er-summary-bar-product-detail", children: [
35597
35721
  "Total: ",
35598
35722
  flexibleBalanceSummary.total
@@ -35608,7 +35732,7 @@ function EventRegistrationSummaryBar(props2) {
35608
35732
  "Deposit: ",
35609
35733
  flexibleBalanceSummary.depositPolicy
35610
35734
  ] }) : null
35611
- ] }) : autoAppliedDiscount && autoAppliedDiscountCents > 0 ? /* @__PURE__ */ jsxs66(Fragment16, { children: [
35735
+ ] }) : autoAppliedDiscount && autoAppliedDiscountCents > 0 ? /* @__PURE__ */ jsxs66(Fragment15, { children: [
35612
35736
  /* @__PURE__ */ jsx93("span", { className: "er-summary-bar-price er-summary-bar-price--struck", children: formatPrice(subtotalCents, summaryCurrency) }),
35613
35737
  /* @__PURE__ */ jsx93("div", { className: "er-summary-bar-price", children: formatPrice(discountedTotalCents, summaryCurrency) }),
35614
35738
  /* @__PURE__ */ jsxs66("div", { className: "er-summary-bar-included", children: [
@@ -36946,9 +37070,9 @@ var init_MagicLinkForm = __esm({
36946
37070
  });
36947
37071
 
36948
37072
  // ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.tsx
36949
- import React12, { useEffect as useEffect15, useMemo as useMemo8, useState as useState6 } from "react";
37073
+ import React15, { useEffect as useEffect15, useMemo as useMemo8, useState as useState6 } from "react";
36950
37074
  import { createPortal as createPortal2 } from "react-dom";
36951
- import { Fragment as Fragment17, jsx as jsx95, jsxs as jsxs68 } from "react/jsx-runtime";
37075
+ import { Fragment as Fragment16, jsx as jsx95, jsxs as jsxs68 } from "react/jsx-runtime";
36952
37076
  function EventPortalAuthPrompt(props2) {
36953
37077
  return /* @__PURE__ */ jsxs68("div", { className: "er-portal-auth", children: [
36954
37078
  /* @__PURE__ */ jsx95("p", { className: "er-portal-auth-title", children: props2.copy.title }),
@@ -36984,7 +37108,7 @@ function EventRegistrationWizard(props2) {
36984
37108
  const showSpamProtection = spamProtectionEnabled ?? isSpamProtectionEnabled();
36985
37109
  const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
36986
37110
  const registrationRootClassName = `event-registration ${className || ""}`;
36987
- const registrationRootRef = React12.useRef(null);
37111
+ const registrationRootRef = React15.useRef(null);
36988
37112
  const wizard = useEventRegistrationWizard({
36989
37113
  anchorId: EVENT_REGISTRATION_ANCHOR_ID,
36990
37114
  occurrenceContext: occurrenceContext ?? null,
@@ -37081,7 +37205,7 @@ function EventRegistrationWizard(props2) {
37081
37205
  description: wizard.waitlistClaim.loginMessage ?? "Log in to continue with your waitlist claim."
37082
37206
  } : EVENT_PORTAL_AUTH_COPY.membership;
37083
37207
  const showPortalAuthPrompt = waitlistClaimRequiresPortalLogin || wizard.step === "select-tickets" && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking" && hasPassOrMembershipProducts && summaryEventPricingType !== "free";
37084
- const renderRegistrationSurface = (variant) => /* @__PURE__ */ jsxs68("div", { className: `er-container${variant === "overlay" ? " er-container--overlay" : ""}`, children: [
37208
+ const renderRegistrationSurface = (variant) => /* @__PURE__ */ jsxs68("div", { className: `rb-reg-surface er-container${variant === "overlay" ? " er-container--overlay" : ""}`, children: [
37085
37209
  isWizardStep && /* @__PURE__ */ jsxs68("div", { className: "er-payment-layout er-payment-layout--no-sidebar", children: [
37086
37210
  /* @__PURE__ */ jsxs68("div", { className: "er-payment-layout-main", children: [
37087
37211
  totalSteps > 1 && /* @__PURE__ */ jsx95(StepIndicator2, { currentStep: currentStepNumber, totalSteps, stepLabels }),
@@ -37167,7 +37291,7 @@ function EventRegistrationWizard(props2) {
37167
37291
  const bookingSummaryMeta = [summaryPriceLabel, summaryAvailabilityLabel].filter(Boolean).join(" \xB7 ");
37168
37292
  const bookingTicketTypes = getActiveTicketTypes2(summaryEvent);
37169
37293
  const bookingTicketTypesCurrency = summaryEvent?.pricing.kind === "ticket_types" ? summaryEvent.pricing.currency : null;
37170
- const renderBookingEntry = (base) => /* @__PURE__ */ jsxs68(Fragment17, { children: [
37294
+ const renderBookingEntry = (base) => /* @__PURE__ */ jsxs68(Fragment16, { children: [
37171
37295
  /* @__PURE__ */ jsxs68("div", { className: `${base}__info`, children: [
37172
37296
  /* @__PURE__ */ jsx95("span", { className: `${base}__title`, children: "Book this event" }),
37173
37297
  bookingSummaryMeta && /* @__PURE__ */ jsx95("span", { className: `${base}__meta`, children: bookingSummaryMeta }),
@@ -37576,7 +37700,7 @@ var init_BookingModeStep = __esm({
37576
37700
 
37577
37701
  // ../blocks/src/system/runtime/nodes/course-registration/PortalAuthSidebar.tsx
37578
37702
  import { useEffect as useEffect17, useState as useState8 } from "react";
37579
- import { Fragment as Fragment18, jsx as jsx101, jsxs as jsxs71 } from "react/jsx-runtime";
37703
+ import { Fragment as Fragment17, jsx as jsx101, jsxs as jsxs71 } from "react/jsx-runtime";
37580
37704
  function PortalAuthSidebar({
37581
37705
  onMagicLinkSent,
37582
37706
  autoOpen = false,
@@ -37590,7 +37714,7 @@ function PortalAuthSidebar({
37590
37714
  if (!autoOpen) return;
37591
37715
  setShowModal(true);
37592
37716
  }, [autoOpen]);
37593
- return /* @__PURE__ */ jsxs71(Fragment18, { children: [
37717
+ return /* @__PURE__ */ jsxs71(Fragment17, { children: [
37594
37718
  /* @__PURE__ */ jsxs71("div", { className: "cr-portal-sidebar", children: [
37595
37719
  /* @__PURE__ */ jsx101("div", { className: "cr-portal-sidebar__icon", "aria-hidden": "true", children: "\u{1F464}" }),
37596
37720
  /* @__PURE__ */ jsx101("h3", { className: "cr-portal-sidebar__title", children: copy.title }),
@@ -37685,7 +37809,7 @@ var init_PortalAuthSidebar = __esm({
37685
37809
  });
37686
37810
 
37687
37811
  // ../blocks/src/system/runtime/nodes/course-registration/SuccessStep.tsx
37688
- import { Fragment as Fragment19, jsx as jsx102, jsxs as jsxs72 } from "react/jsx-runtime";
37812
+ import { Fragment as Fragment18, jsx as jsx102, jsxs as jsxs72 } from "react/jsx-runtime";
37689
37813
  function SuccessStep2({
37690
37814
  usedMembership,
37691
37815
  successMessage,
@@ -37699,7 +37823,7 @@ function SuccessStep2({
37699
37823
  titleClassName: "cr-success__title",
37700
37824
  icon: /* @__PURE__ */ jsx102(StateIcon, { variant: "success", children: /* @__PURE__ */ jsx102(CheckIcon2, { strokeWidth: 2 }) }),
37701
37825
  title: "Enrollment Complete!",
37702
- body: /* @__PURE__ */ jsxs72(Fragment19, { children: [
37826
+ body: /* @__PURE__ */ jsxs72(Fragment18, { children: [
37703
37827
  /* @__PURE__ */ jsx102("p", { className: "cr-success__message", children: usedMembership ? membershipMessage : successMessage }),
37704
37828
  usedMembership && /* @__PURE__ */ jsx102("p", { className: "cr-success__membership", children: "Enrolled using your membership" })
37705
37829
  ] })
@@ -37745,7 +37869,7 @@ var init_ErrorStep2 = __esm({
37745
37869
  });
37746
37870
 
37747
37871
  // ../blocks/src/system/runtime/nodes/course-registration/VerifyingTimeoutStep.tsx
37748
- import { Fragment as Fragment20, jsx as jsx104, jsxs as jsxs73 } from "react/jsx-runtime";
37872
+ import { Fragment as Fragment19, jsx as jsx104, jsxs as jsxs73 } from "react/jsx-runtime";
37749
37873
  function VerifyingTimeoutStep2({
37750
37874
  buttonText = "Check Again",
37751
37875
  buttonVariant = "primary",
@@ -37761,7 +37885,7 @@ function VerifyingTimeoutStep2({
37761
37885
  titleClassName: "cr-error__title",
37762
37886
  icon: /* @__PURE__ */ jsx104(StateIcon, { variant: "warning", children: /* @__PURE__ */ jsx104(ClockIcon2, {}) }),
37763
37887
  title: "Payment Verification Taking Longer",
37764
- body: /* @__PURE__ */ jsxs73(Fragment20, { children: [
37888
+ body: /* @__PURE__ */ jsxs73(Fragment19, { children: [
37765
37889
  /* @__PURE__ */ jsx104("p", { className: "cr-error__message", children: "Your payment may still be processing. Please check your email for confirmation." }),
37766
37890
  supportEmail && /* @__PURE__ */ jsxs73("p", { className: "cr-error__message", children: [
37767
37891
  "If you need help, contact us at",
@@ -37814,7 +37938,7 @@ var init_PaymentFailedStep2 = __esm({
37814
37938
  });
37815
37939
 
37816
37940
  // ../blocks/src/system/runtime/nodes/course-registration/WaitlistStep.tsx
37817
- import { Fragment as Fragment21, jsx as jsx106, jsxs as jsxs74 } from "react/jsx-runtime";
37941
+ import { Fragment as Fragment20, jsx as jsx106, jsxs as jsxs74 } from "react/jsx-runtime";
37818
37942
  function WaitlistStep({ message, position }) {
37819
37943
  return /* @__PURE__ */ jsx106(
37820
37944
  TerminalPanel,
@@ -37824,7 +37948,7 @@ function WaitlistStep({ message, position }) {
37824
37948
  titleClassName: "cr-waitlist__title",
37825
37949
  icon: /* @__PURE__ */ jsx106(StateIcon, { variant: "waitlist", children: /* @__PURE__ */ jsx106(ClockIcon2, {}) }),
37826
37950
  title: "Added to Waitlist",
37827
- body: /* @__PURE__ */ jsxs74(Fragment21, { children: [
37951
+ body: /* @__PURE__ */ jsxs74(Fragment20, { children: [
37828
37952
  /* @__PURE__ */ jsx106("p", { className: "cr-waitlist__message", children: message }),
37829
37953
  typeof position === "number" && /* @__PURE__ */ jsxs74("p", { className: "cr-waitlist__position", children: [
37830
37954
  "Your position: #",
@@ -37891,12 +38015,12 @@ var init_CourseRegistrationErrorBoundary = __esm({
37891
38015
  });
37892
38016
 
37893
38017
  // ../blocks/src/system/runtime/nodes/course-registration/components.tsx
37894
- import React15 from "react";
37895
- import { Fragment as Fragment22, jsx as jsx108, jsxs as jsxs76 } from "react/jsx-runtime";
38018
+ import React18 from "react";
38019
+ import { Fragment as Fragment21, jsx as jsx108, jsxs as jsxs76 } from "react/jsx-runtime";
37896
38020
  function TeamMemberInlineList({
37897
38021
  teamMembers
37898
38022
  }) {
37899
- return /* @__PURE__ */ jsx108(Fragment22, { children: teamMembers.map((teamMember, index) => /* @__PURE__ */ jsxs76(React15.Fragment, { children: [
38023
+ return /* @__PURE__ */ jsx108(Fragment21, { children: teamMembers.map((teamMember, index) => /* @__PURE__ */ jsxs76(React18.Fragment, { children: [
37900
38024
  index > 0 ? ", " : "",
37901
38025
  teamMember.profilePath ? /* @__PURE__ */ jsx108("a", { href: teamMember.profilePath, children: teamMember.name }) : teamMember.name
37902
38026
  ] }, teamMember.id)) });
@@ -38084,7 +38208,7 @@ function EnrollmentForm({ formData, errors, onChange, isEmailLocked, isLoading,
38084
38208
  message: errors.email,
38085
38209
  messageId: emailErrorId
38086
38210
  });
38087
- return /* @__PURE__ */ jsxs76(Fragment22, { children: [
38211
+ return /* @__PURE__ */ jsxs76(Fragment21, { children: [
38088
38212
  /* @__PURE__ */ jsxs76("div", { className: "cr-form__field", children: [
38089
38213
  /* @__PURE__ */ jsx108("label", { htmlFor: "cr-name", className: "cr-form__label", children: "Name *" }),
38090
38214
  /* @__PURE__ */ jsx108(
@@ -38804,7 +38928,7 @@ var init_useCourseRegistrationWizard = __esm({
38804
38928
  });
38805
38929
 
38806
38930
  // ../blocks/src/system/runtime/nodes/course-registration/CourseRegistrationWizard.tsx
38807
- import { Fragment as Fragment23, jsx as jsx109, jsxs as jsxs77 } from "react/jsx-runtime";
38931
+ import { Fragment as Fragment22, jsx as jsx109, jsxs as jsxs77 } from "react/jsx-runtime";
38808
38932
  function getCourseSlidingScaleMessage(pricing) {
38809
38933
  if (!pricing.slidingScale) {
38810
38934
  return null;
@@ -38930,7 +39054,7 @@ function CourseRegistrationWizard(props2) {
38930
39054
  id: COURSE_REGISTRATION_ANCHOR_ID,
38931
39055
  className: `course-registration ${className || ""}`,
38932
39056
  "data-block": "course-registration",
38933
- children: /* @__PURE__ */ jsx109("div", { className: "cr-container", children: /* @__PURE__ */ jsxs77(
39057
+ children: /* @__PURE__ */ jsx109("div", { className: "rb-reg-surface cr-container", children: /* @__PURE__ */ jsxs77(
38934
39058
  "div",
38935
39059
  {
38936
39060
  className: `cr-layout${showSidebarLayout ? " cr-layout--with-sidebar" : ""}`,
@@ -38980,7 +39104,7 @@ function CourseRegistrationWizard(props2) {
38980
39104
  }
38981
39105
  ) }),
38982
39106
  /* @__PURE__ */ jsx109("p", { className: "cr-text cr-text--muted", children: "Registration closed." })
38983
- ] }) : /* @__PURE__ */ jsxs77(Fragment23, { children: [
39107
+ ] }) : /* @__PURE__ */ jsxs77(Fragment22, { children: [
38984
39108
  /* @__PURE__ */ jsxs77(
38985
39109
  "form",
38986
39110
  {
@@ -39622,7 +39746,7 @@ var init_location_map_client = __esm({
39622
39746
  });
39623
39747
 
39624
39748
  // ../blocks/src/system/runtime/nodes/shop-commerce-store.ts
39625
- import * as React17 from "react";
39749
+ import * as React20 from "react";
39626
39750
  function storageKey(siteId) {
39627
39751
  return `riverbank:shop-cart:${siteId}`;
39628
39752
  }
@@ -39638,8 +39762,8 @@ function addPassToCommerceCart(siteId, input) {
39638
39762
  }
39639
39763
  function useCommerceCart(siteId) {
39640
39764
  const effectiveSiteId = siteId ?? "unknown";
39641
- const store = React17.useMemo(() => getStore(effectiveSiteId), [effectiveSiteId]);
39642
- const state = React17.useSyncExternalStore(
39765
+ const store = React20.useMemo(() => getStore(effectiveSiteId), [effectiveSiteId]);
39766
+ const state = React20.useSyncExternalStore(
39643
39767
  (listener) => store.subscribe(listener),
39644
39768
  () => store.getSnapshot(),
39645
39769
  () => EMPTY_STATE
@@ -39735,11 +39859,11 @@ var init_shop_commerce_store = __esm({
39735
39859
  });
39736
39860
 
39737
39861
  // ../blocks/src/system/runtime/nodes/shop-add-feedback.tsx
39738
- import * as React18 from "react";
39862
+ import * as React21 from "react";
39739
39863
  import { jsx as jsx114, jsxs as jsxs80 } from "react/jsx-runtime";
39740
39864
  function useTransientShopAddFeedback(timeoutMs = DEFAULT_TIMEOUT_MS) {
39741
- const [activeKey, setActiveKey] = React18.useState(null);
39742
- React18.useEffect(() => {
39865
+ const [activeKey, setActiveKey] = React21.useState(null);
39866
+ React21.useEffect(() => {
39743
39867
  if (!activeKey) return;
39744
39868
  const timeoutId = window.setTimeout(() => {
39745
39869
  setActiveKey((current) => current === activeKey ? null : current);
@@ -40218,8 +40342,8 @@ var init_useDiscountApply = __esm({
40218
40342
  });
40219
40343
 
40220
40344
  // ../blocks/src/system/runtime/nodes/shop.client.tsx
40221
- import React19, { useCallback as useCallback9, useEffect as useEffect21, useRef as useRef13, useState as useState12 } from "react";
40222
- import { Fragment as Fragment24, jsx as jsx115, jsxs as jsxs81 } from "react/jsx-runtime";
40345
+ import React22, { useCallback as useCallback9, useEffect as useEffect21, useRef as useRef13, useState as useState12 } from "react";
40346
+ import { Fragment as Fragment23, jsx as jsx115, jsxs as jsxs81 } from "react/jsx-runtime";
40223
40347
  function ShopClient(props2) {
40224
40348
  return /* @__PURE__ */ jsx115(PassesMembershipsController, { render: props2.render });
40225
40349
  }
@@ -40243,11 +40367,11 @@ function getCheckoutDiscountApplyLine(checkout2) {
40243
40367
  }
40244
40368
  function PassesMembershipsController({ render }) {
40245
40369
  const api = useBlockApi();
40246
- const [state, dispatch] = React19.useReducer(
40370
+ const [state, dispatch] = React22.useReducer(
40247
40371
  shopPassesMembershipsReducer,
40248
40372
  initialShopPassesMembershipsState
40249
40373
  );
40250
- const [discountApply, dispatchDiscountApply] = React19.useReducer(
40374
+ const [discountApply, dispatchDiscountApply] = React22.useReducer(
40251
40375
  discountApplyReducer,
40252
40376
  initialDiscountApplyState
40253
40377
  );
@@ -40260,7 +40384,7 @@ function PassesMembershipsController({ render }) {
40260
40384
  const display = render.display;
40261
40385
  const hydration = render.hydration;
40262
40386
  const checkoutTitle = getCheckoutModalTitle(checkout2);
40263
- const discountContext = React19.useMemo(() => {
40387
+ const discountContext = React22.useMemo(() => {
40264
40388
  if (!checkout2) return null;
40265
40389
  return checkout2.item.productType === "pass" ? { type: "pass", passId: checkout2.item.product.id } : { type: "membership", membershipId: checkout2.item.product.id };
40266
40390
  }, [checkout2]);
@@ -40398,12 +40522,12 @@ function PassesMembershipsController({ render }) {
40398
40522
  const handleConfirmDuplicate = useCallback9(() => {
40399
40523
  void submitCheckout(true);
40400
40524
  }, [submitCheckout]);
40401
- return /* @__PURE__ */ jsxs81(Fragment24, { children: [
40525
+ return /* @__PURE__ */ jsxs81(Fragment23, { children: [
40402
40526
  /* @__PURE__ */ jsx115("div", { ref: shopRootRef, children: /* @__PURE__ */ jsx115(
40403
40527
  PassesMembershipsSectionView,
40404
40528
  {
40405
40529
  display,
40406
- beforeContent: /* @__PURE__ */ jsx115(Fragment24, { children: state.returnNotice ? /* @__PURE__ */ jsx115(
40530
+ beforeContent: /* @__PURE__ */ jsx115(Fragment23, { children: state.returnNotice ? /* @__PURE__ */ jsx115(
40407
40531
  TerminalPanel,
40408
40532
  {
40409
40533
  tone: state.returnNotice.kind === "success" ? "success" : "warning",
@@ -40517,7 +40641,7 @@ function PassesMembershipsController({ render }) {
40517
40641
  /* @__PURE__ */ jsxs81("p", { className: "shop__modal-warning-text", children: [
40518
40642
  "Your current membership: ",
40519
40643
  /* @__PURE__ */ jsx115("strong", { children: checkout2.duplicateWarning.existingMembership.name }),
40520
- checkout2.duplicateWarning.existingMembership.expiresAt ? /* @__PURE__ */ jsxs81(Fragment24, { children: [
40644
+ checkout2.duplicateWarning.existingMembership.expiresAt ? /* @__PURE__ */ jsxs81(Fragment23, { children: [
40521
40645
  " (expires ",
40522
40646
  new Date(checkout2.duplicateWarning.existingMembership.expiresAt).toLocaleDateString(),
40523
40647
  ")"
@@ -42585,8 +42709,8 @@ var init_embla_carousel_react_esm = __esm({
42585
42709
  });
42586
42710
 
42587
42711
  // ../blocks/src/system/runtime/nodes/carousel.client.tsx
42588
- import React20 from "react";
42589
- import { Fragment as Fragment25, jsx as jsx116, jsxs as jsxs82 } from "react/jsx-runtime";
42712
+ import React23 from "react";
42713
+ import { Fragment as Fragment24, jsx as jsx116, jsxs as jsxs82 } from "react/jsx-runtime";
42590
42714
  function normalizeCarouselProps(input) {
42591
42715
  const transition = input.transition === "fade" ? "fade" : "slide";
42592
42716
  const arrowVisibility = input.arrowVisibility === "never" ? "never" : input.arrowVisibility === "hover" ? "hover" : "always";
@@ -42640,8 +42764,8 @@ var init_carousel_client = __esm({
42640
42764
  autoplayDelay,
42641
42765
  loop
42642
42766
  }) => {
42643
- const slides = React20.Children.toArray(children).filter(Boolean);
42644
- const normalized = React20.useMemo(
42767
+ const slides = React23.Children.toArray(children).filter(Boolean);
42768
+ const normalized = React23.useMemo(
42645
42769
  () => normalizeCarouselProps({
42646
42770
  slidesToShow,
42647
42771
  transition,
@@ -42665,11 +42789,11 @@ var init_carousel_client = __esm({
42665
42789
  );
42666
42790
  const resolvedSlides = resolveSlidesToShowMobile(normalized.slidesToShow);
42667
42791
  const canAutoplay = normalized.autoplay && slides.length > 1;
42668
- const cssVars = React20.useMemo(
42792
+ const cssVars = React23.useMemo(
42669
42793
  () => getCarouselSlidesToShowCssVars(normalized.slidesToShow),
42670
42794
  [normalized.slidesToShow]
42671
42795
  );
42672
- const plugins = React20.useMemo(() => {
42796
+ const plugins = React23.useMemo(() => {
42673
42797
  if (!canAutoplay) return void 0;
42674
42798
  return [
42675
42799
  Autoplay({
@@ -42691,11 +42815,11 @@ var init_carousel_client = __esm({
42691
42815
  },
42692
42816
  plugins
42693
42817
  );
42694
- const [selectedIndex, setSelectedIndex] = React20.useState(0);
42695
- const [scrollSnaps, setScrollSnaps] = React20.useState([]);
42696
- const [canScrollPrev, setCanScrollPrev] = React20.useState(false);
42697
- const [canScrollNext, setCanScrollNext] = React20.useState(false);
42698
- React20.useEffect(() => {
42818
+ const [selectedIndex, setSelectedIndex] = React23.useState(0);
42819
+ const [scrollSnaps, setScrollSnaps] = React23.useState([]);
42820
+ const [canScrollPrev, setCanScrollPrev] = React23.useState(false);
42821
+ const [canScrollNext, setCanScrollNext] = React23.useState(false);
42822
+ React23.useEffect(() => {
42699
42823
  if (!api) return;
42700
42824
  const onInit = () => {
42701
42825
  setScrollSnaps(api.scrollSnapList());
@@ -42718,7 +42842,7 @@ var init_carousel_client = __esm({
42718
42842
  api.off("reInit", onSelect);
42719
42843
  };
42720
42844
  }, [api]);
42721
- React20.useEffect(() => {
42845
+ React23.useEffect(() => {
42722
42846
  if (!api || !canAutoplay) return;
42723
42847
  const autoplayPlugin = api.plugins()?.autoplay;
42724
42848
  if (!autoplayPlugin) return;
@@ -42729,7 +42853,7 @@ var init_carousel_client = __esm({
42729
42853
  document.addEventListener("visibilitychange", handleVisibility);
42730
42854
  return () => document.removeEventListener("visibilitychange", handleVisibility);
42731
42855
  }, [api, canAutoplay]);
42732
- const inner = /* @__PURE__ */ jsxs82(Fragment25, { children: [
42856
+ const inner = /* @__PURE__ */ jsxs82(Fragment24, { children: [
42733
42857
  /* @__PURE__ */ jsx116("div", { className: "carousel-frame rb-overflow-hidden rb-w-full", children: /* @__PURE__ */ jsx116(
42734
42858
  "div",
42735
42859
  {
@@ -42793,7 +42917,7 @@ var init_carousel_client = __esm({
42793
42917
  canScrollNext
42794
42918
  }) => {
42795
42919
  if (slidesCount <= resolvedSlides) return null;
42796
- return /* @__PURE__ */ jsxs82(Fragment25, { children: [
42920
+ return /* @__PURE__ */ jsxs82(Fragment24, { children: [
42797
42921
  /* @__PURE__ */ jsx116(
42798
42922
  "button",
42799
42923
  {
@@ -42969,16 +43093,16 @@ var init_shop_cart_discount_ui = __esm({
42969
43093
  });
42970
43094
 
42971
43095
  // ../blocks/src/system/runtime/nodes/shop-commerce.tsx
42972
- import * as React21 from "react";
42973
- import { Fragment as Fragment26, jsx as jsx117, jsxs as jsxs83 } from "react/jsx-runtime";
43096
+ import * as React24 from "react";
43097
+ import { Fragment as Fragment25, jsx as jsx117, jsxs as jsxs83 } from "react/jsx-runtime";
42974
43098
  function ProductListController(props2) {
42975
43099
  const api = useBlockApi();
42976
43100
  const cart2 = useCommerceCart(api.config.siteId);
42977
43101
  const addFeedback = useTransientShopAddFeedback();
42978
- const [variantSelection, setVariantSelection] = React21.useState(
43102
+ const [variantSelection, setVariantSelection] = React24.useState(
42979
43103
  () => Object.fromEntries(props2.render.display.cards.map((card) => [card.productId, card.selectedVariantId]))
42980
43104
  );
42981
- const cards = React21.useMemo(
43105
+ const cards = React24.useMemo(
42982
43106
  () => props2.render.hydration.products.map(
42983
43107
  (product) => buildProductCardDisplay(
42984
43108
  product,
@@ -42992,7 +43116,7 @@ function ProductListController(props2) {
42992
43116
  ),
42993
43117
  [props2.render.hydration, variantSelection]
42994
43118
  );
42995
- const display = React21.useMemo(
43119
+ const display = React24.useMemo(
42996
43120
  () => ({
42997
43121
  ...props2.render.display,
42998
43122
  state: cards.length === 0 ? "empty" : "ready",
@@ -43016,7 +43140,7 @@ function ProductListController(props2) {
43016
43140
  }))
43017
43141
  }
43018
43142
  ),
43019
- actions: /* @__PURE__ */ jsxs83(Fragment26, { children: [
43143
+ actions: /* @__PURE__ */ jsxs83(Fragment25, { children: [
43020
43144
  /* @__PURE__ */ jsx117(
43021
43145
  "button",
43022
43146
  {
@@ -43061,17 +43185,17 @@ function ProductDetailController(props2) {
43061
43185
  const api = useBlockApi();
43062
43186
  const cart2 = useCommerceCart(api.config.siteId);
43063
43187
  const addFeedback = useTransientShopAddFeedback();
43064
- const selectedProduct = React21.useMemo(
43188
+ const selectedProduct = React24.useMemo(
43065
43189
  () => props2.render.hydration.products.find((product) => product.id === props2.render.hydration.productId) ?? null,
43066
43190
  [props2.render.hydration.productId, props2.render.hydration.products]
43067
43191
  );
43068
- const [variantId, setVariantId] = React21.useState(
43192
+ const [variantId, setVariantId] = React24.useState(
43069
43193
  props2.render.display.state === "ready" ? props2.render.display.selectedVariantId : null
43070
43194
  );
43071
- React21.useEffect(() => {
43195
+ React24.useEffect(() => {
43072
43196
  setVariantId(props2.render.display.state === "ready" ? props2.render.display.selectedVariantId : null);
43073
43197
  }, [props2.render.display]);
43074
- const display = React21.useMemo(
43198
+ const display = React24.useMemo(
43075
43199
  () => buildProductDetailDisplay(
43076
43200
  selectedProduct,
43077
43201
  {
@@ -43138,7 +43262,7 @@ function ProductDetailController(props2) {
43138
43262
  function CartController(props2) {
43139
43263
  const api = useBlockApi();
43140
43264
  const cart2 = useCommerceCart(api.config.siteId);
43141
- const display = React21.useMemo(
43265
+ const display = React24.useMemo(
43142
43266
  () => getShopDisplayForItems(props2.render, cart2.items),
43143
43267
  [cart2.items, props2.render]
43144
43268
  );
@@ -43146,7 +43270,7 @@ function CartController(props2) {
43146
43270
  CartShellView,
43147
43271
  {
43148
43272
  display,
43149
- renderControls: (item) => /* @__PURE__ */ jsxs83(Fragment26, { children: [
43273
+ renderControls: (item) => /* @__PURE__ */ jsxs83(Fragment25, { children: [
43150
43274
  /* @__PURE__ */ jsx117(
43151
43275
  "input",
43152
43276
  {
@@ -43169,7 +43293,7 @@ function CartController(props2) {
43169
43293
  }
43170
43294
  )
43171
43295
  ] }),
43172
- footerActions: /* @__PURE__ */ jsxs83(Fragment26, { children: [
43296
+ footerActions: /* @__PURE__ */ jsxs83(Fragment25, { children: [
43173
43297
  /* @__PURE__ */ jsx117(
43174
43298
  "button",
43175
43299
  {
@@ -43197,15 +43321,15 @@ function CartController(props2) {
43197
43321
  function CheckoutController(props2) {
43198
43322
  const api = useBlockApi();
43199
43323
  const cart2 = useCommerceCart(api.config.siteId);
43200
- const [state, dispatch] = React21.useReducer(
43324
+ const [state, dispatch] = React24.useReducer(
43201
43325
  shopCheckoutReducer,
43202
43326
  initialShopCheckoutState
43203
43327
  );
43204
- const [discountApply, dispatchDiscountApply] = React21.useReducer(
43328
+ const [discountApply, dispatchDiscountApply] = React24.useReducer(
43205
43329
  discountApplyReducer,
43206
43330
  initialDiscountApplyState
43207
43331
  );
43208
- React21.useEffect(() => {
43332
+ React24.useEffect(() => {
43209
43333
  const checkout2 = consumeSearchParam("checkout");
43210
43334
  if (checkout2 === "success") {
43211
43335
  cart2.clear();
@@ -43214,15 +43338,15 @@ function CheckoutController(props2) {
43214
43338
  dispatch({ type: "setNotice", notice: "cancelled" });
43215
43339
  }
43216
43340
  }, [cart2]);
43217
- const display = React21.useMemo(
43341
+ const display = React24.useMemo(
43218
43342
  () => getShopDisplayForItems(props2.render, cart2.items),
43219
43343
  [cart2.items, props2.render]
43220
43344
  );
43221
- const checkoutState = React21.useMemo(
43345
+ const checkoutState = React24.useMemo(
43222
43346
  () => deriveCommerceCheckoutState({ items: cart2.items }),
43223
43347
  [cart2.items]
43224
43348
  );
43225
- const discountAvailabilityPlan = React21.useMemo(
43349
+ const discountAvailabilityPlan = React24.useMemo(
43226
43350
  () => planCartDiscountAvailabilityRequests(checkoutState),
43227
43351
  [checkoutState]
43228
43352
  );
@@ -43231,15 +43355,15 @@ function CheckoutController(props2) {
43231
43355
  discountApply.status,
43232
43356
  formatCommercePrice
43233
43357
  );
43234
- React21.useEffect(() => {
43358
+ React24.useEffect(() => {
43235
43359
  if (discountUiState.type === "manual-allowed") return;
43236
43360
  dispatchDiscountApply({ type: "remove" });
43237
43361
  }, [discountUiState.type]);
43238
- const checkoutIdentity = React21.useMemo(() => {
43362
+ const checkoutIdentity = React24.useMemo(() => {
43239
43363
  if (checkoutState.kind !== "ready") return checkoutState.kind;
43240
43364
  return checkoutState.items.map((item) => `${item.key}:${item.quantity}:${item.unitPriceCents}`).join("|");
43241
43365
  }, [checkoutState]);
43242
- React21.useEffect(() => {
43366
+ React24.useEffect(() => {
43243
43367
  dispatchDiscountApply({ type: "resetApplied" });
43244
43368
  }, [checkoutIdentity, state.form.email]);
43245
43369
  const applyDiscountCode = useDiscountApply({
@@ -43468,7 +43592,7 @@ var init_navDropdownSizing = __esm({
43468
43592
  });
43469
43593
 
43470
43594
  // ../blocks/src/system/runtime/header/HeaderCartDrawer.tsx
43471
- import * as React38 from "react";
43595
+ import * as React40 from "react";
43472
43596
  import { jsx as jsx131, jsxs as jsxs86 } from "react/jsx-runtime";
43473
43597
  function normalizeQuantityInput(value) {
43474
43598
  const parsed = Number(value);
@@ -43518,8 +43642,8 @@ function HeaderCartDrawerItems(props2) {
43518
43642
  )) });
43519
43643
  }
43520
43644
  function HeaderCartDrawer(props2) {
43521
- const titleId = React38.useId();
43522
- const display = React38.useMemo(
43645
+ const titleId = React40.useId();
43646
+ const display = React40.useMemo(
43523
43647
  () => buildCartDisplay(props2.cart.items, {
43524
43648
  heading: "Cart",
43525
43649
  emptyMessage: "Your cart is empty.",
@@ -43742,22 +43866,22 @@ var init_HeaderCartTrigger = __esm({
43742
43866
  });
43743
43867
 
43744
43868
  // ../blocks/src/system/runtime/header/headerCartRuntime.tsx
43745
- import * as React39 from "react";
43869
+ import * as React41 from "react";
43746
43870
  import { createPortal as createPortal3 } from "react-dom";
43747
43871
  import { createRoot } from "react-dom/client";
43748
- import { Fragment as Fragment28, jsx as jsx133, jsxs as jsxs88 } from "react/jsx-runtime";
43872
+ import { Fragment as Fragment27, jsx as jsx133, jsxs as jsxs88 } from "react/jsx-runtime";
43749
43873
  function HeaderCartRuntime(props2) {
43750
43874
  const cart2 = useCommerceCart(props2.siteId);
43751
- const itemCount = React39.useMemo(() => getCartItemCount(cart2.items), [cart2.items]);
43752
- const [open, setOpen] = React39.useState(false);
43753
- const checkoutHref = React39.useMemo(
43875
+ const itemCount = React41.useMemo(() => getCartItemCount(cart2.items), [cart2.items]);
43876
+ const [open, setOpen] = React41.useState(false);
43877
+ const checkoutHref = React41.useMemo(
43754
43878
  () => resolveHeaderCartCheckoutHref(
43755
43879
  props2.mounts,
43756
43880
  typeof window === "undefined" ? null : window.location.pathname
43757
43881
  ),
43758
43882
  [props2.mounts]
43759
43883
  );
43760
- return /* @__PURE__ */ jsxs88(Fragment28, { children: [
43884
+ return /* @__PURE__ */ jsxs88(Fragment27, { children: [
43761
43885
  props2.mounts.map(
43762
43886
  (mount) => createPortal3(
43763
43887
  /* @__PURE__ */ jsx133(
@@ -44480,7 +44604,7 @@ var init_EventCard_client = __esm({
44480
44604
  });
44481
44605
 
44482
44606
  // ../blocks/src/system/runtime/nodes/events/shared/EventPaginatedListView.client.tsx
44483
- import { Fragment as Fragment29, jsx as jsx137, jsxs as jsxs90 } from "react/jsx-runtime";
44607
+ import { Fragment as Fragment28, jsx as jsx137, jsxs as jsxs90 } from "react/jsx-runtime";
44484
44608
  var EventPaginatedListView;
44485
44609
  var init_EventPaginatedListView_client = __esm({
44486
44610
  "../blocks/src/system/runtime/nodes/events/shared/EventPaginatedListView.client.tsx"() {
@@ -44523,7 +44647,7 @@ var init_EventPaginatedListView_client = __esm({
44523
44647
  resetFiltersText
44524
44648
  }
44525
44649
  ),
44526
- footer: /* @__PURE__ */ jsxs90(Fragment29, { children: [
44650
+ footer: /* @__PURE__ */ jsxs90(Fragment28, { children: [
44527
44651
  error ? /* @__PURE__ */ jsxs90("div", { className: "rb-mt-6 rb-text-center", children: [
44528
44652
  /* @__PURE__ */ jsx137("p", { className: "status-error rb-caption rb-mb-2", children: "Failed to load more events" }),
44529
44653
  /* @__PURE__ */ jsx137(
@@ -45839,18 +45963,18 @@ var init_DayEventsModal = __esm({
45839
45963
  });
45840
45964
 
45841
45965
  // ../blocks/src/system/runtime/nodes/events/shared/EventModals.tsx
45842
- import React44 from "react";
45843
- import { Fragment as Fragment30, jsx as jsx144, jsxs as jsxs93 } from "react/jsx-runtime";
45966
+ import React46 from "react";
45967
+ import { Fragment as Fragment29, jsx as jsx144, jsxs as jsxs93 } from "react/jsx-runtime";
45844
45968
  function EventModals({
45845
45969
  showCapacity,
45846
45970
  cardVariant,
45847
45971
  buttonVariant,
45848
45972
  buttonText
45849
45973
  }) {
45850
- const markerRef = React44.useRef(null);
45851
- const [portalRoot, setPortalRoot] = React44.useState(null);
45974
+ const markerRef = React46.useRef(null);
45975
+ const [portalRoot, setPortalRoot] = React46.useState(null);
45852
45976
  const { modalState, openEventModal, closeModal } = useEventModal();
45853
- React44.useEffect(() => {
45977
+ React46.useEffect(() => {
45854
45978
  const sourceEl = markerRef.current;
45855
45979
  if (!sourceEl) return;
45856
45980
  const portal = createBodyThemePortalRoot(sourceEl);
@@ -45869,7 +45993,7 @@ function EventModals({
45869
45993
  return marker;
45870
45994
  }
45871
45995
  if (modalState.type === "event") {
45872
- return /* @__PURE__ */ jsxs93(Fragment30, { children: [
45996
+ return /* @__PURE__ */ jsxs93(Fragment29, { children: [
45873
45997
  marker,
45874
45998
  /* @__PURE__ */ jsx144(
45875
45999
  EventDetailModal,
@@ -45886,7 +46010,7 @@ function EventModals({
45886
46010
  ] });
45887
46011
  }
45888
46012
  if (modalState.type === "day") {
45889
- return /* @__PURE__ */ jsxs93(Fragment30, { children: [
46013
+ return /* @__PURE__ */ jsxs93(Fragment29, { children: [
45890
46014
  marker,
45891
46015
  /* @__PURE__ */ jsx144(
45892
46016
  DayEventsModal,
@@ -48725,7 +48849,7 @@ var init_newsletterForm2 = __esm({
48725
48849
  });
48726
48850
 
48727
48851
  // ../blocks/src/system/runtime/components/registry.client.tsx
48728
- import React52 from "react";
48852
+ import React54 from "react";
48729
48853
 
48730
48854
  // ../blocks/src/primitives/layout/Section.tsx
48731
48855
  init_clsx();
@@ -50759,14 +50883,27 @@ function BookingFormSSR({
50759
50883
  return /* @__PURE__ */ jsxs8(
50760
50884
  "div",
50761
50885
  {
50762
- className: `booking-form-ssr ${className ?? ""}`.trim(),
50886
+ className: `rb-reg-surface booking-form-ssr ${display.state === "missing" ? "" : "ab-shell "}${className ?? ""}`.trim(),
50763
50887
  ...getIslandRootProps("booking-form", blockId),
50888
+ "aria-busy": display.state === "missing" ? void 0 : true,
50889
+ "aria-label": display.state === "missing" ? void 0 : "Loading booking form",
50890
+ role: display.state === "missing" ? void 0 : "status",
50764
50891
  children: [
50765
50892
  /* @__PURE__ */ jsx23(IslandPropsScript, { value: islandProps }),
50766
- /* @__PURE__ */ jsx23("div", { className: "booking-form-ssr__summary", children: display.state === "missing" ? /* @__PURE__ */ jsx23("p", { className: "booking-form-ssr__error", children: display.message }) : /* @__PURE__ */ jsxs8(Fragment3, { children: [
50767
- /* @__PURE__ */ jsx23("strong", { children: display.submitLabel }),
50768
- display.successMessage ? /* @__PURE__ */ jsx23("p", { className: "booking-form-ssr__success", children: display.successMessage }) : null
50769
- ] }) }),
50893
+ display.state === "missing" ? /* @__PURE__ */ jsx23("div", { className: "alert alert-error", role: "alert", children: /* @__PURE__ */ jsx23("p", { className: "ab-text", children: display.message }) }) : /* @__PURE__ */ jsxs8(Fragment3, { children: [
50894
+ /* @__PURE__ */ jsx23("span", { className: "rb-sr-only", children: "Loading booking form..." }),
50895
+ /* @__PURE__ */ jsxs8("div", { className: "rb-reg-stack", "aria-hidden": "true", children: [
50896
+ /* @__PURE__ */ jsx23("div", { className: "rb-reg-summary", children: /* @__PURE__ */ jsxs8("div", { className: "rb-reg-stack rb-reg-stack--sm", children: [
50897
+ /* @__PURE__ */ jsx23("div", { className: "rb-shell-line rb-shell-line--md" }),
50898
+ /* @__PURE__ */ jsx23("div", { className: "rb-shell-line rb-shell-line--sm" })
50899
+ ] }) }),
50900
+ /* @__PURE__ */ jsxs8("div", { className: "rb-reg-stack rb-reg-stack--sm", children: [
50901
+ /* @__PURE__ */ jsx23("div", { className: "rb-shell-line rb-shell-line--lg" }),
50902
+ /* @__PURE__ */ jsx23("div", { className: "rb-shell-line rb-shell-line--xs" })
50903
+ ] }),
50904
+ /* @__PURE__ */ jsx23("div", { className: "rb-wizard-actions", children: /* @__PURE__ */ jsx23("div", { className: "ab-shell-button", children: display.submitLabel }) })
50905
+ ] })
50906
+ ] }),
50770
50907
  children
50771
50908
  ]
50772
50909
  }
@@ -55236,20 +55373,38 @@ function EventRegistrationShell({
55236
55373
  "div",
55237
55374
  {
55238
55375
  id: EVENT_REGISTRATION_ANCHOR_ID,
55239
- className: "er-container er-registration-shell",
55376
+ className: "rb-reg-surface er-container er-registration-shell",
55240
55377
  "aria-busy": "true",
55241
55378
  role: "status",
55242
55379
  children: /* @__PURE__ */ jsxs36("div", { className: "er-payment-layout er-payment-layout--no-sidebar", children: [
55243
55380
  /* @__PURE__ */ jsxs36("div", { className: "er-payment-layout-main", children: [
55244
- /* @__PURE__ */ jsx53("div", { className: "er-steps-nav er-registration-shell__steps", "aria-hidden": "true", children: /* @__PURE__ */ jsx53("ol", { className: "er-steps", children: display.stepLabels.map((label, index) => {
55381
+ /* @__PURE__ */ jsx53("div", { className: "rb-steps-nav er-steps-nav er-registration-shell__steps", "aria-hidden": "true", children: /* @__PURE__ */ jsx53("ol", { className: "rb-steps er-steps", children: display.stepLabels.map((label, index) => {
55245
55382
  const isActive = index === 0;
55246
- return /* @__PURE__ */ jsxs36("li", { className: "er-step", children: [
55247
- /* @__PURE__ */ jsx53("span", { className: cx("er-step-circle", isActive && "er-step-circle--active"), children: index + 1 }),
55248
- /* @__PURE__ */ jsx53("span", { className: cx("er-step-label", isActive && "er-step-label--active"), children: label }),
55249
- index < display.stepLabels.length - 1 ? /* @__PURE__ */ jsx53("span", { className: "er-step-connector" }) : null
55383
+ return /* @__PURE__ */ jsxs36("li", { className: "rb-step er-step", children: [
55384
+ /* @__PURE__ */ jsx53(
55385
+ "span",
55386
+ {
55387
+ className: cx(
55388
+ "rb-step-circle er-step-circle",
55389
+ isActive && "rb-step-circle--active er-step-circle--active"
55390
+ ),
55391
+ children: index + 1
55392
+ }
55393
+ ),
55394
+ /* @__PURE__ */ jsx53(
55395
+ "span",
55396
+ {
55397
+ className: cx(
55398
+ "rb-step-label er-step-label",
55399
+ isActive && "rb-step-label--active er-step-label--active"
55400
+ ),
55401
+ children: label
55402
+ }
55403
+ ),
55404
+ index < display.stepLabels.length - 1 ? /* @__PURE__ */ jsx53("span", { className: "rb-step-connector er-step-connector" }) : null
55250
55405
  ] }, label);
55251
55406
  }) }) }),
55252
- /* @__PURE__ */ jsxs36("div", { className: "er-stack", children: [
55407
+ /* @__PURE__ */ jsxs36("div", { className: "rb-reg-stack er-stack", children: [
55253
55408
  /* @__PURE__ */ jsxs36("div", { children: [
55254
55409
  /* @__PURE__ */ jsx53("p", { className: "er-registration-shell__eyebrow", children: "Registration" }),
55255
55410
  /* @__PURE__ */ jsx53("h3", { className: "er-title er-registration-shell__title", children: display.titleText }),
@@ -55257,20 +55412,20 @@ function EventRegistrationShell({
55257
55412
  ] }),
55258
55413
  /* @__PURE__ */ jsxs36("div", { className: "er-event-grid er-registration-shell__cards", "aria-hidden": "true", children: [
55259
55414
  /* @__PURE__ */ jsxs36("div", { className: "er-event-card er-registration-shell__card", children: [
55260
- /* @__PURE__ */ jsx53("div", { className: "er-registration-shell__line er-registration-shell__line--lg" }),
55261
- /* @__PURE__ */ jsx53("div", { className: "er-registration-shell__line er-registration-shell__line--sm" })
55415
+ /* @__PURE__ */ jsx53("div", { className: "rb-shell-line rb-shell-line--lg er-registration-shell__line er-registration-shell__line--lg" }),
55416
+ /* @__PURE__ */ jsx53("div", { className: "rb-shell-line rb-shell-line--sm er-registration-shell__line er-registration-shell__line--sm" })
55262
55417
  ] }),
55263
55418
  /* @__PURE__ */ jsxs36("div", { className: "er-event-card er-registration-shell__card", children: [
55264
- /* @__PURE__ */ jsx53("div", { className: "er-registration-shell__line er-registration-shell__line--md" }),
55265
- /* @__PURE__ */ jsx53("div", { className: "er-registration-shell__line er-registration-shell__line--xs" })
55419
+ /* @__PURE__ */ jsx53("div", { className: "rb-shell-line rb-shell-line--md er-registration-shell__line er-registration-shell__line--md" }),
55420
+ /* @__PURE__ */ jsx53("div", { className: "rb-shell-line rb-shell-line--xs er-registration-shell__line er-registration-shell__line--xs" })
55266
55421
  ] })
55267
55422
  ] })
55268
55423
  ] })
55269
55424
  ] }),
55270
55425
  /* @__PURE__ */ jsx53("div", { className: "er-payment-layout-footer", children: /* @__PURE__ */ jsxs36("div", { className: "er-summary-bar er-registration-shell__summary", "aria-hidden": "true", children: [
55271
55426
  /* @__PURE__ */ jsxs36("div", { className: "er-summary-bar-info", children: [
55272
- /* @__PURE__ */ jsx53("div", { className: "er-registration-shell__line er-registration-shell__line--md" }),
55273
- /* @__PURE__ */ jsx53("div", { className: "er-registration-shell__line er-registration-shell__line--xs" })
55427
+ /* @__PURE__ */ jsx53("div", { className: "rb-shell-line rb-shell-line--md er-registration-shell__line er-registration-shell__line--md" }),
55428
+ /* @__PURE__ */ jsx53("div", { className: "rb-shell-line rb-shell-line--xs er-registration-shell__line er-registration-shell__line--xs" })
55274
55429
  ] }),
55275
55430
  /* @__PURE__ */ jsx53("div", { className: "er-registration-shell__button-placeholder", children: display.summaryButtonText })
55276
55431
  ] }) })
@@ -56197,28 +56352,28 @@ var gifting_client_default = GiftingClient;
56197
56352
  init_carousel_client();
56198
56353
 
56199
56354
  // ../../node_modules/.pnpm/@radix-ui+react-accordion@1.2.14_@types+react-dom@19.2.3_@types+react@19.2.17__@types+r_267762ff3d1a7aac1f1135a6d591f0f8/node_modules/@radix-ui/react-accordion/dist/index.mjs
56200
- import * as React35 from "react";
56355
+ import * as React37 from "react";
56201
56356
 
56202
56357
  // ../../node_modules/.pnpm/@radix-ui+react-context@1.1.4_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-context/dist/index.mjs
56203
- import * as React23 from "react";
56358
+ import * as React26 from "react";
56204
56359
  import { jsx as jsx123 } from "react/jsx-runtime";
56205
56360
  function createContextScope(scopeName, createContextScopeDeps = []) {
56206
56361
  let defaultContexts = [];
56207
56362
  function createContext32(rootComponentName, defaultContext) {
56208
- const BaseContext = React23.createContext(defaultContext);
56363
+ const BaseContext = React26.createContext(defaultContext);
56209
56364
  BaseContext.displayName = rootComponentName + "Context";
56210
56365
  const index = defaultContexts.length;
56211
56366
  defaultContexts = [...defaultContexts, defaultContext];
56212
56367
  const Provider = (props2) => {
56213
56368
  const { scope, children, ...context } = props2;
56214
56369
  const Context = scope?.[scopeName]?.[index] || BaseContext;
56215
- const value = React23.useMemo(() => context, Object.values(context));
56370
+ const value = React26.useMemo(() => context, Object.values(context));
56216
56371
  return /* @__PURE__ */ jsx123(Context.Provider, { value, children });
56217
56372
  };
56218
56373
  Provider.displayName = rootComponentName + "Provider";
56219
56374
  function useContext22(consumerName, scope) {
56220
56375
  const Context = scope?.[scopeName]?.[index] || BaseContext;
56221
- const context = React23.useContext(Context);
56376
+ const context = React26.useContext(Context);
56222
56377
  if (context) return context;
56223
56378
  if (defaultContext !== void 0) return defaultContext;
56224
56379
  throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``);
@@ -56227,11 +56382,11 @@ function createContextScope(scopeName, createContextScopeDeps = []) {
56227
56382
  }
56228
56383
  const createScope = () => {
56229
56384
  const scopeContexts = defaultContexts.map((defaultContext) => {
56230
- return React23.createContext(defaultContext);
56385
+ return React26.createContext(defaultContext);
56231
56386
  });
56232
56387
  return function useScope(scope) {
56233
56388
  const contexts = scope?.[scopeName] || scopeContexts;
56234
- return React23.useMemo(
56389
+ return React26.useMemo(
56235
56390
  () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),
56236
56391
  [scope, contexts]
56237
56392
  );
@@ -56254,7 +56409,7 @@ function composeContextScopes(...scopes) {
56254
56409
  const currentScope = scopeProps[`__scope${scopeName}`];
56255
56410
  return { ...nextScopes2, ...currentScope };
56256
56411
  }, {});
56257
- return React23.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);
56412
+ return React26.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);
56258
56413
  };
56259
56414
  };
56260
56415
  createScope.scopeName = baseScope.scopeName;
@@ -56262,10 +56417,10 @@ function composeContextScopes(...scopes) {
56262
56417
  }
56263
56418
 
56264
56419
  // ../../node_modules/.pnpm/@radix-ui+react-collection@1.1.10_@types+react-dom@19.2.3_@types+react@19.2.17__@types+_d2514901a83655b2339c16df2b5b40ad/node_modules/@radix-ui/react-collection/dist/index.mjs
56265
- import * as React26 from "react";
56420
+ import * as React29 from "react";
56266
56421
 
56267
56422
  // ../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.3_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-compose-refs/dist/index.mjs
56268
- import * as React24 from "react";
56423
+ import * as React27 from "react";
56269
56424
  function setRef(ref, value) {
56270
56425
  if (typeof ref === "function") {
56271
56426
  return ref(value);
@@ -56298,14 +56453,14 @@ function composeRefs(...refs) {
56298
56453
  };
56299
56454
  }
56300
56455
  function useComposedRefs(...refs) {
56301
- return React24.useCallback(composeRefs(...refs), refs);
56456
+ return React27.useCallback(composeRefs(...refs), refs);
56302
56457
  }
56303
56458
 
56304
56459
  // ../../node_modules/.pnpm/@radix-ui+react-slot@1.3.0_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-slot/dist/index.mjs
56305
- import * as React25 from "react";
56460
+ import * as React28 from "react";
56306
56461
  // @__NO_SIDE_EFFECTS__
56307
56462
  function createSlot(ownerName) {
56308
- const Slot2 = React25.forwardRef((props2, forwardedRef) => {
56463
+ const Slot2 = React28.forwardRef((props2, forwardedRef) => {
56309
56464
  let { children, ...slotProps } = props2;
56310
56465
  let slottableElement = null;
56311
56466
  let hasSlottable = false;
@@ -56313,7 +56468,7 @@ function createSlot(ownerName) {
56313
56468
  if (isLazyComponent(children) && typeof use === "function") {
56314
56469
  children = use(children._payload);
56315
56470
  }
56316
- React25.Children.forEach(children, (maybeSlottable) => {
56471
+ React28.Children.forEach(children, (maybeSlottable) => {
56317
56472
  if (isSlottable(maybeSlottable)) {
56318
56473
  hasSlottable = true;
56319
56474
  const slottable = maybeSlottable;
@@ -56328,13 +56483,13 @@ function createSlot(ownerName) {
56328
56483
  }
56329
56484
  });
56330
56485
  if (slottableElement) {
56331
- slottableElement = React25.cloneElement(slottableElement, void 0, newChildren);
56486
+ slottableElement = React28.cloneElement(slottableElement, void 0, newChildren);
56332
56487
  } else if (
56333
56488
  // A `Slottable` was found but it didn't resolve to a single element (e.g.
56334
56489
  // it wrapped multiple elements, text, or a render-prop `child` that
56335
56490
  // wasn't an element). Don't fall back to treating the `Slottable` wrapper
56336
56491
  // itself as the slot target — throw a descriptive error below instead.
56337
- !hasSlottable && React25.Children.count(children) === 1 && React25.isValidElement(children)
56492
+ !hasSlottable && React28.Children.count(children) === 1 && React28.isValidElement(children)
56338
56493
  ) {
56339
56494
  slottableElement = children;
56340
56495
  }
@@ -56349,10 +56504,10 @@ function createSlot(ownerName) {
56349
56504
  return children;
56350
56505
  }
56351
56506
  const mergedProps = mergeProps(slotProps, slottableElement.props ?? {});
56352
- if (slottableElement.type !== React25.Fragment) {
56507
+ if (slottableElement.type !== React28.Fragment) {
56353
56508
  mergedProps.ref = forwardedRef ? composedRef : slottableElementRef;
56354
56509
  }
56355
- return React25.cloneElement(slottableElement, mergedProps);
56510
+ return React28.cloneElement(slottableElement, mergedProps);
56356
56511
  });
56357
56512
  Slot2.displayName = `${ownerName}.Slot`;
56358
56513
  return Slot2;
@@ -56361,10 +56516,10 @@ var SLOTTABLE_IDENTIFIER = /* @__PURE__ */ Symbol.for("radix.slottable");
56361
56516
  var getSlottableElementFromSlottable = (slottable, child) => {
56362
56517
  if ("child" in slottable.props) {
56363
56518
  const child2 = slottable.props.child;
56364
- if (!React25.isValidElement(child2)) return null;
56365
- return React25.cloneElement(child2, void 0, slottable.props.children(child2.props.children));
56519
+ if (!React28.isValidElement(child2)) return null;
56520
+ return React28.cloneElement(child2, void 0, slottable.props.children(child2.props.children));
56366
56521
  }
56367
- return React25.isValidElement(child) ? child : null;
56522
+ return React28.isValidElement(child) ? child : null;
56368
56523
  };
56369
56524
  function mergeProps(slotProps, childProps) {
56370
56525
  const overrideProps = { ...childProps };
@@ -56404,7 +56559,7 @@ function getElementRef(element) {
56404
56559
  return element.props.ref || element.ref;
56405
56560
  }
56406
56561
  function isSlottable(child) {
56407
- return React25.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
56562
+ return React28.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
56408
56563
  }
56409
56564
  var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
56410
56565
  function isLazyComponent(element) {
@@ -56419,11 +56574,11 @@ var createSlotError = (ownerName) => {
56419
56574
  var createSlottableError = (ownerName) => {
56420
56575
  return `${ownerName} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`;
56421
56576
  };
56422
- var use = React25[" use ".trim().toString()];
56577
+ var use = React28[" use ".trim().toString()];
56423
56578
 
56424
56579
  // ../../node_modules/.pnpm/@radix-ui+react-collection@1.1.10_@types+react-dom@19.2.3_@types+react@19.2.17__@types+_d2514901a83655b2339c16df2b5b40ad/node_modules/@radix-ui/react-collection/dist/index.mjs
56425
56580
  import { jsx as jsx124 } from "react/jsx-runtime";
56426
- import * as React27 from "react";
56581
+ import * as React210 from "react";
56427
56582
  import { jsx as jsx210 } from "react/jsx-runtime";
56428
56583
  function createCollection(name) {
56429
56584
  const PROVIDER_NAME = name + "CollectionProvider";
@@ -56434,14 +56589,14 @@ function createCollection(name) {
56434
56589
  );
56435
56590
  const CollectionProvider = (props2) => {
56436
56591
  const { scope, children } = props2;
56437
- const ref = React26.useRef(null);
56438
- const itemMap = React26.useRef(/* @__PURE__ */ new Map()).current;
56592
+ const ref = React29.useRef(null);
56593
+ const itemMap = React29.useRef(/* @__PURE__ */ new Map()).current;
56439
56594
  return /* @__PURE__ */ jsx124(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });
56440
56595
  };
56441
56596
  CollectionProvider.displayName = PROVIDER_NAME;
56442
56597
  const COLLECTION_SLOT_NAME = name + "CollectionSlot";
56443
56598
  const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);
56444
- const CollectionSlot = React26.forwardRef(
56599
+ const CollectionSlot = React29.forwardRef(
56445
56600
  (props2, forwardedRef) => {
56446
56601
  const { scope, children } = props2;
56447
56602
  const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
@@ -56453,13 +56608,13 @@ function createCollection(name) {
56453
56608
  const ITEM_SLOT_NAME = name + "CollectionItemSlot";
56454
56609
  const ITEM_DATA_ATTR = "data-radix-collection-item";
56455
56610
  const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);
56456
- const CollectionItemSlot = React26.forwardRef(
56611
+ const CollectionItemSlot = React29.forwardRef(
56457
56612
  (props2, forwardedRef) => {
56458
56613
  const { scope, children, ...itemData } = props2;
56459
- const ref = React26.useRef(null);
56614
+ const ref = React29.useRef(null);
56460
56615
  const composedRefs = useComposedRefs(forwardedRef, ref);
56461
56616
  const context = useCollectionContext(ITEM_SLOT_NAME, scope);
56462
- React26.useEffect(() => {
56617
+ React29.useEffect(() => {
56463
56618
  context.itemMap.set(ref, { ref, ...itemData });
56464
56619
  return () => void context.itemMap.delete(ref);
56465
56620
  });
@@ -56469,7 +56624,7 @@ function createCollection(name) {
56469
56624
  CollectionItemSlot.displayName = ITEM_SLOT_NAME;
56470
56625
  function useCollection2(scope) {
56471
56626
  const context = useCollectionContext(name + "CollectionConsumer", scope);
56472
- const getItems = React26.useCallback(() => {
56627
+ const getItems = React29.useCallback(() => {
56473
56628
  const collectionNode = context.collectionRef.current;
56474
56629
  if (!collectionNode) return [];
56475
56630
  const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));
@@ -56500,16 +56655,16 @@ function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForD
56500
56655
  }
56501
56656
 
56502
56657
  // ../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.3_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs
56503
- import * as React29 from "react";
56658
+ import * as React31 from "react";
56504
56659
 
56505
56660
  // ../../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.2_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs
56506
- import * as React28 from "react";
56507
- var useLayoutEffect22 = globalThis?.document ? React28.useLayoutEffect : () => {
56661
+ import * as React30 from "react";
56662
+ var useLayoutEffect22 = globalThis?.document ? React30.useLayoutEffect : () => {
56508
56663
  };
56509
56664
 
56510
56665
  // ../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.3_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs
56511
- import * as React210 from "react";
56512
- var useInsertionEffect = React29[" useInsertionEffect ".trim().toString()] || useLayoutEffect22;
56666
+ import * as React211 from "react";
56667
+ var useInsertionEffect = React31[" useInsertionEffect ".trim().toString()] || useLayoutEffect22;
56513
56668
  function useControllableState({
56514
56669
  prop,
56515
56670
  defaultProp,
@@ -56524,8 +56679,8 @@ function useControllableState({
56524
56679
  const isControlled = prop !== void 0;
56525
56680
  const value = isControlled ? prop : uncontrolledProp;
56526
56681
  if (true) {
56527
- const isControlledRef = React29.useRef(prop !== void 0);
56528
- React29.useEffect(() => {
56682
+ const isControlledRef = React31.useRef(prop !== void 0);
56683
+ React31.useEffect(() => {
56529
56684
  const wasControlled = isControlledRef.current;
56530
56685
  if (wasControlled !== isControlled) {
56531
56686
  const from = wasControlled ? "controlled" : "uncontrolled";
@@ -56537,7 +56692,7 @@ function useControllableState({
56537
56692
  isControlledRef.current = isControlled;
56538
56693
  }, [isControlled, caller]);
56539
56694
  }
56540
- const setValue = React29.useCallback(
56695
+ const setValue = React31.useCallback(
56541
56696
  (nextValue) => {
56542
56697
  if (isControlled) {
56543
56698
  const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;
@@ -56556,13 +56711,13 @@ function useUncontrolledState({
56556
56711
  defaultProp,
56557
56712
  onChange
56558
56713
  }) {
56559
- const [value, setValue] = React29.useState(defaultProp);
56560
- const prevValueRef = React29.useRef(value);
56561
- const onChangeRef = React29.useRef(onChange);
56714
+ const [value, setValue] = React31.useState(defaultProp);
56715
+ const prevValueRef = React31.useRef(value);
56716
+ const onChangeRef = React31.useRef(onChange);
56562
56717
  useInsertionEffect(() => {
56563
56718
  onChangeRef.current = onChange;
56564
56719
  }, [onChange]);
56565
- React29.useEffect(() => {
56720
+ React31.useEffect(() => {
56566
56721
  if (prevValueRef.current !== value) {
56567
56722
  onChangeRef.current?.(value);
56568
56723
  prevValueRef.current = value;
@@ -56575,7 +56730,7 @@ function isFunction(value) {
56575
56730
  }
56576
56731
 
56577
56732
  // ../../node_modules/.pnpm/@radix-ui+react-primitive@2.1.6_@types+react-dom@19.2.3_@types+react@19.2.17__@types+re_2b211ae514f45e2eda250184528d6c49/node_modules/@radix-ui/react-primitive/dist/index.mjs
56578
- import * as React30 from "react";
56733
+ import * as React32 from "react";
56579
56734
  import * as ReactDOM from "react-dom";
56580
56735
  import { jsx as jsx125 } from "react/jsx-runtime";
56581
56736
  var NODES = [
@@ -56599,7 +56754,7 @@ var NODES = [
56599
56754
  ];
56600
56755
  var Primitive = NODES.reduce((primitive, node) => {
56601
56756
  const Slot = createSlot(`Primitive.${node}`);
56602
- const Node2 = React30.forwardRef((props2, forwardedRef) => {
56757
+ const Node2 = React32.forwardRef((props2, forwardedRef) => {
56603
56758
  const { asChild, ...primitiveProps } = props2;
56604
56759
  const Comp = asChild ? Slot : node;
56605
56760
  if (typeof window !== "undefined") {
@@ -56612,13 +56767,13 @@ var Primitive = NODES.reduce((primitive, node) => {
56612
56767
  }, {});
56613
56768
 
56614
56769
  // ../../node_modules/.pnpm/@radix-ui+react-collapsible@1.1.14_@types+react-dom@19.2.3_@types+react@19.2.17__@types_e92b6f0788ff52b38e85f3f44ff92ede/node_modules/@radix-ui/react-collapsible/dist/index.mjs
56615
- import * as React33 from "react";
56770
+ import * as React35 from "react";
56616
56771
 
56617
56772
  // ../../node_modules/.pnpm/@radix-ui+react-presence@1.1.6_@types+react-dom@19.2.3_@types+react@19.2.17__@types+rea_dcd2172d161be68b0f7e3bfe31aff518/node_modules/@radix-ui/react-presence/dist/index.mjs
56618
- import * as React211 from "react";
56619
- import * as React31 from "react";
56773
+ import * as React212 from "react";
56774
+ import * as React33 from "react";
56620
56775
  function useStateMachine(initialState, machine) {
56621
- return React31.useReducer((state, event) => {
56776
+ return React33.useReducer((state, event) => {
56622
56777
  const nextState = machine[state][event];
56623
56778
  return nextState ?? state;
56624
56779
  }, initialState);
@@ -56626,17 +56781,17 @@ function useStateMachine(initialState, machine) {
56626
56781
  var Presence = (props2) => {
56627
56782
  const { present, children } = props2;
56628
56783
  const presence = usePresence(present);
56629
- const child = typeof children === "function" ? children({ present: presence.isPresent }) : React211.Children.only(children);
56784
+ const child = typeof children === "function" ? children({ present: presence.isPresent }) : React212.Children.only(children);
56630
56785
  const ref = useStableComposedRefs(presence.ref, getElementRef2(child));
56631
56786
  const forceMount = typeof children === "function";
56632
- return forceMount || presence.isPresent ? React211.cloneElement(child, { ref }) : null;
56787
+ return forceMount || presence.isPresent ? React212.cloneElement(child, { ref }) : null;
56633
56788
  };
56634
56789
  Presence.displayName = "Presence";
56635
56790
  function usePresence(present) {
56636
- const [node, setNode] = React211.useState();
56637
- const stylesRef = React211.useRef(null);
56638
- const prevPresentRef = React211.useRef(present);
56639
- const prevAnimationNameRef = React211.useRef("none");
56791
+ const [node, setNode] = React212.useState();
56792
+ const stylesRef = React212.useRef(null);
56793
+ const prevPresentRef = React212.useRef(present);
56794
+ const prevAnimationNameRef = React212.useRef("none");
56640
56795
  const initialState = present ? "mounted" : "unmounted";
56641
56796
  const [state, send] = useStateMachine(initialState, {
56642
56797
  mounted: {
@@ -56651,7 +56806,7 @@ function usePresence(present) {
56651
56806
  MOUNT: "mounted"
56652
56807
  }
56653
56808
  });
56654
- React211.useEffect(() => {
56809
+ React212.useEffect(() => {
56655
56810
  const currentAnimationName = getAnimationName(stylesRef.current);
56656
56811
  prevAnimationNameRef.current = state === "mounted" ? currentAnimationName : "none";
56657
56812
  }, [state]);
@@ -56717,7 +56872,7 @@ function usePresence(present) {
56717
56872
  }, [node, send]);
56718
56873
  return {
56719
56874
  isPresent: ["mounted", "unmountSuspended"].includes(state),
56720
- ref: React211.useCallback((node2) => {
56875
+ ref: React212.useCallback((node2) => {
56721
56876
  stylesRef.current = node2 ? getComputedStyle(node2) : null;
56722
56877
  setNode(node2);
56723
56878
  }, [])
@@ -56731,9 +56886,9 @@ function setRef2(ref, value) {
56731
56886
  }
56732
56887
  }
56733
56888
  function useStableComposedRefs(...refs) {
56734
- const refsRef = React211.useRef(refs);
56889
+ const refsRef = React212.useRef(refs);
56735
56890
  refsRef.current = refs;
56736
- return React211.useCallback((node) => {
56891
+ return React212.useCallback((node) => {
56737
56892
  const currentRefs = refsRef.current;
56738
56893
  let hasCleanup = false;
56739
56894
  const cleanups = currentRefs.map((ref) => {
@@ -56775,11 +56930,11 @@ function getElementRef2(element) {
56775
56930
  }
56776
56931
 
56777
56932
  // ../../node_modules/.pnpm/@radix-ui+react-id@1.1.2_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-id/dist/index.mjs
56778
- import * as React32 from "react";
56779
- var useReactId = React32[" useId ".trim().toString()] || (() => void 0);
56933
+ import * as React34 from "react";
56934
+ var useReactId = React34[" useId ".trim().toString()] || (() => void 0);
56780
56935
  var count = 0;
56781
56936
  function useId3(deterministicId) {
56782
- const [id, setId] = React32.useState(useReactId());
56937
+ const [id, setId] = React34.useState(useReactId());
56783
56938
  useLayoutEffect22(() => {
56784
56939
  if (!deterministicId) setId((reactId) => reactId ?? String(count++));
56785
56940
  }, [deterministicId]);
@@ -56791,7 +56946,7 @@ import { jsx as jsx126 } from "react/jsx-runtime";
56791
56946
  var COLLAPSIBLE_NAME = "Collapsible";
56792
56947
  var [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);
56793
56948
  var [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);
56794
- var Collapsible = React33.forwardRef(
56949
+ var Collapsible = React35.forwardRef(
56795
56950
  (props2, forwardedRef) => {
56796
56951
  const {
56797
56952
  __scopeCollapsible,
@@ -56814,7 +56969,7 @@ var Collapsible = React33.forwardRef(
56814
56969
  disabled,
56815
56970
  contentId: useId3(),
56816
56971
  open,
56817
- onOpenToggle: React33.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
56972
+ onOpenToggle: React35.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
56818
56973
  children: /* @__PURE__ */ jsx126(
56819
56974
  Primitive.div,
56820
56975
  {
@@ -56830,7 +56985,7 @@ var Collapsible = React33.forwardRef(
56830
56985
  );
56831
56986
  Collapsible.displayName = COLLAPSIBLE_NAME;
56832
56987
  var TRIGGER_NAME = "CollapsibleTrigger";
56833
- var CollapsibleTrigger = React33.forwardRef(
56988
+ var CollapsibleTrigger = React35.forwardRef(
56834
56989
  (props2, forwardedRef) => {
56835
56990
  const { __scopeCollapsible, ...triggerProps } = props2;
56836
56991
  const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);
@@ -56852,7 +57007,7 @@ var CollapsibleTrigger = React33.forwardRef(
56852
57007
  );
56853
57008
  CollapsibleTrigger.displayName = TRIGGER_NAME;
56854
57009
  var CONTENT_NAME = "CollapsibleContent";
56855
- var CollapsibleContent = React33.forwardRef(
57010
+ var CollapsibleContent = React35.forwardRef(
56856
57011
  (props2, forwardedRef) => {
56857
57012
  const { forceMount, ...contentProps } = props2;
56858
57013
  const context = useCollapsibleContext(CONTENT_NAME, props2.__scopeCollapsible);
@@ -56860,20 +57015,20 @@ var CollapsibleContent = React33.forwardRef(
56860
57015
  }
56861
57016
  );
56862
57017
  CollapsibleContent.displayName = CONTENT_NAME;
56863
- var CollapsibleContentImpl = React33.forwardRef((props2, forwardedRef) => {
57018
+ var CollapsibleContentImpl = React35.forwardRef((props2, forwardedRef) => {
56864
57019
  const { __scopeCollapsible, present, children, ...contentProps } = props2;
56865
57020
  const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);
56866
- const [isPresent, setIsPresent] = React33.useState(present);
56867
- const ref = React33.useRef(null);
57021
+ const [isPresent, setIsPresent] = React35.useState(present);
57022
+ const ref = React35.useRef(null);
56868
57023
  const composedRefs = useComposedRefs(forwardedRef, ref);
56869
- const heightRef = React33.useRef(0);
57024
+ const heightRef = React35.useRef(0);
56870
57025
  const height = heightRef.current;
56871
- const widthRef = React33.useRef(0);
57026
+ const widthRef = React35.useRef(0);
56872
57027
  const width = widthRef.current;
56873
57028
  const isOpen = context.open || isPresent;
56874
- const isMountAnimationPreventedRef = React33.useRef(isOpen);
56875
- const originalStylesRef = React33.useRef(void 0);
56876
- React33.useEffect(() => {
57029
+ const isMountAnimationPreventedRef = React35.useRef(isOpen);
57030
+ const originalStylesRef = React35.useRef(void 0);
57031
+ React35.useEffect(() => {
56877
57032
  const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);
56878
57033
  return () => cancelAnimationFrame(rAF);
56879
57034
  }, []);
@@ -56922,11 +57077,11 @@ var Trigger = CollapsibleTrigger;
56922
57077
  var Content = CollapsibleContent;
56923
57078
 
56924
57079
  // ../../node_modules/.pnpm/@radix-ui+react-direction@1.1.2_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-direction/dist/index.mjs
56925
- import * as React34 from "react";
57080
+ import * as React36 from "react";
56926
57081
  import { jsx as jsx127 } from "react/jsx-runtime";
56927
- var DirectionContext = React34.createContext(void 0);
57082
+ var DirectionContext = React36.createContext(void 0);
56928
57083
  function useDirection(localDir) {
56929
- const globalDir = React34.useContext(DirectionContext);
57084
+ const globalDir = React36.useContext(DirectionContext);
56930
57085
  return localDir || globalDir || "ltr";
56931
57086
  }
56932
57087
 
@@ -56940,7 +57095,7 @@ var [createAccordionContext, createAccordionScope] = createContextScope(ACCORDIO
56940
57095
  createCollapsibleScope
56941
57096
  ]);
56942
57097
  var useCollapsibleScope = createCollapsibleScope();
56943
- var Accordion = React35.forwardRef(
57098
+ var Accordion = React37.forwardRef(
56944
57099
  (props2, forwardedRef) => {
56945
57100
  const { type, ...accordionProps } = props2;
56946
57101
  const singleProps = accordionProps;
@@ -56954,7 +57109,7 @@ var [AccordionCollapsibleProvider, useAccordionCollapsibleContext] = createAccor
56954
57109
  ACCORDION_NAME,
56955
57110
  { collapsible: false }
56956
57111
  );
56957
- var AccordionImplSingle = React35.forwardRef(
57112
+ var AccordionImplSingle = React37.forwardRef(
56958
57113
  (props2, forwardedRef) => {
56959
57114
  const {
56960
57115
  value: valueProp,
@@ -56974,15 +57129,15 @@ var AccordionImplSingle = React35.forwardRef(
56974
57129
  AccordionValueProvider,
56975
57130
  {
56976
57131
  scope: props2.__scopeAccordion,
56977
- value: React35.useMemo(() => value ? [value] : [], [value]),
57132
+ value: React37.useMemo(() => value ? [value] : [], [value]),
56978
57133
  onItemOpen: setValue,
56979
- onItemClose: React35.useCallback(() => collapsible && setValue(""), [collapsible, setValue]),
57134
+ onItemClose: React37.useCallback(() => collapsible && setValue(""), [collapsible, setValue]),
56980
57135
  children: /* @__PURE__ */ jsx128(AccordionCollapsibleProvider, { scope: props2.__scopeAccordion, collapsible, children: /* @__PURE__ */ jsx128(AccordionImpl, { ...accordionSingleProps, ref: forwardedRef }) })
56981
57136
  }
56982
57137
  );
56983
57138
  }
56984
57139
  );
56985
- var AccordionImplMultiple = React35.forwardRef((props2, forwardedRef) => {
57140
+ var AccordionImplMultiple = React37.forwardRef((props2, forwardedRef) => {
56986
57141
  const {
56987
57142
  value: valueProp,
56988
57143
  defaultValue,
@@ -56996,11 +57151,11 @@ var AccordionImplMultiple = React35.forwardRef((props2, forwardedRef) => {
56996
57151
  onChange: onValueChange,
56997
57152
  caller: ACCORDION_NAME
56998
57153
  });
56999
- const handleItemOpen = React35.useCallback(
57154
+ const handleItemOpen = React37.useCallback(
57000
57155
  (itemValue) => setValue((prevValue = []) => [...prevValue, itemValue]),
57001
57156
  [setValue]
57002
57157
  );
57003
- const handleItemClose = React35.useCallback(
57158
+ const handleItemClose = React37.useCallback(
57004
57159
  (itemValue) => setValue((prevValue = []) => prevValue.filter((value2) => value2 !== itemValue)),
57005
57160
  [setValue]
57006
57161
  );
@@ -57016,10 +57171,10 @@ var AccordionImplMultiple = React35.forwardRef((props2, forwardedRef) => {
57016
57171
  );
57017
57172
  });
57018
57173
  var [AccordionImplProvider, useAccordionContext] = createAccordionContext(ACCORDION_NAME);
57019
- var AccordionImpl = React35.forwardRef(
57174
+ var AccordionImpl = React37.forwardRef(
57020
57175
  (props2, forwardedRef) => {
57021
57176
  const { __scopeAccordion, disabled, dir, orientation = "vertical", ...accordionProps } = props2;
57022
- const accordionRef = React35.useRef(null);
57177
+ const accordionRef = React37.useRef(null);
57023
57178
  const composedRefs = useComposedRefs(accordionRef, forwardedRef);
57024
57179
  const getItems = useCollection(__scopeAccordion);
57025
57180
  const direction = useDirection(dir);
@@ -57108,7 +57263,7 @@ var AccordionImpl = React35.forwardRef(
57108
57263
  );
57109
57264
  var ITEM_NAME = "AccordionItem";
57110
57265
  var [AccordionItemProvider, useAccordionItemContext] = createAccordionContext(ITEM_NAME);
57111
- var AccordionItem = React35.forwardRef(
57266
+ var AccordionItem = React37.forwardRef(
57112
57267
  (props2, forwardedRef) => {
57113
57268
  const { __scopeAccordion, value, ...accordionItemProps } = props2;
57114
57269
  const accordionContext = useAccordionContext(ITEM_NAME, __scopeAccordion);
@@ -57149,7 +57304,7 @@ var AccordionItem = React35.forwardRef(
57149
57304
  );
57150
57305
  AccordionItem.displayName = ITEM_NAME;
57151
57306
  var HEADER_NAME = "AccordionHeader";
57152
- var AccordionHeader = React35.forwardRef(
57307
+ var AccordionHeader = React37.forwardRef(
57153
57308
  (props2, forwardedRef) => {
57154
57309
  const { __scopeAccordion, ...headerProps } = props2;
57155
57310
  const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);
@@ -57168,7 +57323,7 @@ var AccordionHeader = React35.forwardRef(
57168
57323
  );
57169
57324
  AccordionHeader.displayName = HEADER_NAME;
57170
57325
  var TRIGGER_NAME2 = "AccordionTrigger";
57171
- var AccordionTrigger = React35.forwardRef(
57326
+ var AccordionTrigger = React37.forwardRef(
57172
57327
  (props2, forwardedRef) => {
57173
57328
  const { __scopeAccordion, ...triggerProps } = props2;
57174
57329
  const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);
@@ -57190,7 +57345,7 @@ var AccordionTrigger = React35.forwardRef(
57190
57345
  );
57191
57346
  AccordionTrigger.displayName = TRIGGER_NAME2;
57192
57347
  var CONTENT_NAME2 = "AccordionContent";
57193
- var AccordionContent = React35.forwardRef(
57348
+ var AccordionContent = React37.forwardRef(
57194
57349
  (props2, forwardedRef) => {
57195
57350
  const { __scopeAccordion, ...contentProps } = props2;
57196
57351
  const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);
@@ -57225,14 +57380,14 @@ var Trigger2 = AccordionTrigger;
57225
57380
  var Content2 = AccordionContent;
57226
57381
 
57227
57382
  // ../blocks/src/system/runtime/shared/accordionPrimitives.tsx
57228
- import * as React36 from "react";
57383
+ import * as React38 from "react";
57229
57384
  import { jsx as jsx129 } from "react/jsx-runtime";
57230
57385
  var Accordion2 = Root2;
57231
- var AccordionItem2 = React36.forwardRef(({ className, ...props2 }, ref) => /* @__PURE__ */ jsx129(Item, { ref, className, ...props2 }));
57386
+ var AccordionItem2 = React38.forwardRef(({ className, ...props2 }, ref) => /* @__PURE__ */ jsx129(Item, { ref, className, ...props2 }));
57232
57387
  AccordionItem2.displayName = "AccordionItem";
57233
- var AccordionTrigger2 = React36.forwardRef(({ className, children, ...props2 }, ref) => /* @__PURE__ */ jsx129(Header, { className: "accordion-header", children: /* @__PURE__ */ jsx129(Trigger2, { ref, className, ...props2, children }) }));
57388
+ var AccordionTrigger2 = React38.forwardRef(({ className, children, ...props2 }, ref) => /* @__PURE__ */ jsx129(Header, { className: "accordion-header", children: /* @__PURE__ */ jsx129(Trigger2, { ref, className, ...props2, children }) }));
57234
57389
  AccordionTrigger2.displayName = "AccordionTrigger";
57235
- var AccordionContent2 = React36.forwardRef(({ className, children, ...props2 }, ref) => /* @__PURE__ */ jsx129(
57390
+ var AccordionContent2 = React38.forwardRef(({ className, children, ...props2 }, ref) => /* @__PURE__ */ jsx129(
57236
57391
  Content2,
57237
57392
  {
57238
57393
  ref,
@@ -57248,7 +57403,7 @@ AccordionContent2.displayName = "AccordionContent";
57248
57403
  init_clsx();
57249
57404
  init_lucide_react();
57250
57405
  init_RichText();
57251
- import React37 from "react";
57406
+ import React39 from "react";
57252
57407
  init_richText_coerce();
57253
57408
  init_types6();
57254
57409
  import { jsx as jsx130, jsxs as jsxs85 } from "react/jsx-runtime";
@@ -57318,7 +57473,7 @@ var AccordionItemNode = ({
57318
57473
  pathBase: _pathBase,
57319
57474
  ...rest
57320
57475
  }) => {
57321
- const generatedId = React37.useId();
57476
+ const generatedId = React39.useId();
57322
57477
  const resolvedValue = value !== void 0 && value !== null ? String(value) : generatedId;
57323
57478
  const triggerSource = trigger ?? question;
57324
57479
  const contentSource = content ?? answer;
@@ -57547,7 +57702,7 @@ init_api();
57547
57702
 
57548
57703
  // ../blocks/src/system/runtime/nodes/weekly-slot-availability.client.controller.ts
57549
57704
  init_date_formatting();
57550
- import * as React51 from "react";
57705
+ import * as React53 from "react";
57551
57706
 
57552
57707
  // ../blocks/src/system/runtime/nodes/weekly-slot-availability.client.state.ts
57553
57708
  function normalizeWeeklySlotAvailabilityHorizonWeeks(value) {
@@ -57573,14 +57728,14 @@ function useWeeklySlotAvailabilityLoadState(api, input) {
57573
57728
  const canUseInitialAvailability = Boolean(
57574
57729
  initialAvailability && hasExplicitTimezone
57575
57730
  );
57576
- const [availability, setAvailability] = React51.useState(
57731
+ const [availability, setAvailability] = React53.useState(
57577
57732
  initialAvailability ?? null
57578
57733
  );
57579
- const [loading, setLoading] = React51.useState(
57734
+ const [loading, setLoading] = React53.useState(
57580
57735
  () => Boolean(serviceId) && !initialAvailability
57581
57736
  );
57582
- const [error, setError] = React51.useState(null);
57583
- React51.useEffect(() => {
57737
+ const [error, setError] = React53.useState(null);
57738
+ React53.useEffect(() => {
57584
57739
  if (!serviceId) {
57585
57740
  setAvailability(null);
57586
57741
  setLoading(false);
@@ -57753,7 +57908,7 @@ function defineRuntimeBackedBlockClientEntry(kind, client) {
57753
57908
  const NormalizedClient = (props2) => {
57754
57909
  const ClientComponent = client;
57755
57910
  const normalizedProps = normalizeLegacyInteractiveRenderProps(serverEntry.definition.runtime, mode, props2);
57756
- return React52.createElement(ClientComponent, normalizedProps);
57911
+ return React54.createElement(ClientComponent, normalizedProps);
57757
57912
  };
57758
57913
  NormalizedClient.displayName = `RuntimeBackedBlockClient(${kind})`;
57759
57914
  return {
@@ -57838,6 +57993,7 @@ init_resolver();
57838
57993
  init_types14();
57839
57994
  init_expandPalette();
57840
57995
  init_colorConversion();
57996
+ init_generateBaseCSS();
57841
57997
  init_generateEffectsCSS();
57842
57998
 
57843
57999
  // ../theme-core/src/navigation/presets.ts
@@ -58013,6 +58169,12 @@ function svgDataUrl(svg) {
58013
58169
  return `data:image/svg+xml,${encodeURIComponent(svg)}`;
58014
58170
  }
58015
58171
 
58172
+ // ../theme-core/src/status/generateStatusCss.ts
58173
+ init_contextualColors();
58174
+
58175
+ // ../theme-core/src/status/index.ts
58176
+ init_contextualColors();
58177
+
58016
58178
  // ../theme-core/src/runtime/buildThemeRuntime.ts
58017
58179
  init_tokens2();
58018
58180
 
@@ -58088,6 +58250,34 @@ ${root} {
58088
58250
  /* Order summary */
58089
58251
  --er-summary-bg: rgba(var(--tb-primary), 0.1);
58090
58252
  --er-summary-border: rgb(var(--tb-border));
58253
+
58254
+ /* Shared registration-surface mappings (issue 1174).
58255
+ Route the shared --rb-reg-* contract through this block's documented
58256
+ Tier 3 vars so existing --er-* overrides keep working unchanged. */
58257
+ --rb-reg-radius: var(--er-radius);
58258
+ --rb-reg-border: var(--er-border);
58259
+ --rb-reg-border-hover: var(--er-border-hover);
58260
+ --rb-reg-border-selected: var(--er-border-selected);
58261
+ --rb-reg-bg-selected: var(--er-payment-bg-selected);
58262
+ --rb-reg-option-bg: var(--er-control-bg);
58263
+ --rb-reg-option-hover-shadow: 0 8px 18px rgba(var(--tb-shadow, 15 23 42), 0.08);
58264
+ --rb-reg-surface-bg: rgb(var(--tb-surface));
58265
+ --rb-reg-on-surface: var(--er-on-surface);
58266
+ --rb-reg-on-surface-muted: var(--er-on-surface-muted);
58267
+ --rb-reg-on-surface-subtle: var(--er-on-surface-subtle);
58268
+ --rb-reg-on-surface-faint: var(--er-on-surface-faint);
58269
+ --rb-reg-check-bg: var(--er-check-bg);
58270
+ --rb-reg-check-text: var(--er-check-text);
58271
+ --rb-reg-step-active: var(--er-step-active);
58272
+ --rb-reg-step-completed: var(--er-step-completed);
58273
+ --rb-reg-step-inactive: var(--er-step-inactive);
58274
+ --rb-reg-step-text: var(--er-step-text);
58275
+ --rb-reg-step-text-active: var(--er-step-text-active);
58276
+ --rb-reg-step-connector: var(--er-step-connector);
58277
+ --rb-reg-summary-bg: var(--er-surface-muted);
58278
+ --rb-reg-summary-border: var(--er-border);
58279
+ --rb-reg-focus-ring: var(--er-focus-ring);
58280
+ --rb-reg-shell-line: var(--er-shell-line);
58091
58281
  }
58092
58282
  `;
58093
58283
  }
@@ -58220,25 +58410,40 @@ ${root} {
58220
58410
  --ab-info-bg: rgba(var(--tb-info), 0.1);
58221
58411
  --ab-info-text: rgb(var(--tb-info));
58222
58412
 
58223
- /* Loading/muted states */
58413
+ /* Muted summary state */
58224
58414
  --ab-muted-bg: rgba(var(--tb-text), 0.05);
58225
- --ab-muted-text: rgba(var(--tb-text), 0.6);
58226
- --ab-spinner-color: rgb(var(--tb-primary));
58227
58415
 
58228
- /* Form elements */
58229
- --ab-input-border: rgb(var(--tb-border));
58416
+ /* Focus ring used by shared registration-surface controls */
58230
58417
  --ab-input-focus-ring: rgba(var(--tb-primary), 0.3);
58231
58418
 
58232
- /* Buttons */
58233
- --ab-btn-primary-bg: rgb(var(--tb-primary));
58234
- --ab-btn-primary-text: rgb(var(--tb-background));
58235
- --ab-btn-primary-hover: rgba(var(--tb-primary), 0.9);
58236
- --ab-btn-secondary-border: rgb(var(--tb-border));
58237
- --ab-btn-secondary-hover: rgba(var(--tb-text), 0.05);
58238
-
58239
- /* Text opacity levels */
58240
- --ab-text-muted-opacity: 0.6;
58241
- --ab-text-faint-opacity: 0.4;
58419
+ /* Shared registration-surface mappings (issue 1174).
58420
+ Route the shared --rb-reg-* contract through this block's Tier 3 vars
58421
+ (palette tokens where no --ab-* var exists) so --ab-* overrides keep
58422
+ working as the block adopts the shared classes. */
58423
+ --rb-reg-radius: var(--ab-card-radius, var(--rb-block-radius));
58424
+ --rb-reg-border: var(--ab-card-border);
58425
+ --rb-reg-border-hover: var(--ab-card-border-hover);
58426
+ --rb-reg-border-selected: var(--ab-card-border-selected);
58427
+ --rb-reg-bg-selected: var(--ab-card-bg-selected);
58428
+ --rb-reg-option-bg: transparent;
58429
+ --rb-reg-option-hover-shadow: 0 8px 18px rgba(var(--tb-shadow, 15 23 42), 0.08);
58430
+ --rb-reg-surface-bg: rgb(var(--tb-surface));
58431
+ --rb-reg-on-surface: rgb(var(--tb-onSurface, var(--tb-text)));
58432
+ --rb-reg-on-surface-muted: rgba(var(--tb-onSurface, var(--tb-text)), 0.7);
58433
+ --rb-reg-on-surface-subtle: rgba(var(--tb-onSurface, var(--tb-text)), 0.6);
58434
+ --rb-reg-on-surface-faint: rgba(var(--tb-onSurface, var(--tb-text)), 0.5);
58435
+ --rb-reg-check-bg: var(--ab-check-bg);
58436
+ --rb-reg-check-text: var(--ab-check-text);
58437
+ --rb-reg-step-active: rgb(var(--tb-primary));
58438
+ --rb-reg-step-completed: rgb(var(--tb-success));
58439
+ --rb-reg-step-inactive: rgb(var(--tb-mutedText));
58440
+ --rb-reg-step-text: rgb(255 255 255);
58441
+ --rb-reg-step-text-active: rgb(var(--tb-primaryText, 255 255 255));
58442
+ --rb-reg-step-connector: rgba(var(--tb-border), 0.5);
58443
+ --rb-reg-summary-bg: var(--ab-muted-bg);
58444
+ --rb-reg-summary-border: var(--ab-card-border);
58445
+ --rb-reg-focus-ring: var(--ab-input-focus-ring);
58446
+ --rb-reg-shell-line: rgba(var(--tb-mutedText, 100 116 139), 0.22);
58242
58447
  }
58243
58448
  `;
58244
58449
  }
@@ -58530,6 +58735,35 @@ ${root} {
58530
58735
  /* Summary */
58531
58736
  --cr-summary-bg: rgba(var(--tb-primary), 0.1);
58532
58737
  --cr-summary-border: rgb(var(--tb-border));
58738
+
58739
+ /* Shared registration-surface mappings (issue 1174).
58740
+ Route the shared --rb-reg-* contract through this block's Tier 3 vars
58741
+ (palette tokens where no --cr-* var exists) so existing --cr-* overrides
58742
+ keep working unchanged. */
58743
+ --rb-reg-radius: var(--rb-block-radius);
58744
+ --rb-reg-border: var(--cr-border);
58745
+ --rb-reg-border-hover: var(--cr-border-hover);
58746
+ --rb-reg-border-selected: var(--cr-border-selected);
58747
+ --rb-reg-bg-selected: var(--cr-payment-bg-selected);
58748
+ --rb-reg-option-bg: rgb(var(--tb-background));
58749
+ --rb-reg-option-hover-shadow: 0 8px 18px rgba(var(--tb-shadow, 15 23 42), 0.08);
58750
+ --rb-reg-surface-bg: rgb(var(--tb-surface));
58751
+ --rb-reg-on-surface: var(--cr-on-surface);
58752
+ --rb-reg-on-surface-muted: rgba(var(--tb-onSurface, var(--tb-text)), 0.7);
58753
+ --rb-reg-on-surface-subtle: rgba(var(--tb-onSurface, var(--tb-text)), 0.6);
58754
+ --rb-reg-on-surface-faint: rgba(var(--tb-onSurface, var(--tb-text)), 0.5);
58755
+ --rb-reg-check-bg: var(--cr-check-bg);
58756
+ --rb-reg-check-text: var(--cr-check-text);
58757
+ --rb-reg-step-active: var(--cr-step-active);
58758
+ --rb-reg-step-completed: var(--cr-step-completed);
58759
+ --rb-reg-step-inactive: var(--cr-step-inactive);
58760
+ --rb-reg-step-text: var(--cr-step-text);
58761
+ --rb-reg-step-text-active: var(--cr-step-text-active);
58762
+ --rb-reg-step-connector: var(--cr-step-connector);
58763
+ --rb-reg-summary-bg: var(--cr-summary-bg);
58764
+ --rb-reg-summary-border: var(--cr-summary-border);
58765
+ --rb-reg-focus-ring: var(--cr-focus-ring);
58766
+ --rb-reg-shell-line: rgba(var(--tb-mutedText, 100 116 139), 0.22);
58533
58767
  }
58534
58768
  `;
58535
58769
  }