@riverbankcms/sdk 0.141.0 → 0.142.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/{PreviewEditorSidebar-Q-fy9GYw.mjs → PreviewEditorSidebar-Dk6Dt11f.mjs} +24 -15
  2. package/dist/{PreviewEditorUI-LYGzgk85.mjs → PreviewEditorUI-D6EQTsCA.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-CN0ewic5.mjs → PreviewQueryProvider-CC-EPkyQ.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-CoPYI5Jq.mjs → SdkPreviewModeRuntime-DH1n4ytY.mjs} +16 -11
  5. package/dist/{SiteChromeCustomizeContext-D8LePX8x.mjs → SiteChromeCustomizeContext-DunIzY0K.mjs} +117 -21
  6. package/dist/_dts/api/src/billing.d.ts +6 -1
  7. package/dist/_dts/api/src/bookingConfig.d.ts +1 -1
  8. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
  9. package/dist/_dts/api/src/endpoints.d.ts +0 -27
  10. package/dist/_dts/api/src/index.d.ts +1 -1
  11. package/dist/_dts/api/src/publicBookingService.d.ts +1 -0
  12. package/dist/_dts/api/src/sdkConfig/layout.d.ts +13 -0
  13. package/dist/_dts/api/src/sdkContracts.d.ts +3 -8
  14. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -31
  15. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
  16. package/dist/_dts/billing/src/site-arrangements.d.ts +9 -5
  17. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +56 -0
  18. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +8 -0
  19. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +56 -0
  20. package/dist/_dts/commerce/src/purchase/stripeCommissionMetadata.d.ts +1 -2
  21. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3099 -3122
  22. package/dist/_dts/editor-blocks/src/block-editor/ColourFieldOptionsProvider.d.ts +7 -0
  23. package/dist/_dts/editor-blocks/src/block-editor/colourFieldVisibility.d.ts +7 -0
  24. package/dist/_dts/editor-blocks/src/block-editor/preparedManifest.d.ts +2 -0
  25. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  26. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -2
  27. package/dist/_dts/preview-next/src/client/preview/PreviewFooterEditorPanel.d.ts +3 -6
  28. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -2
  29. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -2
  30. package/dist/_dts/preview-next/src/client/preview/footerInspection.d.ts +16 -0
  31. package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +6 -0
  32. package/dist/_dts/sdk/src/config/types.d.ts +2 -18
  33. package/dist/_dts/sdk/src/config/validation.d.ts +6 -0
  34. package/dist/_dts/sdk/src/public-api/contracts.d.ts +3 -0
  35. package/dist/_dts/sdk/src/version.d.ts +1 -1
  36. package/dist/_dts/theme-core/src/footer/mode.d.ts +10 -1
  37. package/dist/_dts/theme-core/src/schema.d.ts +1 -7
  38. package/dist/_dts/theme-core/src/site-styles/effectivePageDesign.d.ts +32 -0
  39. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  40. package/dist/client/{BookingConsentAgreement-xJeYNdnb.mjs → BookingConsentAgreement-CnJeq3_r.mjs} +2 -2
  41. package/dist/client/{DiscountCodeDisclosure-DdT6uzl9.mjs → DiscountCodeDisclosure-BINEO6J9.mjs} +1 -1
  42. package/dist/client/{EventCombined.client-Cp28uYuM.mjs → EventCombined.client-srxNQ6sZ.mjs} +5 -5
  43. package/dist/client/{EventListing.client-CD6AJsMr.mjs → EventListing.client-DbyVyGkX.mjs} +2 -2
  44. package/dist/client/{LeafletStaticMap-DBsAi9-e.mjs → LeafletStaticMap-B-wpijzL.mjs} +1 -1
  45. package/dist/client/{accordion-6dwbOKYR.mjs → accordion-B-iUXU7n.mjs} +1 -1
  46. package/dist/client/{bookingForm-CZE9_qPQ.mjs → bookingForm-BXYPke5q.mjs} +5 -5
  47. package/dist/client/bookings.mjs +19 -9
  48. package/dist/client/{carousel-7VHGQARz.mjs → carousel-Cr4aj63H.mjs} +1 -1
  49. package/dist/client/{cart-Qg_mvQhh.mjs → cart-DibP9WWa.mjs} +3 -3
  50. package/dist/client/{checkout-D84rpgdr.mjs → checkout-CrSBVnL8.mjs} +3 -3
  51. package/dist/client/client.mjs +42 -54
  52. package/dist/client/{context-Ctp3T0Wr.mjs → context-Ces-AgdR.mjs} +1 -1
  53. package/dist/client/{dates-DJKFcI_N.mjs → dates-BXyNeNhB.mjs} +2 -2
  54. package/dist/client/{eventCalendar-CK31z3vs.mjs → eventCalendar-HwpPeqrH.mjs} +7 -7
  55. package/dist/client/{eventCombined-DiXd-ewn.mjs → eventCombined-BpFUkuEI.mjs} +3 -3
  56. package/dist/client/{eventDetails-CTRgt2DK.mjs → eventDetails-DK_agiWy.mjs} +4 -4
  57. package/dist/client/{eventListing-Dy9vi_j_.mjs → eventListing-DhzHqP1c.mjs} +3 -3
  58. package/dist/client/{eventRegistration-CnalYMr2.mjs → eventRegistration-BdQ_Dn2d.mjs} +6 -7
  59. package/dist/client/{form-eUiMveTT.mjs → form-B1frcuzy.mjs} +2 -2
  60. package/dist/client/{headerSection-Dy9kQpB1.mjs → headerSection-CT5z460s.mjs} +2 -2
  61. package/dist/client/hooks.mjs +27 -13
  62. package/dist/client/{locationMap-DalCmWU0.mjs → locationMap-CIQXB9i2.mjs} +2 -2
  63. package/dist/client/{newsletterForm-SDDPvhS0.mjs → newsletterForm-BYNYZSes.mjs} +2 -2
  64. package/dist/client/{pricing-OcMz4SnX.mjs → pricing-CbTlAsmt.mjs} +1 -1
  65. package/dist/client/{productDetail-BQrgHElM.mjs → productDetail-CR7Z3yjS.mjs} +3 -3
  66. package/dist/client/{productList-OnPn_UJj.mjs → productList-DXj00vzR.mjs} +3 -3
  67. package/dist/client/{propsDecoder-zBdsnS-N.mjs → propsDecoder-DiLiBdek.mjs} +19 -8
  68. package/dist/client/rendering/client.mjs +30 -11
  69. package/dist/client/rendering/islands.mjs +17 -17
  70. package/dist/client/rendering.mjs +85 -57
  71. package/dist/client/{scrollToBlock-BNM4Ob2Y.mjs → scrollToBlock-CrcbBf0h.mjs} +1 -1
  72. package/dist/client/{shop-Bv1fPTwQ.mjs → shop-DgqiB_1b.mjs} +6 -6
  73. package/dist/client/{shop-commerce-D4KNGaW8.mjs → shop-commerce-D_J781in.mjs} +5 -5
  74. package/dist/client/{shop-commerce-store-2N5EV0Rc.mjs → shop-commerce-store-PGUbDwqe.mjs} +1 -1
  75. package/dist/client/{shopShared-DvJGdHTV.mjs → shopShared-C_Bb2zwG.mjs} +3 -3
  76. package/dist/client/{useEventFilters-BBBvGDHQ.mjs → useEventFilters-CM17Xpr1.mjs} +5 -5
  77. package/dist/preview-next/before-render.mjs +0 -37
  78. package/dist/preview-next/client/runtime.mjs +4 -4
  79. package/dist/preview-next/keepAlive.mjs +0 -37
  80. package/dist/preview-next/middleware.mjs +0 -37
  81. package/dist/{previewAuthStore-Gjb6r6vz.mjs → previewAuthStore-oVttoRDO.mjs} +0 -37
  82. package/dist/{sdk-runtime-Defnbfzw.mjs → sdk-runtime-DhmuRhIX.mjs} +2 -2
  83. package/dist/{separator-CZXO3Sb0.mjs → separator-C3hlg9LH.mjs} +1 -1
  84. package/dist/server/components.mjs +68 -49
  85. package/dist/server/config-validation.mjs +31 -14
  86. package/dist/server/config.mjs +31 -14
  87. package/dist/server/data.mjs +27 -13
  88. package/dist/server/index.mjs +1 -38
  89. package/dist/server/next.mjs +28 -51
  90. package/dist/server/page-converter.mjs +19 -8
  91. package/dist/server/prebuild.mjs +1 -1
  92. package/dist/server/rendering/server.mjs +68 -51
  93. package/dist/server/rendering.mjs +68 -49
  94. package/dist/server/routing.mjs +40 -17
  95. package/dist/server/server.mjs +28 -51
  96. package/dist/server/theme-bridge.mjs +10 -8
  97. package/dist/server/theme.mjs +10 -8
  98. package/package.json +1 -1
