@riverbankcms/sdk 0.101.0 → 0.103.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 (123) hide show
  1. package/README.md +10 -2
  2. package/dist/{PreviewEditorSidebar-DBpy0KTh.mjs → PreviewEditorSidebar-DkNpCPja.mjs} +430 -74
  3. package/dist/{PreviewEditorUI-Fg6I2R2T.mjs → PreviewEditorUI-DeNKtqk3.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BICQLAUF.mjs → PreviewQueryProvider-ZF6TXq5Q.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DFQP-Q53.mjs → SdkPreviewModeRuntime-5bCsXK2y.mjs} +694 -329
  6. package/dist/{SiteChromeCustomizeContext-GwZc89KN.mjs → SiteChromeCustomizeContext-CO1sTK_W.mjs} +538 -69
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +298 -298
  8. package/dist/_dts/ai/src/designer/rfc6902.d.ts +57 -1
  9. package/dist/_dts/ai/src/designer/themePatch.d.ts +16 -6
  10. package/dist/_dts/api/src/bookingVerticals.d.ts +53 -1
  11. package/dist/_dts/api/src/index.d.ts +1 -1
  12. package/dist/_dts/api/src/navigation/contracts.d.ts +6 -6
  13. package/dist/_dts/api/src/siteBanner.d.ts +2 -2
  14. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -0
  15. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -1
  16. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  17. package/dist/_dts/blocks/src/index.d.ts +1 -1
  18. package/dist/_dts/blocks/src/server.d.ts +1 -1
  19. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +7 -7
  20. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +1 -1
  21. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +14 -14
  22. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +5 -5
  23. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +227 -227
  24. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +1 -1
  25. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  26. package/dist/_dts/blocks/src/system/customize/facets.d.ts +2 -2
  27. package/dist/_dts/blocks/src/system/inlineText.d.ts +2 -2
  28. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +177 -177
  29. package/dist/_dts/blocks/src/system/node/schema.d.ts +1 -1
  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/layout.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +7 -7
  33. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  34. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  35. package/dist/_dts/content-model/src/content-types/schema.d.ts +8 -8
  36. package/dist/_dts/core/src/branded.d.ts +4 -0
  37. package/dist/_dts/core/src/person-records.d.ts +6 -1
  38. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +154 -18
  39. package/dist/_dts/db/src/schemas/forms.d.ts +15 -15
  40. package/dist/_dts/media-core/src/identifiers.d.ts +14 -1
  41. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
  42. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +3 -1
  43. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  44. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -1
  45. package/dist/_dts/preview-next/src/client/preview/CustomizeColorTokenPicker.d.ts +27 -0
  46. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -1
  47. package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +2 -1
  48. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +10 -2
  49. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +43 -7
  50. package/dist/_dts/preview-next/src/client/preview/sidebarTabPreference.d.ts +1 -1
  51. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +16 -1
  52. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +3 -2
  53. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +4 -4
  54. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -1
  55. package/dist/_dts/preview-next/src/client/preview/typographySelectionInput.d.ts +4 -2
  56. package/dist/_dts/sdk/src/config/validation.d.ts +3 -3
  57. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  58. package/dist/_dts/sdk/src/contracts/page.d.ts +2 -0
  59. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +10 -10
  60. package/dist/_dts/sdk/src/next/revalidate.d.ts +14 -1
  61. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -4
  62. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -1
  63. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -2
  64. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +3 -4
  65. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +1 -0
  66. package/dist/_dts/sdk/src/version.d.ts +1 -1
  67. package/dist/_dts/site-commands/src/commands.d.ts +19 -19
  68. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  69. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +3 -3
  70. package/dist/_dts/theme-core/src/buttons/types.d.ts +7 -7
  71. package/dist/_dts/theme-core/src/cards/types.d.ts +6 -6
  72. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  73. package/dist/_dts/theme-core/src/inputs/types.d.ts +4 -4
  74. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +150 -144
  75. package/dist/_dts/theme-core/src/navigation/types.d.ts +6 -6
  76. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +5 -5
  77. package/dist/_dts/theme-core/src/schema.d.ts +199 -169
  78. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  79. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
  80. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +28 -26
  81. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  82. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +4 -4
  83. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  84. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +9 -2
  85. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +3 -3
  86. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +50 -2
  87. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +77 -0
  88. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +44 -0
  89. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  90. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  91. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +3 -3
  92. package/dist/_dts/ui/src/badge.d.ts +1 -1
  93. package/dist/_dts/ui/src/button.d.ts +1 -1
  94. package/dist/_dts/ui/src/card.d.ts +1 -1
  95. package/dist/_dts/ui/src/toggle.d.ts +2 -2
  96. package/dist/cli/index.mjs +58 -21
  97. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +9 -1
  98. package/dist/client/client.mjs +379 -83
  99. package/dist/client/hooks.mjs +27 -6
  100. package/dist/client/rendering/client.mjs +46 -17
  101. package/dist/client/rendering.mjs +378 -82
  102. package/dist/preview-next/before-render.mjs +1 -1
  103. package/dist/preview-next/client/runtime.mjs +4 -4
  104. package/dist/{previewAuthStore-Da74OL0X.mjs → previewAuthStore-ByPPZqmp.mjs} +1 -0
  105. package/dist/{sdk-runtime-CP6Kwalv.mjs → sdk-runtime-C8whifOy.mjs} +2 -2
  106. package/dist/{separator-BVk7GvGN.mjs → separator-CM2C5Axs.mjs} +1 -1
  107. package/dist/server/components.mjs +357 -77
  108. package/dist/server/config-validation.mjs +26 -6
  109. package/dist/server/config.mjs +26 -6
  110. package/dist/server/data.mjs +26 -6
  111. package/dist/server/index.mjs +2 -2
  112. package/dist/server/next/revalidate.mjs +31 -1
  113. package/dist/server/next.mjs +361 -78
  114. package/dist/server/page-converter.mjs +19 -5
  115. package/dist/server/prebuild.mjs +1 -1
  116. package/dist/server/rendering/server.mjs +359 -77
  117. package/dist/server/rendering.mjs +359 -77
  118. package/dist/server/routing.mjs +40 -9
  119. package/dist/server/server.mjs +29 -7
  120. package/dist/server/theme-bridge.mjs +158 -36
  121. package/dist/server/theme.mjs +3 -0
  122. package/dist/styles/index.css +123 -30
  123. package/package.json +1 -1
