@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
@@ -9871,7 +9871,9 @@ var init_schemas = __esm({
9871
9871
  courseTeamMemberSummarySchema = z8.object({
9872
9872
  id: z8.string(),
9873
9873
  name: z8.string(),
9874
- summary: z8.string().nullable()
9874
+ roleLabel: z8.string().nullable(),
9875
+ summary: z8.string().nullable(),
9876
+ profilePath: z8.string().nullable()
9875
9877
  });
9876
9878
  coursePricingOptionSchema = z8.object({
9877
9879
  id: z8.string(),
@@ -10394,6 +10396,12 @@ var init_CoursePricingDisplay = __esm({
10394
10396
 
10395
10397
  // ../blocks/src/system/runtime/nodes/event-details/view.tsx
10396
10398
  import { Fragment as Fragment3, jsx as jsx23, jsxs as jsxs9 } from "react/jsx-runtime";
10399
+ function TeamMemberName({
10400
+ name,
10401
+ profilePath
10402
+ }) {
10403
+ return profilePath ? /* @__PURE__ */ jsx23("a", { href: profilePath, className: "rb-hover-opacity-80", children: /* @__PURE__ */ jsx23("strong", { children: name }) }) : /* @__PURE__ */ jsx23("strong", { children: name });
10404
+ }
10397
10405
  function EventDetailsView({
10398
10406
  selection,
10399
10407
  showVenue,
@@ -10457,7 +10465,13 @@ function EventDetailsView({
10457
10465
  teamMembers.length > 0 ? /* @__PURE__ */ jsxs9("div", { className: "rb-mt-6", children: [
10458
10466
  /* @__PURE__ */ jsx23("div", { className: "rb-label rb-mb-2", children: "Team members" }),
10459
10467
  /* @__PURE__ */ jsx23("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs9("div", { children: [
10460
- /* @__PURE__ */ jsx23("p", { children: /* @__PURE__ */ jsx23("strong", { children: teamMember.name }) }),
10468
+ /* @__PURE__ */ jsx23("p", { children: /* @__PURE__ */ jsx23(
10469
+ TeamMemberName,
10470
+ {
10471
+ name: teamMember.name,
10472
+ profilePath: teamMember.profilePath
10473
+ }
10474
+ ) }),
10461
10475
  teamMember.summary ? /* @__PURE__ */ jsx23("p", { className: "rb-caption status-muted", children: teamMember.summary }) : null
10462
10476
  ] }, teamMember.id)) })
10463
10477
  ] }) : null,
@@ -11007,6 +11021,12 @@ var init_runs = __esm({
11007
11021
 
11008
11022
  // ../blocks/src/system/runtime/nodes/course-details/view.tsx
11009
11023
  import { jsx as jsx27, jsxs as jsxs13 } from "react/jsx-runtime";
11024
+ function TeamMemberName2({
11025
+ name,
11026
+ profilePath
11027
+ }) {
11028
+ return profilePath ? /* @__PURE__ */ jsx27("a", { href: profilePath, className: "rb-hover-opacity-80", children: /* @__PURE__ */ jsx27("strong", { children: name }) }) : /* @__PURE__ */ jsx27("strong", { children: name });
11029
+ }
11010
11030
  function parseLimit2(value, fallback2) {
11011
11031
  if (value === "all") return "all";
11012
11032
  const n = typeof value === "string" ? Number.parseInt(value, 10) : typeof value === "number" ? value : NaN;
@@ -11064,7 +11084,13 @@ function CourseDetailsView(props2) {
11064
11084
  teamMembers.length > 0 && /* @__PURE__ */ jsxs13("div", { children: [
11065
11085
  /* @__PURE__ */ jsx27("div", { className: "rb-label rb-mb-2", children: "Team members" }),
11066
11086
  /* @__PURE__ */ jsx27("div", { className: "rb-flex rb-flex-col rb-gap-3", children: teamMembers.map((teamMember) => /* @__PURE__ */ jsxs13("div", { children: [
11067
- /* @__PURE__ */ jsx27("p", { children: /* @__PURE__ */ jsx27("strong", { children: teamMember.name }) }),
11087
+ /* @__PURE__ */ jsx27("p", { children: /* @__PURE__ */ jsx27(
11088
+ TeamMemberName2,
11089
+ {
11090
+ name: teamMember.name,
11091
+ profilePath: teamMember.profilePath
11092
+ }
11093
+ ) }),
11068
11094
  teamMember.summary && /* @__PURE__ */ jsx27("p", { className: "rb-caption status-muted", children: teamMember.summary })
11069
11095
  ] }, teamMember.id)) })
11070
11096
  ] })
@@ -11838,7 +11864,9 @@ var init_schemas2 = __esm({
11838
11864
  publicTeamMemberSummarySchema = z9.object({
11839
11865
  id: z9.string(),
11840
11866
  name: z9.string(),
11841
- summary: z9.string().nullable()
11867
+ roleLabel: z9.string().nullable(),
11868
+ summary: z9.string().nullable(),
11869
+ profilePath: z9.string().nullable()
11842
11870
  });
11843
11871
  publicEventSchema = z9.object({
11844
11872
  kind: z9.enum(["event", "course_session"]).optional(),
@@ -18706,7 +18734,19 @@ var init_teamMember = __esm({
18706
18734
  bind("photo")
18707
18735
  )
18708
18736
  ]),
18709
- text({ as: "h3" }, bind("name")),
18737
+ link(
18738
+ {
18739
+ href: { $bind: { from: "profilePath" } },
18740
+ className: "rb-team-member-name-link"
18741
+ },
18742
+ [text({ as: "h3" }, bind("name"))],
18743
+ when("profilePath")
18744
+ ),
18745
+ text(
18746
+ { as: "h3" },
18747
+ when("profilePath", { not: true }),
18748
+ bind("name")
18749
+ ),
18710
18750
  text({ as: "p", className: "rb-team-member-role" }, when("role"), bind("role")),
18711
18751
  richText(
18712
18752
  { className: "rb-prose rb-max-w-none" },
@@ -35488,7 +35528,16 @@ var init_CourseRegistrationErrorBoundary = __esm({
35488
35528
  });
35489
35529
 
35490
35530
  // ../blocks/src/system/runtime/nodes/course-registration/components.tsx
35531
+ import React19 from "react";
35491
35532
  import { Fragment as Fragment15, jsx as jsx105, jsxs as jsxs78 } from "react/jsx-runtime";
35533
+ function TeamMemberInlineList({
35534
+ teamMembers
35535
+ }) {
35536
+ return /* @__PURE__ */ jsx105(Fragment15, { children: teamMembers.map((teamMember, index) => /* @__PURE__ */ jsxs78(React19.Fragment, { children: [
35537
+ index > 0 ? ", " : "",
35538
+ teamMember.profilePath ? /* @__PURE__ */ jsx105("a", { href: teamMember.profilePath, children: teamMember.name }) : teamMember.name
35539
+ ] }, teamMember.id)) });
35540
+ }
35492
35541
  function CourseCard({
35493
35542
  course,
35494
35543
  isSelected,
@@ -35569,7 +35618,7 @@ function CourseSummary({
35569
35618
  teamMembers.length > 0 && /* @__PURE__ */ jsxs78("div", { className: "cr-summary__venue", children: [
35570
35619
  /* @__PURE__ */ jsx105("strong", { children: "Team:" }),
35571
35620
  " ",
35572
- teamMembers.map((teamMember) => teamMember.name).join(", ")
35621
+ /* @__PURE__ */ jsx105(TeamMemberInlineList, { teamMembers })
35573
35622
  ] }),
35574
35623
  showPrice && pricing.display.kind !== "unavailable" && /* @__PURE__ */ jsxs78("p", { className: "cr-summary__price", children: [
35575
35624
  /* @__PURE__ */ jsx105("strong", { children: pricing.selectableOptions.length > 0 ? "Pricing:" : "Price:" }),
@@ -37127,7 +37176,7 @@ var init_location_map_client = __esm({
37127
37176
  });
37128
37177
 
37129
37178
  // ../blocks/src/system/runtime/nodes/shop-commerce-store.ts
37130
- import * as React20 from "react";
37179
+ import * as React21 from "react";
37131
37180
  function storageKey(siteId) {
37132
37181
  return `riverbank:shop-cart:${siteId}`;
37133
37182
  }
@@ -37143,8 +37192,8 @@ function addPassToCommerceCart(siteId, input) {
37143
37192
  }
37144
37193
  function useCommerceCart(siteId) {
37145
37194
  const effectiveSiteId = siteId ?? "unknown";
37146
- const store = React20.useMemo(() => getStore(effectiveSiteId), [effectiveSiteId]);
37147
- const state = React20.useSyncExternalStore(
37195
+ const store = React21.useMemo(() => getStore(effectiveSiteId), [effectiveSiteId]);
37196
+ const state = React21.useSyncExternalStore(
37148
37197
  (listener) => store.subscribe(listener),
37149
37198
  () => store.getSnapshot(),
37150
37199
  () => EMPTY_STATE
@@ -37239,11 +37288,11 @@ var init_shop_commerce_store = __esm({
37239
37288
  });
37240
37289
 
37241
37290
  // ../blocks/src/system/runtime/nodes/shop-add-feedback.tsx
37242
- import * as React21 from "react";
37291
+ import * as React22 from "react";
37243
37292
  import { jsx as jsx111, jsxs as jsxs82 } from "react/jsx-runtime";
37244
37293
  function useTransientShopAddFeedback(timeoutMs = DEFAULT_TIMEOUT_MS) {
37245
- const [activeKey, setActiveKey] = React21.useState(null);
37246
- React21.useEffect(() => {
37294
+ const [activeKey, setActiveKey] = React22.useState(null);
37295
+ React22.useEffect(() => {
37247
37296
  if (!activeKey) return;
37248
37297
  const timeoutId = window.setTimeout(() => {
37249
37298
  setActiveKey((current) => current === activeKey ? null : current);
@@ -37400,7 +37449,7 @@ var init_shop_state = __esm({
37400
37449
  });
37401
37450
 
37402
37451
  // ../blocks/src/system/runtime/nodes/shop.client.tsx
37403
- import React22, { useCallback as useCallback10, useEffect as useEffect21, useRef as useRef11, useState as useState17 } from "react";
37452
+ import React23, { useCallback as useCallback10, useEffect as useEffect21, useRef as useRef11, useState as useState17 } from "react";
37404
37453
  import { Fragment as Fragment17, jsx as jsx112, jsxs as jsxs83 } from "react/jsx-runtime";
37405
37454
  function ShopClient(props2) {
37406
37455
  return /* @__PURE__ */ jsx112(PassesMembershipsController, { render: props2.render });
@@ -37412,7 +37461,7 @@ function getCheckoutModalTitle(checkout2) {
37412
37461
  }
37413
37462
  function PassesMembershipsController({ render }) {
37414
37463
  const api = useBlockApi();
37415
- const [state, dispatch] = React22.useReducer(
37464
+ const [state, dispatch] = React23.useReducer(
37416
37465
  shopPassesMembershipsReducer,
37417
37466
  initialShopPassesMembershipsState
37418
37467
  );
@@ -39630,7 +39679,7 @@ var init_embla_carousel_react_esm = __esm({
39630
39679
  });
39631
39680
 
39632
39681
  // ../blocks/src/system/runtime/nodes/carousel.client.tsx
39633
- import React23 from "react";
39682
+ import React24 from "react";
39634
39683
  import { Fragment as Fragment18, jsx as jsx113, jsxs as jsxs84 } from "react/jsx-runtime";
39635
39684
  function normalizeCarouselProps(input) {
39636
39685
  const transition = input.transition === "fade" ? "fade" : "slide";
@@ -39685,8 +39734,8 @@ var init_carousel_client = __esm({
39685
39734
  autoplayDelay,
39686
39735
  loop
39687
39736
  }) => {
39688
- const slides = React23.Children.toArray(children).filter(Boolean);
39689
- const normalized = React23.useMemo(
39737
+ const slides = React24.Children.toArray(children).filter(Boolean);
39738
+ const normalized = React24.useMemo(
39690
39739
  () => normalizeCarouselProps({
39691
39740
  slidesToShow,
39692
39741
  transition,
@@ -39709,11 +39758,11 @@ var init_carousel_client = __esm({
39709
39758
  ]
39710
39759
  );
39711
39760
  const resolvedSlides = resolveSlidesToShowMobile(normalized.slidesToShow);
39712
- const cssVars = React23.useMemo(
39761
+ const cssVars = React24.useMemo(
39713
39762
  () => getCarouselSlidesToShowCssVars(normalized.slidesToShow),
39714
39763
  [normalized.slidesToShow]
39715
39764
  );
39716
- const plugins = React23.useMemo(() => {
39765
+ const plugins = React24.useMemo(() => {
39717
39766
  if (!normalized.autoplay) return void 0;
39718
39767
  return [
39719
39768
  Autoplay({
@@ -39735,11 +39784,11 @@ var init_carousel_client = __esm({
39735
39784
  },
39736
39785
  plugins
39737
39786
  );
39738
- const [selectedIndex, setSelectedIndex] = React23.useState(0);
39739
- const [scrollSnaps, setScrollSnaps] = React23.useState([]);
39740
- const [canScrollPrev, setCanScrollPrev] = React23.useState(false);
39741
- const [canScrollNext, setCanScrollNext] = React23.useState(false);
39742
- React23.useEffect(() => {
39787
+ const [selectedIndex, setSelectedIndex] = React24.useState(0);
39788
+ const [scrollSnaps, setScrollSnaps] = React24.useState([]);
39789
+ const [canScrollPrev, setCanScrollPrev] = React24.useState(false);
39790
+ const [canScrollNext, setCanScrollNext] = React24.useState(false);
39791
+ React24.useEffect(() => {
39743
39792
  if (!api) return;
39744
39793
  const onInit = () => {
39745
39794
  setScrollSnaps(api.scrollSnapList());
@@ -39762,7 +39811,7 @@ var init_carousel_client = __esm({
39762
39811
  api.off("reInit", onSelect);
39763
39812
  };
39764
39813
  }, [api]);
39765
- React23.useEffect(() => {
39814
+ React24.useEffect(() => {
39766
39815
  if (!api || !normalized.autoplay) return;
39767
39816
  const autoplayPlugin = api.plugins()?.autoplay;
39768
39817
  if (!autoplayPlugin) return;
@@ -39973,16 +40022,16 @@ var init_shop_checkout_state = __esm({
39973
40022
  });
39974
40023
 
39975
40024
  // ../blocks/src/system/runtime/nodes/shop-commerce.tsx
39976
- import * as React24 from "react";
40025
+ import * as React25 from "react";
39977
40026
  import { Fragment as Fragment19, jsx as jsx114, jsxs as jsxs85 } from "react/jsx-runtime";
39978
40027
  function ProductListController(props2) {
39979
40028
  const api = useBlockApi();
39980
40029
  const cart2 = useCommerceCart(api.config.siteId);
39981
40030
  const addFeedback = useTransientShopAddFeedback();
39982
- const [variantSelection, setVariantSelection] = React24.useState(
40031
+ const [variantSelection, setVariantSelection] = React25.useState(
39983
40032
  () => Object.fromEntries(props2.render.display.cards.map((card) => [card.productId, card.selectedVariantId]))
39984
40033
  );
39985
- const cards = React24.useMemo(
40034
+ const cards = React25.useMemo(
39986
40035
  () => props2.render.hydration.products.map(
39987
40036
  (product) => buildProductCardDisplay(
39988
40037
  product,
@@ -39997,7 +40046,7 @@ function ProductListController(props2) {
39997
40046
  ),
39998
40047
  [props2.render.hydration, variantSelection]
39999
40048
  );
40000
- const display = React24.useMemo(
40049
+ const display = React25.useMemo(
40001
40050
  () => ({
40002
40051
  ...props2.render.display,
40003
40052
  state: cards.length === 0 ? "empty" : "ready",
@@ -40059,17 +40108,17 @@ function ProductDetailController(props2) {
40059
40108
  const api = useBlockApi();
40060
40109
  const cart2 = useCommerceCart(api.config.siteId);
40061
40110
  const addFeedback = useTransientShopAddFeedback();
40062
- const selectedProduct = React24.useMemo(
40111
+ const selectedProduct = React25.useMemo(
40063
40112
  () => props2.render.hydration.products.find((product) => product.id === props2.render.hydration.productId) ?? null,
40064
40113
  [props2.render.hydration.productId, props2.render.hydration.products]
40065
40114
  );
40066
- const [variantId, setVariantId] = React24.useState(
40115
+ const [variantId, setVariantId] = React25.useState(
40067
40116
  props2.render.display.state === "ready" ? props2.render.display.selectedVariantId : null
40068
40117
  );
40069
- React24.useEffect(() => {
40118
+ React25.useEffect(() => {
40070
40119
  setVariantId(props2.render.display.state === "ready" ? props2.render.display.selectedVariantId : null);
40071
40120
  }, [props2.render.display]);
40072
- const display = React24.useMemo(
40121
+ const display = React25.useMemo(
40073
40122
  () => buildProductDetailDisplay(
40074
40123
  selectedProduct,
40075
40124
  {
@@ -40137,7 +40186,7 @@ function ProductDetailController(props2) {
40137
40186
  function CartController(props2) {
40138
40187
  const api = useBlockApi();
40139
40188
  const cart2 = useCommerceCart(api.config.siteId);
40140
- const display = React24.useMemo(
40189
+ const display = React25.useMemo(
40141
40190
  () => getShopDisplayForItems(props2.render, cart2.items),
40142
40191
  [cart2.items, props2.render]
40143
40192
  );
@@ -40180,11 +40229,11 @@ function CartController(props2) {
40180
40229
  function CheckoutController(props2) {
40181
40230
  const api = useBlockApi();
40182
40231
  const cart2 = useCommerceCart(api.config.siteId);
40183
- const [state, dispatch] = React24.useReducer(
40232
+ const [state, dispatch] = React25.useReducer(
40184
40233
  shopCheckoutReducer,
40185
40234
  initialShopCheckoutState
40186
40235
  );
40187
- React24.useEffect(() => {
40236
+ React25.useEffect(() => {
40188
40237
  const checkout2 = consumeSearchParam("checkout");
40189
40238
  if (checkout2 === "success") {
40190
40239
  cart2.clear();
@@ -40193,7 +40242,7 @@ function CheckoutController(props2) {
40193
40242
  dispatch({ type: "setNotice", notice: "cancelled" });
40194
40243
  }
40195
40244
  }, [cart2]);
40196
- const display = React24.useMemo(
40245
+ const display = React25.useMemo(
40197
40246
  () => getShopDisplayForItems(props2.render, cart2.items),
40198
40247
  [cart2.items, props2.render]
40199
40248
  );
@@ -40353,7 +40402,7 @@ var init_checkout_client = __esm({
40353
40402
  });
40354
40403
 
40355
40404
  // ../blocks/src/system/runtime/header/HeaderCartDrawer.tsx
40356
- import * as React25 from "react";
40405
+ import * as React26 from "react";
40357
40406
  import { jsx as jsx119, jsxs as jsxs86 } from "react/jsx-runtime";
40358
40407
  function normalizeQuantityInput(value) {
40359
40408
  const parsed = Number(value);
@@ -40403,8 +40452,8 @@ function HeaderCartDrawerItems(props2) {
40403
40452
  )) });
40404
40453
  }
40405
40454
  function HeaderCartDrawer(props2) {
40406
- const titleId = React25.useId();
40407
- const display = React25.useMemo(
40455
+ const titleId = React26.useId();
40456
+ const display = React26.useMemo(
40408
40457
  () => buildCartDisplay(props2.cart.items, {
40409
40458
  heading: "Cart",
40410
40459
  emptyMessage: "Your cart is empty.",
@@ -40618,15 +40667,15 @@ var init_HeaderCartTrigger = __esm({
40618
40667
  });
40619
40668
 
40620
40669
  // ../blocks/src/system/runtime/header/headerCartRuntime.tsx
40621
- import * as React26 from "react";
40670
+ import * as React27 from "react";
40622
40671
  import { createPortal as createPortal2 } from "react-dom";
40623
40672
  import { createRoot } from "react-dom/client";
40624
40673
  import { Fragment as Fragment20, jsx as jsx121, jsxs as jsxs88 } from "react/jsx-runtime";
40625
40674
  function HeaderCartRuntime(props2) {
40626
40675
  const cart2 = useCommerceCart(props2.siteId);
40627
- const itemCount = React26.useMemo(() => getCartItemCount(cart2.items), [cart2.items]);
40628
- const [open, setOpen] = React26.useState(false);
40629
- const checkoutHref = React26.useMemo(
40676
+ const itemCount = React27.useMemo(() => getCartItemCount(cart2.items), [cart2.items]);
40677
+ const [open, setOpen] = React27.useState(false);
40678
+ const checkoutHref = React27.useMemo(
40630
40679
  () => resolveHeaderCartCheckoutHref(
40631
40680
  props2.mounts,
40632
40681
  typeof window === "undefined" ? null : window.location.pathname
@@ -58722,7 +58771,7 @@ function hydrateBlocksIslands(options = {}) {
58722
58771
  }
58723
58772
 
58724
58773
  // ../blocks/src/PageRenderer.tsx
58725
- import * as React37 from "react";
58774
+ import * as React38 from "react";
58726
58775
 
58727
58776
  // ../blocks/src/system/manifest/registry.ts
58728
58777
  var REGISTRY_SYMBOL = /* @__PURE__ */ Symbol.for("@riverbankcms/blocks/manifest-registry");
@@ -67181,7 +67230,26 @@ init_schema2();
67181
67230
  init_defineBlock();
67182
67231
  init_builder();
67183
67232
  init_fragments();
67233
+ import { z as z61 } from "zod";
67234
+ init_media2();
67184
67235
  var ITEM_NAME2 = "member";
67236
+ var teamMemberPhotoSchema = mediaSchema.refine((media2) => media2.type === "image", {
67237
+ message: "Team member photos must be image media"
67238
+ }).nullable();
67239
+ var teamMemberDataSchema = z61.object({
67240
+ _type: z61.literal("teamMember"),
67241
+ id: z61.string(),
67242
+ name: z61.string(),
67243
+ role: z61.string().nullable(),
67244
+ roleLabel: z61.string().nullable(),
67245
+ bio: z61.string().nullable(),
67246
+ summary: z61.string().nullable(),
67247
+ photo: teamMemberPhotoSchema,
67248
+ profilePath: z61.string().nullable()
67249
+ });
67250
+ var teamMembersDataSchema = z61.array(teamMemberDataSchema);
67251
+ var dynamicSourceWhen = { equals: "site_staff" };
67252
+ var manualSourceWhen = { equals: "site_staff", not: true };
67185
67253
  var headingNode = text(
67186
67254
  { as: "h2" },
67187
67255
  bind("content.heading"),
@@ -67271,7 +67339,15 @@ var teamMemberStackLayout = el(
67271
67339
  ]
67272
67340
  ),
67273
67341
  stack({ gap: "sm", className: "rb-team-member-body rb-flex-1 rb-min-w-0" }, [
67274
- text({ as: "h3" }, bind("name")),
67342
+ link(
67343
+ {
67344
+ href: { $bind: { from: "profilePath" } },
67345
+ className: "rb-team-member-name-link"
67346
+ },
67347
+ [text({ as: "h3" }, bind("name"))],
67348
+ when("profilePath")
67349
+ ),
67350
+ text({ as: "h3" }, when("profilePath", { not: true }), bind("name")),
67275
67351
  text(
67276
67352
  { as: "p", className: "rb-team-member-role" },
67277
67353
  when("role"),
@@ -67285,12 +67361,18 @@ var teamMemberStackLayout = el(
67285
67361
  ])
67286
67362
  ]
67287
67363
  );
67288
- var gridMembersNode = repeaterFragmentLayout({
67364
+ var manualGridMembersNode = when("content.source", manualSourceWhen)(repeaterFragmentLayout({
67289
67365
  collectionPath: "content.members",
67290
67366
  itemName: ITEM_NAME2,
67291
67367
  fragments: { teamMember: teamMemberFragment },
67292
67368
  itemGap: "sm"
67293
- });
67369
+ }));
67370
+ var dynamicGridMembersNode = when("content.source", dynamicSourceWhen)(repeaterFragmentLayout({
67371
+ collectionPath: "data.members",
67372
+ itemName: ITEM_NAME2,
67373
+ fragments: { teamMember: teamMemberFragment },
67374
+ itemGap: "sm"
67375
+ }));
67294
67376
  var gridVariant = wrapVariant3(
67295
67377
  el(
67296
67378
  "grid",
@@ -67304,22 +67386,29 @@ var gridVariant = wrapVariant3(
67304
67386
  },
67305
67387
  gap: { $bind: { from: "content.gap", fallback: "medium" } }
67306
67388
  },
67307
- [gridMembersNode]
67389
+ [manualGridMembersNode, dynamicGridMembersNode]
67308
67390
  )
67309
67391
  );
67310
- var stackMembersNode = repeaterFragmentLayout({
67392
+ var manualStackMembersNode = when("content.source", manualSourceWhen)(repeaterFragmentLayout({
67311
67393
  collectionPath: "content.members",
67312
67394
  itemName: ITEM_NAME2,
67313
67395
  fragments: { teamMember: teamMemberFragment },
67314
67396
  layoutOverrides: { teamMember: teamMemberStackLayout },
67315
67397
  itemGap: "sm"
67316
- });
67398
+ }));
67399
+ var dynamicStackMembersNode = when("content.source", dynamicSourceWhen)(repeaterFragmentLayout({
67400
+ collectionPath: "data.members",
67401
+ itemName: ITEM_NAME2,
67402
+ fragments: { teamMember: teamMemberFragment },
67403
+ layoutOverrides: { teamMember: teamMemberStackLayout },
67404
+ itemGap: "sm"
67405
+ }));
67317
67406
  var stackVariant = wrapVariant3({
67318
67407
  type: "stack",
67319
67408
  props: {
67320
67409
  gap: { $bind: { from: "content.gap", fallback: "medium" } }
67321
67410
  },
67322
- children: [stackMembersNode]
67411
+ children: [manualStackMembersNode, dynamicStackMembersNode]
67323
67412
  });
67324
67413
  var teamMembersManifest = createBlockManifest({
67325
67414
  id: "block.team-members",
@@ -67334,6 +67423,18 @@ var teamMembersManifest = createBlockManifest({
67334
67423
  required: false,
67335
67424
  maxLength: 120
67336
67425
  }),
67426
+ parseFieldDefinition({
67427
+ id: "source",
67428
+ type: "select",
67429
+ label: "Team members",
67430
+ description: "Choose whether to use the site-wide team or a hand-picked list.",
67431
+ defaultValue: "manual",
67432
+ options: [
67433
+ { value: "manual", label: "Choose manually" },
67434
+ { value: "site_staff", label: "Use all site team members" }
67435
+ ],
67436
+ ui: { intent: "behavior" }
67437
+ }),
67337
67438
  parseFieldDefinition({
67338
67439
  id: "layoutAlign",
67339
67440
  type: "select",
@@ -67436,18 +67537,24 @@ var teamMembersManifest = createBlockManifest({
67436
67537
  ],
67437
67538
  ui: { intent: "display" }
67438
67539
  }),
67439
- fragmentsToRepeaterField(
67440
- "members",
67441
- "Team members",
67442
- { teamMember: teamMemberFragment },
67443
- {
67444
- minItems: 0,
67445
- maxItems: 50,
67446
- itemLabel: "Team member",
67447
- itemLabelSource: "name",
67448
- description: "Add people to this section."
67540
+ {
67541
+ ...fragmentsToRepeaterField(
67542
+ "members",
67543
+ "Team members",
67544
+ { teamMember: teamMemberFragment },
67545
+ {
67546
+ minItems: 0,
67547
+ maxItems: 50,
67548
+ itemLabel: "Team member",
67549
+ itemLabelSource: "name",
67550
+ description: "Add people to this section."
67551
+ }
67552
+ ),
67553
+ ui: {
67554
+ intent: "content",
67555
+ visibleWhen: { field: "source", equals: "manual" }
67449
67556
  }
67450
- )
67557
+ }
67451
67558
  ],
67452
67559
  layout: gridVariant,
67453
67560
  variants: {
@@ -67473,7 +67580,20 @@ var teamMembersManifest = createBlockManifest({
67473
67580
  styleTokens: { spacing: "lg" }
67474
67581
  });
67475
67582
  var teamMembersBlockDefinition = {
67476
- manifest: teamMembersManifest
67583
+ manifest: teamMembersManifest,
67584
+ dataSchemas: {
67585
+ members: teamMembersDataSchema
67586
+ },
67587
+ dataLoaders: {
67588
+ members: {
67589
+ endpoint: "listPublicTeamMembers",
67590
+ params: {
67591
+ siteId: { $bind: { from: "$root.siteId" } },
67592
+ stage: { $bind: { from: "$root.previewStage", fallback: "published" } }
67593
+ },
67594
+ mode: "server"
67595
+ }
67596
+ }
67477
67597
  };
67478
67598
 
67479
67599
  // ../blocks/src/system/blocks/location-map.ts
@@ -68586,7 +68706,7 @@ var defaultTransforms = createTransformRegistry(builtinTransformDefinitions);
68586
68706
 
68587
68707
  // ../blocks/src/system/runtime/resolver.ts
68588
68708
  init_node();
68589
- import React35 from "react";
68709
+ import React36 from "react";
68590
68710
  init_registry_server();
68591
68711
  init_layout();
68592
68712
  var META_PATH_TO_STORE_KEY = {
@@ -69059,7 +69179,7 @@ function resolveNode2(node, context, indexFallback) {
69059
69179
  blockContent: context.blockContent,
69060
69180
  fragmentRegistry: context.fragmentRegistry
69061
69181
  };
69062
- return React35.createElement(component, elementProps, ...children);
69182
+ return React36.createElement(component, elementProps, ...children);
69063
69183
  }
69064
69184
  function resolveValue(value, context) {
69065
69185
  if (value && typeof value === "object" && "$bind" in value) {
@@ -69146,7 +69266,7 @@ function getDefaultComponentRegistry() {
69146
69266
  var defaultComponentRegistry = getDefaultComponentRegistry();
69147
69267
 
69148
69268
  // ../blocks/src/system/componentFactory.ts
69149
- import React36 from "react";
69269
+ import React37 from "react";
69150
69270
  init_blockOverrides();
69151
69271
  function resolveBlockVariantKey(manifest, content) {
69152
69272
  return resolveVariantKey(manifest, content);
@@ -69265,7 +69385,7 @@ function renderBlock(manifest, content, options = {}) {
69265
69385
  const resolvedRegistry = options.registry ?? getDefaultComponentRegistry();
69266
69386
  const resolvedTheme = options.theme ?? defaultThemeTokens;
69267
69387
  const cleanKind = manifest.name.replace(/^block\./, "");
69268
- const componentElement = React36.createElement(Component2, {
69388
+ const componentElement = React37.createElement(Component2, {
69269
69389
  content,
69270
69390
  data: options.data,
69271
69391
  registry: resolvedRegistry,
@@ -69281,7 +69401,7 @@ function renderBlock(manifest, content, options = {}) {
69281
69401
  return componentElement;
69282
69402
  }
69283
69403
  const styleGroup = typeof content.styleGroup === "string" ? content.styleGroup : void 0;
69284
- return React36.createElement(
69404
+ return React37.createElement(
69285
69405
  "div",
69286
69406
  {
69287
69407
  className: `block-${cleanKind}`,
@@ -69464,7 +69584,7 @@ function PageRenderer({
69464
69584
  customBlocks,
69465
69585
  isEditingMode = false
69466
69586
  }) {
69467
- const imageResolveContext = React37.useMemo(
69587
+ const imageResolveContext = React38.useMemo(
69468
69588
  () => resolvePageRendererImageResolveContext(dataContext),
69469
69589
  [
69470
69590
  dataContext?.imageResolveContext,
@@ -69575,7 +69695,7 @@ function getCachedManifestValidator(manifest, options = {}) {
69575
69695
  manifestValidatorCache.set(manifest, { ...cacheEntry, [mode]: created });
69576
69696
  return created;
69577
69697
  }
69578
- var MemoBlockSection = React37.memo(
69698
+ var MemoBlockSection = React38.memo(
69579
69699
  function MemoBlockSection2({
69580
69700
  themeTokens,
69581
69701
  themeConfig,
@@ -71226,7 +71346,7 @@ function ThemeScope({
71226
71346
  }
71227
71347
 
71228
71348
  // ../theme-core/src/ThemeFontLoader.tsx
71229
- import * as React38 from "react";
71349
+ import * as React39 from "react";
71230
71350
  init_selectorUtils();
71231
71351
  import { Fragment as Fragment24, jsx as jsx157, jsxs as jsxs103 } from "react/jsx-runtime";
71232
71352
 
@@ -71444,6 +71564,7 @@ function coercePayload(payload) {
71444
71564
  if ("form" in record && typeof record.form !== "function") return record.form;
71445
71565
  if ("entries" in record && typeof record.entries !== "function") return record.entries;
71446
71566
  if ("services" in record && typeof record.services !== "function") return record.services;
71567
+ if ("teamMembers" in record && typeof record.teamMembers !== "function") return record.teamMembers;
71447
71568
  }
71448
71569
  return payload;
71449
71570
  }
@@ -71524,6 +71645,7 @@ var SUPPORTED_LOADER_ENDPOINTS = [
71524
71645
  "listPublicEvents",
71525
71646
  "getPublicEventDetails",
71526
71647
  "listPublicCourses",
71648
+ "listPublicTeamMembers",
71527
71649
  "listPublicProducts",
71528
71650
  "listPublicPasses",
71529
71651
  "listPublicMemberships",
@@ -71580,6 +71702,10 @@ function normalizeLoaderParams(endpoint, params, context) {
71580
71702
  ensureSiteId(out, context);
71581
71703
  return out;
71582
71704
  }
71705
+ if (endpoint === "listPublicTeamMembers") {
71706
+ ensureSiteId(out, context);
71707
+ return out;
71708
+ }
71583
71709
  if (endpoint === "getPublishedEntryPreview") {
71584
71710
  ensureSiteId(out, context);
71585
71711
  return out;
@@ -71631,7 +71757,7 @@ function BlocksIslandsHydrator(props2 = {}) {
71631
71757
  }
71632
71758
 
71633
71759
  // src/rendering/blocks-page-renderer.ts
71634
- import * as React39 from "react";
71760
+ import * as React40 from "react";
71635
71761
 
71636
71762
  // ../blocks/src/rendering/server.ts
71637
71763
  init_schema2();
@@ -71711,7 +71837,7 @@ function toBlocksBlockOverrides(overrides) {
71711
71837
  for (const [key, OverrideComponent] of Object.entries(overrides)) {
71712
71838
  result[key] = function BlocksOverrideAdapter(props2) {
71713
71839
  const sdkOverride = OverrideComponent;
71714
- return React39.createElement(sdkOverride, props2);
71840
+ return React40.createElement(sdkOverride, props2);
71715
71841
  };
71716
71842
  }
71717
71843
  return result;
@@ -71726,15 +71852,15 @@ function PageRenderer2(props2) {
71726
71852
  sdkConfig: blocksSdkConfig,
71727
71853
  customBlocks: normalizeSdkCustomBlocks(props2.customBlocks)
71728
71854
  };
71729
- return React39.createElement(PageRenderer, blocksProps);
71855
+ return React40.createElement(PageRenderer, blocksProps);
71730
71856
  }
71731
71857
 
71732
71858
  // src/rendering/blocks-theme-scope.ts
71733
- import * as React40 from "react";
71859
+ import * as React41 from "react";
71734
71860
  function ThemeScope2(props2) {
71735
71861
  const { theme, children, ...rest } = props2;
71736
71862
  const blocksTheme = parseBlocksTheme(theme);
71737
- return React40.createElement(ThemeScope, {
71863
+ return React41.createElement(ThemeScope, {
71738
71864
  ...rest,
71739
71865
  theme: blocksTheme,
71740
71866
  children: children ?? null
@@ -73258,13 +73384,150 @@ var ENDPOINT_DEFINITIONS = {
73258
73384
  "server:internal_error"
73259
73385
  ]
73260
73386
  },
73261
- deleteAppointmentResource: {
73387
+ removeAppointmentResource: {
73262
73388
  path: "/sites/{siteId}/bookings/resources/{resourceId}",
73263
73389
  method: "DELETE",
73264
73390
  auth: "user",
73265
73391
  responseKind: "json",
73266
73392
  errors: ["resource:not_found", "server:internal_error"]
73267
73393
  },
73394
+ createTeamMemberProfile: {
73395
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile",
73396
+ method: "POST",
73397
+ auth: "user",
73398
+ responseKind: "json",
73399
+ errors: [
73400
+ "validation:invalid_input",
73401
+ "resource:not_found",
73402
+ "resource:conflict",
73403
+ "server:internal_error"
73404
+ ]
73405
+ },
73406
+ updateTeamMemberProfilePolicy: {
73407
+ path: "/sites/{siteId}/bookings/resources/profile-policy",
73408
+ method: "PUT",
73409
+ auth: "user",
73410
+ responseKind: "json",
73411
+ errors: ["validation:invalid_input", "server:internal_error"]
73412
+ },
73413
+ updateTeamMemberProfileContent: {
73414
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/content",
73415
+ method: "PUT",
73416
+ tags: [
73417
+ "site-{siteId}",
73418
+ "content-{siteId}-team-member",
73419
+ "content-entry-{entryId}"
73420
+ ],
73421
+ auth: "user",
73422
+ responseKind: "json",
73423
+ errors: [
73424
+ "validation:invalid_input",
73425
+ "resource:not_found",
73426
+ "resource:conflict",
73427
+ "server:internal_error"
73428
+ ]
73429
+ },
73430
+ publishTeamMemberProfile: {
73431
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/publish",
73432
+ method: "POST",
73433
+ tags: [
73434
+ "site-{siteId}",
73435
+ "content-{siteId}-team-member",
73436
+ "content-entry-{entryId}"
73437
+ ],
73438
+ auth: "user",
73439
+ responseKind: "json",
73440
+ errors: [
73441
+ "validation:invalid_input",
73442
+ "resource:not_found",
73443
+ "server:internal_error"
73444
+ ]
73445
+ },
73446
+ discardTeamMemberProfileDraft: {
73447
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/discard",
73448
+ method: "POST",
73449
+ tags: [
73450
+ "site-{siteId}",
73451
+ "content-{siteId}-team-member",
73452
+ "content-entry-{entryId}"
73453
+ ],
73454
+ auth: "user",
73455
+ responseKind: "json",
73456
+ errors: [
73457
+ "validation:invalid_input",
73458
+ "resource:not_found",
73459
+ "resource:conflict",
73460
+ "server:internal_error"
73461
+ ]
73462
+ },
73463
+ unpublishTeamMemberProfile: {
73464
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/unpublish",
73465
+ method: "POST",
73466
+ tags: [
73467
+ "site-{siteId}",
73468
+ "content-{siteId}-team-member",
73469
+ "content-entry-{entryId}"
73470
+ ],
73471
+ auth: "user",
73472
+ responseKind: "json",
73473
+ errors: [
73474
+ "validation:invalid_input",
73475
+ "resource:not_found",
73476
+ "resource:conflict",
73477
+ "server:internal_error"
73478
+ ]
73479
+ },
73480
+ scheduleTeamMemberProfile: {
73481
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/schedule",
73482
+ method: "POST",
73483
+ tags: [
73484
+ "site-{siteId}",
73485
+ "content-{siteId}-team-member",
73486
+ "content-entry-{entryId}"
73487
+ ],
73488
+ auth: "user",
73489
+ responseKind: "json",
73490
+ errors: [
73491
+ "validation:invalid_input",
73492
+ "resource:not_found",
73493
+ "resource:conflict",
73494
+ "server:internal_error"
73495
+ ]
73496
+ },
73497
+ cancelScheduledTeamMemberProfile: {
73498
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/schedule",
73499
+ method: "DELETE",
73500
+ tags: [
73501
+ "site-{siteId}",
73502
+ "content-{siteId}-team-member",
73503
+ "content-entry-{entryId}"
73504
+ ],
73505
+ auth: "user",
73506
+ responseKind: "json",
73507
+ errors: [
73508
+ "validation:invalid_input",
73509
+ "resource:not_found",
73510
+ "resource:conflict",
73511
+ "server:internal_error"
73512
+ ]
73513
+ },
73514
+ updateTeamMemberProfileRouteMetadata: {
73515
+ path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/routes/{routeId}/metadata",
73516
+ method: "PATCH",
73517
+ tags: [
73518
+ TAG_TEMPLATES.siteCollection,
73519
+ TAG_TEMPLATES.siteRoutableContent,
73520
+ TAG_TEMPLATES.routeById
73521
+ ],
73522
+ auth: "user",
73523
+ responseKind: "json",
73524
+ errors: [
73525
+ "validation:invalid_input",
73526
+ "resource:not_found",
73527
+ "resource:conflict",
73528
+ "server:internal_error"
73529
+ ]
73530
+ },
73268
73531
  listAppointmentServices: {
73269
73532
  path: "/sites/{siteId}/bookings/services",
73270
73533
  method: "GET",
@@ -75638,6 +75901,15 @@ var ENDPOINT_DEFINITIONS = {
75638
75901
  auth: "public",
75639
75902
  responseKind: "json"
75640
75903
  },
75904
+ listPublicTeamMembers: {
75905
+ path: "/public/sites/{siteId}/team-members",
75906
+ method: "GET",
75907
+ revalidate: 60,
75908
+ tags: ["public-team-members-{siteId}"],
75909
+ errors: [],
75910
+ auth: "public",
75911
+ responseKind: "json"
75912
+ },
75641
75913
  getPublicCourse: {
75642
75914
  path: "/public/sites/{siteId}/courses/{courseId}",
75643
75915
  method: "GET",
@@ -77929,60 +78201,60 @@ var ENDPOINT_DEFINITIONS = {
77929
78201
  };
77930
78202
 
77931
78203
  // ../api/src/navigation/contracts.ts
77932
- import { z as z61 } from "zod";
77933
- var portalLinkPayloadSchema = z61.object({
77934
- kind: z61.literal("portal"),
77935
- path: z61.string().trim().startsWith("/").optional(),
77936
- labels: z61.object({
77937
- loggedOut: z61.string().trim().min(1).optional(),
77938
- loggedIn: z61.string().trim().min(1).optional()
78204
+ import { z as z62 } from "zod";
78205
+ var portalLinkPayloadSchema = z62.object({
78206
+ kind: z62.literal("portal"),
78207
+ path: z62.string().trim().startsWith("/").optional(),
78208
+ labels: z62.object({
78209
+ loggedOut: z62.string().trim().min(1).optional(),
78210
+ loggedIn: z62.string().trim().min(1).optional()
77939
78211
  }).optional()
77940
78212
  });
77941
- var cartLinkLabelConfigSchema = z61.discriminatedUnion("kind", [
77942
- z61.object({
77943
- kind: z61.literal("icon-only")
78213
+ var cartLinkLabelConfigSchema = z62.discriminatedUnion("kind", [
78214
+ z62.object({
78215
+ kind: z62.literal("icon-only")
77944
78216
  }),
77945
- z61.object({
77946
- kind: z61.literal("icon-with-label"),
77947
- label: z61.string().trim().min(1)
78217
+ z62.object({
78218
+ kind: z62.literal("icon-with-label"),
78219
+ label: z62.string().trim().min(1)
77948
78220
  })
77949
78221
  ]);
77950
- var cartLinkPayloadSchema = z61.object({
77951
- kind: z61.literal("cart"),
77952
- badge: z61.enum(["show-count", "hidden"]),
78222
+ var cartLinkPayloadSchema = z62.object({
78223
+ kind: z62.literal("cart"),
78224
+ badge: z62.enum(["show-count", "hidden"]),
77953
78225
  label: cartLinkLabelConfigSchema
77954
78226
  });
77955
- var internalLinkPayloadSchema = z61.object({
77956
- kind: z61.literal("internal"),
77957
- routeId: z61.string().uuid(),
77958
- entityId: z61.string().uuid(),
77959
- entityType: z61.enum(["page", "content"]),
77960
- href: z61.string().min(1),
77961
- title: z61.string().min(1),
77962
- typeLabel: z61.string().min(1),
77963
- contentTypeKey: z61.string().nullable().optional(),
77964
- contentTypeName: z61.string().nullable().optional(),
77965
- updatedAt: z61.string().nullable().optional()
78227
+ var internalLinkPayloadSchema = z62.object({
78228
+ kind: z62.literal("internal"),
78229
+ routeId: z62.string().uuid(),
78230
+ entityId: z62.string().uuid(),
78231
+ entityType: z62.enum(["page", "content"]),
78232
+ href: z62.string().min(1),
78233
+ title: z62.string().min(1),
78234
+ typeLabel: z62.string().min(1),
78235
+ contentTypeKey: z62.string().nullable().optional(),
78236
+ contentTypeName: z62.string().nullable().optional(),
78237
+ updatedAt: z62.string().nullable().optional()
77966
78238
  }).passthrough();
77967
- var externalLinkSchema2 = z61.object({
77968
- kind: z61.literal("external"),
78239
+ var externalLinkSchema2 = z62.object({
78240
+ kind: z62.literal("external"),
77969
78241
  // Navigation external links are expected to be absolute URLs.
77970
- href: z61.string().url()
78242
+ href: z62.string().url()
77971
78243
  });
77972
- var customLinkSchema2 = z61.object({
77973
- kind: z61.literal("url"),
77974
- href: z61.string().min(1)
78244
+ var customLinkSchema2 = z62.object({
78245
+ kind: z62.literal("url"),
78246
+ href: z62.string().min(1)
77975
78247
  });
77976
- var pageLinkSchema2 = z61.object({
77977
- kind: z61.literal("page"),
77978
- identifier: z61.string().min(1)
78248
+ var pageLinkSchema2 = z62.object({
78249
+ kind: z62.literal("page"),
78250
+ identifier: z62.string().min(1)
77979
78251
  });
77980
- var entryLinkSchema2 = z61.object({
77981
- kind: z61.literal("entry"),
77982
- contentType: z61.string().min(1),
77983
- identifier: z61.string().min(1)
78252
+ var entryLinkSchema2 = z62.object({
78253
+ kind: z62.literal("entry"),
78254
+ contentType: z62.string().min(1),
78255
+ identifier: z62.string().min(1)
77984
78256
  });
77985
- var linkPayloadSchema = z61.discriminatedUnion("kind", [
78257
+ var linkPayloadSchema = z62.discriminatedUnion("kind", [
77986
78258
  internalLinkPayloadSchema,
77987
78259
  pageLinkSchema2,
77988
78260
  entryLinkSchema2,
@@ -77999,7 +78271,7 @@ var navigationLinkInputSchemaOptions = [
77999
78271
  portalLinkPayloadSchema,
78000
78272
  cartLinkPayloadSchema
78001
78273
  ];
78002
- var navigationLinkInputSchema = z61.discriminatedUnion(
78274
+ var navigationLinkInputSchema = z62.discriminatedUnion(
78003
78275
  "kind",
78004
78276
  navigationLinkInputSchemaOptions
78005
78277
  );
@@ -78007,21 +78279,21 @@ var navigationLinkInputSchema = z61.discriminatedUnion(
78007
78279
  // ../api/src/sdkConfig/contracts.ts
78008
78280
  init_schema2();
78009
78281
  init_schema();
78010
- import { z as z62 } from "zod";
78282
+ import { z as z63 } from "zod";
78011
78283
  function unsafeRetypeZodSchema(schema) {
78012
78284
  return schema;
78013
78285
  }
78014
- var navIdListSchema = z62.preprocess((value) => {
78286
+ var navIdListSchema = z63.preprocess((value) => {
78015
78287
  if (!Array.isArray(value)) return void 0;
78016
78288
  const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
78017
78289
  return filtered.length > 0 ? filtered : void 0;
78018
- }, z62.array(z62.string()).max(200).optional());
78019
- var dashboardNavVisibilityBaseSchema = z62.object({
78020
- mode: z62.enum(["augment", "restrict"]).optional(),
78290
+ }, z63.array(z63.string()).max(200).optional());
78291
+ var dashboardNavVisibilityBaseSchema = z63.object({
78292
+ mode: z63.enum(["augment", "restrict"]).optional(),
78021
78293
  allowIds: navIdListSchema,
78022
78294
  denyIds: navIdListSchema
78023
78295
  }).strip();
78024
- var dashboardNavVisibilityRolesSchema = z62.object({
78296
+ var dashboardNavVisibilityRolesSchema = z63.object({
78025
78297
  administrator: dashboardNavVisibilityBaseSchema.optional(),
78026
78298
  editor: dashboardNavVisibilityBaseSchema.optional(),
78027
78299
  team_member: dashboardNavVisibilityBaseSchema.optional(),
@@ -78030,57 +78302,57 @@ var dashboardNavVisibilityRolesSchema = z62.object({
78030
78302
  var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
78031
78303
  roles: dashboardNavVisibilityRolesSchema
78032
78304
  }).strip();
78033
- var dashboardNavigationConfigSchema = z62.object({
78305
+ var dashboardNavigationConfigSchema = z63.object({
78034
78306
  siteNav: dashboardNavVisibilitySchema.optional(),
78035
78307
  settingsNav: dashboardNavVisibilitySchema.optional()
78036
78308
  }).strip();
78037
- var dashboardConfigSchema = z62.object({
78038
- previewEditingEnabled: z62.boolean().optional(),
78309
+ var dashboardConfigSchema = z63.object({
78310
+ previewEditingEnabled: z63.boolean().optional(),
78039
78311
  navigation: dashboardNavigationConfigSchema.optional()
78040
78312
  }).strip();
78041
78313
  var fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
78042
78314
  var nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
78043
- var sdkLoaderEndpointSchema = z62.enum(SUPPORTED_LOADER_ENDPOINTS);
78044
- var loaderParamBindingSchema = z62.object({
78045
- $bind: z62.object({
78046
- from: z62.string().min(1, "Binding path is required"),
78047
- fallback: z62.string().optional()
78315
+ var sdkLoaderEndpointSchema = z63.enum(SUPPORTED_LOADER_ENDPOINTS);
78316
+ var loaderParamBindingSchema = z63.object({
78317
+ $bind: z63.object({
78318
+ from: z63.string().min(1, "Binding path is required"),
78319
+ fallback: z63.string().optional()
78048
78320
  })
78049
78321
  });
78050
- var loaderParamValueSchema = z62.union([
78051
- z62.string(),
78052
- z62.number(),
78053
- z62.boolean(),
78322
+ var loaderParamValueSchema = z63.union([
78323
+ z63.string(),
78324
+ z63.number(),
78325
+ z63.boolean(),
78054
78326
  loaderParamBindingSchema
78055
78327
  ]);
78056
- var sdkConfigLoaderSchema = z62.object({
78328
+ var sdkConfigLoaderSchema = z63.object({
78057
78329
  endpoint: sdkLoaderEndpointSchema,
78058
- params: z62.record(z62.string(), loaderParamValueSchema),
78059
- mode: z62.enum(["server", "client"]).default("server")
78330
+ params: z63.record(z63.string(), loaderParamValueSchema),
78331
+ mode: z63.enum(["server", "client"]).default("server")
78060
78332
  });
78061
- var sdkDataLoadersSchema = z62.record(z62.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
78062
- var sdkCustomBlockIdSchema = z62.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
78333
+ var sdkDataLoadersSchema = z63.record(z63.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
78334
+ var sdkCustomBlockIdSchema = z63.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
78063
78335
  message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
78064
78336
  }).transform((value) => value);
78065
- var sdkCustomBlockInputSchema = z62.object({
78337
+ var sdkCustomBlockInputSchema = z63.object({
78066
78338
  id: sdkCustomBlockIdSchema,
78067
- title: z62.string().min(1),
78068
- titleSource: z62.union([z62.string().min(1), z62.array(z62.string().min(1)).min(1)]).optional(),
78069
- description: z62.string().optional(),
78339
+ title: z63.string().min(1),
78340
+ titleSource: z63.union([z63.string().min(1), z63.array(z63.string().min(1)).min(1)]).optional(),
78341
+ description: z63.string().optional(),
78070
78342
  category: blockCategoryEnum,
78071
- icon: z62.string().optional(),
78072
- tags: z62.array(z62.string()).optional(),
78343
+ icon: z63.string().optional(),
78344
+ tags: z63.array(z63.string()).optional(),
78073
78345
  fields: fieldDefinitionInputSchema.array().min(1),
78074
78346
  dataLoaders: sdkDataLoadersSchema,
78075
78347
  layout: NodeSchema.optional(),
78076
- variants: z62.record(z62.string().min(1), NodeSchema).optional(),
78077
- defaultVariant: z62.string().min(1).optional(),
78078
- variantOptions: z62.record(
78079
- z62.string().min(1),
78080
- z62.object({
78081
- label: z62.string().min(1).optional(),
78082
- description: z62.string().min(1).optional(),
78083
- icon: z62.string().min(1).optional()
78348
+ variants: z63.record(z63.string().min(1), NodeSchema).optional(),
78349
+ defaultVariant: z63.string().min(1).optional(),
78350
+ variantOptions: z63.record(
78351
+ z63.string().min(1),
78352
+ z63.object({
78353
+ label: z63.string().min(1).optional(),
78354
+ description: z63.string().min(1).optional(),
78355
+ icon: z63.string().min(1).optional()
78084
78356
  })
78085
78357
  ).optional()
78086
78358
  }).superRefine((data, ctx) => {
@@ -78090,7 +78362,7 @@ var sdkCustomBlockInputSchema = z62.object({
78090
78362
  const exists = data.fields.some((field) => field.id === source);
78091
78363
  if (!exists) {
78092
78364
  ctx.addIssue({
78093
- code: z62.ZodIssueCode.custom,
78365
+ code: z63.ZodIssueCode.custom,
78094
78366
  message: `titleSource must reference a valid field ID (got "${source}")`,
78095
78367
  path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
78096
78368
  });
@@ -78099,7 +78371,7 @@ var sdkCustomBlockInputSchema = z62.object({
78099
78371
  }
78100
78372
  if (data.layout && data.variants) {
78101
78373
  ctx.addIssue({
78102
- code: z62.ZodIssueCode.custom,
78374
+ code: z63.ZodIssueCode.custom,
78103
78375
  message: "Custom block must define either `layout` or `variants`, not both",
78104
78376
  path: ["variants"]
78105
78377
  });
@@ -78108,14 +78380,14 @@ var sdkCustomBlockInputSchema = z62.object({
78108
78380
  const keys = Object.keys(data.variants);
78109
78381
  if (keys.length === 0) {
78110
78382
  ctx.addIssue({
78111
- code: z62.ZodIssueCode.custom,
78383
+ code: z63.ZodIssueCode.custom,
78112
78384
  message: "`variants` must contain at least one variant key",
78113
78385
  path: ["variants"]
78114
78386
  });
78115
78387
  }
78116
78388
  if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
78117
78389
  ctx.addIssue({
78118
- code: z62.ZodIssueCode.custom,
78390
+ code: z63.ZodIssueCode.custom,
78119
78391
  message: "`defaultVariant` must be a key present in `variants`",
78120
78392
  path: ["defaultVariant"]
78121
78393
  });
@@ -78124,7 +78396,7 @@ var sdkCustomBlockInputSchema = z62.object({
78124
78396
  for (const key of Object.keys(data.variantOptions)) {
78125
78397
  if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
78126
78398
  ctx.addIssue({
78127
- code: z62.ZodIssueCode.custom,
78399
+ code: z63.ZodIssueCode.custom,
78128
78400
  message: "`variantOptions` key must exist in `variants`",
78129
78401
  path: ["variantOptions", key]
78130
78402
  });
@@ -78133,74 +78405,74 @@ var sdkCustomBlockInputSchema = z62.object({
78133
78405
  }
78134
78406
  }
78135
78407
  });
78136
- var sdkBlockFieldExtensionInputSchema = z62.object({
78408
+ var sdkBlockFieldExtensionInputSchema = z63.object({
78137
78409
  fields: fieldDefinitionInputSchema.array().min(1)
78138
78410
  });
78139
- var sdkBlockFieldExtensionsInputSchema = z62.record(
78140
- z62.string().min(1),
78411
+ var sdkBlockFieldExtensionsInputSchema = z63.record(
78412
+ z63.string().min(1),
78141
78413
  sdkBlockFieldExtensionInputSchema
78142
78414
  );
78143
- var sdkThemePaletteSchema = z62.record(z62.string(), z62.string());
78144
- var sdkThemeConfigSchema = z62.object({
78415
+ var sdkThemePaletteSchema = z63.record(z63.string(), z63.string());
78416
+ var sdkThemeConfigSchema = z63.object({
78145
78417
  palette: sdkThemePaletteSchema
78146
78418
  });
78147
- var sdkSectionBackgroundSchema = z62.object({
78148
- id: z62.string().min(1),
78149
- label: z62.string().min(1),
78150
- token: z62.string().min(1)
78419
+ var sdkSectionBackgroundSchema = z63.object({
78420
+ id: z63.string().min(1),
78421
+ label: z63.string().min(1),
78422
+ token: z63.string().min(1)
78151
78423
  });
78152
- var sdkSectionOptionsConfigSchema = z62.object({
78153
- backgroundColor: z62.boolean().optional(),
78154
- backgroundImage: z62.boolean().optional(),
78155
- backgroundGradient: z62.boolean().optional(),
78156
- spacing: z62.union([z62.array(z62.enum(["compact", "default", "spacious"])), z62.boolean()]).optional(),
78157
- textColor: z62.boolean().optional()
78424
+ var sdkSectionOptionsConfigSchema = z63.object({
78425
+ backgroundColor: z63.boolean().optional(),
78426
+ backgroundImage: z63.boolean().optional(),
78427
+ backgroundGradient: z63.boolean().optional(),
78428
+ spacing: z63.union([z63.array(z63.enum(["compact", "default", "spacious"])), z63.boolean()]).optional(),
78429
+ textColor: z63.boolean().optional()
78158
78430
  });
78159
- var sdkContainerOptionsConfigSchema = z62.object({
78160
- maxWidth: z62.union([z62.array(z62.enum(["narrow", "default", "wide", "full"])), z62.boolean()]).optional(),
78161
- alignment: z62.union([z62.array(z62.enum(["left", "center", "right"])), z62.boolean()]).optional()
78431
+ var sdkContainerOptionsConfigSchema = z63.object({
78432
+ maxWidth: z63.union([z63.array(z63.enum(["narrow", "default", "wide", "full"])), z63.boolean()]).optional(),
78433
+ alignment: z63.union([z63.array(z63.enum(["left", "center", "right"])), z63.boolean()]).optional()
78162
78434
  });
78163
- var sdkSiteStyleConfigSchema = z62.object({
78164
- sectionBackgrounds: z62.array(sdkSectionBackgroundSchema).optional(),
78435
+ var sdkSiteStyleConfigSchema = z63.object({
78436
+ sectionBackgrounds: z63.array(sdkSectionBackgroundSchema).optional(),
78165
78437
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
78166
78438
  containerOptions: sdkContainerOptionsConfigSchema.optional()
78167
78439
  });
78168
- var sdkSiteLayoutConfigSchema = z62.object({
78169
- footerBlocks: z62.array(
78170
- z62.object({
78171
- id: z62.string().min(1).optional(),
78172
- kind: z62.string().min(1),
78173
- content: z62.record(z62.string(), z62.unknown()).optional()
78440
+ var sdkSiteLayoutConfigSchema = z63.object({
78441
+ footerBlocks: z63.array(
78442
+ z63.object({
78443
+ id: z63.string().min(1).optional(),
78444
+ kind: z63.string().min(1),
78445
+ content: z63.record(z63.string(), z63.unknown()).optional()
78174
78446
  })
78175
78447
  ).optional()
78176
78448
  });
78177
- var sdkFieldSelectOptionSchema = z62.object({
78178
- value: z62.string(),
78179
- label: z62.string()
78449
+ var sdkFieldSelectOptionSchema = z63.object({
78450
+ value: z63.string(),
78451
+ label: z63.string()
78180
78452
  });
78181
- var sdkBlockFieldConfigSchema = z62.object({
78182
- options: z62.array(sdkFieldSelectOptionSchema).optional()
78453
+ var sdkBlockFieldConfigSchema = z63.object({
78454
+ options: z63.array(sdkFieldSelectOptionSchema).optional()
78183
78455
  });
78184
- var sdkBlockFieldOptionsMapSchema = z62.record(
78185
- z62.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
78456
+ var sdkBlockFieldOptionsMapSchema = z63.record(
78457
+ z63.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
78186
78458
  message: "Block ID must be 'block.*' or 'custom.*' format"
78187
78459
  }),
78188
- z62.record(z62.string().min(1), sdkBlockFieldConfigSchema)
78460
+ z63.record(z63.string().min(1), sdkBlockFieldConfigSchema)
78189
78461
  ).optional();
78190
- var sdkContentTypeTemplateConfigSchema = z62.object({
78191
- blocks: z62.array(z62.unknown())
78462
+ var sdkContentTypeTemplateConfigSchema = z63.object({
78463
+ blocks: z63.array(z63.unknown())
78192
78464
  }).passthrough();
78193
- var sdkContentTypeConfigSchema = z62.object({
78194
- key: z62.string().min(1),
78195
- fields: z62.array(z62.unknown()),
78465
+ var sdkContentTypeConfigSchema = z63.object({
78466
+ key: z63.string().min(1),
78467
+ fields: z63.array(z63.unknown()),
78196
78468
  template: sdkContentTypeTemplateConfigSchema.nullable().optional()
78197
78469
  }).passthrough();
78198
- var sdkContentConfigSchema = z62.object({
78199
- contentTypes: z62.array(sdkContentTypeConfigSchema).optional(),
78200
- pages: z62.array(z62.unknown()).optional(),
78201
- entries: z62.array(z62.unknown()).optional(),
78202
- navigationMenus: z62.array(z62.unknown()).optional(),
78203
- settings: z62.unknown().optional()
78470
+ var sdkContentConfigSchema = z63.object({
78471
+ contentTypes: z63.array(sdkContentTypeConfigSchema).optional(),
78472
+ pages: z63.array(z63.unknown()).optional(),
78473
+ entries: z63.array(z63.unknown()).optional(),
78474
+ navigationMenus: z63.array(z63.unknown()).optional(),
78475
+ settings: z63.unknown().optional()
78204
78476
  }).passthrough();
78205
78477
  var SDK_WORKFLOW_ID_MAX_LENGTH = 120;
78206
78478
  var SDK_WORKFLOW_TITLE_MAX_LENGTH = 120;
@@ -78213,41 +78485,41 @@ var SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH = 120;
78213
78485
  var SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH = 500;
78214
78486
  var SDK_WORKFLOW_ID_PATTERN = /^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/;
78215
78487
  var SDK_WORKFLOW_ENDPOINT_PATTERN = /^\//;
78216
- var sdkWorkflowIdSchema = z62.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
78488
+ var sdkWorkflowIdSchema = z63.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
78217
78489
  message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
78218
78490
  });
78219
- var sdkWorkflowEndpointSchema = z62.string().min(1).max(SDK_WORKFLOW_ENDPOINT_MAX_LENGTH).regex(SDK_WORKFLOW_ENDPOINT_PATTERN, { message: 'Workflow endpoint must be a site-relative path starting with "/"' });
78220
- var sdkWorkflowManualTriggerSchema = z62.object({
78221
- type: z62.literal("manual")
78491
+ var sdkWorkflowEndpointSchema = z63.string().min(1).max(SDK_WORKFLOW_ENDPOINT_MAX_LENGTH).regex(SDK_WORKFLOW_ENDPOINT_PATTERN, { message: 'Workflow endpoint must be a site-relative path starting with "/"' });
78492
+ var sdkWorkflowManualTriggerSchema = z63.object({
78493
+ type: z63.literal("manual")
78222
78494
  }).strict();
78223
- var sdkWorkflowTriggerSchema = z62.discriminatedUnion("type", [
78495
+ var sdkWorkflowTriggerSchema = z63.discriminatedUnion("type", [
78224
78496
  sdkWorkflowManualTriggerSchema
78225
78497
  ]);
78226
- var sdkWorkflowConfirmationSchema = z62.object({
78227
- title: z62.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
78228
- body: z62.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
78498
+ var sdkWorkflowConfirmationSchema = z63.object({
78499
+ title: z63.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
78500
+ body: z63.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
78229
78501
  }).strict();
78230
- var sdkWorkflowConfigSchema = z62.object({
78502
+ var sdkWorkflowConfigSchema = z63.object({
78231
78503
  id: sdkWorkflowIdSchema,
78232
- title: z62.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
78233
- description: z62.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
78234
- contentType: z62.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
78504
+ title: z63.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
78505
+ description: z63.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
78506
+ contentType: z63.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
78235
78507
  endpoint: sdkWorkflowEndpointSchema,
78236
- triggers: z62.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
78508
+ triggers: z63.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
78237
78509
  confirmation: sdkWorkflowConfirmationSchema.optional()
78238
78510
  }).strict();
78239
- var sdkWorkflowsSchema = z62.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
78511
+ var sdkWorkflowsSchema = z63.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
78240
78512
  const ids = workflows.map((workflow) => workflow.id);
78241
78513
  return ids.length === new Set(ids).size;
78242
78514
  }, { message: "Workflow IDs must be unique" }).optional();
78243
- var riverbankSiteConfigInputSchema = z62.object({
78244
- siteId: z62.string().uuid(),
78245
- previewUrl: z62.string().url().optional(),
78246
- liveUrl: z62.string().url().optional(),
78515
+ var riverbankSiteConfigInputSchema = z63.object({
78516
+ siteId: z63.string().uuid(),
78517
+ previewUrl: z63.string().url().optional(),
78518
+ liveUrl: z63.string().url().optional(),
78247
78519
  theme: sdkThemeConfigSchema.optional(),
78248
78520
  styles: sdkSiteStyleConfigSchema.optional(),
78249
78521
  layout: sdkSiteLayoutConfigSchema.optional(),
78250
- customBlocks: z62.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
78522
+ customBlocks: z63.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
78251
78523
  const ids = blocks.map((b2) => b2.id);
78252
78524
  return ids.length === new Set(ids).size;
78253
78525
  }, { message: "Block IDs must be unique" }).optional(),
@@ -78255,43 +78527,43 @@ var riverbankSiteConfigInputSchema = z62.object({
78255
78527
  blockFieldExtensions: sdkBlockFieldExtensionsInputSchema.optional(),
78256
78528
  workflows: sdkWorkflowsSchema,
78257
78529
  content: sdkContentConfigSchema.optional(),
78258
- contentDir: z62.string().optional(),
78259
- sync: z62.object({
78260
- existingEntries: z62.enum(["skip", "update"]).optional()
78530
+ contentDir: z63.string().optional(),
78531
+ sync: z63.object({
78532
+ existingEntries: z63.enum(["skip", "update"]).optional()
78261
78533
  }).optional(),
78262
- deploy: z62.object({
78263
- verifyCommand: z62.string().optional(),
78264
- prebuildOutput: z62.string().optional()
78534
+ deploy: z63.object({
78535
+ verifyCommand: z63.string().optional(),
78536
+ prebuildOutput: z63.string().optional()
78265
78537
  }).optional(),
78266
- themeSource: z62.enum(["local", "cms"]).optional(),
78267
- activeTheme: z62.string().optional(),
78268
- enablePortal: z62.boolean().optional(),
78538
+ themeSource: z63.enum(["local", "cms"]).optional(),
78539
+ activeTheme: z63.string().optional(),
78540
+ enablePortal: z63.boolean().optional(),
78269
78541
  dashboard: dashboardConfigSchema.optional()
78270
78542
  }).strict();
78271
- var pushSdkConfigBodySchema = z62.object({
78543
+ var pushSdkConfigBodySchema = z63.object({
78272
78544
  config: riverbankSiteConfigInputSchema,
78273
- forceContentTypes: z62.boolean().optional()
78545
+ forceContentTypes: z63.boolean().optional()
78274
78546
  }).strict();
78275
78547
 
78276
78548
  // ../api/src/siteOnboarding.ts
78277
- import { z as z63 } from "zod";
78549
+ import { z as z64 } from "zod";
78278
78550
  var LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS = {
78279
78551
  configure_appointments: {
78280
78552
  requirementId: "configure_appointments",
78281
78553
  reason: "launch_anyway"
78282
78554
  }
78283
78555
  };
78284
- var acknowledgeLaunchRequirementRequestSchema = z63.discriminatedUnion(
78556
+ var acknowledgeLaunchRequirementRequestSchema = z64.discriminatedUnion(
78285
78557
  "requirementId",
78286
78558
  [
78287
- z63.object({
78288
- requirementId: z63.literal("review_generated_site")
78559
+ z64.object({
78560
+ requirementId: z64.literal("review_generated_site")
78289
78561
  }),
78290
- z63.object({
78291
- requirementId: z63.literal(
78562
+ z64.object({
78563
+ requirementId: z64.literal(
78292
78564
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.requirementId
78293
78565
  ),
78294
- overrideReason: z63.literal(
78566
+ overrideReason: z64.literal(
78295
78567
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.reason
78296
78568
  )
78297
78569
  })
@@ -78467,79 +78739,79 @@ function isRecord4(value) {
78467
78739
  }
78468
78740
 
78469
78741
  // ../api/src/appointmentSetup.ts
78470
- import { z as z64 } from "zod";
78471
- var appointmentSetupRefSchema = z64.discriminatedUnion("kind", [
78472
- z64.object({ kind: z64.literal("existing"), id: z64.string().min(1) }),
78473
- z64.object({ kind: z64.literal("new"), draftId: z64.string().min(1) })
78742
+ import { z as z65 } from "zod";
78743
+ var appointmentSetupRefSchema = z65.discriminatedUnion("kind", [
78744
+ z65.object({ kind: z65.literal("existing"), id: z65.string().min(1) }),
78745
+ z65.object({ kind: z65.literal("new"), draftId: z65.string().min(1) })
78474
78746
  ]);
78475
- var appointmentSetupVenueChoiceSchema = z64.discriminatedUnion("kind", [
78476
- z64.object({ kind: z64.literal("none") }),
78477
- z64.object({ kind: z64.literal("existing"), venueId: z64.string().min(1) }),
78478
- z64.object({
78479
- kind: z64.literal("create"),
78480
- draftId: z64.string().min(1),
78481
- title: z64.string().trim().min(1),
78482
- description: z64.string().nullable(),
78483
- timezone: z64.string().trim().min(1).nullable(),
78484
- addressJson: z64.record(z64.string(), z64.unknown()),
78485
- locationJson: z64.object({ lat: z64.number(), lng: z64.number() }).nullable()
78747
+ var appointmentSetupVenueChoiceSchema = z65.discriminatedUnion("kind", [
78748
+ z65.object({ kind: z65.literal("none") }),
78749
+ z65.object({ kind: z65.literal("existing"), venueId: z65.string().min(1) }),
78750
+ z65.object({
78751
+ kind: z65.literal("create"),
78752
+ draftId: z65.string().min(1),
78753
+ title: z65.string().trim().min(1),
78754
+ description: z65.string().nullable(),
78755
+ timezone: z65.string().trim().min(1).nullable(),
78756
+ addressJson: z65.record(z65.string(), z65.unknown()),
78757
+ locationJson: z65.object({ lat: z65.number(), lng: z65.number() }).nullable()
78486
78758
  })
78487
78759
  ]);
78488
- var appointmentSetupPaymentDraftSchema = z64.object({
78489
- priceType: z64.union([z64.literal("free"), z64.literal("paid")])
78490
- });
78491
- var appointmentSetupServiceAssignmentDraftSchema = z64.discriminatedUnion("kind", [
78492
- z64.object({ kind: z64.literal("all_practitioners") }),
78493
- z64.object({
78494
- kind: z64.literal("selected_practitioners"),
78495
- resourceRefs: z64.array(appointmentSetupRefSchema)
78760
+ var appointmentSetupPaymentDraftSchema = z65.object({
78761
+ priceType: z65.union([z65.literal("free"), z65.literal("paid")])
78762
+ });
78763
+ var appointmentSetupServiceAssignmentDraftSchema = z65.discriminatedUnion("kind", [
78764
+ z65.object({ kind: z65.literal("all_practitioners") }),
78765
+ z65.object({
78766
+ kind: z65.literal("selected_practitioners"),
78767
+ resourceRefs: z65.array(appointmentSetupRefSchema)
78496
78768
  })
78497
78769
  ]);
78498
- var appointmentSetupServiceDraftSchema = z64.object({
78770
+ var appointmentSetupServiceDraftSchema = z65.object({
78499
78771
  ref: appointmentSetupRefSchema,
78500
- title: z64.string().trim().min(1),
78501
- description: z64.string().nullable(),
78502
- durationMinutes: z64.number().int().positive(),
78503
- priceAmount: z64.number().int().nonnegative().nullable(),
78504
- isActive: z64.boolean(),
78505
- locationType: z64.union([
78506
- z64.literal("virtual"),
78507
- z64.literal("in_person"),
78508
- z64.literal("hybrid")
78772
+ title: z65.string().trim().min(1),
78773
+ description: z65.string().nullable(),
78774
+ durationMinutes: z65.number().int().positive(),
78775
+ priceAmount: z65.number().int().nonnegative().nullable(),
78776
+ isActive: z65.boolean(),
78777
+ locationType: z65.union([
78778
+ z65.literal("virtual"),
78779
+ z65.literal("in_person"),
78780
+ z65.literal("hybrid")
78509
78781
  ]),
78510
78782
  venue: appointmentSetupVenueChoiceSchema,
78511
- timezone: z64.string().trim().min(1).nullable(),
78783
+ timezone: z65.string().trim().min(1).nullable(),
78512
78784
  payment: appointmentSetupPaymentDraftSchema,
78513
78785
  assignment: appointmentSetupServiceAssignmentDraftSchema
78514
78786
  });
78515
- var appointmentSetupPractitionerDraftSchema = z64.object({
78787
+ var appointmentSetupPractitionerDraftSchema = z65.object({
78516
78788
  ref: appointmentSetupRefSchema,
78517
- displayName: z64.string().trim().min(1),
78518
- bio: z64.string().nullable(),
78519
- timezone: z64.string().trim().min(1),
78520
- colorHex: z64.string().nullable()
78521
- });
78522
- var appointmentSetupWeeklyWindowDraftSchema = z64.object({
78523
- weekday: z64.number().int().min(0).max(6),
78524
- startTime: z64.string(),
78525
- endTime: z64.string()
78526
- });
78527
- var appointmentSetupAvailabilityDraftSchema = z64.object({
78528
- kind: z64.literal("weekly_windows"),
78789
+ displayName: z65.string().trim().min(1),
78790
+ bio: z65.string().nullable(),
78791
+ timezone: z65.string().trim().min(1),
78792
+ colorHex: z65.string().nullable()
78793
+ });
78794
+ var appointmentSetupWeeklyWindowDraftSchema = z65.object({
78795
+ weekday: z65.number().int().min(0).max(6),
78796
+ startTime: z65.string(),
78797
+ endTime: z65.string()
78798
+ });
78799
+ var appointmentSetupAvailabilityDraftSchema = z65.object({
78800
+ kind: z65.literal("weekly_windows"),
78529
78801
  resourceRef: appointmentSetupRefSchema,
78530
78802
  serviceRef: appointmentSetupRefSchema.nullable(),
78531
- windows: z64.array(appointmentSetupWeeklyWindowDraftSchema)
78803
+ windows: z65.array(appointmentSetupWeeklyWindowDraftSchema)
78532
78804
  });
78533
78805
  var APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
78534
78806
  var APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
78535
- var appointmentSetupBookingNoticeSchema = z64.object({
78536
- minLeadMinutes: z64.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
78537
- maxBookingNoticeMinutes: z64.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
78538
- });
78539
- var applyAppointmentSetupRequestSchema = z64.object({
78540
- services: z64.array(appointmentSetupServiceDraftSchema),
78541
- practitioners: z64.array(appointmentSetupPractitionerDraftSchema),
78542
- availability: z64.array(appointmentSetupAvailabilityDraftSchema),
78807
+ var appointmentSetupBookingNoticeSchema = z65.object({
78808
+ minLeadMinutes: z65.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
78809
+ maxBookingNoticeMinutes: z65.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
78810
+ });
78811
+ var applyAppointmentSetupRequestSchema = z65.object({
78812
+ services: z65.array(appointmentSetupServiceDraftSchema),
78813
+ practitioners: z65.array(appointmentSetupPractitionerDraftSchema),
78814
+ availability: z65.array(appointmentSetupAvailabilityDraftSchema),
78543
78815
  bookingNotice: appointmentSetupBookingNoticeSchema
78544
78816
  });
78545
78817
 
@@ -78558,24 +78830,24 @@ var STAFF_CANCELLATION_CONTEXT_CATEGORIES = [
78558
78830
  ];
78559
78831
 
78560
78832
  // ../api/src/siteBanner.ts
78561
- import { z as z65 } from "zod";
78833
+ import { z as z66 } from "zod";
78562
78834
  var SITE_BANNER_SCOPE_VALUES = ["homepage", "all-pages"];
78563
78835
  var SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
78564
78836
  var SITE_BANNER_MAX_TEXT_LENGTH = 320;
78565
78837
  var SITE_BANNER_MAX_PARAGRAPHS = 2;
78566
- var siteBannerScopeSchema = z65.enum(SITE_BANNER_SCOPE_VALUES);
78567
- var siteBannerToneSchema = z65.enum(SITE_BANNER_TONE_VALUES);
78568
- var siteBannerBodySchema = z65.unknown().transform(unwrapRichTextValue);
78569
- var siteBannerCtaSchema = z65.object({
78570
- label: z65.string().trim().min(1),
78838
+ var siteBannerScopeSchema = z66.enum(SITE_BANNER_SCOPE_VALUES);
78839
+ var siteBannerToneSchema = z66.enum(SITE_BANNER_TONE_VALUES);
78840
+ var siteBannerBodySchema = z66.unknown().transform(unwrapRichTextValue);
78841
+ var siteBannerCtaSchema = z66.object({
78842
+ label: z66.string().trim().min(1),
78571
78843
  link: linkPayloadSchema
78572
78844
  });
78573
- var siteBannerSettingsSchema = z65.discriminatedUnion("enabled", [
78574
- z65.object({
78575
- enabled: z65.literal(false)
78845
+ var siteBannerSettingsSchema = z66.discriminatedUnion("enabled", [
78846
+ z66.object({
78847
+ enabled: z66.literal(false)
78576
78848
  }),
78577
- z65.object({
78578
- enabled: z65.literal(true),
78849
+ z66.object({
78850
+ enabled: z66.literal(true),
78579
78851
  scope: siteBannerScopeSchema,
78580
78852
  tone: siteBannerToneSchema,
78581
78853
  body: siteBannerBodySchema,
@@ -78589,7 +78861,7 @@ var siteBannerSettingsInputSchema = siteBannerSettingsSchema.superRefine((value,
78589
78861
  const analysis = analyzeSiteBannerBody(value.body);
78590
78862
  for (const issue of analysis.issues) {
78591
78863
  ctx.addIssue({
78592
- code: z65.ZodIssueCode.custom,
78864
+ code: z66.ZodIssueCode.custom,
78593
78865
  path: ["body"],
78594
78866
  message: siteBannerBodyIssueMessage(issue)
78595
78867
  });
@@ -78813,71 +79085,71 @@ function parsePublicProductCategorySelector(value) {
78813
79085
  }
78814
79086
 
78815
79087
  // ../api/src/aiPlayground.ts
78816
- import { z as z66 } from "zod";
78817
- var Rfc6902PatchOp = z66.discriminatedUnion("op", [
79088
+ import { z as z67 } from "zod";
79089
+ var Rfc6902PatchOp = z67.discriminatedUnion("op", [
78818
79090
  // Standard RFC-6902 operations
78819
- z66.object({
78820
- op: z66.literal("add"),
78821
- path: z66.string(),
78822
- value: z66.unknown()
79091
+ z67.object({
79092
+ op: z67.literal("add"),
79093
+ path: z67.string(),
79094
+ value: z67.unknown()
78823
79095
  }),
78824
- z66.object({
78825
- op: z66.literal("remove"),
78826
- path: z66.string()
79096
+ z67.object({
79097
+ op: z67.literal("remove"),
79098
+ path: z67.string()
78827
79099
  }),
78828
- z66.object({
78829
- op: z66.literal("replace"),
78830
- path: z66.string(),
78831
- value: z66.unknown()
79100
+ z67.object({
79101
+ op: z67.literal("replace"),
79102
+ path: z67.string(),
79103
+ value: z67.unknown()
78832
79104
  }),
78833
- z66.object({
78834
- op: z66.literal("move"),
78835
- from: z66.string(),
78836
- path: z66.string()
79105
+ z67.object({
79106
+ op: z67.literal("move"),
79107
+ from: z67.string(),
79108
+ path: z67.string()
78837
79109
  }),
78838
- z66.object({
78839
- op: z66.literal("copy"),
78840
- from: z66.string(),
78841
- path: z66.string()
79110
+ z67.object({
79111
+ op: z67.literal("copy"),
79112
+ from: z67.string(),
79113
+ path: z67.string()
78842
79114
  }),
78843
79115
  // Block-level operations (Phase 2)
78844
- z66.object({
78845
- op: z66.literal("add_block"),
78846
- blockKind: z66.string(),
78847
- afterBlockId: z66.string().nullable(),
78848
- content: z66.record(z66.string(), z66.unknown()),
78849
- rationale: z66.string()
79116
+ z67.object({
79117
+ op: z67.literal("add_block"),
79118
+ blockKind: z67.string(),
79119
+ afterBlockId: z67.string().nullable(),
79120
+ content: z67.record(z67.string(), z67.unknown()),
79121
+ rationale: z67.string()
78850
79122
  }),
78851
- z66.object({
78852
- op: z66.literal("delete_block"),
78853
- blockId: z66.string(),
78854
- rationale: z66.string()
79123
+ z67.object({
79124
+ op: z67.literal("delete_block"),
79125
+ blockId: z67.string(),
79126
+ rationale: z67.string()
78855
79127
  }),
78856
- z66.object({
78857
- op: z66.literal("reorder_block"),
78858
- blockId: z66.string(),
78859
- afterBlockId: z66.string().nullable(),
78860
- rationale: z66.string()
79128
+ z67.object({
79129
+ op: z67.literal("reorder_block"),
79130
+ blockId: z67.string(),
79131
+ afterBlockId: z67.string().nullable(),
79132
+ rationale: z67.string()
78861
79133
  })
78862
79134
  ]);
78863
- var PlaygroundProposeRequest = z66.object({
78864
- request: z66.string().min(1).max(2e3)
79135
+ var PlaygroundProposeRequest = z67.object({
79136
+ request: z67.string().min(1).max(2e3)
78865
79137
  });
78866
- var MultiPagePatchEnvelope = z66.object({
78867
- pageId: z66.string(),
78868
- blockId: z66.string().optional(),
79138
+ var MultiPagePatchEnvelope = z67.object({
79139
+ pageId: z67.string(),
79140
+ blockId: z67.string().optional(),
78869
79141
  // Not present for page-level ops
78870
- blockKind: z66.string().optional(),
78871
- blockPurpose: z66.string().optional().nullable(),
78872
- ops: z66.array(Rfc6902PatchOp),
78873
- rationale: z66.string(),
78874
- currentContent: z66.record(z66.string(), z66.unknown()).optional()
79142
+ blockKind: z67.string().optional(),
79143
+ blockPurpose: z67.string().optional().nullable(),
79144
+ ops: z67.array(Rfc6902PatchOp),
79145
+ rationale: z67.string(),
79146
+ currentContent: z67.record(z67.string(), z67.unknown()).optional()
78875
79147
  });
78876
- var MultiPageUpdateResponse = z66.object({
78877
- patches: z66.array(MultiPagePatchEnvelope),
78878
- assistantMessage: z66.string(),
78879
- pagesModified: z66.number(),
78880
- toolCallsUsed: z66.number()
79148
+ var MultiPageUpdateResponse = z67.object({
79149
+ patches: z67.array(MultiPagePatchEnvelope),
79150
+ assistantMessage: z67.string(),
79151
+ pagesModified: z67.number(),
79152
+ toolCallsUsed: z67.number()
78881
79153
  });
78882
79154
 
78883
79155
  // src/data/prefetchBlockData.ts
@@ -78886,6 +79158,7 @@ var SUPPORTED_LOADER_ENDPOINTS2 = [
78886
79158
  "getPublishedEntryPreview",
78887
79159
  "listPublicEvents",
78888
79160
  "listPublicCourses",
79161
+ "listPublicTeamMembers",
78889
79162
  "listPublicProducts",
78890
79163
  "listPublicPasses",
78891
79164
  "listPublicMemberships",
@@ -79050,6 +79323,16 @@ async function prefetchBlockData2(page, context, client, options) {
79050
79323
  const parsedLimit = typeof limit === "string" ? Number.parseInt(limit, 10) : typeof limit === "number" ? limit : void 0;
79051
79324
  return await client.listPublicCourses({ siteId, limit: parsedLimit, stage });
79052
79325
  }
79326
+ case "listPublicTeamMembers": {
79327
+ const { siteId, stage } = resolvedParams ?? {};
79328
+ if (!siteId) {
79329
+ throw new Error("listPublicTeamMembers requires siteId param");
79330
+ }
79331
+ return await client.listPublicTeamMembers({
79332
+ siteId,
79333
+ stage: typeof stage === "string" ? stage : void 0
79334
+ });
79335
+ }
79053
79336
  case "listPublicProducts": {
79054
79337
  const { siteId, stage, categorySelector } = resolvedParams ?? {};
79055
79338
  if (!siteId) {