@riverbankcms/sdk 0.104.1 → 0.104.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/{PreviewEditorSidebar-CmaPXdKu.mjs → PreviewEditorSidebar-CBMhU9p_.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-C5xRTh2b.mjs → PreviewEditorUI-C5KEw4M8.mjs} +2 -2
  3. package/dist/{SdkPreviewModeRuntime-Eks51NcN.mjs → SdkPreviewModeRuntime-Iq12HjL7.mjs} +1142 -177
  4. package/dist/{SiteChromeCustomizeContext-Bt8zb3qu.mjs → SiteChromeCustomizeContext-Cx0NMdyv.mjs} +1640 -877
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +10 -0
  6. package/dist/_dts/blocks/src/primitives/layout/Grid.d.ts +12 -8
  7. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +3 -0
  8. package/dist/_dts/blocks/src/system/blocks/events/shared/layout.d.ts +11 -1
  9. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
  10. package/dist/_dts/blocks/src/system/constants/events.d.ts +1 -1
  11. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +12 -0
  12. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +2 -2
  13. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +14 -0
  14. package/dist/_dts/blocks/src/system/runtime/nodes/buttonAffordance.d.ts +33 -0
  15. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +28 -0
  16. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCapacity.d.ts +32 -0
  17. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +1 -0
  18. package/dist/_dts/blocks/src/system/runtime/nodes/svg.d.ts +77 -0
  19. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +2 -0
  20. package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +3 -40
  21. package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +14 -0
  22. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +11 -0
  23. package/dist/_dts/core/src/branded.d.ts +5 -0
  24. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +18 -0
  25. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +2 -2
  26. package/dist/_dts/sdk/src/version.d.ts +1 -1
  27. package/dist/_dts/theme-core/src/ThemeScope.d.ts +1 -1
  28. package/dist/_dts/theme-core/src/buttons/affordanceIcons.d.ts +29 -0
  29. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +6 -0
  30. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  31. package/dist/_dts/theme-core/src/buttons/personalities/flat-ink.d.ts +20 -0
  32. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  33. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +4 -0
  34. package/dist/_dts/theme-core/src/buttons/types.d.ts +34 -0
  35. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  36. package/dist/_dts/theme-core/src/gradients/types.d.ts +27 -3
  37. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +51 -15
  38. package/dist/_dts/theme-core/src/palette/curated/brand-led.d.ts +13 -0
  39. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +12 -0
  40. package/dist/_dts/theme-core/src/palette/historicalThemePalette.d.ts +44 -0
  41. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
  42. package/dist/_dts/theme-core/src/palette/legacySelection.d.ts +13 -2
  43. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +17 -2
  44. package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +3 -4
  45. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +1 -0
  46. package/dist/_dts/theme-core/src/schema.d.ts +108 -26
  47. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +2 -1
  48. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +50 -1
  49. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  50. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  51. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +56 -1
  52. package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +16 -1
  53. package/dist/_dts/theme-core/src/status/index.d.ts +0 -1
  54. package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +19 -0
  55. package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +9 -0
  56. package/dist/_dts/theme-core/src/surfaces/index.d.ts +2 -0
  57. package/dist/_dts/ui/src/button.d.ts +1 -1
  58. package/dist/cli/index.mjs +1558 -468
  59. package/dist/client/{DiscountCodeDisclosure-Dit2aItR.mjs → DiscountCodeDisclosure-BXM73_E5.mjs} +1 -1
  60. package/dist/client/{EventCombined.client-BnREyCjf.mjs → EventCombined.client-DT5elP7j.mjs} +4 -4
  61. package/dist/client/{EventListing.client-0uHld51x.mjs → EventListing.client-pTYGfV9C.mjs} +2 -2
  62. package/dist/client/{LeafletStaticMap-DJcvSfmj.mjs → LeafletStaticMap-dQrhlUe3.mjs} +1 -1
  63. package/dist/client/{MagicLinkForm-EAsIktfw.mjs → MagicLinkForm-u6Dul4j5.mjs} +2 -2
  64. package/dist/client/{StepIndicator-CRR17tYI.mjs → StepIndicator-nWqineJ2.mjs} +2 -2
  65. package/dist/client/{accordion-B47HIuuH.mjs → accordion-CSJcTUyH.mjs} +1 -1
  66. package/dist/client/{bookingForm-I1E-8F9P.mjs → bookingForm-C73wOuVa.mjs} +6 -6
  67. package/dist/client/bookings.mjs +137 -1
  68. package/dist/client/{buttons-BbPn8OKA.mjs → buttons-DfYyqt8C.mjs} +138 -2
  69. package/dist/client/{carousel-OlM7SyBs.mjs → carousel-fMBb0JSc.mjs} +1 -1
  70. package/dist/client/{cart-BKpG5jz6.mjs → cart-BtaCwT3S.mjs} +3 -3
  71. package/dist/client/{checkout-Dmmr6qoU.mjs → checkout-DkTwZSnh.mjs} +3 -3
  72. package/dist/client/client.mjs +2327 -542
  73. package/dist/client/{colorStyles-DuW4Fjqd.mjs → colorStyles-Wyl6JujD.mjs} +45 -4
  74. package/dist/client/{courseRegistration-CflZiqGk.mjs → courseRegistration-DnLmapJu.mjs} +7 -7
  75. package/dist/client/{eventCalendar-BvoLWcp-.mjs → eventCalendar-BvLOc9KY.mjs} +165 -5
  76. package/dist/client/{eventCombined-DsrO8t_t.mjs → eventCombined-kShgJPQr.mjs} +2 -2
  77. package/dist/client/{eventDetails-C3hxgcJm.mjs → eventDetails-C5NTM0Vo.mjs} +3 -3
  78. package/dist/client/{eventListing-C-hb237X.mjs → eventListing-B82ZdKP6.mjs} +2 -2
  79. package/dist/client/{eventRegistration-B0gyzDGi.mjs → eventRegistration-qJVFqBWo.mjs} +7 -7
  80. package/dist/client/{form-C_RUi6oJ.mjs → form-BvAcKiuu.mjs} +2 -2
  81. package/dist/client/{headerSection-IKQiD2U0.mjs → headerSection-NvAiEHAg.mjs} +3 -3
  82. package/dist/client/hooks.mjs +1034 -356
  83. package/dist/client/{locationMap-8ZBrMzRJ.mjs → locationMap-D0j52xfI.mjs} +3 -3
  84. package/dist/client/{media-CZJKL7fi.mjs → media-BCW_g2cQ.mjs} +1 -1
  85. package/dist/client/{newsletterForm-CYk3ucwj.mjs → newsletterForm-B8_i93qH.mjs} +2 -2
  86. package/dist/client/{pricing-B5GmvfIH.mjs → pricing-DIYnyHOk.mjs} +1 -1
  87. package/dist/client/{productDetail-BjS2Dqzo.mjs → productDetail-w0eAHkuQ.mjs} +3 -3
  88. package/dist/client/{productList-BOHvC8My.mjs → productList-Vsguq5Xt.mjs} +3 -3
  89. package/dist/client/{propsDecoder-WS6UEJwZ.mjs → propsDecoder-CD2pJ1WB.mjs} +37 -2
  90. package/dist/client/rendering/client.mjs +1722 -760
  91. package/dist/client/rendering/islands.mjs +19 -19
  92. package/dist/client/rendering.mjs +2303 -518
  93. package/dist/client/{shop-CON03-wN.mjs → shop-Dgxs-Q8F.mjs} +6 -6
  94. package/dist/client/{shop-commerce-DlqrFgH8.mjs → shop-commerce-DJAhsTaT.mjs} +6 -6
  95. package/dist/client/{shop-commerce-store-l74-Kne6.mjs → shop-commerce-store-CfCXltXW.mjs} +1 -1
  96. package/dist/client/{shopShared-CQheEXSg.mjs → shopShared-CmDcPXUt.mjs} +2 -2
  97. package/dist/client/{useDiscountCodeUi-v6OluyWl.mjs → useDiscountCodeUi-CirrT2bM.mjs} +1 -1
  98. package/dist/client/{useEventFilters-BqSTcNOf.mjs → useEventFilters-CNZxlCcO.mjs} +5 -5
  99. package/dist/client/{usePolling-DMfADjIF.mjs → usePolling-Baks_iBI.mjs} +2 -2
  100. package/dist/preview-next/client/runtime.mjs +3 -3
  101. package/dist/{sdk-runtime-BUmJ0DaT.mjs → sdk-runtime-BfNiFeNJ.mjs} +1 -1
  102. package/dist/{separator-Dd-JYok7.mjs → separator-BhAR_Xmf.mjs} +1 -1
  103. package/dist/server/components.mjs +2293 -531
  104. package/dist/server/config-validation.mjs +1040 -357
  105. package/dist/server/config.mjs +1040 -357
  106. package/dist/server/data.mjs +1034 -356
  107. package/dist/server/index.mjs +1 -1
  108. package/dist/server/next.mjs +2296 -534
  109. package/dist/server/page-converter.mjs +1018 -324
  110. package/dist/server/prebuild.mjs +1 -1
  111. package/dist/server/rendering/server.mjs +2278 -521
  112. package/dist/server/rendering.mjs +2293 -531
  113. package/dist/server/routing.mjs +1092 -338
  114. package/dist/server/server.mjs +1016 -338
  115. package/dist/server/theme-bridge.mjs +1240 -77
  116. package/dist/server/theme.mjs +165 -5
  117. package/dist/styles/index.css +617 -34
  118. package/package.json +1 -1
  119. package/dist/_dts/blocks/src/system/transforms/registry/_utils/sectionForegroundStyles.d.ts +0 -2
  120. package/dist/_dts/theme-core/src/status/contextualColors.d.ts +0 -6