@@ -12662,6 +12662,54 @@ function defaultTypographyForRecipe(recipe) {
12662
12662
  case "classic-serif": return classicSerifTypography;
12663
12663
  }
12664
12664
  }
12665
+ //#endregion
12666
+ //#region ../theme-core/src/footer/mode.ts
12667
+ const footerModeSchema = z$1.enum([
12668
+ "default",
12669
+ "blocks",
12670
+ "default+blocks",
12671
+ "none"
12672
+ ]);
12673
+ /** Reads only SDK footer intent; unrelated config and theme fields are not authorities. */
12674
+ function resolveSdkFooterMode(config) {
12675
+ const parsed = z$1.object({ layout: z$1.object({ footerMode: footerModeSchema.optional() }).optional() }).safeParse(config);
12676
+ return parsed.success ? parsed.data.layout?.footerMode ?? "default" : "default";
12677
+ }
12678
+ /**
12679
+ * Resolve what to render for the footer given the current mode and whether the
12680
+ * site is SDK-managed.
12681
+ *
12682
+ * Backwards compatible: missing/undefined mode is treated as 'default'.
12683
+ */
12684
+ function resolveFooterRenderPlan(params) {
12685
+ if (!params.isSdkSite) return {
12686
+ mode: "default",
12687
+ renderDefaultFooter: true,
12688
+ renderFooterBlocks: false
12689
+ };
12690
+ switch (params.mode ?? "default") {
12691
+ case "blocks": return {
12692
+ mode: "blocks",
12693
+ renderDefaultFooter: false,
12694
+ renderFooterBlocks: true
12695
+ };
12696
+ case "default+blocks": return {
12697
+ mode: "default+blocks",
12698
+ renderDefaultFooter: true,
12699
+ renderFooterBlocks: true
12700
+ };
12701
+ case "none": return {
12702
+ mode: "none",
12703
+ renderDefaultFooter: false,
12704
+ renderFooterBlocks: false
12705
+ };
12706
+ default: return {
12707
+ mode: "default",
12708
+ renderDefaultFooter: true,
12709
+ renderFooterBlocks: false
12710
+ };
12711
+ }
12712
+ }
12665
12713
  const hotspotSchema = z$1.object({
12666
12714
  x: z$1.number().min(0).max(1),
12667
12715
  y: z$1.number().min(0).max(1),
@@ -17780,12 +17828,6 @@ const footerVariant = z$1.enum([
17780
17828
  "split"
17781
17829
  ]);
17782
17830
  const footerMaxWidth = z$1.enum(["container", "full"]);
17783
- const footerMode = z$1.enum([
17784
- "default",
17785
- "blocks",
17786
- "default+blocks",
17787
- "none"
17788
- ]);
17789
17831
  const footerNavLayoutMode = z$1.enum([
17790
17832
  "stack",
17791
17833
  "inline",
@@ -17874,9 +17916,9 @@ const footerSchema = z$1.object({
17874
17916
  /**
17875
17917
  * SDK-only footer rendering mode.
17876
17918
  *
17877
- * Backwards compatible: missing/undefined behaves as 'default'.
17919
+ * Historical persisted field; SDK rendering mode now lives in layout.footerMode.
17878
17920
  */
17879
- mode: footerMode.optional(),
17921
+ mode: footerModeSchema.optional(),
17880
17922
  variant: footerVariant,
17881
17923
  maxWidth: footerMaxWidth,
17882
17924
  showLogoText: z$1.boolean().optional(),
@@ -27973,6 +28015,15 @@ const publicEventBaseSchema = z$1.object({
27973
28015
  timeZone: z$1.string(),
27974
28016
  pricing: publicEventPricingSchema,
27975
28017
  paymentTerms: blockBookingPaymentTermsSchema,
28018
+ cancellationPolicy: z$1.object({ refunds: z$1.object({
28019
+ mode: z$1.enum([
28020
+ "never",
28021
+ "always",
28022
+ "cutoff"
28023
+ ]),
28024
+ cutoffHours: z$1.number(),
28025
+ method: z$1.enum(["original_payment_method", "site_credit"])
28026
+ }) }),
27976
28027
  consent: blockBookingConsentSchema.nullable(),
27977
28028
  accessRestriction: accessRestrictionSchema,
27978
28029
  allowedCategoryIds: z$1.array(z$1.string()),
@@ -72340,41 +72391,6 @@ function ThemeScope$1({ theme, children, themeId = "theme-default", responsiveMo
72340
72391
  children
72341
72392
  });
72342
72393
  }
72343
- /**
72344
- * Resolve what to render for the footer given the current mode and whether the
72345
- * site is SDK-managed.
72346
- *
72347
- * Backwards compatible: missing/undefined mode is treated as 'default'.
72348
- */
72349
- function resolveFooterRenderPlan(params) {
72350
- if (!params.isSdkSite) return {
72351
- mode: "default",
72352
- renderDefaultFooter: true,
72353
- renderFooterBlocks: false
72354
- };
72355
- switch (params.mode ?? "default") {
72356
- case "blocks": return {
72357
- mode: "blocks",
72358
- renderDefaultFooter: false,
72359
- renderFooterBlocks: true
72360
- };
72361
- case "default+blocks": return {
72362
- mode: "default+blocks",
72363
- renderDefaultFooter: true,
72364
- renderFooterBlocks: true
72365
- };
72366
- case "none": return {
72367
- mode: "none",
72368
- renderDefaultFooter: false,
72369
- renderFooterBlocks: false
72370
- };
72371
- default: return {
72372
- mode: "default",
72373
- renderDefaultFooter: true,
72374
- renderFooterBlocks: false
72375
- };
72376
- }
72377
- }
72378
72394
  //#endregion
72379
72395
  //#region ../theme-core/src/ResponsiveScope.tsx
72380
72396
  /**
@@ -74773,7 +74789,7 @@ async function Layout(props) {
74773
74789
  if (footer === true) {
74774
74790
  const footerPlan = resolveFooterRenderPlan({
74775
74791
  isSdkSite: Boolean(site.is_sdk_site),
74776
- mode: theme.footer?.mode
74792
+ mode: resolveSdkFooterMode(siteData.sdkConfig)
74777
74793
  });
74778
74794
  const footerBlocksElement = footerPlan.renderFooterBlocks && footerBlocks.length > 0 ? /* @__PURE__ */ jsx(PageRenderer, {
74779
74795
  theme,
@@ -77394,11 +77410,14 @@ const sdkSiteStyleConfigSchema = z$1.object({
77394
77410
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
77395
77411
  containerOptions: sdkContainerOptionsConfigSchema.optional()
77396
77412
  });
77397
- const sdkSiteLayoutConfigSchema = z$1.object({ footerBlocks: z$1.array(z$1.object({
77398
- id: z$1.string().min(1).optional(),
77399
- kind: z$1.string().min(1),
77400
- content: z$1.record(z$1.string(), z$1.unknown()).optional()
77401
- })).optional() });
77413
+ const sdkSiteLayoutConfigSchema = z$1.object({
77414
+ footerMode: footerModeSchema.optional(),
77415
+ footerBlocks: z$1.array(z$1.object({
77416
+ id: z$1.string().min(1).optional(),
77417
+ kind: z$1.string().min(1),
77418
+ content: z$1.record(z$1.string(), z$1.unknown()).optional()
77419
+ })).optional()
77420
+ });
77402
77421
  const sdkFieldSelectOptionSchema = z$1.object({
77403
77422
  value: z$1.string(),
77404
77423
  label: z$1.string()
@@ -1,6 +1,14 @@
1
1
  import { z } from "zod";
2
2
  import "react/jsx-runtime";
3
3
  import "react";
4
+ //#region ../theme-core/src/footer/mode.ts
5
+ const footerModeSchema = z.enum([
6
+ "default",
7
+ "blocks",
8
+ "default+blocks",
9
+ "none"
10
+ ]);
11
+ //#endregion
4
12
  //#region ../api/src/apiEndpointTypes.ts
5
13
  function allowedDemoMutationPolicy() {
6
14
  return {
@@ -10852,12 +10860,6 @@ const footerVariant = z.enum([
10852
10860
  "split"
10853
10861
  ]);
10854
10862
  const footerMaxWidth = z.enum(["container", "full"]);
10855
- const footerMode = z.enum([
10856
- "default",
10857
- "blocks",
10858
- "default+blocks",
10859
- "none"
10860
- ]);
10861
10863
  const footerNavLayoutMode = z.enum([
10862
10864
  "stack",
10863
10865
  "inline",
@@ -10946,9 +10948,9 @@ const footerSchema = z.object({
10946
10948
  /**
10947
10949
  * SDK-only footer rendering mode.
10948
10950
  *
10949
- * Backwards compatible: missing/undefined behaves as 'default'.
10951
+ * Historical persisted field; SDK rendering mode now lives in layout.footerMode.
10950
10952
  */
10951
- mode: footerMode.optional(),
10953
+ mode: footerModeSchema.optional(),
10952
10954
  variant: footerVariant,
10953
10955
  maxWidth: footerMaxWidth,
10954
10956
  showLogoText: z.boolean().optional(),
@@ -27849,6 +27851,15 @@ const publicEventBaseSchema = z.object({
27849
27851
  timeZone: z.string(),
27850
27852
  pricing: publicEventPricingSchema,
27851
27853
  paymentTerms: blockBookingPaymentTermsSchema,
27854
+ cancellationPolicy: z.object({ refunds: z.object({
27855
+ mode: z.enum([
27856
+ "never",
27857
+ "always",
27858
+ "cutoff"
27859
+ ]),
27860
+ cutoffHours: z.number(),
27861
+ method: z.enum(["original_payment_method", "site_credit"])
27862
+ }) }),
27852
27863
  consent: blockBookingConsentSchema.nullable(),
27853
27864
  accessRestriction: accessRestrictionSchema,
27854
27865
  allowedCategoryIds: z.array(z.string()),
@@ -37976,11 +37987,14 @@ const sdkSiteStyleConfigSchema = z.object({
37976
37987
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
37977
37988
  containerOptions: sdkContainerOptionsConfigSchema.optional()
37978
37989
  });
37979
- const sdkSiteLayoutConfigSchema = z.object({ footerBlocks: z.array(z.object({
37980
- id: z.string().min(1).optional(),
37981
- kind: z.string().min(1),
37982
- content: z.record(z.string(), z.unknown()).optional()
37983
- })).optional() });
37990
+ const sdkSiteLayoutConfigSchema = z.object({
37991
+ footerMode: footerModeSchema.optional(),
37992
+ footerBlocks: z.array(z.object({
37993
+ id: z.string().min(1).optional(),
37994
+ kind: z.string().min(1),
37995
+ content: z.record(z.string(), z.unknown()).optional()
37996
+ })).optional()
37997
+ });
37984
37998
  const sdkFieldSelectOptionSchema = z.object({
37985
37999
  value: z.string(),
37986
38000
  label: z.string()
@@ -39890,7 +39904,10 @@ const layoutFooterBlockSchema = z.object({
39890
39904
  kind: layoutBlockKindSchema,
39891
39905
  content: z.record(z.string(), z.unknown()).optional()
39892
39906
  }).strict();
39893
- const layoutConfigSchema = z.object({ footerBlocks: z.array(layoutFooterBlockSchema).optional() }).strict();
39907
+ const layoutConfigSchema = z.object({
39908
+ footerMode: footerModeSchema.optional(),
39909
+ footerBlocks: z.array(layoutFooterBlockSchema).optional()
39910
+ }).strict();
39894
39911
  const sdkWorkflowIdSchema = z.string().min(1).max(120).regex(SDK_WORKFLOW_ID_PATTERN, { message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens" });
39895
39912
  const sdkWorkflowEndpointSchema = z.string().min(1).max(500).regex(SDK_WORKFLOW_ENDPOINT_PATTERN, { message: "Workflow endpoint must be a site-relative path starting with \"/\"" });
39896
39913
  const sdkWorkflowTriggerSchema = z.discriminatedUnion("type", [z.object({ type: z.literal("manual") }).strict()]);
@@ -46,6 +46,14 @@ function fallbackBinding(...sources) {
46
46
  };
47
47
  }
48
48
  //#endregion
49
+ //#region ../theme-core/src/footer/mode.ts
50
+ const footerModeSchema = z.enum([
51
+ "default",
52
+ "blocks",
53
+ "default+blocks",
54
+ "none"
55
+ ]);
56
+ //#endregion
49
57
  //#region ../api/src/apiEndpointTypes.ts
50
58
  function allowedDemoMutationPolicy() {
51
59
  return {
@@ -10929,12 +10937,6 @@ const footerVariant = z.enum([
10929
10937
  "split"
10930
10938
  ]);
10931
10939
  const footerMaxWidth = z.enum(["container", "full"]);
10932
- const footerMode = z.enum([
10933
- "default",
10934
- "blocks",
10935
- "default+blocks",
10936
- "none"
10937
- ]);
10938
10940
  const footerNavLayoutMode = z.enum([
10939
10941
  "stack",
10940
10942
  "inline",
@@ -11023,9 +11025,9 @@ const footerSchema = z.object({
11023
11025
  /**
11024
11026
  * SDK-only footer rendering mode.
11025
11027
  *
11026
- * Backwards compatible: missing/undefined behaves as 'default'.
11028
+ * Historical persisted field; SDK rendering mode now lives in layout.footerMode.
11027
11029
  */
11028
- mode: footerMode.optional(),
11030
+ mode: footerModeSchema.optional(),
11029
11031
  variant: footerVariant,
11030
11032
  maxWidth: footerMaxWidth,
11031
11033
  showLogoText: z.boolean().optional(),
@@ -27926,6 +27928,15 @@ const publicEventBaseSchema = z.object({
27926
27928
  timeZone: z.string(),
27927
27929
  pricing: publicEventPricingSchema,
27928
27930
  paymentTerms: blockBookingPaymentTermsSchema,
27931
+ cancellationPolicy: z.object({ refunds: z.object({
27932
+ mode: z.enum([
27933
+ "never",
27934
+ "always",
27935
+ "cutoff"
27936
+ ]),
27937
+ cutoffHours: z.number(),
27938
+ method: z.enum(["original_payment_method", "site_credit"])
27939
+ }) }),
27929
27940
  consent: blockBookingConsentSchema.nullable(),
27930
27941
  accessRestriction: accessRestrictionSchema,
27931
27942
  allowedCategoryIds: z.array(z.string()),
@@ -38053,11 +38064,14 @@ const sdkSiteStyleConfigSchema = z.object({
38053
38064
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
38054
38065
  containerOptions: sdkContainerOptionsConfigSchema.optional()
38055
38066
  });
38056
- const sdkSiteLayoutConfigSchema = z.object({ footerBlocks: z.array(z.object({
38057
- id: z.string().min(1).optional(),
38058
- kind: z.string().min(1),
38059
- content: z.record(z.string(), z.unknown()).optional()
38060
- })).optional() });
38067
+ const sdkSiteLayoutConfigSchema = z.object({
38068
+ footerMode: footerModeSchema.optional(),
38069
+ footerBlocks: z.array(z.object({
38070
+ id: z.string().min(1).optional(),
38071
+ kind: z.string().min(1),
38072
+ content: z.record(z.string(), z.unknown()).optional()
38073
+ })).optional()
38074
+ });
38061
38075
  const sdkFieldSelectOptionSchema = z.object({
38062
38076
  value: z.string(),
38063
38077
  label: z.string()
@@ -39907,7 +39921,10 @@ const layoutFooterBlockSchema = z.object({
39907
39921
  kind: layoutBlockKindSchema,
39908
39922
  content: z.record(z.string(), z.unknown()).optional()
39909
39923
  }).strict();
39910
- const layoutConfigSchema = z.object({ footerBlocks: z.array(layoutFooterBlockSchema).optional() }).strict();
39924
+ const layoutConfigSchema = z.object({
39925
+ footerMode: footerModeSchema.optional(),
39926
+ footerBlocks: z.array(layoutFooterBlockSchema).optional()
39927
+ }).strict();
39911
39928
  const sdkWorkflowIdSchema = z.string().min(1).max(120).regex(SDK_WORKFLOW_ID_PATTERN, { message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens" });
39912
39929
  const sdkWorkflowEndpointSchema = z.string().min(1).max(500).regex(SDK_WORKFLOW_ENDPOINT_PATTERN, { message: "Workflow endpoint must be a site-relative path starting with \"/\"" });
39913
39930
  const sdkWorkflowTriggerSchema = z.discriminatedUnion("type", [z.object({ type: z.literal("manual") }).strict()]);
@@ -1402,6 +1402,14 @@ function rotateNormalizedPoint(point, rotation) {
1402
1402
  }
1403
1403
  }
1404
1404
  //#endregion
1405
+ //#region ../theme-core/src/footer/mode.ts
1406
+ const footerModeSchema = z.enum([
1407
+ "default",
1408
+ "blocks",
1409
+ "default+blocks",
1410
+ "none"
1411
+ ]);
1412
+ //#endregion
1405
1413
  //#region ../theme-core/src/lib/media.ts
1406
1414
  const hotspotSchema = z.object({
1407
1415
  x: z.number().min(0).max(1),
@@ -7444,12 +7452,6 @@ const footerVariant = z.enum([
7444
7452
  "split"
7445
7453
  ]);
7446
7454
  const footerMaxWidth = z.enum(["container", "full"]);
7447
- const footerMode = z.enum([
7448
- "default",
7449
- "blocks",
7450
- "default+blocks",
7451
- "none"
7452
- ]);
7453
7455
  const footerNavLayoutMode = z.enum([
7454
7456
  "stack",
7455
7457
  "inline",
@@ -7538,9 +7540,9 @@ const footerSchema = z.object({
7538
7540
  /**
7539
7541
  * SDK-only footer rendering mode.
7540
7542
  *
7541
- * Backwards compatible: missing/undefined behaves as 'default'.
7543
+ * Historical persisted field; SDK rendering mode now lives in layout.footerMode.
7542
7544
  */
7543
- mode: footerMode.optional(),
7545
+ mode: footerModeSchema.optional(),
7544
7546
  variant: footerVariant,
7545
7547
  maxWidth: footerMaxWidth,
7546
7548
  showLogoText: z.boolean().optional(),
@@ -8131,6 +8133,15 @@ const publicEventBaseSchema = z.object({
8131
8133
  timeZone: z.string(),
8132
8134
  pricing: publicEventPricingSchema,
8133
8135
  paymentTerms: blockBookingPaymentTermsSchema,
8136
+ cancellationPolicy: z.object({ refunds: z.object({
8137
+ mode: z.enum([
8138
+ "never",
8139
+ "always",
8140
+ "cutoff"
8141
+ ]),
8142
+ cutoffHours: z.number(),
8143
+ method: z.enum(["original_payment_method", "site_credit"])
8144
+ }) }),
8134
8145
  consent: blockBookingConsentSchema.nullable(),
8135
8146
  accessRestriction: accessRestrictionSchema,
8136
8147
  allowedCategoryIds: z.array(z.string()),
@@ -38681,11 +38692,14 @@ const sdkSiteStyleConfigSchema = z.object({
38681
38692
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
38682
38693
  containerOptions: sdkContainerOptionsConfigSchema.optional()
38683
38694
  });
38684
- const sdkSiteLayoutConfigSchema = z.object({ footerBlocks: z.array(z.object({
38685
- id: z.string().min(1).optional(),
38686
- kind: z.string().min(1),
38687
- content: z.record(z.string(), z.unknown()).optional()
38688
- })).optional() });
38695
+ const sdkSiteLayoutConfigSchema = z.object({
38696
+ footerMode: footerModeSchema.optional(),
38697
+ footerBlocks: z.array(z.object({
38698
+ id: z.string().min(1).optional(),
38699
+ kind: z.string().min(1),
38700
+ content: z.record(z.string(), z.unknown()).optional()
38701
+ })).optional()
38702
+ });
38689
38703
  const sdkFieldSelectOptionSchema = z.object({
38690
38704
  value: z.string(),
38691
38705
  label: z.string()
@@ -6813,13 +6813,6 @@ const API_ENDPOINTS$1 = {
6813
6813
  auth: "service",
6814
6814
  responseKind: "json"
6815
6815
  },
6816
- sdkCatalogTheme: {
6817
- path: "/sdk/{siteId}/catalog/theme",
6818
- method: "GET",
6819
- errors: ["server:internal_error"],
6820
- auth: "service",
6821
- responseKind: "json"
6822
- },
6823
6816
  sdkCatalogBlocks: {
6824
6817
  path: "/sdk/{siteId}/catalog/blocks",
6825
6818
  method: "GET",
@@ -6880,12 +6873,6 @@ const API_ENDPOINTS$1 = {
6880
6873
  auth: "service",
6881
6874
  responseKind: "json"
6882
6875
  },
6883
- sdkPullTheme: {
6884
- path: "/sdk/{siteId}/pull/theme",
6885
- method: "GET",
6886
- auth: "service",
6887
- responseKind: "json"
6888
- },
6889
6876
  sdkPullFooter: {
6890
6877
  path: "/sdk/{siteId}/pull/footer",
6891
6878
  method: "GET",
@@ -6992,30 +6979,6 @@ const API_ENDPOINTS$1 = {
6992
6979
  auth: "service",
6993
6980
  responseKind: "json"
6994
6981
  },
6995
- sdkUpsertTheme: {
6996
- path: "/sdk/{siteId}/theme",
6997
- method: "POST",
6998
- auth: "service",
6999
- responseKind: "json",
7000
- errors: [
7001
- "validation:invalid_input",
7002
- "resource:not_found",
7003
- "resource:conflict",
7004
- "server:internal_error"
7005
- ]
7006
- },
7007
- sdkApplySiteStyleSelection: {
7008
- path: "/sdk/{siteId}/theme/style-selection/apply",
7009
- method: "POST",
7010
- auth: "service",
7011
- responseKind: "json",
7012
- errors: [
7013
- "validation:invalid_input",
7014
- "resource:not_found",
7015
- "resource:conflict",
7016
- "server:internal_error"
7017
- ]
7018
- },
7019
6982
  sdkUpsertFooter: {
7020
6983
  path: "/sdk/{siteId}/footer",
7021
6984
  method: "POST",
@@ -8280,7 +8243,7 @@ var SimpleCache = class {
8280
8243
  * 1. This constant
8281
8244
  * 2. The "version" field in package.json
8282
8245
  */
8283
- const SDK_VERSION = "0.141.0";
8246
+ const SDK_VERSION = "0.142.0";
8284
8247
  //#endregion
8285
8248
  //#region src/client/error.ts
8286
8249
  let _Symbol$for;
@@ -3259,6 +3259,14 @@ function adaptFields(rawFields, flattenRepeaterGroups = false, defaultFileKinds
3259
3259
  }];
3260
3260
  }));
3261
3261
  }
3262
+ //#endregion
3263
+ //#region ../theme-core/src/footer/mode.ts
3264
+ const footerModeSchema = z$1.enum([
3265
+ "default",
3266
+ "blocks",
3267
+ "default+blocks",
3268
+ "none"
3269
+ ]);
3262
3270
  const hotspotSchema = z$1.object({
3263
3271
  x: z$1.number().min(0).max(1),
3264
3272
  y: z$1.number().min(0).max(1),
@@ -12611,12 +12619,6 @@ const footerVariant = z$1.enum([
12611
12619
  "split"
12612
12620
  ]);
12613
12621
  const footerMaxWidth = z$1.enum(["container", "full"]);
12614
- const footerMode = z$1.enum([
12615
- "default",
12616
- "blocks",
12617
- "default+blocks",
12618
- "none"
12619
- ]);
12620
12622
  const footerNavLayoutMode = z$1.enum([
12621
12623
  "stack",
12622
12624
  "inline",
@@ -12705,9 +12707,9 @@ const footerSchema = z$1.object({
12705
12707
  /**
12706
12708
  * SDK-only footer rendering mode.
12707
12709
  *
12708
- * Backwards compatible: missing/undefined behaves as 'default'.
12710
+ * Historical persisted field; SDK rendering mode now lives in layout.footerMode.
12709
12711
  */
12710
- mode: footerMode.optional(),
12712
+ mode: footerModeSchema.optional(),
12711
12713
  variant: footerVariant,
12712
12714
  maxWidth: footerMaxWidth,
12713
12715
  showLogoText: z$1.boolean().optional(),
@@ -13330,6 +13332,15 @@ const publicEventBaseSchema = z$1.object({
13330
13332
  timeZone: z$1.string(),
13331
13333
  pricing: publicEventPricingSchema,
13332
13334
  paymentTerms: blockBookingPaymentTermsSchema,
13335
+ cancellationPolicy: z$1.object({ refunds: z$1.object({
13336
+ mode: z$1.enum([
13337
+ "never",
13338
+ "always",
13339
+ "cutoff"
13340
+ ]),
13341
+ cutoffHours: z$1.number(),
13342
+ method: z$1.enum(["original_payment_method", "site_credit"])
13343
+ }) }),
13333
13344
  consent: blockBookingConsentSchema.nullable(),
13334
13345
  accessRestriction: accessRestrictionSchema,
13335
13346
  allowedCategoryIds: z$1.array(z$1.string()),
@@ -39551,13 +39562,6 @@ const API_ENDPOINTS$1 = {
39551
39562
  auth: "service",
39552
39563
  responseKind: "json"
39553
39564
  },
39554
- sdkCatalogTheme: {
39555
- path: "/sdk/{siteId}/catalog/theme",
39556
- method: "GET",
39557
- errors: ["server:internal_error"],
39558
- auth: "service",
39559
- responseKind: "json"
39560
- },
39561
39565
  sdkCatalogBlocks: {
39562
39566
  path: "/sdk/{siteId}/catalog/blocks",
39563
39567
  method: "GET",
@@ -39618,12 +39622,6 @@ const API_ENDPOINTS$1 = {
39618
39622
  auth: "service",
39619
39623
  responseKind: "json"
39620
39624
  },
39621
- sdkPullTheme: {
39622
- path: "/sdk/{siteId}/pull/theme",
39623
- method: "GET",
39624
- auth: "service",
39625
- responseKind: "json"
39626
- },
39627
39625
  sdkPullFooter: {
39628
39626
  path: "/sdk/{siteId}/pull/footer",
39629
39627
  method: "GET",
@@ -39730,30 +39728,6 @@ const API_ENDPOINTS$1 = {
39730
39728
  auth: "service",
39731
39729
  responseKind: "json"
39732
39730
  },
39733
- sdkUpsertTheme: {
39734
- path: "/sdk/{siteId}/theme",
39735
- method: "POST",
39736
- auth: "service",
39737
- responseKind: "json",
39738
- errors: [
39739
- "validation:invalid_input",
39740
- "resource:not_found",
39741
- "resource:conflict",
39742
- "server:internal_error"
39743
- ]
39744
- },
39745
- sdkApplySiteStyleSelection: {
39746
- path: "/sdk/{siteId}/theme/style-selection/apply",
39747
- method: "POST",
39748
- auth: "service",
39749
- responseKind: "json",
39750
- errors: [
39751
- "validation:invalid_input",
39752
- "resource:not_found",
39753
- "resource:conflict",
39754
- "server:internal_error"
39755
- ]
39756
- },
39757
39731
  sdkUpsertFooter: {
39758
39732
  path: "/sdk/{siteId}/footer",
39759
39733
  method: "POST",
@@ -82949,11 +82923,14 @@ const sdkSiteStyleConfigSchema = z$1.object({
82949
82923
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
82950
82924
  containerOptions: sdkContainerOptionsConfigSchema.optional()
82951
82925
  });
82952
- const sdkSiteLayoutConfigSchema = z$1.object({ footerBlocks: z$1.array(z$1.object({
82953
- id: z$1.string().min(1).optional(),
82954
- kind: z$1.string().min(1),
82955
- content: z$1.record(z$1.string(), z$1.unknown()).optional()
82956
- })).optional() });
82926
+ const sdkSiteLayoutConfigSchema = z$1.object({
82927
+ footerMode: footerModeSchema.optional(),
82928
+ footerBlocks: z$1.array(z$1.object({
82929
+ id: z$1.string().min(1).optional(),
82930
+ kind: z$1.string().min(1),
82931
+ content: z$1.record(z$1.string(), z$1.unknown()).optional()
82932
+ })).optional()
82933
+ });
82957
82934
  const sdkFieldSelectOptionSchema = z$1.object({
82958
82935
  value: z$1.string(),
82959
82936
  label: z$1.string()
@@ -89240,7 +89217,7 @@ var CircuitOpenError = class extends Error {
89240
89217
  * 1. This constant
89241
89218
  * 2. The "version" field in package.json
89242
89219
  */
89243
- const SDK_VERSION = "0.141.0";
89220
+ const SDK_VERSION = "0.142.0";
89244
89221
  //#endregion
89245
89222
  //#region src/next/content-load-failure.ts
89246
89223
  const SdkContentLoadError = RiverbankContentLoadError;
@@ -1612,6 +1612,14 @@ function requireCuratedPaletteValueKey(authoringKey) {
1612
1612
  return palette.valueKey;
1613
1613
  }
1614
1614
  //#endregion
1615
+ //#region ../theme-core/src/footer/mode.ts
1616
+ const footerModeSchema = z.enum([
1617
+ "default",
1618
+ "blocks",
1619
+ "default+blocks",
1620
+ "none"
1621
+ ]);
1622
+ //#endregion
1615
1623
  //#region ../theme-core/src/lib/media.ts
1616
1624
  const hotspotSchema = z.object({
1617
1625
  x: z.number().min(0).max(1),
@@ -5905,12 +5913,6 @@ const footerVariant = z.enum([
5905
5913
  "split"
5906
5914
  ]);
5907
5915
  const footerMaxWidth = z.enum(["container", "full"]);
5908
- const footerMode = z.enum([
5909
- "default",
5910
- "blocks",
5911
- "default+blocks",
5912
- "none"
5913
- ]);
5914
5916
  const footerNavLayoutMode = z.enum([
5915
5917
  "stack",
5916
5918
  "inline",
@@ -5999,9 +6001,9 @@ const footerSchema = z.object({
5999
6001
  /**
6000
6002
  * SDK-only footer rendering mode.
6001
6003
  *
6002
- * Backwards compatible: missing/undefined behaves as 'default'.
6004
+ * Historical persisted field; SDK rendering mode now lives in layout.footerMode.
6003
6005
  */
6004
- mode: footerMode.optional(),
6006
+ mode: footerModeSchema.optional(),
6005
6007
  variant: footerVariant,
6006
6008
  maxWidth: footerMaxWidth,
6007
6009
  showLogoText: z.boolean().optional(),
@@ -21962,6 +21964,15 @@ const publicEventBaseSchema = z.object({
21962
21964
  timeZone: z.string(),
21963
21965
  pricing: publicEventPricingSchema,
21964
21966
  paymentTerms: blockBookingPaymentTermsSchema,
21967
+ cancellationPolicy: z.object({ refunds: z.object({
21968
+ mode: z.enum([
21969
+ "never",
21970
+ "always",
21971
+ "cutoff"
21972
+ ]),
21973
+ cutoffHours: z.number(),
21974
+ method: z.enum(["original_payment_method", "site_credit"])
21975
+ }) }),
21965
21976
  consent: blockBookingConsentSchema.nullable(),
21966
21977
  accessRestriction: accessRestrictionSchema,
21967
21978
  allowedCategoryIds: z.array(z.string()),
@@ -12,7 +12,7 @@ import * as crypto from "crypto";
12
12
  * 1. This constant
13
13
  * 2. The "version" field in package.json
14
14
  */
15
- const SDK_VERSION = "0.141.0";
15
+ const SDK_VERSION = "0.142.0";
16
16
  //#endregion
17
17
  //#region src/constants.ts
18
18
  /**