@riverbankcms/sdk 0.104.0 → 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 (129) hide show
  1. package/dist/{PreviewEditorSidebar-ywqcYjTB.mjs → PreviewEditorSidebar-CBMhU9p_.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-DApUNF6g.mjs → PreviewEditorUI-C5KEw4M8.mjs} +2 -2
  3. package/dist/{SdkPreviewModeRuntime-DmHCcIMO.mjs → SdkPreviewModeRuntime-Iq12HjL7.mjs} +1147 -180
  4. package/dist/{SiteChromeCustomizeContext-BV9GU-3C.mjs → SiteChromeCustomizeContext-Cx0NMdyv.mjs} +1818 -951
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +10 -0
  6. package/dist/_dts/api/src/bookingVerticals.d.ts +64 -1
  7. package/dist/_dts/blocks/src/primitives/layout/Grid.d.ts +12 -8
  8. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +3 -0
  9. package/dist/_dts/blocks/src/system/blocks/events/shared/layout.d.ts +11 -1
  10. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
  11. package/dist/_dts/blocks/src/system/constants/events.d.ts +1 -1
  12. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +12 -0
  13. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +2 -2
  14. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +14 -0
  15. package/dist/_dts/blocks/src/system/runtime/nodes/buttonAffordance.d.ts +33 -0
  16. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +28 -0
  17. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCapacity.d.ts +32 -0
  18. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +1 -0
  19. package/dist/_dts/blocks/src/system/runtime/nodes/svg.d.ts +77 -0
  20. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +2 -0
  21. package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +3 -40
  22. package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +14 -0
  23. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +11 -0
  24. package/dist/_dts/core/src/branded.d.ts +5 -0
  25. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +18 -0
  26. package/dist/_dts/editor/src/index.d.ts +3 -1
  27. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +14 -6
  28. package/dist/_dts/editor/src/primitives/rich-text/RichTextToolbar.d.ts +23 -4
  29. package/dist/_dts/editor/src/primitives/rich-text/config.d.ts +6 -0
  30. package/dist/_dts/editor/src/primitives/rich-text/extensions/RichTextLink.d.ts +1 -0
  31. package/dist/_dts/editor/src/primitives/rich-text/paste.d.ts +10 -0
  32. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +2 -2
  33. package/dist/_dts/sdk/src/version.d.ts +1 -1
  34. package/dist/_dts/theme-core/src/ThemeScope.d.ts +1 -1
  35. package/dist/_dts/theme-core/src/buttons/affordanceIcons.d.ts +29 -0
  36. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +6 -0
  37. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  38. package/dist/_dts/theme-core/src/buttons/personalities/flat-ink.d.ts +20 -0
  39. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  40. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +4 -0
  41. package/dist/_dts/theme-core/src/buttons/types.d.ts +34 -0
  42. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  43. package/dist/_dts/theme-core/src/gradients/types.d.ts +27 -3
  44. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +51 -15
  45. package/dist/_dts/theme-core/src/palette/curated/brand-led.d.ts +13 -0
  46. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +12 -0
  47. package/dist/_dts/theme-core/src/palette/historicalThemePalette.d.ts +44 -0
  48. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
  49. package/dist/_dts/theme-core/src/palette/legacyRuntimeProjection.d.ts +23 -6
  50. package/dist/_dts/theme-core/src/palette/legacySelection.d.ts +13 -2
  51. package/dist/_dts/theme-core/src/palette/paletteCompatibilityTransition.d.ts +0 -9
  52. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +17 -2
  53. package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +3 -4
  54. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +1 -0
  55. package/dist/_dts/theme-core/src/schema.d.ts +108 -26
  56. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +2 -1
  57. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +50 -1
  58. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  59. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  60. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +56 -1
  61. package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +16 -1
  62. package/dist/_dts/theme-core/src/status/index.d.ts +0 -1
  63. package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +19 -0
  64. package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +9 -0
  65. package/dist/_dts/theme-core/src/surfaces/index.d.ts +2 -0
  66. package/dist/_dts/ui/src/button.d.ts +1 -1
  67. package/dist/cli/index.mjs +1567 -470
  68. package/dist/client/{DiscountCodeDisclosure-Dit2aItR.mjs → DiscountCodeDisclosure-BXM73_E5.mjs} +1 -1
  69. package/dist/client/{EventCombined.client-BnREyCjf.mjs → EventCombined.client-DT5elP7j.mjs} +4 -4
  70. package/dist/client/{EventListing.client-0uHld51x.mjs → EventListing.client-pTYGfV9C.mjs} +2 -2
  71. package/dist/client/{LeafletStaticMap-DJcvSfmj.mjs → LeafletStaticMap-dQrhlUe3.mjs} +1 -1
  72. package/dist/client/{MagicLinkForm-EAsIktfw.mjs → MagicLinkForm-u6Dul4j5.mjs} +2 -2
  73. package/dist/client/{StepIndicator-CRR17tYI.mjs → StepIndicator-nWqineJ2.mjs} +2 -2
  74. package/dist/client/{accordion-B47HIuuH.mjs → accordion-CSJcTUyH.mjs} +1 -1
  75. package/dist/client/{bookingForm-I1E-8F9P.mjs → bookingForm-C73wOuVa.mjs} +6 -6
  76. package/dist/client/bookings.mjs +137 -1
  77. package/dist/client/{buttons-BbPn8OKA.mjs → buttons-DfYyqt8C.mjs} +138 -2
  78. package/dist/client/{carousel-OlM7SyBs.mjs → carousel-fMBb0JSc.mjs} +1 -1
  79. package/dist/client/{cart-BKpG5jz6.mjs → cart-BtaCwT3S.mjs} +3 -3
  80. package/dist/client/{checkout-Dmmr6qoU.mjs → checkout-DkTwZSnh.mjs} +3 -3
  81. package/dist/client/client.mjs +2336 -544
  82. package/dist/client/{colorStyles-DuW4Fjqd.mjs → colorStyles-Wyl6JujD.mjs} +45 -4
  83. package/dist/client/{courseRegistration-CflZiqGk.mjs → courseRegistration-DnLmapJu.mjs} +7 -7
  84. package/dist/client/{eventCalendar-BvoLWcp-.mjs → eventCalendar-BvLOc9KY.mjs} +165 -5
  85. package/dist/client/{eventCombined-DsrO8t_t.mjs → eventCombined-kShgJPQr.mjs} +2 -2
  86. package/dist/client/{eventDetails-C3hxgcJm.mjs → eventDetails-C5NTM0Vo.mjs} +3 -3
  87. package/dist/client/{eventListing-C-hb237X.mjs → eventListing-B82ZdKP6.mjs} +2 -2
  88. package/dist/client/{eventRegistration-B0gyzDGi.mjs → eventRegistration-qJVFqBWo.mjs} +7 -7
  89. package/dist/client/{form-C_RUi6oJ.mjs → form-BvAcKiuu.mjs} +2 -2
  90. package/dist/client/{headerSection-IKQiD2U0.mjs → headerSection-NvAiEHAg.mjs} +3 -3
  91. package/dist/client/hooks.mjs +1023 -337
  92. package/dist/client/{locationMap-8ZBrMzRJ.mjs → locationMap-D0j52xfI.mjs} +3 -3
  93. package/dist/client/{media-CZJKL7fi.mjs → media-BCW_g2cQ.mjs} +1 -1
  94. package/dist/client/{newsletterForm-CYk3ucwj.mjs → newsletterForm-B8_i93qH.mjs} +2 -2
  95. package/dist/client/{pricing-B5GmvfIH.mjs → pricing-DIYnyHOk.mjs} +1 -1
  96. package/dist/client/{productDetail-BjS2Dqzo.mjs → productDetail-w0eAHkuQ.mjs} +3 -3
  97. package/dist/client/{productList-BOHvC8My.mjs → productList-Vsguq5Xt.mjs} +3 -3
  98. package/dist/client/{propsDecoder-WS6UEJwZ.mjs → propsDecoder-CD2pJ1WB.mjs} +37 -2
  99. package/dist/client/rendering/client.mjs +1723 -762
  100. package/dist/client/rendering/islands.mjs +19 -19
  101. package/dist/client/rendering.mjs +2312 -520
  102. package/dist/client/{shop-CON03-wN.mjs → shop-Dgxs-Q8F.mjs} +6 -6
  103. package/dist/client/{shop-commerce-DlqrFgH8.mjs → shop-commerce-DJAhsTaT.mjs} +6 -6
  104. package/dist/client/{shop-commerce-store-l74-Kne6.mjs → shop-commerce-store-CfCXltXW.mjs} +1 -1
  105. package/dist/client/{shopShared-CQheEXSg.mjs → shopShared-CmDcPXUt.mjs} +2 -2
  106. package/dist/client/{useDiscountCodeUi-v6OluyWl.mjs → useDiscountCodeUi-CirrT2bM.mjs} +1 -1
  107. package/dist/client/{useEventFilters-BqSTcNOf.mjs → useEventFilters-CNZxlCcO.mjs} +5 -5
  108. package/dist/client/{usePolling-DMfADjIF.mjs → usePolling-Baks_iBI.mjs} +2 -2
  109. package/dist/preview-next/client/runtime.mjs +3 -3
  110. package/dist/{sdk-runtime-DWb08Xaz.mjs → sdk-runtime-BfNiFeNJ.mjs} +1 -1
  111. package/dist/{separator--6yjc914.mjs → separator-BhAR_Xmf.mjs} +1 -1
  112. package/dist/server/components.mjs +2301 -531
  113. package/dist/server/config-validation.mjs +1028 -337
  114. package/dist/server/config.mjs +1028 -337
  115. package/dist/server/data.mjs +1023 -337
  116. package/dist/server/index.mjs +1 -1
  117. package/dist/server/next.mjs +2304 -534
  118. package/dist/server/page-converter.mjs +1018 -324
  119. package/dist/server/prebuild.mjs +1 -1
  120. package/dist/server/rendering/server.mjs +2286 -521
  121. package/dist/server/rendering.mjs +2301 -531
  122. package/dist/server/routing.mjs +1100 -338
  123. package/dist/server/server.mjs +1024 -338
  124. package/dist/server/theme-bridge.mjs +1240 -77
  125. package/dist/server/theme.mjs +165 -5
  126. package/dist/styles/index.css +617 -34
  127. package/package.json +1 -1
  128. package/dist/_dts/blocks/src/system/transforms/registry/_utils/sectionForegroundStyles.d.ts +0 -2
  129. package/dist/_dts/theme-core/src/status/contextualColors.d.ts +0 -6