@@ -5176,6 +5176,7 @@ declare const SiteStyleSelectionCommandBodySchema: z.ZodObject<{
5176
5176
  }>>>;
5177
5177
  headerLookId: z.ZodNullable<z.ZodEnum<{
5178
5178
  "clean-base": "clean-base";
5179
+ "classic-centered-nav": "classic-centered-nav";
5179
5180
  "brand-solid": "brand-solid";
5180
5181
  "serif-line": "serif-line";
5181
5182
  "centered-calm": "centered-calm";
@@ -5259,6 +5260,7 @@ export declare const SiteStyleSelectionCommandBackedPreviewSchema: z.ZodObject<{
5259
5260
  }>>>;
5260
5261
  headerLookId: z.ZodNullable<z.ZodEnum<{
5261
5262
  "clean-base": "clean-base";
5263
+ "classic-centered-nav": "classic-centered-nav";
5262
5264
  "brand-solid": "brand-solid";
5263
5265
  "serif-line": "serif-line";
5264
5266
  "centered-calm": "centered-calm";
@@ -5348,6 +5350,7 @@ export declare const ProposeSiteStyleSelectionCommandBackedOutputSchema: z.ZodOb
5348
5350
  }>>>;
5349
5351
  headerLookId: z.ZodNullable<z.ZodEnum<{
5350
5352
  "clean-base": "clean-base";
5353
+ "classic-centered-nav": "classic-centered-nav";
5351
5354
  "brand-solid": "brand-solid";
5352
5355
  "serif-line": "serif-line";
5353
5356
  "centered-calm": "centered-calm";
@@ -6377,6 +6380,7 @@ export declare const ProposeSiteStyleSelectionCommandBackedOutputSchema: z.ZodOb
6377
6380
  }>>>;
6378
6381
  headerLookId: z.ZodNullable<z.ZodEnum<{
6379
6382
  "clean-base": "clean-base";
6383
+ "classic-centered-nav": "classic-centered-nav";
6380
6384
  "brand-solid": "brand-solid";
6381
6385
  "serif-line": "serif-line";
6382
6386
  "centered-calm": "centered-calm";
@@ -6482,6 +6486,7 @@ export declare const ProposeSiteStyleSelectionOutputSchema: z.ZodUnion<readonly
6482
6486
  }>>>;
6483
6487
  headerLookId: z.ZodNullable<z.ZodEnum<{
6484
6488
  "clean-base": "clean-base";
6489
+ "classic-centered-nav": "classic-centered-nav";
6485
6490
  "brand-solid": "brand-solid";
6486
6491
  "serif-line": "serif-line";
6487
6492
  "centered-calm": "centered-calm";
@@ -7511,6 +7516,7 @@ export declare const ProposeSiteStyleSelectionOutputSchema: z.ZodUnion<readonly
7511
7516
  }>>>;
7512
7517
  headerLookId: z.ZodNullable<z.ZodEnum<{
7513
7518
  "clean-base": "clean-base";
7519
+ "classic-centered-nav": "classic-centered-nav";
7514
7520
  "brand-solid": "brand-solid";
7515
7521
  "serif-line": "serif-line";
7516
7522
  "centered-calm": "centered-calm";
@@ -7617,6 +7623,7 @@ export declare const ProposeSiteStyleSelectionResultSchema: z.ZodUnion<readonly
7617
7623
  }>>>;
7618
7624
  headerLookId: z.ZodNullable<z.ZodEnum<{
7619
7625
  "clean-base": "clean-base";
7626
+ "classic-centered-nav": "classic-centered-nav";
7620
7627
  "brand-solid": "brand-solid";
7621
7628
  "serif-line": "serif-line";
7622
7629
  "centered-calm": "centered-calm";
@@ -8646,6 +8653,7 @@ export declare const ProposeSiteStyleSelectionResultSchema: z.ZodUnion<readonly
8646
8653
  }>>>;
8647
8654
  headerLookId: z.ZodNullable<z.ZodEnum<{
8648
8655
  "clean-base": "clean-base";
8656
+ "classic-centered-nav": "classic-centered-nav";
8649
8657
  "brand-solid": "brand-solid";
8650
8658
  "serif-line": "serif-line";
8651
8659
  "centered-calm": "centered-calm";
@@ -30981,6 +30989,7 @@ export declare const proposalToolSchemas: {
30981
30989
  }>>>;
30982
30990
  headerLookId: z.ZodNullable<z.ZodEnum<{
30983
30991
  "clean-base": "clean-base";
30992
+ "classic-centered-nav": "classic-centered-nav";
30984
30993
  "brand-solid": "brand-solid";
30985
30994
  "serif-line": "serif-line";
30986
30995
  "centered-calm": "centered-calm";
@@ -32010,6 +32019,7 @@ export declare const proposalToolSchemas: {
32010
32019
  }>>>;
32011
32020
  headerLookId: z.ZodNullable<z.ZodEnum<{
32012
32021
  "clean-base": "clean-base";
32022
+ "classic-centered-nav": "classic-centered-nav";
32013
32023
  "brand-solid": "brand-solid";
32014
32024
  "serif-line": "serif-line";
32015
32025
  "centered-calm": "centered-calm";
@@ -5,17 +5,21 @@ import type { SemanticSpacing } from "../../system/spacing";
5
5
  type FixedSizeGap = "xs" | "sm" | "md" | "lg" | "none";
6
6
  /** Grid gap supports both fixed-size values and semantic spacing */
7
7
  type GridGap = FixedSizeGap | SemanticSpacing;
8
+ /**
9
+ * A per-breakpoint column value. A `number` is an equal-track column COUNT
10
+ * (rendered via the `rb-grid-cols-N` utilities). A `string` is a raw
11
+ * `grid-template-columns` TRACK TEMPLATE (e.g. `'1fr 0.9fr'`,
12
+ * `'repeat(3, minmax(0,1fr))'`) rendered via the responsive `rb-grid-tracks`
13
+ * utility + inline custom properties, so asymmetric ratios stay responsive.
14
+ */
15
+ type GridColValue = number | string;
16
+ type GridBreakpoint = "base" | "sm" | "md" | "lg" | "xl";
17
+ type GridColsObject = Partial<Record<GridBreakpoint, GridColValue>>;
8
18
  type GridProps = PrimitiveProps & {
9
- cols?: number | {
10
- base?: number;
11
- sm?: number;
12
- md?: number;
13
- lg?: number;
14
- xl?: number;
15
- };
19
+ cols?: GridColValue | GridColsObject;
16
20
  gap?: GridGap;
17
21
  /** Data slot attribute for CSS targeting */
18
22
  "data-slot"?: string;
19
23
  };
20
- export declare function Grid({ as: Comp, cols, gap, className, children, "data-slot": dataSlot, ...rest }: GridProps): React.JSX.Element;
24
+ export declare function Grid({ as: Comp, cols, gap, className, style, children, "data-slot": dataSlot, ...rest }: GridProps): React.JSX.Element;
21
25
  export {};
@@ -16,6 +16,8 @@ export declare const eventCalendarManifest: import("../..").DefinedBlockManifest
16
16
  readonly value: "calendar";
17
17
  }, {
18
18
  readonly value: "timetable";
19
+ }, {
20
+ readonly value: "week-board";
19
21
  }, {
20
22
  readonly value: "list";
21
23
  }];
@@ -42,6 +44,7 @@ export declare const eventCalendarManifest: import("../..").DefinedBlockManifest
42
44
  readonly combined: import("../..").NodeDefinition;
43
45
  readonly calendar: import("../..").NodeDefinition;
44
46
  readonly timetable: import("../..").NodeDefinition;
47
+ readonly 'week-board': import("../..").NodeDefinition;
45
48
  readonly list: import("../..").NodeDefinition;
46
49
  };
47
50
  readonly skipSectionStyles: true;
@@ -1,2 +1,12 @@
1
1
  import type { NodeDefinition } from '../../../node';
2
- export declare function eventSectionHeaderLayoutNodes(): readonly NodeDefinition[];
2
+ export type EventSectionHeaderLayoutOptions = {
3
+ /**
4
+ * When set, the heading + intro are wrapped in a single `<div>` carrying this
5
+ * class instead of being emitted as two stacked siblings. Used by the
6
+ * event-calendar (week-board) to render a two-column head (heading left,
7
+ * intro right); styling lives in blocks-static/event-calendar.css. Omit for
8
+ * the default stacked layout used by the listing/spotlight blocks.
9
+ */
10
+ splitClassName?: string;
11
+ };
12
+ export declare function eventSectionHeaderLayoutNodes(options?: EventSectionHeaderLayoutOptions): readonly NodeDefinition[];
@@ -14,6 +14,7 @@ export declare const testimonialsManifest: import("..").DefinedBlockManifest<imp
14
14
  readonly carousel: NodeDefinition;
15
15
  readonly grid: NodeDefinition;
16
16
  readonly 'split-grid': NodeDefinition;
17
+ readonly 'featured-editorial': NodeDefinition;
17
18
  readonly highlight: NodeDefinition;
18
19
  };
