@riverbankcms/sdk 0.60.6 → 0.60.7

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 (92) hide show
  1. package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
  2. package/dist/_dts/api/src/bookingConfig.d.ts +6 -0
  3. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +45 -3
  4. package/dist/_dts/api/src/bookingOperations.d.ts +40 -3
  5. package/dist/_dts/api/src/courses.d.ts +1 -5
  6. package/dist/_dts/api/src/endpoints.d.ts +80 -1
  7. package/dist/_dts/api/src/index.d.ts +3 -2
  8. package/dist/_dts/api/src/navigation/contracts.d.ts +9 -9
  9. package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
  10. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +15 -1
  11. package/dist/_dts/api/src/resources.d.ts +1 -1
  12. package/dist/_dts/api/src/siteBanner.d.ts +8 -8
  13. package/dist/_dts/api/src/siteOnboarding.d.ts +1 -0
  14. package/dist/_dts/api/src/teamMembers.d.ts +27 -0
  15. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +35 -29
  16. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +1 -5
  17. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +40 -34
  18. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +1 -5
  19. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +1 -1
  20. package/dist/_dts/blocks/src/system/blocks/products/shared.d.ts +2 -2
  21. package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +9 -9
  22. package/dist/_dts/blocks/src/system/blocks/shared/teamMembers.d.ts +24 -0
  23. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +18 -8
  24. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  25. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  26. package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
  27. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +201 -201
  28. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +2 -2
  29. package/dist/_dts/blocks/src/system/node/schema.d.ts +5 -5
  30. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +4 -4
  32. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  33. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +3 -3
  34. package/dist/_dts/content-model/src/content-types/schema.d.ts +8 -8
  35. package/dist/_dts/content-model/src/metadataConfig.d.ts +1 -0
  36. package/dist/_dts/core/src/branded.d.ts +2 -0
  37. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +124 -8
  38. package/dist/_dts/db/src/schemas/forms.d.ts +61 -61
  39. package/dist/_dts/sdk/src/client/types.d.ts +9 -2
  40. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  41. package/dist/_dts/sdk/src/config/validation.d.ts +40 -37
  42. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +17 -8
  43. package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +1 -1
  44. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +19 -19
  45. package/dist/_dts/sdk/src/public-api/contracts.d.ts +87 -69
  46. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  47. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -5
  48. package/dist/_dts/sdk/src/version.d.ts +1 -1
  49. package/dist/_dts/theme-core/src/accordions/types.d.ts +11 -11
  50. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +10 -10
  51. package/dist/_dts/theme-core/src/buttons/types.d.ts +27 -27
  52. package/dist/_dts/theme-core/src/cards/types.d.ts +17 -17
  53. package/dist/_dts/theme-core/src/inputs/types.d.ts +14 -14
  54. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +2 -2
  55. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +438 -438
  56. package/dist/_dts/theme-core/src/navigation/types.d.ts +16 -16
  57. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +15 -15
  58. package/dist/_dts/theme-core/src/schema.d.ts +662 -662
  59. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +4 -4
  60. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +15 -15
  61. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +7 -7
  62. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  63. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +5 -5
  64. package/dist/_dts/ui/src/badge.d.ts +1 -1
  65. package/dist/_dts/ui/src/button-group.d.ts +1 -1
  66. package/dist/_dts/ui/src/button.d.ts +2 -2
  67. package/dist/_dts/ui/src/callout.d.ts +1 -1
  68. package/dist/_dts/ui/src/card.d.ts +1 -1
  69. package/dist/_dts/ui/src/surface.d.ts +2 -2
  70. package/dist/_dts/ui/src/toggle.d.ts +4 -4
  71. package/dist/cli/index.mjs +276 -24
  72. package/dist/client/client.mjs +607 -306
  73. package/dist/client/hooks.mjs +272 -23
  74. package/dist/client/rendering/client.mjs +179 -130
  75. package/dist/client/rendering/islands.mjs +68 -43
  76. package/dist/client/rendering.mjs +646 -363
  77. package/dist/preview-next/before-render.mjs +147 -1
  78. package/dist/preview-next/client/runtime.mjs +338 -43
  79. package/dist/preview-next/middleware.mjs +147 -1
  80. package/dist/server/components.mjs +727 -470
  81. package/dist/server/config-validation.mjs +488 -254
  82. package/dist/server/config.mjs +488 -254
  83. package/dist/server/data.mjs +272 -23
  84. package/dist/server/index.mjs +168 -2
  85. package/dist/server/next.mjs +476 -185
  86. package/dist/server/page-converter.mjs +335 -249
  87. package/dist/server/prebuild.mjs +1 -1
  88. package/dist/server/rendering/server.mjs +742 -469
  89. package/dist/server/rendering.mjs +742 -469
  90. package/dist/server/routing.mjs +274 -24
  91. package/dist/server/server.mjs +291 -24
  92. package/package.json +1 -1
@@ -10955,7 +10955,19 @@ var init_teamMember = __esm({
10955
10955
  bind("photo")
10956
10956
  )
10957
10957
  ]),
10958
- text({ as: "h3" }, bind("name")),
10958
+ link(
10959
+ {
10960
+ href: { $bind: { from: "profilePath" } },
10961
+ className: "rb-team-member-name-link"
10962
+ },
10963
+ [text({ as: "h3" }, bind("name"))],
10964
+ when("profilePath")
10965
+ ),
10966
+ text(
10967
+ { as: "h3" },
10968
+ when("profilePath", { not: true }),
10969
+ bind("name")
10970
+ ),
10959
10971
  text({ as: "p", className: "rb-team-member-role" }, when("role"), bind("role")),