@@ -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;
@@ -13,9 +13,11 @@ export { EditorPrimitivesProvider } from './primitives/EditorPrimitivesProvider'
13
13
  export type { InlineFieldAdapter } from './primitives/InlineFieldContext';
14
14
  export { deriveChannelId } from './primitives/helpers';
15
15
  export { richTextConfigs } from './primitives/rich-text/config';
16
- export type { RichTextEditorConfig, ToolbarButtonConfig, } from './primitives/rich-text/config';
16
+ export type { RichTextEditorConfig, RichTextPastePolicy, ToolbarButtonConfig, } from './primitives/rich-text/config';
17
17
  export { RichTextToolbar } from './primitives/rich-text/RichTextToolbar';
18
18
  export { RichTextEditorSurface } from './primitives/rich-text/RichTextEditorSurface';
19
+ export type { RichTextToolbarLayout } from './primitives/rich-text/RichTextEditorSurface';
20
+ export type { RichTextToolbarHost, RichTextToolbarVisibility, } from './primitives/rich-text/RichTextToolbar';
19
21
  export type { RichTextRoutableItem } from './primitives/rich-text/toolbar/linkPopoverUtils';
20
22
  export { useRichTextEditor } from './primitives/rich-text/useRichTextEditor';
21
23
  export { buildRichTextImageAttrs, getRichTextImagePositionFromTarget, getSelectedRichTextImagePosition, insertOrReplaceRichTextImage, } from './primitives/rich-text/imageActions';