@@ -4255,6 +4255,7 @@ const themeV2RuntimeStyleFieldNames = [
4255
4255
  "_sectionStyles",
4256
4256
  "_containerStyles",
4257
4257
  "_cardStyles",
4258
+ "_transitionStyles",
4258
4259
  "styleGroup"
4259
4260
  ];
4260
4261
  const themeV2BlockSpecificRawStyleFieldNames = [
@@ -4976,6 +4977,8 @@ const headerSchema = z$1.object({
4976
4977
  navStyle: headerNavStyle,
4977
4978
  navColor: themeColorTokenSchema.nullable().optional(),
4978
4979
  navWeight: navFontWeight.default("medium"),
4980
+ navTypography: z$1.enum(["body", "heading"]).optional(),
4981
+ navTextSize: navLinkStyleSchema.shape.textSize,
4979
4982
  container: headerContainerSchema,
4980
4983
  border: headerBorderSchema,
4981
4984
  shadow: componentShadowSchema.optional(),
@@ -7252,6 +7255,15 @@ function uniqueStrings(values) {
7252
7255
  }
7253
7256
  //#endregion
7254
7257
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
7258
+ function boundaryRuntimeMetrics(family, size, heightExpression) {
7259
+ return {
7260
+ family,
7261
+ size,
7262
+ heightCss: heightExpression.includes(" ") ? `calc(${heightExpression})` : heightExpression,
7263
+ reserveCss: `calc((${heightExpression}) / 2)`
7264
+ };
7265
+ }
7266
+ boundaryRuntimeMetrics("gradient", "medium", "6rem + 2px"), boundaryRuntimeMetrics("gradient", "spacious", "10rem"), boundaryRuntimeMetrics("gradient", "expansive", "14rem"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("wave", "large", "7rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("angle", "large", "7rem + 2px");
7255
7267
  const noneBoundaryOption = {
7256
7268
  id: asBoundaryOptionId("break:none"),
7257
7269
  label: "None",
@@ -7939,7 +7951,7 @@ const overlayLogoAccommodations = [
7939
7951
  * optional nested styling fields that would otherwise leak from another Look.
7940
7952
  */
7941
7953
  function baseHeader(theme) {
7942
- const { navLinkStyle: _navLinkStyle, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
7954
+ const { navLinkStyle: _navLinkStyle, navTypography: _navTypography, navTextSize: _navTextSize, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
7943
7955
  return {
7944
7956
  ...header,
7945
7957
  navContainer: {
@@ -8012,12 +8024,12 @@ const headerStyleCatalog = defineExactCatalog()([
8012
8024
  },
8013
8025
  {
8014
8026
  id: asHeaderStyleId("fine-line"),
8015
- label: "Fine Line",
8016
- description: "Light surface with a crisp lower rule and underline hover.",
8027
+ label: "Seamless",
8028
+ description: "Borderless surface with underline hover for a quieter page transition.",
8017
8029
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
8018
8030
  navInteraction: "underline-grow",
8019
- surface: "bordered",
8020
- defaultDepth: "line",
8031
+ surface: "neutral",
8032
+ defaultDepth: "none",
8021
8033
  navTypography: "plain",
8022
8034
  moods: [
8023
8035
  "calm",
@@ -26033,6 +26045,7 @@ const eventListingBlockDefinition = {
26033
26045
  } },
26034
26046
  seeAllUrl: { $bind: {
26035
26047
  from: "content.seeAllUrl",
26048
+ fallback: "",
26036
26049
  transforms: [{ id: "links.resolve" }]
26037
26050
  } },
26038
26051
  loadMoreText: { $bind: {
@@ -26336,6 +26349,7 @@ const eventCalendarLayout = [styledSection({
26336
26349
  } },
26337
26350
  seeAllUrl: { $bind: {
26338
26351
  from: "content.seeAllUrl",
26352
+ fallback: "",
26339
26353
  transforms: [{ id: "links.resolve" }]
26340
26354
  } },
26341
26355
  loadMoreText: { $bind: {
@@ -33318,7 +33332,7 @@ z$1.object({ acceptExtraSiteCharge: z$1.boolean().optional() });
33318
33332
  //#region ../surfaces/src/index.ts
33319
33333
  const SURFACE_IDS = ["core", "macadamia"];
33320
33334
  const DEFAULT_SURFACE_ID = "core";
33321
- SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID);
33335
+ [...SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID)];
33322
33336
  const CANONICAL_REFUND_PLANNER_ERROR_CODES = [
33323
33337
  ...[
33324
33338
  "already_refunded",
@@ -33367,6 +33381,7 @@ const VERTICAL_IDS = [
33367
33381
  "training_provider",
33368
33382
  "retreat_centre",
33369
33383
  "music_school",
33384
+ "voice_singing",
33370
33385
  "performing_arts_school",
33371
33386
  "community_wellbeing",
33372
33387
  "venue_event_space"
@@ -33419,6 +33434,11 @@ const VERTICAL_BOOKING_PRESETS = [
33419
33434
  preset("music_school.terms", "music_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date group courses."),
33420
33435
  preset("music_school.workshops", "music_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
33421
33436
  preset("music_school.performances", "music_school", "performance", "Performance", "Performances", "Concerts, recitals, showcases, or ticketed performances."),
33437
+ preset("voice_singing.lessons", "voice_singing", "appointment", "Voice session", "Voice sessions", "One-to-one singing lessons, voice coaching, or private practice sessions."),
33438
+ preset("voice_singing.classes", "voice_singing", "class", "Ongoing weekly session", "Ongoing weekly sessions", "Regular choirs, voice circles, community singing, or group practice."),
33439
+ preset("voice_singing.terms", "voice_singing", "course", "Singing term", "Singing terms", "Multi-week choir terms, voice courses, or fixed-date group programmes."),
33440
+ preset("voice_singing.workshops", "voice_singing", "workshop", "Workshop", "Workshops", "One-off singing workshops, voice journeys, or devotional singing sessions."),
33441
+ preset("voice_singing.performances", "voice_singing", "performance", "Performance", "Performances", "Choir concerts, sharing events, recitals, or community performances."),
33422
33442
  preset("performing_arts_school.classes", "performing_arts_school", "class", "Class", "Classes", "Regular group classes, rehearsals, or weekly sessions."),
33423
33443
  preset("performing_arts_school.terms", "performing_arts_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
33424
33444
  preset("performing_arts_school.workshops", "performing_arts_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
@@ -4300,6 +4300,7 @@ const themeV2RuntimeStyleFieldNames = [
4300
4300
  "_sectionStyles",
4301
4301
  "_containerStyles",
4302
4302
  "_cardStyles",
4303
+ "_transitionStyles",
4303
4304
  "styleGroup"
4304
4305
  ];
4305
4306
  const themeV2BlockSpecificRawStyleFieldNames = [
@@ -5021,6 +5022,8 @@ const headerSchema = z$1.object({
5021
5022
  navStyle: headerNavStyle,
5022
5023
  navColor: themeColorTokenSchema.nullable().optional(),
5023
5024
  navWeight: navFontWeight.default("medium"),
5025
+ navTypography: z$1.enum(["body", "heading"]).optional(),
5026
+ navTextSize: navLinkStyleSchema.shape.textSize,
5024
5027
  container: headerContainerSchema,
5025
5028
  border: headerBorderSchema,
5026
5029
  shadow: componentShadowSchema.optional(),
@@ -7297,6 +7300,15 @@ function uniqueStrings(values) {
7297
7300
  }
7298
7301
  //#endregion
7299
7302
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
7303
+ function boundaryRuntimeMetrics(family, size, heightExpression) {
7304
+ return {
7305
+ family,
7306
+ size,
7307
+ heightCss: heightExpression.includes(" ") ? `calc(${heightExpression})` : heightExpression,
7308
+ reserveCss: `calc((${heightExpression}) / 2)`
7309
+ };
7310
+ }
7311
+ boundaryRuntimeMetrics("gradient", "medium", "6rem + 2px"), boundaryRuntimeMetrics("gradient", "spacious", "10rem"), boundaryRuntimeMetrics("gradient", "expansive", "14rem"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("wave", "large", "7rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("angle", "large", "7rem + 2px");
7300
7312
  const noneBoundaryOption = {
7301
7313
  id: asBoundaryOptionId("break:none"),
7302
7314
  label: "None",
@@ -7984,7 +7996,7 @@ const overlayLogoAccommodations = [
7984
7996
  * optional nested styling fields that would otherwise leak from another Look.
7985
7997
  */
7986
7998
  function baseHeader(theme) {
7987
- const { navLinkStyle: _navLinkStyle, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
7999
+ const { navLinkStyle: _navLinkStyle, navTypography: _navTypography, navTextSize: _navTextSize, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
7988
8000
  return {
7989
8001
  ...header,
7990
8002
  navContainer: {
@@ -8057,12 +8069,12 @@ const headerStyleCatalog = defineExactCatalog()([
8057
8069
  },
8058
8070
  {
8059
8071
  id: asHeaderStyleId("fine-line"),
8060
- label: "Fine Line",
8061
- description: "Light surface with a crisp lower rule and underline hover.",
8072
+ label: "Seamless",
8073
+ description: "Borderless surface with underline hover for a quieter page transition.",
8062
8074
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
8063
8075
  navInteraction: "underline-grow",
8064
- surface: "bordered",
8065
- defaultDepth: "line",
8076
+ surface: "neutral",
8077
+ defaultDepth: "none",
8066
8078
  navTypography: "plain",
8067
8079
  moods: [
8068
8080
  "calm",
@@ -26078,6 +26090,7 @@ const eventListingBlockDefinition = {
26078
26090
  } },
26079
26091
  seeAllUrl: { $bind: {
26080
26092
  from: "content.seeAllUrl",
26093
+ fallback: "",
26081
26094
  transforms: [{ id: "links.resolve" }]
26082
26095
  } },
26083
26096
  loadMoreText: { $bind: {
@@ -26381,6 +26394,7 @@ const eventCalendarLayout = [styledSection({
26381
26394
  } },
26382
26395
  seeAllUrl: { $bind: {
26383
26396
  from: "content.seeAllUrl",
26397
+ fallback: "",
26384
26398
  transforms: [{ id: "links.resolve" }]
26385
26399
  } },
26386
26400
  loadMoreText: { $bind: {
@@ -33363,7 +33377,7 @@ z$1.object({ acceptExtraSiteCharge: z$1.boolean().optional() });
33363
33377
  //#region ../surfaces/src/index.ts
33364
33378
  const SURFACE_IDS = ["core", "macadamia"];
33365
33379
  const DEFAULT_SURFACE_ID = "core";
33366
- SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID);
33380
+ [...SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID)];
33367
33381
  const CANONICAL_REFUND_PLANNER_ERROR_CODES = [
33368
33382
  ...[
33369
33383
  "already_refunded",
@@ -33412,6 +33426,7 @@ const VERTICAL_IDS = [
33412
33426
  "training_provider",
33413
33427
  "retreat_centre",
33414
33428
  "music_school",
33429
+ "voice_singing",
33415
33430
  "performing_arts_school",
33416
33431
  "community_wellbeing",
33417
33432
  "venue_event_space"
@@ -33464,6 +33479,11 @@ const VERTICAL_BOOKING_PRESETS = [
33464
33479
  preset("music_school.terms", "music_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date group courses."),
33465
33480
  preset("music_school.workshops", "music_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
33466
33481
  preset("music_school.performances", "music_school", "performance", "Performance", "Performances", "Concerts, recitals, showcases, or ticketed performances."),
33482
+ preset("voice_singing.lessons", "voice_singing", "appointment", "Voice session", "Voice sessions", "One-to-one singing lessons, voice coaching, or private practice sessions."),
33483
+ preset("voice_singing.classes", "voice_singing", "class", "Ongoing weekly session", "Ongoing weekly sessions", "Regular choirs, voice circles, community singing, or group practice."),
33484
+ preset("voice_singing.terms", "voice_singing", "course", "Singing term", "Singing terms", "Multi-week choir terms, voice courses, or fixed-date group programmes."),
33485
+ preset("voice_singing.workshops", "voice_singing", "workshop", "Workshop", "Workshops", "One-off singing workshops, voice journeys, or devotional singing sessions."),
33486
+ preset("voice_singing.performances", "voice_singing", "performance", "Performance", "Performances", "Choir concerts, sharing events, recitals, or community performances."),
33467
33487
  preset("performing_arts_school.classes", "performing_arts_school", "class", "Class", "Classes", "Regular group classes, rehearsals, or weekly sessions."),
33468
33488
  preset("performing_arts_school.terms", "performing_arts_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
33469
33489
  preset("performing_arts_school.workshops", "performing_arts_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
@@ -4260,6 +4260,7 @@ const themeV2RuntimeStyleFieldNames = [
4260
4260
  "_sectionStyles",
4261
4261
  "_containerStyles",
4262
4262
  "_cardStyles",
4263
+ "_transitionStyles",
4263
4264
  "styleGroup"
4264
4265
  ];
4265
4266
  const themeV2BlockSpecificRawStyleFieldNames = [
@@ -4981,6 +4982,8 @@ const headerSchema = z$1.object({
4981
4982
  navStyle: headerNavStyle,
4982
4983
  navColor: themeColorTokenSchema.nullable().optional(),
4983
4984
  navWeight: navFontWeight.default("medium"),
4985
+ navTypography: z$1.enum(["body", "heading"]).optional(),
4986
+ navTextSize: navLinkStyleSchema.shape.textSize,
4984
4987
  container: headerContainerSchema,
4985
4988
  border: headerBorderSchema,
4986
4989
  shadow: componentShadowSchema.optional(),
@@ -7359,6 +7362,15 @@ function uniqueStrings(values) {
7359
7362
  }
7360
7363
  //#endregion
7361
7364
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
7365
+ function boundaryRuntimeMetrics(family, size, heightExpression) {
7366
+ return {
7367
+ family,
7368
+ size,
7369
+ heightCss: heightExpression.includes(" ") ? `calc(${heightExpression})` : heightExpression,
7370
+ reserveCss: `calc((${heightExpression}) / 2)`
7371
+ };
7372
+ }
7373
+ boundaryRuntimeMetrics("gradient", "medium", "6rem + 2px"), boundaryRuntimeMetrics("gradient", "spacious", "10rem"), boundaryRuntimeMetrics("gradient", "expansive", "14rem"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("wave", "large", "7rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("angle", "large", "7rem + 2px");
7362
7374
  const noneBoundaryOption = {
7363
7375
  id: asBoundaryOptionId("break:none"),
7364
7376
  label: "None",
@@ -8046,7 +8058,7 @@ const overlayLogoAccommodations = [
8046
8058
  * optional nested styling fields that would otherwise leak from another Look.
8047
8059
  */
8048
8060
  function baseHeader(theme) {
8049
- const { navLinkStyle: _navLinkStyle, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
8061
+ const { navLinkStyle: _navLinkStyle, navTypography: _navTypography, navTextSize: _navTextSize, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
8050
8062
  return {
8051
8063
  ...header,
8052
8064
  navContainer: {
@@ -8119,12 +8131,12 @@ const headerStyleCatalog = defineExactCatalog()([
8119
8131
  },
8120
8132
  {
8121
8133
  id: asHeaderStyleId("fine-line"),
8122
- label: "Fine Line",
8123
- description: "Light surface with a crisp lower rule and underline hover.",
8134
+ label: "Seamless",
8135
+ description: "Borderless surface with underline hover for a quieter page transition.",
8124
8136
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
8125
8137
  navInteraction: "underline-grow",
8126
- surface: "bordered",
8127
- defaultDepth: "line",
8138
+ surface: "neutral",
8139
+ defaultDepth: "none",
8128
8140
  navTypography: "plain",
8129
8141
  moods: [
8130
8142
  "calm",
@@ -26044,6 +26056,7 @@ const eventListingBlockDefinition = {
26044
26056
  } },
26045
26057
  seeAllUrl: { $bind: {
26046
26058
  from: "content.seeAllUrl",
26059
+ fallback: "",
26047
26060
  transforms: [{ id: "links.resolve" }]
26048
26061
  } },
26049
26062
  loadMoreText: { $bind: {
@@ -26347,6 +26360,7 @@ const eventCalendarLayout = [styledSection({
26347
26360
  } },
26348
26361
  seeAllUrl: { $bind: {
26349
26362
  from: "content.seeAllUrl",
26363
+ fallback: "",
26350
26364
  transforms: [{ id: "links.resolve" }]
26351
26365
  } },
26352
26366
  loadMoreText: { $bind: {
@@ -33777,7 +33791,7 @@ z$1.object({ acceptExtraSiteCharge: z$1.boolean().optional() });
33777
33791
  //#region ../surfaces/src/index.ts
33778
33792
  const SURFACE_IDS = ["core", "macadamia"];
33779
33793
  const DEFAULT_SURFACE_ID = "core";
33780
- SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID);
33794
+ [...SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID)];
33781
33795
  const CANONICAL_REFUND_PLANNER_ERROR_CODES = [
33782
33796
  ...[
33783
33797
  "already_refunded",
@@ -33826,6 +33840,7 @@ const VERTICAL_IDS = [
33826
33840
  "training_provider",
33827
33841
  "retreat_centre",
33828
33842
  "music_school",
33843
+ "voice_singing",
33829
33844
  "performing_arts_school",
33830
33845
  "community_wellbeing",
33831
33846
  "venue_event_space"
@@ -33878,6 +33893,11 @@ const VERTICAL_BOOKING_PRESETS = [
33878
33893
  preset("music_school.terms", "music_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date group courses."),
33879
33894
  preset("music_school.workshops", "music_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
33880
33895
  preset("music_school.performances", "music_school", "performance", "Performance", "Performances", "Concerts, recitals, showcases, or ticketed performances."),
33896
+ preset("voice_singing.lessons", "voice_singing", "appointment", "Voice session", "Voice sessions", "One-to-one singing lessons, voice coaching, or private practice sessions."),
33897
+ preset("voice_singing.classes", "voice_singing", "class", "Ongoing weekly session", "Ongoing weekly sessions", "Regular choirs, voice circles, community singing, or group practice."),
33898
+ preset("voice_singing.terms", "voice_singing", "course", "Singing term", "Singing terms", "Multi-week choir terms, voice courses, or fixed-date group programmes."),
33899
+ preset("voice_singing.workshops", "voice_singing", "workshop", "Workshop", "Workshops", "One-off singing workshops, voice journeys, or devotional singing sessions."),
33900
+ preset("voice_singing.performances", "voice_singing", "performance", "Performance", "Performances", "Choir concerts, sharing events, recitals, or community performances."),
33881
33901
  preset("performing_arts_school.classes", "performing_arts_school", "class", "Class", "Classes", "Regular group classes, rehearsals, or weekly sessions."),
33882
33902
  preset("performing_arts_school.terms", "performing_arts_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
33883
33903
  preset("performing_arts_school.workshops", "performing_arts_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
@@ -6893,7 +6893,7 @@ const API_ENDPOINTS$1 = {
6893
6893
  //#region ../surfaces/src/index.ts
6894
6894
  const SURFACE_IDS = ["core", "macadamia"];
6895
6895
  const DEFAULT_SURFACE_ID = "core";
6896
- SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID);
6896
+ [...SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID)];
6897
6897
  //#endregion
6898
6898
  //#region ../api/src/url.ts
6899
6899
  function looksLikeLocalAuthority(authority) {
@@ -7502,7 +7502,7 @@ var SimpleCache = class {
7502
7502
  * 1. This constant
7503
7503
  * 2. The "version" field in package.json
7504
7504
  */
7505
- const SDK_VERSION = "0.101.0";
7505
+ const SDK_VERSION = "0.103.0";
7506
7506
  //#endregion
7507
7507
  //#region src/client/error.ts
7508
7508
  let _Symbol$for;
@@ -305,6 +305,24 @@ function getRevalidationRequestMetadata(request, payload, counts) {
305
305
  ...monitorRunId ? { monitorRunId } : {}
306
306
  };
307
307
  }
308
+ async function clearRevalidationClientCache(getClient) {
309
+ if (!getClient) return {
310
+ success: true,
311
+ status: "skipped"
312
+ };
313
+ try {
314
+ await (await getClient()).clearCache();
315
+ return {
316
+ success: true,
317
+ status: "cleared"
318
+ };
319
+ } catch (error) {
320
+ return {
321
+ success: false,
322
+ error
323
+ };
324
+ }
325
+ }
308
326
  /**
309
327
  * Create a Next.js API route handler for webhook revalidation.
310
328
  *
@@ -312,7 +330,8 @@ function getRevalidationRequestMetadata(request, payload, counts) {
312
330
  * 1. Verifies the webhook signature using HMAC-SHA256
313
331
  * 2. Calls `revalidateTag()` for each normalized tag in the payload
314
332
  * 3. Calls `revalidatePath()` for each normalized path in the payload
315
- * 4. Returns a JSON response with the revalidation results
333
+ * 4. Best-effort clears the current process's SDK client cache when configured
334
+ * 5. Returns a JSON response with the revalidation results
316
335
  *
317
336
  * @param options - Configuration options
318
337
  * @returns A Next.js Route Handler function
@@ -365,6 +384,16 @@ function createRevalidateHandler(options = {}) {
365
384
  tagCount: normalizedTags.length,
366
385
  itemCount: revalidated.length
367
386
  });
387
+ const clientCache = await clearRevalidationClientCache(options.getClient);
388
+ const clientCacheStatus = clientCache.success ? clientCache.status : "failed";
389
+ if (!clientCache.success) console.warn("[Riverbank] SDK client cache clear failed after Next revalidation", {
390
+ event: payload.event,
391
+ siteId: payload.siteId,
392
+ pathCount: normalizedPaths.paths.length,
393
+ tagCount: normalizedTags.length,
394
+ itemCount: revalidated.length,
395
+ error: clientCache.error instanceof Error ? clientCache.error.message : String(clientCache.error)
396
+ });
368
397
  if (revalidated.length > 0) console.log([
369
398
  `[Riverbank] Revalidated ${normalizedPaths.paths.length} path(s)`,
370
399
  `and ${normalizedTags.length} tag(s)`,
@@ -378,6 +407,7 @@ function createRevalidateHandler(options = {}) {
378
407
  dispatchId: metadata.dispatchId,
379
408
  pathCount: normalizedPaths.paths.length,
380
409
  tagCount: normalizedTags.length,
410
+ clientCache: clientCacheStatus,
381
411
  invalidPathCount: normalizedPaths.invalidPaths.length,
382
412
  timestamp: Date.now()
383
413
  });