19
20
  readonly defaultVariant: "carousel";
@@ -33,6 +34,11 @@ export declare const testimonialsManifest: import("..").DefinedBlockManifest<imp
33
34
  readonly description: "Heading on the left with testimonial cards on the right";
34
35
  readonly icon: "PanelLeft";
35
36
  };
37
+ readonly 'featured-editorial': {
38
+ readonly label: "Featured editorial";
39
+ readonly description: "A large featured ink quote beside a column of stacked cards (no avatars)";
40
+ readonly icon: "Quote";
41
+ };
36
42
  readonly highlight: {
37
43
  readonly label: "Highlight";
38
44
  readonly description: "A single, centered testimonial with no carousel";
@@ -56,7 +62,7 @@ export declare const testimonialsManifest: import("..").DefinedBlockManifest<imp
56
62
  };
57
63
  }>>;
58
64
  export type TestimonialsBlockContent = {
59
- variant?: 'carousel' | 'grid' | 'split-grid' | 'highlight' | null;
65
+ variant?: 'carousel' | 'grid' | 'split-grid' | 'featured-editorial' | 'highlight' | null;
60
66
  heading?: string | null;
61
67
  subheading?: string | null;
62
68
  avatarLayout?: 'above-centered' | 'inline-left' | 'hidden' | null;
@@ -25,7 +25,7 @@ export type EventContentTypeSlug = (typeof EVENT_CONTENT_TYPE_SLUGS)[number];
25
25
  */
26
26
  export declare const EVENT_CATEGORY_BADGE_TOKENS: readonly ["primary", "secondary", "accent"];
27
27
  export type EventCategoryBadgeToken = (typeof EVENT_CATEGORY_BADGE_TOKENS)[number];
28
- export declare const eventCalendarDisplayModeValues: readonly ["combined", "calendar", "list", "timetable"];
28
+ export declare const eventCalendarDisplayModeValues: readonly ["combined", "calendar", "list", "timetable", "week-board"];
29
29
  export type EventCalendarDisplayMode = (typeof eventCalendarDisplayModeValues)[number];
30
30
  export declare const eventCalendarDefaultViewValues: readonly ["month", "week"];
31
31
  export type EventCalendarDefaultView = (typeof eventCalendarDefaultViewValues)[number];
@@ -30,6 +30,18 @@ export declare function buildHighlightLayout(): NodeDefinition;
30
30
  * heading copy in a sibling column instead of above the cards.
31
31
  */
32
32
  export declare function buildGridCardsLayout(className: string): NodeDefinition;
33
+ /**
34
+ * Build the "featured editorial" layout: an asymmetric two-column arrangement
35
+ * where the FIRST testimonial is a large featured (spruce-ink) card and the
36
+ * remaining testimonials stack as white cards beside it.
37
+ *
38
+ * First-vs-rest branching is done without an offset primitive: the featured
39
+ * card uses `repeat(..., { limit: 1 })` (entry 0 only), and the rest column
40
+ * repeats over every entry but skips index 0 via `when("tIndex", { equals: 0,
41
+ * not: true })`. The `$when` guard is re-evaluated per repeated item with the
42
+ * index scope in context, so entry 0 produces no node in the rest column.
43
+ */
44
+ export declare function buildFeaturedEditorialLayout(): NodeDefinition;
33
45
  /**
34
46
  * Fragment definition for testimonials carousel.
35
47
  * Provides field definitions and data loader configuration.
@@ -11,7 +11,7 @@
11
11
  * SdkCustomBlock.layout definitions. Node types not in this list
12
12
  * will be rejected during validation.
13
13
  */
14
- export declare const ALLOWED_NODE_TYPES: readonly ["div", "figure", "section", "headerSection", "stack", "inline", "grid", "text", "richText", "media", "videoEmbed", "button", "link", "carousel", "accordion", "accordionItem", "form", "booking-form", "weekly-slot-availability", "event-registration", "event-spotlight", "event-listing", "event-calendar", "offerings-preview", "event-combined", "shop", "product-list", "product-detail", "cart", "checkout", "gifting"];
14
+ export declare const ALLOWED_NODE_TYPES: readonly ["div", "figure", "section", "headerSection", "stack", "inline", "grid", "text", "richText", "media", "videoEmbed", "icon", "feature-card-icon", "svg", "button", "link", "carousel", "accordion", "accordionItem", "form", "booking-form", "weekly-slot-availability", "event-registration", "event-spotlight", "event-listing", "event-calendar", "offerings-preview", "event-combined", "shop", "product-list", "product-detail", "cart", "checkout", "gifting"];
15
15
  export type AllowedNodeType = (typeof ALLOWED_NODE_TYPES)[number];
16
16
  /**
17
17
  * Valid transform IDs for declarative layouts.
@@ -20,7 +20,7 @@ export type AllowedNodeType = (typeof ALLOWED_NODE_TYPES)[number];
20
20
  * $bind.transforms within custom block layouts. Transform IDs
21
21
  * not in this list will be rejected during validation.
22
22
  */
23
- export declare const ALLOWED_TRANSFORM_IDS: readonly ["string.uppercase", "value.fallback", "date.formatShort", "array.length", "value.jsonArray", "value.csv", "array.marqueeLoop", "layout.maxWidthClass", "layout.headerRootClass", "layout.footerRootClass", "layout.headerRootStyle", "layout.headerSectionBackground", "layout.footerRootStyle", "ui.headerNavLinkClass", "ui.headingClassFromAlignment", "ui.bodyClassFromAlignment", "ui.stackAlignFromAlignment", "ui.sectionStateTone", "ui.heroContentWrapperClass", "ui.heroCtaJustify", "ui.heroStackJustifyFromVerticalAlignment", "ui.heroGridClassFromVerticalAlignment", "ui.conditionalClass", "ui.twoColumnContainerClass", "ui.twoColumnFlexBasis", "ui.imageGalleryFilterClass", "ui.imageGalleryTileClass", "ui.imageGalleryTileStyle", "ui.imageGalleryMarqueeTileStyle", "ui.imageGalleryMarqueeDuration", "ui.imageGalleryMarqueeDirection", "ui.imageFragmentClass", "ui.imageFragmentSize", "media.fromUrl", "background.resolveStyle", "background.resolveColorsStyle", "background.resolveAllowOverflow", "background.resolveImageStyle", "background.resolveImageClassName", "background.resolveOverlayStyle", "links.resolve", "links.label", "content.interpolateRichTextTokens", "boxStyles.spacing", "boxStyles.resolveRootClass", "boxStyles.resolveRootStyle", "boxStyles.semanticGap", "boxStyles.semanticGapValue", "boxStyles.cardVariantClass", "containerStyles.resolveBoxClassName"];
23
+ export declare const ALLOWED_TRANSFORM_IDS: readonly ["string.uppercase", "value.fallback", "date.formatShort", "array.length", "value.jsonArray", "value.csv", "array.marqueeLoop", "value.mapToken", "layout.maxWidthClass", "layout.headerRootClass", "layout.footerRootClass", "layout.headerRootStyle", "layout.headerSectionBackground", "layout.classicNavMode", "layout.footerRootStyle", "ui.headerNavLinkClass", "ui.headingClassFromAlignment", "ui.bodyClassFromAlignment", "ui.stackAlignFromAlignment", "ui.sectionStateTone", "ui.heroContentWrapperClass", "ui.heroCtaJustify", "ui.heroStackJustifyFromVerticalAlignment", "ui.heroGridClassFromVerticalAlignment", "ui.conditionalClass", "ui.twoColumnContainerClass", "ui.twoColumnFlexBasis", "ui.imageGalleryFilterClass", "ui.imageGalleryTileClass", "ui.imageGalleryTileStyle", "ui.imageGalleryMarqueeTileStyle", "ui.imageGalleryMarqueeDuration", "ui.imageGalleryMarqueeDirection", "ui.imageFragmentClass", "ui.imageFragmentSize", "media.fromUrl", "background.resolveStyle", "background.resolveColorsStyle", "background.resolveAllowOverflow", "background.resolveImageStyle", "background.resolveImageClassName", "background.resolveOverlayStyle", "links.resolve", "links.label", "content.interpolateRichTextTokens", "boxStyles.spacing", "boxStyles.resolveRootClass", "boxStyles.resolveRootStyle", "boxStyles.semanticGap", "boxStyles.semanticGapValue", "boxStyles.cardVariantClass", "containerStyles.resolveBoxClassName"];
24
24
  export type AllowedTransformId = (typeof ALLOWED_TRANSFORM_IDS)[number];
25
25
  /**
26
26
  * Set for O(1) lookup of allowed node types.
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type ButtonSizeName } from '../../../../../theme-core/src/buttons/index';
3
+ import { type ButtonAffordance } from './buttonAffordance';
3
4
  import type { PreviewLinkedEntryFieldBinding } from '../../data';
4
5
  export type TextNodeProps = {
5
6
  value?: unknown;
@@ -48,6 +49,19 @@ export type ButtonNodeProps = {
48
49
  type?: 'button' | 'submit' | 'reset';
49
50
  /** When true, hide the button if href is missing */
50
51
  linkRequired?: boolean;
52
+ /**
53
+ * Optional trailing affordance icon (a registry icon id, e.g. `'ArrowRight'`)
54
+ * rendered after the label. Overrides any personality-supplied affordance.
55
+ */
56
+ trailingIcon?: string;
57
+ /** Optional palette token for the trailing icon colour (e.g. `'accent'`). */
58
+ trailingIconColorToken?: string;
59
+ /**
60
+ * Personality/variant affordance default, supplied by the theme so a variant
61
+ * can carry a trailing icon without per-node authoring. Node-level
62
+ * `trailingIcon` takes precedence.
63
+ */
64
+ personalityAffordance?: ButtonAffordance;
51
65
  };