10960
10972
  richText(
10961
10973
  { className: "rb-prose rb-max-w-none" },
@@ -11819,7 +11831,9 @@ var init_schemas = __esm({
11819
11831
  courseTeamMemberSummarySchema = z44.object({
11820
11832
  id: z44.string(),
11821
11833
  name: z44.string(),
11822
- summary: z44.string().nullable()
11834
+ roleLabel: z44.string().nullable(),
11835
+ summary: z44.string().nullable(),
11836
+ profilePath: z44.string().nullable()
11823
11837
  });
11824
11838
  coursePricingOptionSchema = z44.object({
11825
11839
  id: z44.string(),
@@ -11934,7 +11948,9 @@ var init_schemas2 = __esm({
11934
11948
  publicTeamMemberSummarySchema = z45.object({
11935
11949
  id: z45.string(),
11936
11950
  name: z45.string(),
11937
- summary: z45.string().nullable()
11951
+ roleLabel: z45.string().nullable(),
11952
+ summary: z45.string().nullable(),
11953
+ profilePath: z45.string().nullable()
11938
11954
  });
11939
11955
  publicEventSchema = z45.object({
11940
11956
  kind: z45.enum(["event", "course_session"]).optional(),
@@ -22510,7 +22526,7 @@ var init_booking_form_state = __esm({
22510
22526
  });
22511
22527
 
22512
22528
  // ../blocks/src/system/runtime/nodes/booking-form.interactive.ts
22513
- import { z as z63 } from "zod";
22529
+ import { z as z64 } from "zod";
22514
22530
  function buildBookingFormDisplay(source, form2 = normalizeBookingFormConfig(source.form)) {
22515
22531
  return {
22516
22532
  kind: "booking-form",
@@ -22541,14 +22557,14 @@ var init_booking_form_interactive = __esm({
22541
22557
  init_runtime();
22542
22558
  init_booking_form_state();
22543
22559
  init_bookingPaymentTerms();
22544
- bookingFieldOptionSchema = z63.object({
22545
- value: z63.string(),
22546
- label: z63.string()
22560
+ bookingFieldOptionSchema = z64.object({
22561
+ value: z64.string(),
22562
+ label: z64.string()
22547
22563
  });
22548
- bookingFieldSchema = z63.object({
22549
- id: z63.string(),
22550
- label: z63.string(),
22551
- type: z63.enum([
22564
+ bookingFieldSchema = z64.object({
22565
+ id: z64.string(),
22566
+ label: z64.string(),
22567
+ type: z64.enum([
22552
22568
  "text",
22553
22569
  "email",
22554
22570
  "textarea",
@@ -22562,132 +22578,132 @@ var init_booking_form_interactive = __esm({
22562
22578
  "date",
22563
22579
  "time"
22564
22580
  ]),
22565
- required: z63.boolean().optional(),
22566
- placeholder: z63.string().optional(),
22567
- helpText: z63.string().optional(),
22568
- options: z63.array(bookingFieldOptionSchema).optional(),
22569
- multiple: z63.boolean().optional(),
22570
- minLength: z63.number().optional(),
22571
- maxLength: z63.number().optional(),
22572
- pattern: z63.string().optional(),
22573
- min: z63.number().optional(),
22574
- max: z63.number().optional()
22581
+ required: z64.boolean().optional(),
22582
+ placeholder: z64.string().optional(),
22583
+ helpText: z64.string().optional(),
22584
+ options: z64.array(bookingFieldOptionSchema).optional(),
22585
+ multiple: z64.boolean().optional(),
22586
+ minLength: z64.number().optional(),
22587
+ maxLength: z64.number().optional(),
22588
+ pattern: z64.string().optional(),
22589
+ min: z64.number().optional(),
22590
+ max: z64.number().optional()
22575
22591
  });
22576
- bookingSettingsSchema = z63.object({
22577
- type: z63.literal("booking"),
22578
- serviceId: z63.string().optional(),
22579
- serviceIds: z63.array(z63.string()).optional(),
22580
- resourceId: z63.string().optional(),
22581
- requiresApproval: z63.boolean().optional(),
22582
- successMessage: z63.string().optional()
22592
+ bookingSettingsSchema = z64.object({
22593
+ type: z64.literal("booking"),
22594
+ serviceId: z64.string().optional(),
22595
+ serviceIds: z64.array(z64.string()).optional(),
22596
+ resourceId: z64.string().optional(),
22597
+ requiresApproval: z64.boolean().optional(),
22598
+ successMessage: z64.string().optional()
22583
22599
  });
22584
- bookingSourceFormSchema = z63.object({
22585
- id: z63.string(),
22586
- siteId: z63.string(),
22587
- userId: z63.string(),
22588
- name: z63.string(),
22589
- schemaJson: z63.object({
22590
- version: z63.string().optional(),
22591
- fields: z63.array(bookingFieldSchema).optional()
22600
+ bookingSourceFormSchema = z64.object({
22601
+ id: z64.string(),
22602
+ siteId: z64.string(),
22603
+ userId: z64.string(),
22604
+ name: z64.string(),
22605
+ schemaJson: z64.object({
22606
+ version: z64.string().optional(),
22607
+ fields: z64.array(bookingFieldSchema).optional()
22592
22608
  }).optional(),
22593
22609
  settingsJson: bookingSettingsSchema.optional(),
22594
- createdAt: z63.string(),
22595
- updatedAt: z63.string()
22610
+ createdAt: z64.string(),
22611
+ updatedAt: z64.string()
22596
22612
  });
22597
- blockBookingPaymentTermsAvailabilitySchema = z63.union([
22598
- z63.object({
22599
- kind: z63.literal("available"),
22613
+ blockBookingPaymentTermsAvailabilitySchema = z64.union([
22614
+ z64.object({
22615
+ kind: z64.literal("available"),
22600
22616
  paymentTerms: blockBookingPaymentTermsSchema
22601
22617
  }),
22602
- z63.object({
22603
- kind: z63.literal("pending_stripe_setup"),
22618
+ z64.object({
22619
+ kind: z64.literal("pending_stripe_setup"),
22604
22620
  paymentTerms: blockBookingPaymentTermsSchema,
22605
- reason: z63.literal("online_payment_configured_before_launch")
22621
+ reason: z64.literal("online_payment_configured_before_launch")
22606
22622
  })
22607
22623
  ]);
22608
- bookingServiceSchema = z63.object({
22609
- id: z63.string(),
22610
- siteId: z63.string(),
22611
- title: z63.string(),
22612
- description: z63.string().nullable().optional().transform((value) => value ?? void 0),
22613
- durationMinutes: z63.number().optional(),
22614
- priceAmount: z63.number().nullable().optional(),
22615
- priceCurrency: z63.string().nullable().optional(),
22624
+ bookingServiceSchema = z64.object({
22625
+ id: z64.string(),
22626
+ siteId: z64.string(),
22627
+ title: z64.string(),
22628
+ description: z64.string().nullable().optional().transform((value) => value ?? void 0),
22629
+ durationMinutes: z64.number().optional(),
22630
+ priceAmount: z64.number().nullable().optional(),
22631
+ priceCurrency: z64.string().nullable().optional(),
22616
22632
  paymentTerms: blockBookingPaymentTermsSchema.optional(),
22617
22633
  paymentTermsAvailability: blockBookingPaymentTermsAvailabilitySchema.optional()
22618
22634
  });
22619
- bookingServicesSourceSchema = z63.union([
22620
- z63.array(bookingServiceSchema),
22621
- z63.object({
22622
- services: z63.array(bookingServiceSchema).optional()
22635
+ bookingServicesSourceSchema = z64.union([
22636
+ z64.array(bookingServiceSchema),
22637
+ z64.object({
22638
+ services: z64.array(bookingServiceSchema).optional()
22623
22639
  }),
22624
- z63.record(z63.string(), bookingServiceSchema)
22640
+ z64.record(z64.string(), bookingServiceSchema)
22625
22641
  ]);
22626
- bookingConfigSchema = z63.object({
22627
- id: z63.string(),
22628
- name: z63.string(),
22629
- slug: z63.string(),
22642
+ bookingConfigSchema = z64.object({
22643
+ id: z64.string(),
22644
+ name: z64.string(),
22645
+ slug: z64.string(),
22630
22646
  settings: bookingSettingsSchema.optional(),
22631
- schema: z63.object({
22632
- version: z63.string().optional(),
22633
- fields: z63.array(bookingFieldSchema)
22647
+ schema: z64.object({
22648
+ version: z64.string().optional(),
22649
+ fields: z64.array(bookingFieldSchema)
22634
22650
  }).optional()
22635
22651
  });
22636
- bookingSourceSchema = z63.object({
22637
- siteId: z63.string().optional(),
22638
- apiBaseUrl: z63.string().optional(),
22639
- portalToken: z63.string().nullable().optional(),
22640
- formId: z63.string().optional(),
22641
- serviceId: z63.string().nullable().optional(),
22642
- resourceId: z63.string().nullable().optional(),
22643
- initialData: z63.record(z63.string(), z63.unknown()).nullable().optional(),
22644
- noticeMessage: z63.string().nullable().optional(),
22645
- requiresServiceSelection: z63.boolean().optional(),
22646
- requiresResourceSelection: z63.boolean().optional(),
22647
- shouldAutoSelectSingleResource: z63.boolean().optional(),
22648
- rebookContext: z63.object({
22649
- kind: z63.literal("portal_rebook")
22652
+ bookingSourceSchema = z64.object({
22653
+ siteId: z64.string().optional(),
22654
+ apiBaseUrl: z64.string().optional(),
22655
+ portalToken: z64.string().nullable().optional(),
22656
+ formId: z64.string().optional(),
22657
+ serviceId: z64.string().nullable().optional(),
22658
+ resourceId: z64.string().nullable().optional(),
22659
+ initialData: z64.record(z64.string(), z64.unknown()).nullable().optional(),
22660
+ noticeMessage: z64.string().nullable().optional(),
22661
+ requiresServiceSelection: z64.boolean().optional(),
22662
+ requiresResourceSelection: z64.boolean().optional(),
22663
+ shouldAutoSelectSingleResource: z64.boolean().optional(),
22664
+ rebookContext: z64.object({
22665
+ kind: z64.literal("portal_rebook")
22650
22666
  }).nullable().optional(),
22651
- submitLabel: z63.string().nullable().optional(),
22652
- successMessage: z63.string().nullable().optional(),
22667
+ submitLabel: z64.string().nullable().optional(),
22668
+ successMessage: z64.string().nullable().optional(),
22653
22669
  form: bookingSourceFormSchema.nullable().optional(),
22654
22670
  services: bookingServicesSourceSchema.nullable().optional(),
22655
- spamProtectionEnabled: z63.boolean().optional(),
22656
- className: z63.string().nullable().optional()
22671
+ spamProtectionEnabled: z64.boolean().optional(),
22672
+ className: z64.string().nullable().optional()
22657
22673
  });
22658
- bookingDisplaySchema = z63.object({
22659
- kind: z63.literal("booking-form"),
22660
- state: z63.enum(["missing", "ready"]),
22661
- className: z63.string().nullable(),
22662
- submitLabel: z63.string(),
22663
- successMessage: z63.string().nullable(),
22664
- message: z63.string().nullable()
22674
+ bookingDisplaySchema = z64.object({
22675
+ kind: z64.literal("booking-form"),
22676
+ state: z64.enum(["missing", "ready"]),
22677
+ className: z64.string().nullable(),
22678
+ submitLabel: z64.string(),
22679
+ successMessage: z64.string().nullable(),
22680
+ message: z64.string().nullable()
22665
22681
  });
22666
- bookingHydrationSchema = z63.object({
22667
- formId: z63.string().nullable(),
22668
- serviceId: z63.string().nullable(),
22669
- resourceId: z63.string().nullable(),
22670
- initialData: z63.record(z63.string(), z63.unknown()).nullable().optional(),
22671
- noticeMessage: z63.string().nullable().optional(),
22672
- requiresServiceSelection: z63.boolean().optional(),
22673
- requiresResourceSelection: z63.boolean().optional(),
22674
- shouldAutoSelectSingleResource: z63.boolean().optional(),
22675
- rebookContext: z63.object({
22676
- kind: z63.literal("portal_rebook")
22682
+ bookingHydrationSchema = z64.object({
22683
+ formId: z64.string().nullable(),
22684
+ serviceId: z64.string().nullable(),
22685
+ resourceId: z64.string().nullable(),
22686
+ initialData: z64.record(z64.string(), z64.unknown()).nullable().optional(),
22687
+ noticeMessage: z64.string().nullable().optional(),
22688
+ requiresServiceSelection: z64.boolean().optional(),
22689
+ requiresResourceSelection: z64.boolean().optional(),
22690
+ shouldAutoSelectSingleResource: z64.boolean().optional(),
22691
+ rebookContext: z64.object({
22692
+ kind: z64.literal("portal_rebook")
22677
22693
  }).nullable().optional(),
22678
22694
  form: bookingConfigSchema.nullable(),
22679
- services: z63.array(bookingServiceSchema),
22680
- spamProtectionEnabled: z63.boolean().optional()
22695
+ services: z64.array(bookingServiceSchema),
22696
+ spamProtectionEnabled: z64.boolean().optional()
22681
22697
  });
22682
- bookingRenderSchema = z63.object({
22698
+ bookingRenderSchema = z64.object({
22683
22699
  display: bookingDisplaySchema,
22684
22700
  hydration: bookingHydrationSchema
22685
22701
  });
22686
22702
  bookingFormIslandMetaCodec = createZodCodec(
22687
- z63.object({
22688
- siteId: z63.string().optional(),
22689
- apiBaseUrl: z63.string().optional(),
22690
- portalToken: z63.string().nullable().optional()
22703
+ z64.object({
22704
+ siteId: z64.string().optional(),
22705
+ apiBaseUrl: z64.string().optional(),
22706
+ portalToken: z64.string().nullable().optional()
22691
22707
  })
22692
22708
  );
22693
22709
  bookingFormIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -22943,6 +22959,12 @@ var init_CoursePricingDisplay = __esm({
22943
22959
 
22944
22960
  // ../blocks/src/system/runtime/nodes/event-details/view.tsx
22945
22961
  import { Fragment as Fragment3, jsx as jsx27, jsxs as jsxs13 } from "react/jsx-runtime";
22962
+ function TeamMemberName({
22963
+ name,
22964
+ profilePath
22965
+ }) {
22966
+ return profilePath ? /* @__PURE__ */ jsx27("a", { href: profilePath, className: "rb-hover-opacity-80", children: /* @__PURE__ */ jsx27("strong", { children: name }) }) : /* @__PURE__ */ jsx27("strong", { children: name });
22967
+ }
22946
22968
  function EventDetailsView({
22947
22969
  selection,
22948
22970
  showVenue,
@@ -23006,7 +23028,13 @@ function EventDetailsView({
23006
23028
  teamMembers.length > 0 ? /* @__PURE__ */ jsxs13("div", { className: "rb-mt-6", children: [
23007
23029
  /* @__PURE__ */ jsx27("div", { className: "rb-label rb-mb-2", children: "Team members" }),
23008
23030
  /* @__PURE__ */ jsx27("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs13("div", { children: [
23009
- /* @__PURE__ */ jsx27("p", { children: /* @__PURE__ */ jsx27("strong", { children: teamMember.name }) }),
23031
+ /* @__PURE__ */ jsx27("p", { children: /* @__PURE__ */ jsx27(
23032
+ TeamMemberName,
23033
+ {
23034
+ name: teamMember.name,
23035
+ profilePath: teamMember.profilePath
23036
+ }
23037
+ ) }),
23010
23038
  teamMember.summary ? /* @__PURE__ */ jsx27("p", { className: "rb-caption status-muted", children: teamMember.summary }) : null
23011
23039
  ] }, teamMember.id)) })
23012
23040
  ] }) : null,
@@ -23397,6 +23425,12 @@ var init_runs = __esm({
23397
23425
 
23398
23426
  // ../blocks/src/system/runtime/nodes/course-details/view.tsx
23399
23427
  import { jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
23428
+ function TeamMemberName2({
23429
+ name,
23430
+ profilePath
23431
+ }) {
23432
+ return profilePath ? /* @__PURE__ */ jsx31("a", { href: profilePath, className: "rb-hover-opacity-80", children: /* @__PURE__ */ jsx31("strong", { children: name }) }) : /* @__PURE__ */ jsx31("strong", { children: name });
23433
+ }
23400
23434
  function parseLimit2(value, fallback2) {
23401
23435
  if (value === "all") return "all";
23402
23436
  const n = typeof value === "string" ? Number.parseInt(value, 10) : typeof value === "number" ? value : NaN;
@@ -23454,7 +23488,13 @@ function CourseDetailsView(props2) {
23454
23488
  teamMembers.length > 0 && /* @__PURE__ */ jsxs17("div", { children: [
23455
23489
  /* @__PURE__ */ jsx31("div", { className: "rb-label rb-mb-2", children: "Team members" }),
23456
23490
  /* @__PURE__ */ jsx31("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs17("div", { children: [
23457
- /* @__PURE__ */ jsx31("p", { children: /* @__PURE__ */ jsx31("strong", { children: teamMember.name }) }),
23491
+ /* @__PURE__ */ jsx31("p", { children: /* @__PURE__ */ jsx31(
23492
+ TeamMemberName2,
23493
+ {
23494
+ name: teamMember.name,
23495
+ profilePath: teamMember.profilePath
23496
+ }
23497
+ ) }),
23458
23498
  teamMember.summary && /* @__PURE__ */ jsx31("p", { className: "rb-caption status-muted", children: teamMember.summary })
23459
23499
  ] }, teamMember.id)) })
23460
23500
  ] })
@@ -23655,7 +23695,7 @@ var init_EventSpotlight = __esm({
23655
23695
  });
23656
23696
 
23657
23697
  // ../blocks/src/system/runtime/nodes/events/EventCombined.interactive.ts
23658
- import { z as z64 } from "zod";
23698
+ import { z as z65 } from "zod";
23659
23699
  function buildEventCombinedDisplay(source) {
23660
23700
  return {
23661
23701
  kind: "event-combined",
@@ -23732,87 +23772,87 @@ var init_EventCombined_interactive = __esm({
23732
23772
  init_runtime();
23733
23773
  init_shared5();
23734
23774
  init_contract_schemas();
23735
- eventBlockKindSchema3 = z64.enum(eventBlockKindValues);
23736
- eventSurfaceScopeSchema3 = z64.enum(eventSurfaceScopeValues);
23737
- eventScheduleScopeSchema4 = z64.enum(eventScheduleScopeValues);
23738
- eventCombinedSourceSchema = z64.object(
23775
+ eventBlockKindSchema3 = z65.enum(eventBlockKindValues);
23776
+ eventSurfaceScopeSchema3 = z65.enum(eventSurfaceScopeValues);
23777
+ eventScheduleScopeSchema4 = z65.enum(eventScheduleScopeValues);
23778
+ eventCombinedSourceSchema = z65.object(
23739
23779
  {
23740
- events: z64.array(publicEventSchema).nullable().optional(),
23741
- siteId: z64.string(),
23742
- apiBaseUrl: z64.string().optional(),
23780
+ events: z65.array(publicEventSchema).nullable().optional(),
23781
+ siteId: z65.string(),
23782
+ apiBaseUrl: z65.string().optional(),
23743
23783
  stage: previewStageSchema.optional(),
23744
23784
  listLayout: eventLayoutSchema.optional(),
23745
23785
  listColumns: columnOptionSchema.optional(),
23746
- eventsPerPage: z64.string().optional(),
23747
- compactEventsPerPage: z64.string().optional(),
23748
- loadMoreText: z64.string().optional(),
23786
+ eventsPerPage: z65.string().optional(),
23787
+ compactEventsPerPage: z65.string().optional(),
23788
+ loadMoreText: z65.string().optional(),
23749
23789
  startOfWeek: weekStartSchema.optional(),
23750
23790
  calendarTabViews: calendarTabViewsSchema.optional(),
23751
- showFilters: z64.boolean().nullable().optional(),
23791
+ showFilters: z65.boolean().nullable().optional(),
23752
23792
  showCategoryFilter: filterAutoShowSchema.optional(),
23753
- showVenueFilter: z64.boolean().nullable().optional(),
23754
- showStaffFilter: z64.boolean().nullable().optional(),
23793
+ showVenueFilter: z65.boolean().nullable().optional(),
23794
+ showStaffFilter: z65.boolean().nullable().optional(),
23755
23795
  eventKind: eventBlockKindSchema3.nullable().optional(),
23756
23796
  eventSurface: eventSurfaceScopeSchema3.nullable().optional(),
23757
- filterEventPresets: z64.union([z64.string(), z64.array(z64.string())]).nullable().optional(),
23797
+ filterEventPresets: z65.union([z65.string(), z65.array(z65.string())]).nullable().optional(),
23758
23798
  scheduleScope: eventScheduleScopeSchema4.nullable().optional(),
23759
- filterCategoryIds: z64.union([z64.string(), z64.array(z64.string())]).nullable().optional(),
23760
- filterStaffMemberId: z64.string().nullable().optional(),
23761
- filterVenueId: z64.string().nullable().optional(),
23762
- showVenue: z64.boolean().nullable().optional(),
23763
- showMap: z64.boolean().nullable().optional(),
23764
- showCapacity: z64.boolean().nullable().optional(),
23799
+ filterCategoryIds: z65.union([z65.string(), z65.array(z65.string())]).nullable().optional(),
23800
+ filterStaffMemberId: z65.string().nullable().optional(),
23801
+ filterVenueId: z65.string().nullable().optional(),
23802
+ showVenue: z65.boolean().nullable().optional(),
23803
+ showMap: z65.boolean().nullable().optional(),
23804
+ showCapacity: z65.boolean().nullable().optional(),
23765
23805
  buttonVariant: eventButtonVariantSchema.optional(),
23766
- buttonText: z64.string().optional(),
23767
- emptyMessage: z64.string().optional(),
23768
- className: z64.string().optional()
23806
+ buttonText: z65.string().optional(),
23807
+ emptyMessage: z65.string().optional(),
23808
+ className: z65.string().optional()
23769
23809
  }
23770
23810
  );
23771
- eventCombinedDisplaySchema = z64.object({
23772
- kind: z64.literal("event-combined"),
23773
- className: z64.string().nullable(),
23774
- events: z64.array(publicEventSchema),
23811
+ eventCombinedDisplaySchema = z65.object({
23812
+ kind: z65.literal("event-combined"),
23813
+ className: z65.string().nullable(),
23814
+ events: z65.array(publicEventSchema),
23775
23815
  listLayout: eventLayoutSchema,
23776
23816
  listColumns: columnOptionSchema,
23777
- eventsPerPage: z64.string(),
23778
- loadMoreText: z64.string(),
23817
+ eventsPerPage: z65.string(),
23818
+ loadMoreText: z65.string(),
23779
23819
  startOfWeek: weekStartSchema,
23780
23820
  calendarTabViews: calendarTabViewsSchema,
23781
- showFilters: z64.boolean(),
23821
+ showFilters: z65.boolean(),
23782
23822
  showCategoryFilter: filterAutoShowSchema,
23783
- showVenueFilter: z64.boolean(),
23784
- showStaffFilter: z64.boolean(),
23823
+ showVenueFilter: z65.boolean(),
23824
+ showStaffFilter: z65.boolean(),
23785
23825
  eventKind: eventBlockKindSchema3,
23786
23826
  eventSurface: eventSurfaceScopeSchema3,
23787
- filterEventPresets: z64.string().nullable(),
23827
+ filterEventPresets: z65.string().nullable(),
23788
23828
  scheduleScope: eventScheduleScopeSchema4,
23789
- filterCategoryIds: z64.string().nullable(),
23790
- filterStaffMemberId: z64.string().nullable(),
23791
- filterVenueId: z64.string().nullable(),
23792
- showVenue: z64.boolean(),
23793
- showMap: z64.boolean(),
23794
- showCapacity: z64.boolean(),
23829
+ filterCategoryIds: z65.string().nullable(),
23830
+ filterStaffMemberId: z65.string().nullable(),
23831
+ filterVenueId: z65.string().nullable(),
23832
+ showVenue: z65.boolean(),
23833
+ showMap: z65.boolean(),
23834
+ showCapacity: z65.boolean(),
23795
23835
  buttonVariant: eventButtonVariantSchema,
23796
- buttonText: z64.string(),
23797
- emptyMessage: z64.string()
23836
+ buttonText: z65.string(),
23837
+ emptyMessage: z65.string()
23798
23838
  });
23799
- eventCombinedHydrationSchema = z64.object({
23800
- siteId: z64.string(),
23839
+ eventCombinedHydrationSchema = z65.object({
23840
+ siteId: z65.string(),
23801
23841
  stage: previewStageSchema.optional(),
23802
- prefetchedEvents: z64.boolean(),
23842
+ prefetchedEvents: z65.boolean(),
23803
23843
  eventKind: eventBlockKindSchema3,
23804
23844
  eventSurface: eventSurfaceScopeSchema3,
23805
- filterEventPresets: z64.string().nullable(),
23845
+ filterEventPresets: z65.string().nullable(),
23806
23846
  scheduleScope: eventScheduleScopeSchema4
23807
23847
  });
23808
- eventCombinedRenderSchema = z64.object({
23848
+ eventCombinedRenderSchema = z65.object({
23809
23849
  display: eventCombinedDisplaySchema,
23810
23850
  hydration: eventCombinedHydrationSchema
23811
23851
  });
23812
23852
  eventCombinedIslandMetaCodec = createZodCodec(
23813
- z64.object({
23814
- siteId: z64.string(),
23815
- apiBaseUrl: z64.string().optional(),
23853
+ z65.object({
23854
+ siteId: z65.string(),
23855
+ apiBaseUrl: z65.string().optional(),
23816
23856
  stage: previewStageSchema.optional()
23817
23857
  })
23818
23858
  );
@@ -25779,7 +25819,7 @@ function ze() {
25779
25819
  /* @__PURE__ */ Te(P)
25780
25820
  );
25781
25821
  }
25782
- function z65(e) {
25822
+ function z66(e) {
25783
25823
  if (L) {
25784
25824
  if (/* @__PURE__ */ Te(P) !== null)
25785
25825
  throw Tt(), Je;
@@ -27808,12 +27848,12 @@ function ha(e, t) {
27808
27848
  var mt = we(Dr, 2);
27809
27849
  let Pr;
27810
27850
  var We = X2(mt);
27811
- en(We), We.__change = ui, z65(mt);
27851
+ en(We), We.__change = ui, z66(mt);
27812
27852
  var Ut = we(mt, 2), wi = X2(Ut);
27813
27853
  {
27814
27854
  var pi = (n) => {
27815
27855
  var u = na(), _ = Gr(u), y = X2(_);
27816
- Ge(y, () => c(re).verified), z65(_);
27856
+ Ge(y, () => c(re).verified), z66(_);
27817
27857
  var T = we(_, 2);
27818
27858
  en(T), Pe(() => {
27819
27859
  se(T, "name", V()), jo(T, c(Le));
@@ -27822,10 +27862,10 @@ function ha(e, t) {
27822
27862
  {
27823
27863
  var _ = (T) => {
27824
27864
  var E = ia(), p = X2(E);
27825
- Ge(p, () => c(re).verifying), z65(E), ne(T, E);
27865
+ Ge(p, () => c(re).verifying), z66(E), ne(T, E);
27826
27866
  }, y = (T) => {
27827
27867
  var E = oa(), p = X2(E);
27828
- Ge(p, () => c(re).label), z65(E), Pe(() => se(E, "for", c(cr))), ne(T, E);
27868
+ Ge(p, () => c(re).label), z66(E), Pe(() => se(E, "for", c(cr))), ne(T, E);
27829
27869
  };
27830
27870
  $e(
27831
27871
  n,
@@ -27840,18 +27880,18 @@ function ha(e, t) {
27840
27880
  c(C) === b.VERIFIED ? n(pi) : n(bi, false);
27841
27881
  });
27842
27882
  }
27843
- z65(Ut);
27883
+ z66(Ut);
27844
27884
  var yi = we(Ut, 2);
27845
27885
  {
27846
27886
  var Ei = (n) => {
27847
27887
  var u = aa(), _ = X2(u);
27848
- se(_, "href", sr), z65(u), Pe(() => se(_, "aria-label", c(re).ariaLinkLabel)), ne(n, u);
27888
+ se(_, "href", sr), z66(u), Pe(() => se(_, "aria-label", c(re).ariaLinkLabel)), ne(n, u);
27849
27889
  };
27850
27890
  $e(yi, (n) => {
27851
27891
  (N() !== true || c(Dt)) && n(Ei);
27852
27892
  });
27853
27893
  }
27854
- z65(Mt);
27894
+ z66(Mt);
27855
27895
  var Or = we(Mt, 2);
27856
27896
  {
27857
27897
  var xi = (n) => {
@@ -27859,16 +27899,16 @@ function ha(e, t) {
27859
27899
  {
27860
27900
  var y = (E) => {
27861
27901
  var p = la(), x = X2(p);
27862
- Ge(x, () => c(re).expired), z65(p), Pe(() => se(p, "title", c(He))), ne(E, p);
27902
+ Ge(x, () => c(re).expired), z66(p), Pe(() => se(p, "title", c(He))), ne(E, p);
27863
27903
  }, T = (E) => {
27864
27904
  var p = sa(), x = X2(p);
27865
- Ge(x, () => c(re).error), z65(p), Pe(() => se(p, "title", c(He))), ne(E, p);
27905
+ Ge(x, () => c(re).error), z66(p), Pe(() => se(p, "title", c(He))), ne(E, p);
27866
27906
  };
27867
27907
  $e(_, (E) => {
27868
27908
  c(C) === b.EXPIRED ? E(y) : E(T, false);
27869
27909
  });
27870
27910
  }
27871
- z65(u), ne(n, u);
27911
+ z66(u), ne(n, u);
27872
27912
  };
27873
27913
  $e(Or, (n) => {
27874
27914
  (c(He) || c(C) === b.EXPIRED) && n(xi);
@@ -27878,7 +27918,7 @@ function ha(e, t) {
27878
27918
  {
27879
27919
  var $i = (n) => {
27880
27920
  var u = ua(), _ = X2(u), y = X2(_);
27881
- Ge(y, () => c(re).footer), z65(_), z65(u), ne(n, u);
27921
+ Ge(y, () => c(re).footer), z66(_), z66(u), ne(n, u);
27882
27922
  };
27883
27923
  $e(Fr, (n) => {
27884
27924
  c(re).footer && (k() !== true || c(Dt)) && n($i);
@@ -27894,7 +27934,7 @@ function ha(e, t) {
27894
27934
  v() && n(Ci);
27895
27935
  });
27896
27936
  }
27897
- return z65(ot), nn(ot, (n) => D(B, n), () => c(B)), Pe(
27937
+ return z66(ot), nn(ot, (n) => D(B, n), () => c(B)), Pe(
27898
27938
  (n) => {
27899
27939
  se(ot, "data-state", c(C)), se(ot, "data-floating", v()), Pr = Fo(mt, 1, "altcha-checkbox", null, Pr, n), se(We, "id", c(cr)), We.required = r2() !== "onsubmit" && (!v() || r2() !== "off");
27900
27940
  },
@@ -36201,7 +36241,16 @@ var init_CourseRegistrationErrorBoundary = __esm({
36201
36241
  });
36202
36242
 
36203
36243
  // ../blocks/src/system/runtime/nodes/course-registration/components.tsx
36244
+ import React19 from "react";
36204
36245
  import { Fragment as Fragment15, jsx as jsx105, jsxs as jsxs78 } from "react/jsx-runtime";
36246
+ function TeamMemberInlineList({
36247
+ teamMembers
36248
+ }) {
36249
+ return /* @__PURE__ */ jsx105(Fragment15, { children: teamMembers.map((teamMember, index) => /* @__PURE__ */ jsxs78(React19.Fragment, { children: [
36250
+ index > 0 ? ", " : "",
36251
+ teamMember.profilePath ? /* @__PURE__ */ jsx105("a", { href: teamMember.profilePath, children: teamMember.name }) : teamMember.name
36252
+ ] }, teamMember.id)) });
36253
+ }
36205
36254
  function CourseCard({
36206
36255
  course,
36207
36256
  isSelected,
@@ -36282,7 +36331,7 @@ function CourseSummary({
36282
36331
  teamMembers.length > 0 && /* @__PURE__ */ jsxs78("div", { className: "cr-summary__venue", children: [
36283
36332
  /* @__PURE__ */ jsx105("strong", { children: "Team:" }),
36284
36333
  " ",
36285
- teamMembers.map((teamMember) => teamMember.name).join(", ")
36334
+ /* @__PURE__ */ jsx105(TeamMemberInlineList, { teamMembers })
36286
36335
  ] }),
36287
36336
  showPrice && pricing.display.kind !== "unavailable" && /* @__PURE__ */ jsxs78("p", { className: "cr-summary__price", children: [
36288
36337
  /* @__PURE__ */ jsx105("strong", { children: pricing.selectableOptions.length > 0 ? "Pricing:" : "Price:" }),
@@ -37840,7 +37889,7 @@ var init_location_map_client = __esm({
37840
37889
  });
37841
37890
 
37842
37891
  // ../blocks/src/system/runtime/nodes/shop-commerce-store.ts
37843
- import * as React20 from "react";
37892
+ import * as React21 from "react";
37844
37893
  function storageKey(siteId) {
37845
37894
  return `riverbank:shop-cart:${siteId}`;
37846
37895
  }
@@ -37856,8 +37905,8 @@ function addPassToCommerceCart(siteId, input) {
37856
37905
  }
37857
37906
  function useCommerceCart(siteId) {
37858
37907
  const effectiveSiteId = siteId ?? "unknown";
37859
- const store = React20.useMemo(() => getStore(effectiveSiteId), [effectiveSiteId]);
37860
- const state = React20.useSyncExternalStore(
37908
+ const store = React21.useMemo(() => getStore(effectiveSiteId), [effectiveSiteId]);
37909
+ const state = React21.useSyncExternalStore(
37861
37910
  (listener) => store.subscribe(listener),
37862
37911
  () => store.getSnapshot(),
37863
37912
  () => EMPTY_STATE
@@ -37952,11 +38001,11 @@ var init_shop_commerce_store = __esm({
37952
38001
  });
37953
38002
 
37954
38003
  // ../blocks/src/system/runtime/nodes/shop-add-feedback.tsx
37955
- import * as React21 from "react";
38004
+ import * as React22 from "react";
37956
38005
  import { jsx as jsx111, jsxs as jsxs82 } from "react/jsx-runtime";
37957
38006
  function useTransientShopAddFeedback(timeoutMs = DEFAULT_TIMEOUT_MS) {
37958
- const [activeKey, setActiveKey] = React21.useState(null);
37959
- React21.useEffect(() => {
38007
+ const [activeKey, setActiveKey] = React22.useState(null);
38008
+ React22.useEffect(() => {
37960
38009
  if (!activeKey) return;
37961
38010
  const timeoutId = window.setTimeout(() => {
37962
38011
  setActiveKey((current) => current === activeKey ? null : current);
@@ -38113,7 +38162,7 @@ var init_shop_state = __esm({
38113
38162
  });
38114
38163
 
38115
38164
  // ../blocks/src/system/runtime/nodes/shop.client.tsx
38116
- import React22, { useCallback as useCallback10, useEffect as useEffect23, useRef as useRef11, useState as useState19 } from "react";
38165
+ import React23, { useCallback as useCallback10, useEffect as useEffect23, useRef as useRef11, useState as useState19 } from "react";
38117
38166
  import { Fragment as Fragment17, jsx as jsx112, jsxs as jsxs83 } from "react/jsx-runtime";
38118
38167
  function ShopClient(props2) {
38119
38168
  return /* @__PURE__ */ jsx112(PassesMembershipsController, { render: props2.render });
@@ -38125,7 +38174,7 @@ function getCheckoutModalTitle(checkout2) {
38125
38174
  }
38126
38175
  function PassesMembershipsController({ render }) {
38127
38176
  const api = useBlockApi();
38128
- const [state, dispatch] = React22.useReducer(
38177
+ const [state, dispatch] = React23.useReducer(
38129
38178
  shopPassesMembershipsReducer,
38130
38179
  initialShopPassesMembershipsState
38131
38180
  );
@@ -40343,7 +40392,7 @@ var init_embla_carousel_react_esm = __esm({
40343
40392
  });
40344
40393
 
40345
40394
  // ../blocks/src/system/runtime/nodes/carousel.client.tsx
40346
- import React23 from "react";
40395
+ import React24 from "react";
40347
40396
  import { Fragment as Fragment18, jsx as jsx113, jsxs as jsxs84 } from "react/jsx-runtime";
40348
40397
  function normalizeCarouselProps(input) {
40349
40398
  const transition = input.transition === "fade" ? "fade" : "slide";
@@ -40398,8 +40447,8 @@ var init_carousel_client = __esm({
40398
40447
  autoplayDelay,
40399
40448
  loop
40400
40449
  }) => {
40401
- const slides = React23.Children.toArray(children).filter(Boolean);
40402
- const normalized = React23.useMemo(
40450
+ const slides = React24.Children.toArray(children).filter(Boolean);
40451
+ const normalized = React24.useMemo(
40403
40452
  () => normalizeCarouselProps({
40404
40453
  slidesToShow,
40405
40454
  transition,
@@ -40422,11 +40471,11 @@ var init_carousel_client = __esm({
40422
40471
  ]
40423
40472
  );
40424
40473
  const resolvedSlides = resolveSlidesToShowMobile(normalized.slidesToShow);
40425
- const cssVars = React23.useMemo(
40474
+ const cssVars = React24.useMemo(
40426
40475
  () => getCarouselSlidesToShowCssVars(normalized.slidesToShow),
40427
40476
  [normalized.slidesToShow]
40428
40477
  );
40429
- const plugins = React23.useMemo(() => {
40478
+ const plugins = React24.useMemo(() => {
40430
40479
  if (!normalized.autoplay) return void 0;
40431
40480
  return [
40432
40481
  Autoplay({
@@ -40448,11 +40497,11 @@ var init_carousel_client = __esm({
40448
40497
  },
40449
40498
  plugins
40450
40499
  );
40451
- const [selectedIndex, setSelectedIndex] = React23.useState(0);
40452
- const [scrollSnaps, setScrollSnaps] = React23.useState([]);
40453
- const [canScrollPrev, setCanScrollPrev] = React23.useState(false);
40454
- const [canScrollNext, setCanScrollNext] = React23.useState(false);
40455
- React23.useEffect(() => {
40500
+ const [selectedIndex, setSelectedIndex] = React24.useState(0);
40501
+ const [scrollSnaps, setScrollSnaps] = React24.useState([]);
40502
+ const [canScrollPrev, setCanScrollPrev] = React24.useState(false);
40503
+ const [canScrollNext, setCanScrollNext] = React24.useState(false);
40504
+ React24.useEffect(() => {
40456
40505
  if (!api) return;
40457
40506
  const onInit = () => {
40458
40507
  setScrollSnaps(api.scrollSnapList());
@@ -40475,7 +40524,7 @@ var init_carousel_client = __esm({
40475
40524
  api.off("reInit", onSelect);
40476
40525
  };
40477
40526
  }, [api]);
40478
- React23.useEffect(() => {
40527
+ React24.useEffect(() => {
40479
40528
  if (!api || !normalized.autoplay) return;
40480
40529
  const autoplayPlugin = api.plugins()?.autoplay;
40481
40530
  if (!autoplayPlugin) return;
@@ -40686,16 +40735,16 @@ var init_shop_checkout_state = __esm({
40686
40735
  });
40687
40736
 
40688
40737
  // ../blocks/src/system/runtime/nodes/shop-commerce.tsx
40689
- import * as React24 from "react";
40738
+ import * as React25 from "react";
40690
40739
  import { Fragment as Fragment19, jsx as jsx114, jsxs as jsxs85 } from "react/jsx-runtime";
40691
40740
  function ProductListController(props2) {
40692
40741
  const api = useBlockApi();
40693
40742
  const cart2 = useCommerceCart(api.config.siteId);
40694
40743
  const addFeedback = useTransientShopAddFeedback();
40695
- const [variantSelection, setVariantSelection] = React24.useState(
40744
+ const [variantSelection, setVariantSelection] = React25.useState(
40696
40745
  () => Object.fromEntries(props2.render.display.cards.map((card) => [card.productId, card.selectedVariantId]))
40697
40746
  );
40698
- const cards = React24.useMemo(
40747
+ const cards = React25.useMemo(
40699
40748
  () => props2.render.hydration.products.map(
40700
40749
  (product) => buildProductCardDisplay(
40701
40750
  product,
@@ -40710,7 +40759,7 @@ function ProductListController(props2) {
40710
40759
  ),
40711
40760
  [props2.render.hydration, variantSelection]
40712
40761
  );
40713
- const display = React24.useMemo(
40762
+ const display = React25.useMemo(
40714
40763
  () => ({
40715
40764
  ...props2.render.display,
40716
40765
  state: cards.length === 0 ? "empty" : "ready",
@@ -40772,17 +40821,17 @@ function ProductDetailController(props2) {
40772
40821
  const api = useBlockApi();
40773
40822
  const cart2 = useCommerceCart(api.config.siteId);
40774
40823
  const addFeedback = useTransientShopAddFeedback();
40775
- const selectedProduct = React24.useMemo(
40824
+ const selectedProduct = React25.useMemo(
40776
40825
  () => props2.render.hydration.products.find((product) => product.id === props2.render.hydration.productId) ?? null,
40777
40826
  [props2.render.hydration.productId, props2.render.hydration.products]
40778
40827
  );
40779
- const [variantId, setVariantId] = React24.useState(
40828
+ const [variantId, setVariantId] = React25.useState(
40780
40829
  props2.render.display.state === "ready" ? props2.render.display.selectedVariantId : null
40781
40830
  );
40782
- React24.useEffect(() => {
40831
+ React25.useEffect(() => {
40783
40832
  setVariantId(props2.render.display.state === "ready" ? props2.render.display.selectedVariantId : null);
40784
40833
  }, [props2.render.display]);
40785
- const display = React24.useMemo(
40834
+ const display = React25.useMemo(
40786
40835
  () => buildProductDetailDisplay(
40787
40836
  selectedProduct,
40788
40837
  {
@@ -40850,7 +40899,7 @@ function ProductDetailController(props2) {
40850
40899
  function CartController(props2) {
40851
40900
  const api = useBlockApi();
40852
40901
  const cart2 = useCommerceCart(api.config.siteId);
40853
- const display = React24.useMemo(
40902
+ const display = React25.useMemo(
40854
40903
  () => getShopDisplayForItems(props2.render, cart2.items),
40855
40904
  [cart2.items, props2.render]
40856
40905
  );
@@ -40893,11 +40942,11 @@ function CartController(props2) {
40893
40942
  function CheckoutController(props2) {
40894
40943
  const api = useBlockApi();
40895
40944
  const cart2 = useCommerceCart(api.config.siteId);
40896
- const [state, dispatch] = React24.useReducer(
40945
+ const [state, dispatch] = React25.useReducer(
40897
40946
  shopCheckoutReducer,
40898
40947
  initialShopCheckoutState
40899
40948
  );
40900
- React24.useEffect(() => {
40949
+ React25.useEffect(() => {
40901
40950
  const checkout2 = consumeSearchParam("checkout");
40902
40951
  if (checkout2 === "success") {
40903
40952
  cart2.clear();
@@ -40906,7 +40955,7 @@ function CheckoutController(props2) {
40906
40955
  dispatch({ type: "setNotice", notice: "cancelled" });
40907
40956
  }
40908
40957
  }, [cart2]);
40909
- const display = React24.useMemo(
40958
+ const display = React25.useMemo(
40910
40959
  () => getShopDisplayForItems(props2.render, cart2.items),
40911
40960
  [cart2.items, props2.render]
40912
40961
  );
@@ -41066,7 +41115,7 @@ var init_checkout_client = __esm({
41066
41115
  });
41067
41116
 
41068
41117
  // ../blocks/src/system/runtime/header/HeaderCartDrawer.tsx
41069
- import * as React25 from "react";
41118
+ import * as React26 from "react";
41070
41119
  import { jsx as jsx119, jsxs as jsxs86 } from "react/jsx-runtime";
41071
41120
  function normalizeQuantityInput(value) {
41072
41121
  const parsed = Number(value);
@@ -41116,8 +41165,8 @@ function HeaderCartDrawerItems(props2) {
41116
41165
  )) });
41117
41166
  }
41118
41167
  function HeaderCartDrawer(props2) {
41119
- const titleId = React25.useId();
41120
- const display = React25.useMemo(
41168
+ const titleId = React26.useId();
41169
+ const display = React26.useMemo(
41121
41170
  () => buildCartDisplay(props2.cart.items, {
41122
41171
  heading: "Cart",
41123
41172
  emptyMessage: "Your cart is empty.",
@@ -41331,15 +41380,15 @@ var init_HeaderCartTrigger = __esm({
41331
41380
  });
41332
41381
 
41333
41382
  // ../blocks/src/system/runtime/header/headerCartRuntime.tsx
41334
- import * as React26 from "react";
41383
+ import * as React27 from "react";
41335
41384
  import { createPortal as createPortal2 } from "react-dom";
41336
41385
  import { createRoot } from "react-dom/client";
41337
41386
  import { Fragment as Fragment20, jsx as jsx121, jsxs as jsxs88 } from "react/jsx-runtime";
41338
41387
  function HeaderCartRuntime(props2) {
41339
41388
  const cart2 = useCommerceCart(props2.siteId);
41340
- const itemCount = React26.useMemo(() => getCartItemCount(cart2.items), [cart2.items]);
41341
- const [open, setOpen] = React26.useState(false);
41342
- const checkoutHref = React26.useMemo(
41389
+ const itemCount = React27.useMemo(() => getCartItemCount(cart2.items), [cart2.items]);
41390
+ const [open, setOpen] = React27.useState(false);
41391
+ const checkoutHref = React27.useMemo(
41343
41392
  () => resolveHeaderCartCheckoutHref(
41344
41393
  props2.mounts,
41345
41394
  typeof window === "undefined" ? null : window.location.pathname
@@ -59254,13 +59303,150 @@ var ENDPOINT_DEFINITIONS = {
59254
59303
  "server:internal_error"
59255
59304
  ]
59256
59305
  },
59257
- deleteAppointmentResource: {
59306
+ removeAppointmentResource: {
59258
59307
  path: "/sites/{siteId}/bookings/resources/{resourceId}",
59259
59308
  method: "DELETE",
59260
59309
  auth: "user",
59261
59310
  responseKind: "json",
59262
59311
  errors: ["resource:not_found", "server:internal_error"]
59263
59312
  },
59313
+ createTeamMemberProfile: {
59314
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile",
59315
+ method: "POST",
59316
+ auth: "user",
59317
+ responseKind: "json",
59318
+ errors: [
59319
+ "validation:invalid_input",
59320
+ "resource:not_found",
59321
+ "resource:conflict",
59322
+ "server:internal_error"
59323
+ ]
59324
+ },
59325
+ updateTeamMemberProfilePolicy: {
59326
+ path: "/sites/{siteId}/bookings/resources/profile-policy",
59327
+ method: "PUT",
59328
+ auth: "user",
59329
+ responseKind: "json",
59330
+ errors: ["validation:invalid_input", "server:internal_error"]
59331
+ },
59332
+ updateTeamMemberProfileContent: {
59333
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/content",
59334
+ method: "PUT",
59335
+ tags: [
59336
+ "site-{siteId}",
59337
+ "content-{siteId}-team-member",
59338
+ "content-entry-{entryId}"
59339
+ ],
59340
+ auth: "user",
59341
+ responseKind: "json",
59342
+ errors: [
59343
+ "validation:invalid_input",
59344
+ "resource:not_found",
59345
+ "resource:conflict",
59346
+ "server:internal_error"
59347
+ ]
59348
+ },
59349
+ publishTeamMemberProfile: {
59350
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/publish",
59351
+ method: "POST",
59352
+ tags: [
59353
+ "site-{siteId}",
59354
+ "content-{siteId}-team-member",
59355
+ "content-entry-{entryId}"
59356
+ ],
59357
+ auth: "user",
59358
+ responseKind: "json",
59359
+ errors: [
59360
+ "validation:invalid_input",
59361
+ "resource:not_found",
59362
+ "server:internal_error"
59363
+ ]
59364
+ },
59365
+ discardTeamMemberProfileDraft: {
59366
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/discard",
59367
+ method: "POST",
59368
+ tags: [
59369
+ "site-{siteId}",
59370
+ "content-{siteId}-team-member",
59371
+ "content-entry-{entryId}"
59372
+ ],
59373
+ auth: "user",
59374
+ responseKind: "json",
59375
+ errors: [
59376
+ "validation:invalid_input",
59377
+ "resource:not_found",
59378
+ "resource:conflict",
59379
+ "server:internal_error"
59380
+ ]
59381
+ },
59382
+ unpublishTeamMemberProfile: {
59383
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/unpublish",
59384
+ method: "POST",
59385
+ tags: [
59386
+ "site-{siteId}",
59387
+ "content-{siteId}-team-member",
59388
+ "content-entry-{entryId}"
59389
+ ],
59390
+ auth: "user",
59391
+ responseKind: "json",
59392
+ errors: [
59393
+ "validation:invalid_input",
59394
+ "resource:not_found",
59395
+ "resource:conflict",
59396
+ "server:internal_error"
59397
+ ]
59398
+ },
59399
+ scheduleTeamMemberProfile: {
59400
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/schedule",
59401
+ method: "POST",
59402
+ tags: [
59403
+ "site-{siteId}",
59404
+ "content-{siteId}-team-member",
59405
+ "content-entry-{entryId}"
59406
+ ],
59407
+ auth: "user",
59408
+ responseKind: "json",
59409
+ errors: [
59410
+ "validation:invalid_input",
59411
+ "resource:not_found",
59412
+ "resource:conflict",
59413
+ "server:internal_error"
59414
+ ]
59415
+ },
59416
+ cancelScheduledTeamMemberProfile: {
59417
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/schedule",
59418
+ method: "DELETE",
59419
+ tags: [
59420
+ "site-{siteId}",
59421
+ "content-{siteId}-team-member",
59422
+ "content-entry-{entryId}"
59423
+ ],
59424
+ auth: "user",
59425
+ responseKind: "json",
59426
+ errors: [
59427
+ "validation:invalid_input",
59428
+ "resource:not_found",
59429
+ "resource:conflict",
59430
+ "server:internal_error"
59431
+ ]
59432
+ },
59433
+ updateTeamMemberProfileRouteMetadata: {
59434
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/routes/{routeId}/metadata",
59435
+ method: "PATCH",
59436
+ tags: [
59437
+ TAG_TEMPLATES.siteCollection,
59438
+ TAG_TEMPLATES.siteRoutableContent,
59439
+ TAG_TEMPLATES.routeById
59440
+ ],
59441
+ auth: "user",
59442
+ responseKind: "json",
59443
+ errors: [
59444
+ "validation:invalid_input",
59445
+ "resource:not_found",
59446
+ "resource:conflict",
59447
+ "server:internal_error"
59448
+ ]
59449
+ },
59264
59450
  listAppointmentServices: {
59265
59451
  path: "/sites/{siteId}/bookings/services",
59266
59452
  method: "GET",
@@ -61634,6 +61820,15 @@ var ENDPOINT_DEFINITIONS = {
61634
61820
  auth: "public",
61635
61821
  responseKind: "json"
61636
61822
  },
61823
+ listPublicTeamMembers: {
61824
+ path: "/public/sites/{siteId}/team-members",
61825
+ method: "GET",
61826
+ revalidate: 60,
61827
+ tags: ["public-team-members-{siteId}"],
61828
+ errors: [],
61829
+ auth: "public",
61830
+ responseKind: "json"
61831
+ },
61637
61832
  getPublicCourse: {
61638
61833
  path: "/public/sites/{siteId}/courses/{courseId}",
61639
61834
  method: "GET",
@@ -64013,6 +64208,7 @@ var SUPPORTED_LOADER_ENDPOINTS = [
64013
64208
  "listPublicEvents",
64014
64209
  "getPublicEventDetails",
64015
64210
  "listPublicCourses",
64211
+ "listPublicTeamMembers",
64016
64212
  "listPublicProducts",
64017
64213
  "listPublicPasses",
64018
64214
  "listPublicMemberships",
@@ -73794,7 +73990,26 @@ init_schema2();
73794
73990
  init_defineBlock();
73795
73991
  init_builder();
73796
73992
  init_fragments();
73993
+ import { z as z63 } from "zod";
73994
+ init_media();
73797
73995
  var ITEM_NAME2 = "member";
73996
+ var teamMemberPhotoSchema = mediaSchema2.refine((media2) => media2.type === "image", {
73997
+ message: "Team member photos must be image media"
73998
+ }).nullable();
73999
+ var teamMemberDataSchema = z63.object({
74000
+ _type: z63.literal("teamMember"),
74001
+ id: z63.string(),
74002
+ name: z63.string(),
74003
+ role: z63.string().nullable(),
74004
+ roleLabel: z63.string().nullable(),
74005
+ bio: z63.string().nullable(),
74006
+ summary: z63.string().nullable(),
74007
+ photo: teamMemberPhotoSchema,
74008
+ profilePath: z63.string().nullable()
74009
+ });
74010
+ var teamMembersDataSchema = z63.array(teamMemberDataSchema);
74011
+ var dynamicSourceWhen = { equals: "site_staff" };
74012
+ var manualSourceWhen = { equals: "site_staff", not: true };
73798
74013
  var headingNode = text(
73799
74014
  { as: "h2" },
73800
74015
  bind("content.heading"),
@@ -73884,7 +74099,15 @@ var teamMemberStackLayout = el(
73884
74099
  ]
73885
74100
  ),
73886
74101
  stack({ gap: "sm", className: "rb-team-member-body rb-flex-1 rb-min-w-0" }, [
73887
- text({ as: "h3" }, bind("name")),
74102
+ link(
74103
+ {
74104
+ href: { $bind: { from: "profilePath" } },
74105
+ className: "rb-team-member-name-link"
74106
+ },
74107
+ [text({ as: "h3" }, bind("name"))],
74108
+ when("profilePath")
74109
+ ),
74110
+ text({ as: "h3" }, when("profilePath", { not: true }), bind("name")),
73888
74111
  text(
73889
74112
  { as: "p", className: "rb-team-member-role" },
73890
74113
  when("role"),
@@ -73898,12 +74121,18 @@ var teamMemberStackLayout = el(
73898
74121
  ])
73899
74122
  ]
73900
74123
  );
73901
- var gridMembersNode = repeaterFragmentLayout({
74124
+ var manualGridMembersNode = when("content.source", manualSourceWhen)(repeaterFragmentLayout({
73902
74125
  collectionPath: "content.members",
73903
74126
  itemName: ITEM_NAME2,
73904
74127
  fragments: { teamMember: teamMemberFragment },
73905
74128
  itemGap: "sm"
73906
- });
74129
+ }));
74130
+ var dynamicGridMembersNode = when("content.source", dynamicSourceWhen)(repeaterFragmentLayout({
74131
+ collectionPath: "data.members",
74132
+ itemName: ITEM_NAME2,
74133
+ fragments: { teamMember: teamMemberFragment },
74134
+ itemGap: "sm"
74135
+ }));
73907
74136
  var gridVariant = wrapVariant3(
73908
74137
  el(
73909
74138
  "grid",
@@ -73917,22 +74146,29 @@ var gridVariant = wrapVariant3(
73917
74146
  },
73918
74147
  gap: { $bind: { from: "content.gap", fallback: "medium" } }
73919
74148
  },
73920
- [gridMembersNode]
74149
+ [manualGridMembersNode, dynamicGridMembersNode]
73921
74150
  )
73922
74151
  );
73923
- var stackMembersNode = repeaterFragmentLayout({
74152
+ var manualStackMembersNode = when("content.source", manualSourceWhen)(repeaterFragmentLayout({
73924
74153
  collectionPath: "content.members",
73925
74154
  itemName: ITEM_NAME2,
73926
74155
  fragments: { teamMember: teamMemberFragment },
73927
74156
  layoutOverrides: { teamMember: teamMemberStackLayout },
73928
74157
  itemGap: "sm"
73929
- });
74158
+ }));
74159
+ var dynamicStackMembersNode = when("content.source", dynamicSourceWhen)(repeaterFragmentLayout({
74160
+ collectionPath: "data.members",
74161
+ itemName: ITEM_NAME2,
74162
+ fragments: { teamMember: teamMemberFragment },
74163
+ layoutOverrides: { teamMember: teamMemberStackLayout },
74164
+ itemGap: "sm"
74165
+ }));
73930
74166
  var stackVariant = wrapVariant3({
73931
74167
  type: "stack",
73932
74168
  props: {
73933
74169
  gap: { $bind: { from: "content.gap", fallback: "medium" } }
73934
74170
  },
73935
- children: [stackMembersNode]
74171
+ children: [manualStackMembersNode, dynamicStackMembersNode]
73936
74172
  });
73937
74173
  var teamMembersManifest = createBlockManifest({
73938
74174
  id: "block.team-members",
@@ -73947,6 +74183,18 @@ var teamMembersManifest = createBlockManifest({
73947
74183
  required: false,
73948
74184
  maxLength: 120
73949
74185
  }),
74186
+ parseFieldDefinition({
74187
+ id: "source",
74188
+ type: "select",
74189
+ label: "Team members",
74190
+ description: "Choose whether to use the site-wide team or a hand-picked list.",
74191
+ defaultValue: "manual",
74192
+ options: [
74193
+ { value: "manual", label: "Choose manually" },
74194
+ { value: "site_staff", label: "Use all site team members" }
74195
+ ],
74196
+ ui: { intent: "behavior" }
74197
+ }),
73950
74198
  parseFieldDefinition({
73951
74199
  id: "layoutAlign",
73952
74200
  type: "select",
@@ -74049,18 +74297,24 @@ var teamMembersManifest = createBlockManifest({
74049
74297
  ],
74050
74298
  ui: { intent: "display" }
74051
74299
  }),
74052
- fragmentsToRepeaterField(
74053
- "members",
74054
- "Team members",
74055
- { teamMember: teamMemberFragment },
74056
- {
74057
- minItems: 0,
74058
- maxItems: 50,
74059
- itemLabel: "Team member",
74060
- itemLabelSource: "name",
74061
- description: "Add people to this section."
74300
+ {
74301
+ ...fragmentsToRepeaterField(
74302
+ "members",
74303
+ "Team members",
74304
+ { teamMember: teamMemberFragment },
74305
+ {
74306
+ minItems: 0,
74307
+ maxItems: 50,
74308
+ itemLabel: "Team member",
74309
+ itemLabelSource: "name",
74310
+ description: "Add people to this section."
74311
+ }
74312
+ ),
74313
+ ui: {
74314
+ intent: "content",
74315
+ visibleWhen: { field: "source", equals: "manual" }
74062
74316
  }
74063
- )
74317
+ }
74064
74318
  ],
74065
74319
  layout: gridVariant,
74066
74320
  variants: {
@@ -74086,7 +74340,20 @@ var teamMembersManifest = createBlockManifest({
74086
74340
  styleTokens: { spacing: "lg" }
74087
74341
  });
74088
74342
  var teamMembersBlockDefinition = {
74089
- manifest: teamMembersManifest
74343
+ manifest: teamMembersManifest,
74344
+ dataSchemas: {
74345
+ members: teamMembersDataSchema
74346
+ },
74347
+ dataLoaders: {
74348
+ members: {
74349
+ endpoint: "listPublicTeamMembers",
74350
+ params: {
74351
+ siteId: { $bind: { from: "$root.siteId" } },
74352
+ stage: { $bind: { from: "$root.previewStage", fallback: "published" } }
74353
+ },
74354
+ mode: "server"
74355
+ }
74356
+ }
74090
74357
  };
74091
74358
 
74092
74359
  // ../blocks/src/system/blocks/location-map.ts
@@ -75398,6 +75665,7 @@ function coercePayload(payload) {
75398
75665
  if ("form" in record && typeof record.form !== "function") return record.form;
75399
75666
  if ("entries" in record && typeof record.entries !== "function") return record.entries;
75400
75667
  if ("services" in record && typeof record.services !== "function") return record.services;
75668
+ if ("teamMembers" in record && typeof record.teamMembers !== "function") return record.teamMembers;
75401
75669
  }
75402
75670
  return payload;
75403
75671
  }
@@ -75520,6 +75788,10 @@ function normalizeLoaderParams(endpoint, params, context) {
75520
75788
  ensureSiteId(out, context);
75521
75789
  return out;
75522
75790
  }
75791
+ if (endpoint === "listPublicTeamMembers") {
75792
+ ensureSiteId(out, context);
75793
+ return out;
75794
+ }
75523
75795
  if (endpoint === "getPublishedEntryPreview") {
75524
75796
  ensureSiteId(out, context);
75525
75797
  return out;
@@ -75534,6 +75806,7 @@ var SUPPORTED_LOADER_ENDPOINTS2 = [
75534
75806
  "getPublishedEntryPreview",
75535
75807
  "listPublicEvents",
75536
75808
  "listPublicCourses",
75809
+ "listPublicTeamMembers",
75537
75810
  "listPublicProducts",
75538
75811
  "listPublicPasses",
75539
75812
  "listPublicMemberships",
@@ -75698,6 +75971,16 @@ async function prefetchBlockData2(page, context, client, options) {
75698
75971
  const parsedLimit = typeof limit === "string" ? Number.parseInt(limit, 10) : typeof limit === "number" ? limit : void 0;
75699
75972
  return await client.listPublicCourses({ siteId, limit: parsedLimit, stage });
75700
75973
  }
75974
+ case "listPublicTeamMembers": {
75975
+ const { siteId, stage } = resolvedParams ?? {};
75976
+ if (!siteId) {
75977
+ throw new Error("listPublicTeamMembers requires siteId param");
75978
+ }
75979
+ return await client.listPublicTeamMembers({
75980
+ siteId,
75981
+ stage: typeof stage === "string" ? stage : void 0
75982
+ });
75983
+ }
75701
75984
  case "listPublicProducts": {
75702
75985
  const { siteId, stage, categorySelector } = resolvedParams ?? {};
75703
75986
  if (!siteId) {
@@ -76019,71 +76302,71 @@ import { useEffect as useEffect30 } from "react";
76019
76302
  init_runtime();
76020
76303
  init_shop_shared();
76021
76304
  init_schemas2();
76022
- import { z as z66 } from "zod";
76023
- var accordionIslandSchema = z66.object({
76024
- type: z66.enum(["single", "multiple"]).optional(),
76025
- defaultValue: z66.union([z66.string(), z66.array(z66.string())]).optional(),
76026
- collapsible: z66.boolean().optional()
76027
- });
76028
- var headerSectionIslandSchema = z66.object({
76029
- enabled: z66.boolean().optional(),
76030
- scrollEnabled: z66.boolean().optional()
76031
- });
76032
- var responsiveSlidesToShowSchema = z66.object({
76033
- mobile: z66.union([z66.number(), z66.string()]).optional(),
76034
- tablet: z66.union([z66.number(), z66.string()]).optional(),
76035
- desktop: z66.union([z66.number(), z66.string()]).optional()
76036
- });
76037
- var carouselIslandSchema = z66.object({
76038
- slidesToShow: z66.union([z66.number(), z66.string(), responsiveSlidesToShowSchema]).optional(),
76039
- transition: z66.enum(["slide", "fade"]).optional(),
76040
- showControls: z66.union([z66.boolean(), z66.string()]).optional(),
76041
- showDots: z66.union([z66.boolean(), z66.string()]).optional(),
76042
- arrowVisibility: z66.enum(["always", "hover", "never"]).optional(),
76043
- autoplay: z66.union([z66.boolean(), z66.string()]).optional(),
76044
- autoplayDelay: z66.union([z66.number(), z66.string()]).optional(),
76045
- loop: z66.union([z66.boolean(), z66.string()]).optional()
76046
- });
76047
- var eventDetailsOccurrenceContextSchema = z66.object({
76048
- id: z66.string(),
76049
- seriesId: z66.string(),
76050
- startsAt: z66.string(),
76051
- endsAt: z66.string(),
76052
- timeZone: z66.string()
76053
- });
76054
- var eventDetailsContentEntrySchema = z66.object({
76055
- id: z66.string(),
76056
- slug: z66.string(),
76057
- contentTypeSlug: z66.string()
76058
- });
76059
- var eventDetailsIslandSchema = z66.object({
76305
+ import { z as z67 } from "zod";
76306
+ var accordionIslandSchema = z67.object({
76307
+ type: z67.enum(["single", "multiple"]).optional(),
76308
+ defaultValue: z67.union([z67.string(), z67.array(z67.string())]).optional(),
76309
+ collapsible: z67.boolean().optional()
76310
+ });
76311
+ var headerSectionIslandSchema = z67.object({
76312
+ enabled: z67.boolean().optional(),
76313
+ scrollEnabled: z67.boolean().optional()
76314
+ });
76315
+ var responsiveSlidesToShowSchema = z67.object({
76316
+ mobile: z67.union([z67.number(), z67.string()]).optional(),
76317
+ tablet: z67.union([z67.number(), z67.string()]).optional(),
76318
+ desktop: z67.union([z67.number(), z67.string()]).optional()
76319
+ });
76320
+ var carouselIslandSchema = z67.object({
76321
+ slidesToShow: z67.union([z67.number(), z67.string(), responsiveSlidesToShowSchema]).optional(),
76322
+ transition: z67.enum(["slide", "fade"]).optional(),
76323
+ showControls: z67.union([z67.boolean(), z67.string()]).optional(),
76324
+ showDots: z67.union([z67.boolean(), z67.string()]).optional(),
76325
+ arrowVisibility: z67.enum(["always", "hover", "never"]).optional(),
76326
+ autoplay: z67.union([z67.boolean(), z67.string()]).optional(),
76327
+ autoplayDelay: z67.union([z67.number(), z67.string()]).optional(),
76328
+ loop: z67.union([z67.boolean(), z67.string()]).optional()
76329
+ });
76330
+ var eventDetailsOccurrenceContextSchema = z67.object({
76331
+ id: z67.string(),
76332
+ seriesId: z67.string(),
76333
+ startsAt: z67.string(),
76334
+ endsAt: z67.string(),
76335
+ timeZone: z67.string()
76336
+ });
76337
+ var eventDetailsContentEntrySchema = z67.object({
76338
+ id: z67.string(),
76339
+ slug: z67.string(),
76340
+ contentTypeSlug: z67.string()
76341
+ });
76342
+ var eventDetailsIslandSchema = z67.object({
76060
76343
  occurrenceContext: eventDetailsOccurrenceContextSchema.nullable().optional(),
76061
76344
  contentEntry: eventDetailsContentEntrySchema.nullable().optional(),
76062
- events: z66.array(publicEventSchema).nullable().optional(),
76063
- showVenue: z66.boolean().optional(),
76064
- showMap: z66.boolean().optional(),
76065
- showOtherDates: z66.boolean().optional(),
76066
- otherDatesLimit: z66.string().optional(),
76067
- showCost: z66.boolean().optional(),
76068
- showAcceptedPasses: z66.boolean().optional(),
76069
- showAcceptedMemberships: z66.boolean().optional(),
76070
- sitePasses: z66.object({ passes: z66.array(publicPassProductSchema) }).nullable().optional(),
76071
- siteMemberships: z66.object({ memberships: z66.array(publicMembershipProductSchema) }).nullable().optional(),
76072
- className: z66.string().nullable().optional(),
76073
- nowIso: z66.string().optional()
76074
- });
76075
- var locationMapIslandSchema = z66.object({
76076
- location: z66.object({
76077
- addressText: z66.string().nullable(),
76078
- lat: z66.number().nullable(),
76079
- lng: z66.number().nullable()
76345
+ events: z67.array(publicEventSchema).nullable().optional(),
76346
+ showVenue: z67.boolean().optional(),
76347
+ showMap: z67.boolean().optional(),
76348
+ showOtherDates: z67.boolean().optional(),
76349
+ otherDatesLimit: z67.string().optional(),
76350
+ showCost: z67.boolean().optional(),
76351
+ showAcceptedPasses: z67.boolean().optional(),
76352
+ showAcceptedMemberships: z67.boolean().optional(),
76353
+ sitePasses: z67.object({ passes: z67.array(publicPassProductSchema) }).nullable().optional(),
76354
+ siteMemberships: z67.object({ memberships: z67.array(publicMembershipProductSchema) }).nullable().optional(),
76355
+ className: z67.string().nullable().optional(),
76356
+ nowIso: z67.string().optional()
76357
+ });
76358
+ var locationMapIslandSchema = z67.object({
76359
+ location: z67.object({
76360
+ addressText: z67.string().nullable(),
76361
+ lat: z67.number().nullable(),
76362
+ lng: z67.number().nullable()
76080
76363
  }).nullable().optional(),
76081
- zoom: z66.number().nullable().optional(),
76082
- heightPx: z66.number().nullable().optional(),
76083
- showAddressText: z66.boolean().optional(),
76084
- showDirections: z66.boolean().optional(),
76085
- directionsLabel: z66.string().nullable().optional(),
76086
- className: z66.string().nullable().optional()
76364
+ zoom: z67.number().nullable().optional(),
76365
+ heightPx: z67.number().nullable().optional(),
76366
+ showAddressText: z67.boolean().optional(),
76367
+ showDirections: z67.boolean().optional(),
76368
+ directionsLabel: z67.string().nullable().optional(),
76369
+ className: z67.string().nullable().optional()
76087
76370
  });
76088
76371
  var accordionIslandPropsCodec = createZodCodec(accordionIslandSchema);
76089
76372
  var headerSectionIslandPropsCodec = createZodCodec(headerSectionIslandSchema);
@@ -76333,11 +76616,11 @@ function hydrateBlocksIslands(options = {}) {
76333
76616
  }
76334
76617
 
76335
76618
  // ../blocks/src/PageRenderer.tsx
76336
- import * as React37 from "react";
76619
+ import * as React38 from "react";
76337
76620
 
76338
76621
  // ../blocks/src/system/runtime/resolver.ts
76339
76622
  init_node();
76340
- import React35 from "react";
76623
+ import React36 from "react";
76341
76624
  init_registry_server();
76342
76625
  init_layout();
76343
76626
  var META_PATH_TO_STORE_KEY = {
@@ -76810,7 +77093,7 @@ function resolveNode2(node, context, indexFallback) {
76810
77093
  blockContent: context.blockContent,
76811
77094
  fragmentRegistry: context.fragmentRegistry
76812
77095
  };
76813
- return React35.createElement(component, elementProps, ...children);
77096
+ return React36.createElement(component, elementProps, ...children);
76814
77097
  }
76815
77098
  function resolveValue(value, context) {
76816
77099
  if (value && typeof value === "object" && "$bind" in value) {
@@ -76897,7 +77180,7 @@ function getDefaultComponentRegistry() {
76897
77180
  var defaultComponentRegistry = getDefaultComponentRegistry();
76898
77181
 
76899
77182
  // ../blocks/src/system/componentFactory.ts
76900
- import React36 from "react";
77183
+ import React37 from "react";
76901
77184
  init_blockOverrides();
76902
77185
  function resolveBlockVariantKey(manifest, content) {
76903
77186
  return resolveVariantKey(manifest, content);
@@ -77174,7 +77457,7 @@ function PageRenderer({
77174
77457
  customBlocks,
77175
77458
  isEditingMode = false
77176
77459
  }) {
77177
- const imageResolveContext = React37.useMemo(
77460
+ const imageResolveContext = React38.useMemo(
77178
77461
  () => resolvePageRendererImageResolveContext(dataContext),
77179
77462
  [
77180
77463
  dataContext?.imageResolveContext,
@@ -77285,7 +77568,7 @@ function getCachedManifestValidator(manifest, options = {}) {
77285
77568
  manifestValidatorCache.set(manifest, { ...cacheEntry, [mode]: created });
77286
77569
  return created;
77287
77570
  }
77288
- var MemoBlockSection = React37.memo(
77571
+ var MemoBlockSection = React38.memo(
77289
77572
  function MemoBlockSection2({
77290
77573
  themeTokens,
77291
77574
  themeConfig,
@@ -78917,7 +79200,7 @@ function ThemeScope({
78917
79200
  }
78918
79201
 
78919
79202
  // ../theme-core/src/ThemeFontLoader.tsx
78920
- import * as React38 from "react";
79203
+ import * as React39 from "react";
78921
79204
  init_selectorUtils();
78922
79205
  import { Fragment as Fragment24, jsx as jsx157, jsxs as jsxs103 } from "react/jsx-runtime";
78923
79206
 
@@ -78970,7 +79253,7 @@ function BlocksIslandsHydrator(props2 = {}) {
78970
79253
  }
78971
79254
 
78972
79255
  // src/rendering/blocks-page-renderer.ts
78973
- import * as React39 from "react";
79256
+ import * as React40 from "react";
78974
79257
 
78975
79258
  // ../blocks/src/rendering/server.ts
78976
79259
  init_schema2();
@@ -79050,7 +79333,7 @@ function toBlocksBlockOverrides(overrides) {
79050
79333
  for (const [key, OverrideComponent] of Object.entries(overrides)) {
79051
79334
  result[key] = function BlocksOverrideAdapter(props2) {
79052
79335
  const sdkOverride = OverrideComponent;
79053
- return React39.createElement(sdkOverride, props2);
79336
+ return React40.createElement(sdkOverride, props2);
79054
79337
  };
79055
79338
  }
79056
79339
  return result;
@@ -79065,15 +79348,15 @@ function PageRenderer2(props2) {
79065
79348
  sdkConfig: blocksSdkConfig,
79066
79349
  customBlocks: normalizeSdkCustomBlocks(props2.customBlocks)
79067
79350
  };
79068
- return React39.createElement(PageRenderer, blocksProps);
79351
+ return React40.createElement(PageRenderer, blocksProps);
79069
79352
  }
79070
79353
 
79071
79354
  // src/rendering/blocks-theme-scope.ts
79072
- import * as React40 from "react";
79355
+ import * as React41 from "react";
79073
79356
  function ThemeScope2(props2) {
79074
79357
  const { theme, children, ...rest } = props2;
79075
79358
  const blocksTheme = parseBlocksTheme(theme);
79076
- return React40.createElement(ThemeScope, {
79359
+ return React41.createElement(ThemeScope, {
79077
79360
  ...rest,
79078
79361
  theme: blocksTheme,
79079
79362
  children: children ?? null
@@ -79277,7 +79560,7 @@ var SimpleCache = class {
79277
79560
  };
79278
79561
 
79279
79562
  // src/version.ts
79280
- var SDK_VERSION = "0.60.6";
79563
+ var SDK_VERSION = "0.60.7";
79281
79564
 
79282
79565
  // src/client/error.ts
79283
79566
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -80316,6 +80599,24 @@ function createRiverbankClient(config) {
80316
80599
  return await apiClient({ endpoint: "listPublicCourses", params: apiParams, options: { signal: sig } });
80317
80600
  }, { signal });
80318
80601
  },
80602
+ async listPublicTeamMembers(params) {
80603
+ const { siteId, stage, signal } = params;
80604
+ if (!siteId) {
80605
+ throw new Error("listPublicTeamMembers() requires siteId");
80606
+ }
80607
+ const cacheKey = `public-team-members:${siteId}:${stage ?? ""}`;
80608
+ return resilientFetch(cacheKey, async (sig) => {
80609
+ const apiParams = {
80610
+ siteId,
80611
+ ...stage && { stage }
80612
+ };
80613
+ return await apiClient({
80614
+ endpoint: "listPublicTeamMembers",
80615
+ params: apiParams,
80616
+ options: { signal: sig }
80617
+ });
80618
+ }, { signal });
80619
+ },
80319
80620
  async listPublicProducts(params) {
80320
80621
  const { siteId, stage, categorySelector, signal } = params;
80321
80622
  if (!siteId) {