@@ -1,6 +1,7 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import { type Editor } from '@tiptap/react';
3
3
  import type { RichTextEditorConfig } from './config';
4
+ import { type RichTextToolbarVisibility } from './RichTextToolbar';
4
5
  import type { PickedRichTextImage } from './imageActions';
5
6
  import type { RichTextRoutableItem } from './toolbar/linkPopoverUtils';
6
7
  export type RichTextEditorSurfaceProps = Readonly<{
@@ -15,13 +16,20 @@ export type RichTextEditorSurfaceProps = Readonly<{
15
16
  linkItems?: RichTextRoutableItem[];
16
17
  onRequestLinkItems?: () => Promise<RichTextRoutableItem[]>;
17
18
  onPickImage?: () => Promise<PickedRichTextImage | null | undefined>;
18
- toolbarTone?: 'light' | 'dark';
19
- toolbarAlwaysVisible?: boolean;
20
- toolbarPortalToChrome?: boolean;
21
- hideToolbar?: boolean;
22
- hideContent?: boolean;
19
+ toolbarLayout: RichTextToolbarLayout;
23
20
  onClick?: () => void;
24
21
  renderContent?: (content: ReactNode) => ReactNode;
25
22
  }>;
23
+ export type RichTextToolbarLayout = Readonly<{
24
+ kind: 'hidden';
25
+ }> | Readonly<{
26
+ kind: 'inline';
27
+ tone: 'light' | 'dark';
28
+ visibility: RichTextToolbarVisibility;
29
+ }> | Readonly<{
30
+ kind: 'chrome';
31
+ tone: 'light' | 'dark';
32
+ visibility: RichTextToolbarVisibility;
33
+ }>;
26
34
  export declare function shouldHandleRichTextActivationKey(container: HTMLElement, target: EventTarget | null): boolean;
27
- export declare function RichTextEditorSurface({ editor, config, isEmpty, className, contentClassName, placeholderClassName, placeholderText, ariaLabel, linkItems, onRequestLinkItems, onPickImage, toolbarTone, toolbarAlwaysVisible, toolbarPortalToChrome, hideToolbar, hideContent, onClick, renderContent, }: RichTextEditorSurfaceProps): import("react").JSX.Element;
35
+ export declare function RichTextEditorSurface({ editor, config, isEmpty, className, contentClassName, placeholderClassName, placeholderText, ariaLabel, linkItems, onRequestLinkItems, onPickImage, toolbarLayout, onClick, renderContent, }: RichTextEditorSurfaceProps): import("react").JSX.Element;
@@ -2,15 +2,34 @@ import type { Editor } from '@tiptap/react';
2
2
  import type { ToolbarButtonConfig } from './config';
3
3
  import type { PickedRichTextImage } from './imageActions';
4
4
  import { type RichTextRoutableItem } from './toolbar/LinkPopover';
5
+ export type RichTextToolbarVisibility = Readonly<{
6
+ kind: 'always';
7
+ }> | Readonly<{
8
+ kind: 'editor-focus';
9
+ }> | Readonly<{
10
+ kind: 'controlled';
11
+ visible: boolean;
12
+ }>;
13
+ export type RichTextToolbarHost = Readonly<{
14
+ kind: 'inline';
15
+ }> | Readonly<{
16
+ kind: 'chrome';
17
+ }>;
5
18
  interface RichTextToolbarProps {
6
19
  editor: Editor | null;
7
20
  buttons: ToolbarButtonConfig[];
8
21
  onPickImage?: () => Promise<PickedRichTextImage | null | undefined>;
9
22
  linkItems?: RichTextRoutableItem[];
10
23
  onRequestLinkItems?: () => Promise<RichTextRoutableItem[]>;
11
- alwaysVisible?: boolean;
12
- tone?: 'light' | 'dark';
13
- portalToChrome?: boolean;
24
+ visibility: RichTextToolbarVisibility;
25
+ tone: 'light' | 'dark';
26
+ host: RichTextToolbarHost;
14
27
  }
15
- export declare function RichTextToolbar({ editor, buttons, onPickImage, linkItems, onRequestLinkItems, alwaysVisible, tone, portalToChrome, }: RichTextToolbarProps): import("react").JSX.Element | null;
28
+ export declare function RichTextToolbar({ editor, buttons, onPickImage, linkItems, onRequestLinkItems, visibility, tone, host, }: RichTextToolbarProps): import("react").JSX.Element | null;
29
+ type RichTextToolbarTransientState = Readonly<{
30
+ isFocused: boolean;
31
+ isMenuOpen: boolean;
32
+ isHovered: boolean;
33
+ }>;
34
+ export declare function shouldShowToolbar(visibility: RichTextToolbarVisibility, state: RichTextToolbarTransientState): boolean;
16
35
  export {};
@@ -15,9 +15,15 @@ export type ToolbarButtonConfig = {
15
15
  } | {
16
16
  type: 'image';
17
17
  };
18
+ export type RichTextPastePolicy = Readonly<{
19
+ kind: 'semantic-clean-with-images';
20
+ }> | Readonly<{
21
+ kind: 'semantic-clean-text-only';
22
+ }>;
18
23
  export type RichTextEditorConfig = {
19
24
  extensions: AnyExtension[];
20
25
  toolbar: ToolbarButtonConfig[];
21
26
  placeholder: string;
27
+ pastePolicy: RichTextPastePolicy;
22
28
  };
23
29
  export declare const richTextConfigs: Record<RichTextVariant, RichTextEditorConfig>;
@@ -1 +1,2 @@
1
+ export declare const RICH_TEXT_LINK_DATA_ATTRIBUTES: ("data-rb-link-kind" | "data-rb-link-identifier" | "data-rb-link-content-type" | "data-rb-link-route-id" | "data-rb-link-entity-id" | "data-rb-link-entity-type" | "data-rb-link-title" | "data-rb-link-type-label" | "data-rb-link-content-type-key" | "data-rb-link-content-type-name" | "data-rb-link-updated-at")[];
1
2
  export declare const RichTextLink: import("@tiptap/core").Mark<import("@tiptap/extension-link").LinkOptions, any>;
@@ -0,0 +1,10 @@
1
+ import type { RichTextPastePolicy } from './config';
2
+ /**
3
+ * Builds the TipTap HTML paste boundary for a specific editor variant.
4
+ */
5
+ export declare function createRichTextPasteHtmlTransformer(policy: RichTextPastePolicy): (html: string) => string;
6
+ /**
7
+ * Removes source-site presentation while retaining schema-supported semantic
8
+ * structure and Riverbank's own typed link metadata.
9
+ */
10
+ export declare function sanitizePastedRichTextHtml(html: string, policy: RichTextPastePolicy): string;
@@ -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.0";
11
+ export declare const SDK_VERSION = "0.104.3";
@@ -3,7 +3,7 @@ import type { Theme } from "./schema";
3
3
  import { type ThemeResponsiveMode } from "./responsiveMode";
4
4
  type Props = {
5
5
  theme: Theme;
6
- children: React.ReactNode;
6
+ children?: React.ReactNode;
7
7
  themeId?: string;
8
8
  responsiveMode?: ThemeResponsiveMode;
9
9
  /** Additional className to apply to the theme-scope wrapper */
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Affordance icon path data for CSS-emitted button affordances.
3
+ *
4
+ * A button variant may declare a trailing `affordance` icon (see
5
+ * `ButtonVariantAffordance`). The generated button CSS renders that icon as a
6
+ * masked `::after` pseudo-element, so the personality supplies it to every
7
+ * button of the variant without per-node authoring.
8
+ *
9
+ * Icons live in the `@riverbankcms/blocks` registry, but the button CSS is
10
+ * generated here in theme-core, so this module carries a small, curated copy of
11
+ * the *affordance-eligible* icon path data (arrows/chevrons — the action-oriented
12
+ * subset). The `d` values below are duplicated verbatim from the matching entries
13
+ * in `blocks/src/system/icons/svg.tsx`; ids match the registry ids exactly so a
14
+ * node-level `trailingIcon` and a personality `affordance` share one id space.
15
+ *
16
+ * Keep this set intentionally tiny. It is not the full CTA icon set — only the
17
+ * shapes that read as a trailing affordance.
18
+ */
19
+ /** Registry icon id → the SVG path `d` fragments composing that icon. */
20
+ export declare const AFFORDANCE_ICON_PATHS: Readonly<Record<string, readonly string[]>>;
21
+ export type AffordanceIconId = keyof typeof AFFORDANCE_ICON_PATHS;
22
+ export declare function isAffordanceIconId(value: string): value is AffordanceIconId;
23
+ /**
24
+ * Build a `data:image/svg+xml,...` URL for an affordance icon, suitable for use
25
+ * as a CSS `mask-image`. The stroke is painted solid black so the mask's alpha
26
+ * traces the icon outline; the visible colour is supplied separately by the
27
+ * `::after` rule's `background-color`. Returns `null` for unknown ids.
28
+ */
29
+ export declare function affordanceIconMaskUrl(iconId: string): string | null;
@@ -1,5 +1,11 @@
1
1
  import type { Theme } from '../schema';
2
2
  import type { ButtonSystem } from './types';
3
+ /**
4
+ * Class the `button` runtime node adds when it renders its own trailing icon,
5
+ * so a node-level icon suppresses the personality's CSS `::after` affordance
6
+ * (node overrides personality). Shared so generator and renderer can't drift.
7
+ */
8
+ export declare const AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
3
9
  export interface GenerateButtonCssOptions {
4
10
  themeId: string;
5
11
  theme: Theme;
@@ -6,6 +6,7 @@
6
6
  export * from './types';
7
7
  export * from './classNames';
8
8
  export * from './generateButtonCss';
9
+ export * from './affordanceIcons';
9
10
  export * from './generateDefaultButtonSystem';
10
11
  export * from './constants';
11
12
  export * from './presets';
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Flat Ink — a solid ink primary, a hairline ghost secondary, and a single
3
+ * amber accent climax, all completely flat (no drop shadow) with a modest
4
+ * radius. Reads as grounded, editorial and clinician-precise: the Fulcrum
5
+ * physiotherapy voice. The primary shifts to the secondary (moss) on hover and
6
+ * every variant lifts 2px; the amber accent is meant to be used sparingly as
7
+ * the page's one conversion climax.
8
+ */
9
+ export declare const flatInk: Readonly<{
10
+ id: import("./types").ButtonPersonalityId<"flat-ink">;
11
+ name: string;
12
+ description: string;
13
+ tags: Readonly<Partial<Readonly<{
14
+ tone: import("../../../../blocks/src/index").StyleTone;
15
+ energy: import("../../../../blocks/src/index").StyleEnergy;
16
+ motion: import("../../../../blocks/src/index").StyleMotion;
17
+ era: import("../../../../blocks/src/index").StyleEra;
18
+ }>>>;
19
+ buttonSystem: import("../../../../blocks/src/index").ButtonSystem;
20
+ }>;
@@ -75,6 +75,17 @@ export declare const buttonPersonalities: readonly [Readonly<{
75
75
  era: import("../../../../blocks/src/index").StyleEra;
76
76
  }>>>;
77
77
  buttonSystem: import("../../../../blocks/src/index").ButtonSystem;
78
+ }>, Readonly<{
79
+ id: ButtonPersonalityId<"flat-ink">;
80
+ name: string;
81
+ description: string;
82
+ tags: Readonly<Partial<Readonly<{
83
+ tone: import("../../../../blocks/src/index").StyleTone;
84
+ energy: import("../../../../blocks/src/index").StyleEnergy;
85
+ motion: import("../../../../blocks/src/index").StyleMotion;
86
+ era: import("../../../../blocks/src/index").StyleEra;
87
+ }>>>;
88
+ buttonSystem: import("../../../../blocks/src/index").ButtonSystem;
78
89
  }>, Readonly<{
79
90
  id: ButtonPersonalityId<"brushed-wash">;
80
91
  name: string;
@@ -200,6 +200,10 @@ export declare const buttonPersonalitySchema: z.ZodObject<{
200
200
  fontSize: z.ZodOptional<z.ZodString>;
201
201
  }, z.core.$strip>>;
202
202
  }, z.core.$strip>>;
203
+ affordance: z.ZodOptional<z.ZodObject<{
204
+ iconId: z.ZodString;
205
+ colorToken: z.ZodOptional<z.ZodString>;
206
+ }, z.core.$strip>>;
203
207
  }, z.core.$strip>>;
204
208
  sizes: z.ZodOptional<z.ZodPipe<z.ZodObject<{
205
209
  sm: z.ZodObject<{
@@ -95,6 +95,26 @@ export interface ButtonBorder {
95
95
  widthClass: string;
96
96
  colorToken: string;
97
97
  }
98
+ /**
99
+ * Optional trailing affordance icon carried by a button variant.
100
+ *
101
+ * When set, the generated button CSS emits a themed trailing icon (a masked
102
+ * SVG in `colorToken`, or `currentColor` when the token is omitted) after the
103
+ * label — so a personality can supply an affordance (e.g. a CTA arrow) to every
104
+ * button of that variant without per-node authoring. Entirely optional: variants
105
+ * that omit `affordance` are byte-identical to before.
106
+ *
107
+ * `iconId` references the shared icon registry (the same id space a `button`
108
+ * node's `trailingIcon` prop uses, e.g. `'ArrowRight'`). Only a small curated set
109
+ * of affordance-eligible ids is emittable as CSS (see `AFFORDANCE_ICON_PATHS`);
110
+ * unknown ids emit no icon.
111
+ */
112
+ export interface ButtonVariantAffordance {
113
+ /** Registry icon id, e.g. `'ArrowRight'`. */
114
+ iconId: string;
115
+ /** Optional palette token for the icon colour. Omit to inherit the button text colour. */
116
+ colorToken?: string;
117
+ }
98
118
  export declare const cornerStyleSchema: z.ZodEnum<{
99
119
  square: "square";
100
120
  rounded: "rounded";
@@ -329,6 +349,10 @@ export declare const buttonBorderSchema: z.ZodObject<{
329
349
  widthClass: z.ZodString;
330
350
  colorToken: z.ZodString;
331
351
  }, z.core.$strip>;
352
+ export declare const buttonVariantAffordanceSchema: z.ZodObject<{
353
+ iconId: z.ZodString;
354
+ colorToken: z.ZodOptional<z.ZodString>;
355
+ }, z.core.$strip>;
332
356
  /**
333
357
  * Per-variant size overrides schema — every entry is optional.
334
358
  *
@@ -445,6 +469,10 @@ export declare const buttonVariantSchema: z.ZodObject<{
445
469
  fontSize: z.ZodOptional<z.ZodString>;
446
470
  }, z.core.$strip>>;
447
471
  }, z.core.$strip>>;
472
+ affordance: z.ZodOptional<z.ZodObject<{
473
+ iconId: z.ZodString;
474
+ colorToken: z.ZodOptional<z.ZodString>;
475
+ }, z.core.$strip>>;
448
476
  }, z.core.$strip>;
449
477
  export declare const buttonSystemSchema: z.ZodObject<{
450
478
  global: z.ZodObject<{
@@ -595,6 +623,10 @@ export declare const buttonSystemSchema: z.ZodObject<{
595
623
  fontSize: z.ZodOptional<z.ZodString>;
596
624
  }, z.core.$strip>>;
597
625
  }, z.core.$strip>>;
626
+ affordance: z.ZodOptional<z.ZodObject<{
627
+ iconId: z.ZodString;
628
+ colorToken: z.ZodOptional<z.ZodString>;
629
+ }, z.core.$strip>>;
598
630
  }, z.core.$strip>>;
599
631
  sizes: z.ZodOptional<z.ZodPipe<z.ZodObject<{
600
632
  sm: z.ZodObject<{
@@ -711,6 +743,8 @@ export interface ButtonVariant {
711
743
  effects?: VariantEffects;
712
744
  /** Per-variant size overrides. See VariantSizeOverrides. */
713
745
  sizes?: VariantSizeOverrides;
746
+ /** Optional trailing affordance icon (e.g. a CTA arrow). See ButtonVariantAffordance. */
747
+ affordance?: ButtonVariantAffordance;
714
748
  }
715
749
  export interface ButtonSystem {
716
750
  global: ButtonGlobalSettings;