52
66
  export declare const ButtonNode: React.FC<ButtonNodeProps & {
53
67
  blockId?: string;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Pure resolution of a button's trailing affordance icon.
3
+ *
4
+ * A button can acquire a trailing icon from two places:
5
+ * 1. The node itself (`trailingIcon` / `trailingIconColorToken` props).
6
+ * 2. The active button personality/variant (`affordance`), supplied by the
7
+ * theme so a variant carries an affordance without per-node authoring.
8
+ *
9
+ * Node-level wins over the personality default. When neither supplies one, the
10
+ * button renders no trailing icon (and the personality's CSS `::after`
11
+ * affordance, if any, is left to show through).
12
+ */
13
+ export type ButtonAffordance = {
14
+ iconId: string;
15
+ colorToken?: string;
16
+ };
17
+ export type ResolveButtonAffordanceInput = {
18
+ /** Node-level icon id (e.g. `'ArrowRight'`). Highest priority. */
19
+ trailingIcon?: string | null;
20
+ /** Node-level colour token for the node icon. */
21
+ trailingIconColorToken?: string | null;
22
+ /** Personality/variant affordance default (theme-supplied). */
23
+ personalityAffordance?: ButtonAffordance | null;
24
+ };
25
+ export type ResolvedButtonAffordance = ButtonAffordance & {
26
+ /** Where the affordance came from — useful for suppression decisions and tests. */
27
+ source: 'node' | 'personality';
28
+ };
29
+ /**
30
+ * Resolve the trailing affordance a button should render. Node overrides
31
+ * personality; returns `null` when nothing is configured.
32
+ */
33
+ export declare function resolveButtonAffordance(input: ResolveButtonAffordanceInput): ResolvedButtonAffordance | null;
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import type { ButtonVariant, PublicEvent } from '../../../../blocks/events/shared/types';
3
+ import { type WeekCalendarDays } from './utils';
4
+ type WeekBoardViewProps = {
5
+ days: WeekCalendarDays;
6
+ events: PublicEvent[];
7
+ showCapacity: boolean;
8
+ emptyMessage?: string;
9
+ /** Board title shown in the top bar. */
10
+ title?: string;
11
+ /** Footer note shown alongside the CTA. */
12
+ footerNote?: string;
13
+ /** Footer CTA label. */
14
+ ctaLabel?: string;
15
+ /** Optional href for the footer CTA. Renders a button when omitted. */
16
+ ctaHref?: string | null;
17
+ buttonVariant?: ButtonVariant;
18
+ };
19
+ /**
20
+ * WeekBoardView
21
+ *
22
+ * Compact "class day-board": day columns side by side (one card per class per
23
+ * day), a legend of the three availability states, and a footer CTA. Collapses
24
+ * to a stacked list on mobile. Repurposes the week-grouped agenda data as a
25
+ * board rather than an hour-positioned timetable grid.
26
+ */
27
+ export declare const WeekBoardView: React.FC<WeekBoardViewProps>;
28
+ export default WeekBoardView;
@@ -14,3 +14,35 @@ export type EventAvailability = {
14
14
  * rows, and timetable cells — keep wording variations in the call sites.
15
15
  */
16
16
  export declare function getEventAvailability(event: PublicEvent): EventAvailability;
17
+ /**
18
+ * Three-state availability status for the compact class board.
19
+ * - `available`: comfortable capacity (or uncapped) — maps to the green/secondary token.
20
+ * - `filling`: at or below the "filling" threshold — maps to the accent/amber token.
21
+ * - `waitlist`: full — maps to the muted token. Label reflects whether a waitlist is open.
22
+ */
23
+ export type EventAvailabilityStatus = 'available' | 'filling' | 'waitlist';
24
+ export type EventAvailabilityDetail = {
25
+ status: EventAvailabilityStatus;
26
+ /** Remaining spots. `null` when the event has no capacity cap. */
27
+ available: number | null;
28
+ isFull: boolean;
29
+ /**
30
+ * Short capacity pill label, e.g. "4 places", "2 left", "Waitlist", "Full".
31
+ * `null` for uncapped events so the pill can be omitted entirely.
32
+ */
33
+ label: string | null;
34
+ };
35
+ /** Default remaining-spot count at/below which an event reads as "filling up". */
36
+ export declare const DEFAULT_FILLING_THRESHOLD = 2;
37
+ type AvailabilityStatusOptions = {
38
+ /** Remaining spots at or below which the event is "filling up". Defaults to 2. */
39
+ fillingThreshold?: number;
40
+ };
41
+ /**
42
+ * Derive the three-state availability status (available / filling / waitlist)
43
+ * plus a short pill label. Builds on {@link getEventAvailability} so the
44
+ * capacity math (availableSpots with a `capacity - registeredCount` fallback)
45
+ * stays consistent with the binary helper used elsewhere.
46
+ */
47
+ export declare function getEventAvailabilityStatus(event: PublicEvent, options?: AvailabilityStatusOptions): EventAvailabilityDetail;
48
+ export {};
@@ -24,6 +24,7 @@ export declare const eventCalendarDisplayModeSchema: z.ZodEnum<{
24
24
  calendar: "calendar";
25
25
  combined: "combined";
26
26
  timetable: "timetable";
27
+ "week-board": "week-board";
27
28
  }>;
28
29
  export declare const eventCalendarDefaultViewSchema: z.ZodEnum<{
29
30
  week: "week";
@@ -0,0 +1,77 @@
1
+ import React from 'react';
2
+ /**
3
+ * Bounded, prop-driven SVG node.
4
+ *
5
+ * Unlike a raw `dangerouslySetInnerHTML` escape hatch, this node accepts a
6
+ * closed set of primitive shapes (`path`/`ellipse`/`circle`/`rect`/`line`) and
7
+ * maps each to the corresponding SVG element.
8
+ *
9
+ * Geometry (`d`, `cx`, `x`, ...) is emitted as SVG presentation attributes.
10
+ * Paint props (`fill`/`stroke`/`fillOpacity`/...) are emitted via inline
11
+ * `style` rather than attributes: this is deliberate so that colour values may
12
+ * contain theme token references such as `"rgb(var(--tb-accent))"`. CSS
13
+ * `var()` is only substituted in a CSS-property context — inside a
14
+ * presentation *attribute* it never resolves — so paint-through-style is what
15
+ * keeps the node fully themeable and live-recolouring.
16
+ *
17
+ * There are no child nodes and no raw markup: everything is declared as data,
18
+ * which keeps it safe to persist and validate like any other layout node.
19
+ */
20
+ type NodeMetadataProps = {
21
+ pathBase?: string;
22
+ blockId?: string | null;
23
+ blockKind?: string;
24
+ blockContent?: unknown;
25
+ fragmentRegistry?: unknown;
26
+ };
27
+ /** Paint/appearance props common to every shape. Passed straight to SVG attributes. */
28
+ type ShapePaint = {
29
+ fill?: string;
30
+ stroke?: string;
31
+ strokeWidth?: string | number;
32
+ fillOpacity?: string | number;
33
+ strokeOpacity?: string | number;
34
+ strokeLinecap?: 'butt' | 'round' | 'square';
35
+ strokeLinejoin?: 'miter' | 'round' | 'bevel';
36
+ strokeDasharray?: string | number;
37
+ };
38
+ export type SvgShape = ({
39
+ kind: 'path';
40
+ d: string;
41
+ } & ShapePaint) | ({
42
+ kind: 'ellipse';
43
+ cx: number | string;
44
+ cy: number | string;
45
+ rx: number | string;
46
+ ry: number | string;
47
+ } & ShapePaint) | ({
48
+ kind: 'circle';
49
+ cx: number | string;
50
+ cy: number | string;
51
+ r: number | string;
52
+ } & ShapePaint) | ({
53
+ kind: 'rect';
54
+ x: number | string;
55
+ y: number | string;
56
+ width: number | string;
57
+ height: number | string;
58
+ rx?: number | string;
59
+ ry?: number | string;
60
+ } & ShapePaint) | ({
61
+ kind: 'line';
62
+ x1: number | string;
63
+ y1: number | string;
64
+ x2: number | string;
65
+ y2: number | string;
66
+ } & ShapePaint);
67
+ export type SvgNodeProps = {
68
+ viewBox: string;
69
+ width?: string | number;
70
+ height?: string | number;
71
+ className?: string;
72
+ style?: React.CSSProperties;
73
+ ariaHidden?: boolean;
74
+ shapes: SvgShape[];
75
+ };
76
+ export declare const SvgNode: React.FC<SvgNodeProps & NodeMetadataProps>;
77
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { TransformContext } from '../core';
2
+ export declare function resolveSurfaceForegroundStyles(value: unknown, context: TransformContext): Record<string, string>;
@@ -111,50 +111,13 @@ export declare const containerStylesResolveClassName: TransformDefinition<Contai
111
111
  * - background includes the container padding
112
112
  */
113
113
  export declare const containerStylesResolveBoxClassName: TransformDefinition<ContainerClassNameOptions>;
114
- type SectionTextColorOptions = {
115
- /**
116
- * Optional fallback token to use when no explicit textColor is set.
117
- * When omitted, the transform returns an empty style object.
118
- */
119
- fallbackToken?: string;
120
- };
121
- /**
122
- * Resolves section text color style object.
123
- *
124
- * The value should be the `_sectionStyles.background.textColor` token.
125
- * Returns an empty object when unset so the section inherits text color.
126
- *
127
- * Outputs both `color` and `--section-text-color` CSS variable so that
128
- * headings (which have explicit color rules in typography CSS) can inherit
129
- * the section's text color via the CSS variable cascade.
130
- */
131
- export declare const sectionTextColorStyleTransform: TransformDefinition<SectionTextColorOptions>;
132
- type SectionHeadingColorOptions = {
133
- /**
134
- * Optional fallback token to use when no explicit headingColor is set.
135
- * When omitted, the transform returns an empty style object.
136
- */
137
- fallbackToken?: string;
138
- };
139
- /**
140
- * Resolves section heading color style object.
141
- *
142
- * The value should be the `_sectionStyles.background.headingColor` token.
143
- * Returns an empty object when unset so headings inherit from textColor or default.
144
- *
145
- * Outputs `--section-heading-color` CSS variable which typography CSS can use
146
- * to style headings differently from body text within a section.
147
- */
148
- export declare const sectionHeadingColorStyleTransform: TransformDefinition<SectionHeadingColorOptions>;
149
114
  /**
150
- * Resolves section foreground colors from the background object.
115
+ * Resolves surface foreground colors from the background object.
151
116
  *
152
117
  * The value should be the full `_sectionStyles.background` object.
153
118
  * Outputs:
154
- * - `color` and `--section-text-color` from background.textColor
155
- * - `--section-heading-color` from background.headingColor (falls back to textColor if not set)
156
- * - `--section-link-color` from background.linkColor (falls back to textColor if not set)
157
- * - `--section-supporting-color` from background.supportingColor (falls back to textColor if not set)
119
+ * - `color` and the complete `--rb-surface-*-color` contract
120
+ * - optional roles fall back atomically to background.textColor
158
121
  *
159
122
  * This combined transform replaces separate foreground color transforms
160
123
  * when both need to be applied to the same style prop.
@@ -12,5 +12,19 @@ declare const marqueeLoopOptionsSchema: z.ZodObject<{
12
12
  minItems: z.ZodDefault<z.ZodNumber>;
13
13
  }, z.core.$strip>;
14
14
  export declare const marqueeLoopTransform: TransformDefinition<z.infer<typeof marqueeLoopOptionsSchema>>;
15
+ declare const mapTokenOptionsSchema: z.ZodObject<{
16
+ cases: z.ZodRecord<z.ZodString, z.ZodString>;
17
+ fallback: z.ZodOptional<z.ZodString>;
18
+ }, z.core.$strip>;
19
+ /**
20
+ * Map a content state/enum to a theme token colour — the first-class way to turn
21
+ * a value like a class's availability (`available`/`filling`/`waitlist`), a
22
+ * card's featured flag, or a pricing tier level into a themed colour. Authors
23
+ * write role names and get `rgb(var(--tb-<role>))`, so the result live-recolours
24
+ * with the theme and drops directly into a `style` binding (e.g.
25
+ * `borderLeftColor`). Returns `undefined` when the value matches no case and no
26
+ * fallback is given, so the style property is simply omitted.
27
+ */
28
+ export declare const mapTokenTransform: TransformDefinition<z.infer<typeof mapTokenOptionsSchema>>;
15
29
  export declare const formattingTransforms: TransformDefinition[];
16
30
  export {};
@@ -8,6 +8,17 @@ declare const headerLogoClassSchema: z.ZodObject<{
8
8
  export declare const headerLogoClassTransform: TransformDefinition<z.infer<typeof headerLogoClassSchema>>;
9
9
  export declare const headerLogoMediaClassTransform: TransformDefinition<z.infer<typeof headerLogoClassSchema>>;
10
10
  export declare const headerLogoTextVisibleTransform: TransformDefinition;
11
+ /**
12
+ * Selects which classic-layout nav row should render.
13
+ *
14
+ * - `'inline'` → classic variant with the historical logo-left / nav-right row
15
+ * - `'centered'`→ classic variant with a centred (flex-1) nav and a right CTA
16
+ * - `'other'` → not a classic variant (centered/floating/transparent handle it)
17
+ *
18
+ * Consumed by the site-header block's `$when` gates so the two classic rows are
19
+ * mutually exclusive without introducing a new top-level header variant.
20
+ */
21
+ export declare const classicNavModeTransform: TransformDefinition;
11
22
  declare const maxWidthClassSchema: z.ZodObject<{
12
23
  base: z.ZodOptional<z.ZodString>;
13
24
  container: z.ZodOptional<z.ZodString>;
@@ -30,6 +30,7 @@ export type PageSurfaceId = Brand<string, 'PageSurfaceId'>;
30
30
  export type OccurrenceId = Brand<string, 'OccurrenceId'>;
31
31
  export type EventOfferingId = Brand<string, 'EventOfferingId'>;
32
32
  export type EventSeriesId = Brand<string, 'EventSeriesId'>;
33
+ export type EventPageRouteSlug = Brand<string, 'EventPageRouteSlug'>;
33
34
  export type TicketTypeId = Brand<string, 'TicketTypeId'>;
34
35
  export type EventCategoryId = Brand<string, 'EventCategoryId'>;
35
36
  export type VenueId = Brand<string, 'VenueId'>;
@@ -61,6 +62,7 @@ export type FormSubmissionId = Brand<string, 'FormSubmissionId'>;
61
62
  export type PassId = Brand<string, 'PassId'>;
62
63
  export type MembershipId = Brand<string, 'MembershipId'>;
63
64
  export type CourseId = Brand<string, 'CourseId'>;
65
+ export type CourseProgramId = Brand<string, 'CourseProgramId'>;
64
66
  export type CustomerId = Brand<string, 'CustomerId'>;
65
67
  export type OrderId = Brand<string, 'OrderId'>;
66
68
  export type OrderItemId = Brand<string, 'OrderItemId'>;
@@ -149,6 +151,7 @@ export declare const unsafeAsPageSurfaceId: (id: string) => PageSurfaceId;
149
151
  export declare const unsafeAsOccurrenceId: (id: string) => OccurrenceId;
150
152
  export declare const unsafeAsEventOfferingId: (id: string) => EventOfferingId;
151
153
  export declare const unsafeAsEventSeriesId: (id: string) => EventSeriesId;
154
+ export declare const unsafeAsEventPageRouteSlug: (value: string) => EventPageRouteSlug;
152
155
  export declare const unsafeAsTicketTypeId: (id: string) => TicketTypeId;
153
156
  export declare const unsafeAsEventCategoryId: (id: string) => EventCategoryId;
154
157
  export declare const unsafeAsVenueId: (id: string) => VenueId;
@@ -180,6 +183,7 @@ export declare const unsafeAsFormSubmissionId: (id: string) => FormSubmissionId;
180
183
  export declare const unsafeAsPassId: (id: string) => PassId;
181
184
  export declare const unsafeAsMembershipId: (id: string) => MembershipId;
182
185
  export declare const unsafeAsCourseId: (id: string) => CourseId;
186
+ export declare const unsafeAsCourseProgramId: (id: string) => CourseProgramId;
183
187
  export declare const unsafeAsCustomerId: (id: string) => CustomerId;
184
188
  export declare const unsafeAsOrderId: (id: string) => OrderId;
185
189
  export declare const unsafeAsOrderItemId: (id: string) => OrderItemId;
@@ -241,6 +245,7 @@ export declare const parsePageId: (value: unknown) => Result<PageId, BrandedIdPa
241
245
  export declare const parsePageSurfaceId: (value: unknown) => Result<PageSurfaceId, BrandedIdParseError>;
242
246
  export declare const parseOccurrenceId: (value: unknown) => Result<OccurrenceId, BrandedIdParseError>;
243
247
  export declare const parseEventOfferingId: (value: unknown) => Result<EventOfferingId, BrandedIdParseError>;
248
+ export declare const parseCourseProgramId: (value: unknown) => Result<CourseProgramId, BrandedIdParseError>;
244
249
  export declare const parseTicketTypeId: (value: unknown) => Result<TicketTypeId, BrandedIdParseError>;
245
250
  export declare const parsePricingOptionId: (value: unknown) => Result<PricingOptionId, BrandedIdParseError>;
246
251
  export declare const parseUserId: (value: unknown) => Result<UserId, BrandedIdParseError>;
@@ -17047,6 +17047,12 @@ export type Database = {
17047
17047
  theme_id: string;
17048
17048
  }[];
17049
17049
  };
17050
+ assert_event_offering_surface_binding: {
17051
+ Args: {
17052
+ p_event_offering_id: string;
17053
+ };
17054
+ Returns: undefined;
17055
+ };
17050
17056
  assert_single_subject_participant_roster_atomic: {
17051
17057
  Args: {
17052
17058
  p_customer_id: string;
@@ -18307,6 +18313,18 @@ export type Database = {
18307
18313
  locked_until: string;
18308
18314
  }[];
18309
18315
  };
18316
+ repair_shared_event_offering_surface: {
18317
+ Args: {
18318
+ p_event_series_ids: string[];
18319
+ p_site_id: string;
18320
+ p_slug: string;
18321
+ p_source_content_entry_id: string;
18322
+ p_source_route_id: string;
18323
+ p_surface_id: string;
18324
+ p_title: string;
18325
+ };
18326
+ Returns: string;
18327
+ };
18310
18328
  replace_appointment_availability_schedule_payload: {
18311
18329
  Args: {
18312
18330
  p_interval_minutes: number;
@@ -214,7 +214,7 @@ export type EmbedContent = {
214
214
  export type EventLayout = 'grid' | 'stack' | 'compact';
215
215
  export type ColumnOption = '2' | '3' | '4';
216
216
  export type WeekStart = 'sunday' | 'monday';
217
- export type DisplayMode = 'combined' | 'calendar' | 'list' | 'timetable';
217
+ export type DisplayMode = 'combined' | 'calendar' | 'list' | 'timetable' | 'week-board';
218
218
  export type FilterAutoShow = 'auto' | 'always' | 'never';
219
219
  export type CalendarTabViews = 'both' | 'month' | 'week';
220
220
  export type CalendarView = 'month' | 'week';
@@ -574,7 +574,7 @@ export type TeamMembersContent = (TeamMembersCommonContent & {
574
574
  members?: ManualTeamMemberItem[];
575
575
  });
576
576
  export type TestimonialsBlockContent = {
577
- variant?: 'carousel' | 'grid' | 'split-grid' | 'highlight' | null;
577
+ variant?: 'carousel' | 'grid' | 'split-grid' | 'featured-editorial' | 'highlight' | null;
578
578
  heading?: string | null;
579
579
  subheading?: string | null;
580
580
  avatarLayout?: 'above-centered' | 'inline-left' | 'hidden' | null;
@@ -8,4 +8,4 @@
8
8
  * 1. This constant
9
9
  * 2. The "version" field in package.json
10
10
  */
11
- export declare const SDK_VERSION = "0.104.1";
11
+ export declare const SDK_VERSION = "0.104.3";