@riverbankcms/sdk 0.104.0 → 0.104.1

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 (34) hide show
  1. package/dist/{PreviewEditorSidebar-ywqcYjTB.mjs → PreviewEditorSidebar-CmaPXdKu.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-DApUNF6g.mjs → PreviewEditorUI-C5xRTh2b.mjs} +2 -2
  3. package/dist/{SdkPreviewModeRuntime-DmHCcIMO.mjs → SdkPreviewModeRuntime-Eks51NcN.mjs} +8 -6
  4. package/dist/{SiteChromeCustomizeContext-BV9GU-3C.mjs → SiteChromeCustomizeContext-Bt8zb3qu.mjs} +178 -74
  5. package/dist/_dts/api/src/bookingVerticals.d.ts +64 -1
  6. package/dist/_dts/editor/src/index.d.ts +3 -1
  7. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +14 -6
  8. package/dist/_dts/editor/src/primitives/rich-text/RichTextToolbar.d.ts +23 -4
  9. package/dist/_dts/editor/src/primitives/rich-text/config.d.ts +6 -0
  10. package/dist/_dts/editor/src/primitives/rich-text/extensions/RichTextLink.d.ts +1 -0
  11. package/dist/_dts/editor/src/primitives/rich-text/paste.d.ts +10 -0
  12. package/dist/_dts/sdk/src/version.d.ts +1 -1
  13. package/dist/_dts/theme-core/src/palette/legacyRuntimeProjection.d.ts +23 -6
  14. package/dist/_dts/theme-core/src/palette/paletteCompatibilityTransition.d.ts +0 -9
  15. package/dist/cli/index.mjs +10 -3
  16. package/dist/client/client.mjs +10 -3
  17. package/dist/client/hooks.mjs +8 -0
  18. package/dist/client/rendering/client.mjs +1 -2
  19. package/dist/client/rendering.mjs +9 -2
  20. package/dist/preview-next/client/runtime.mjs +3 -3
  21. package/dist/{sdk-runtime-DWb08Xaz.mjs → sdk-runtime-BUmJ0DaT.mjs} +1 -1
  22. package/dist/{separator--6yjc914.mjs → separator-Dd-JYok7.mjs} +1 -1
  23. package/dist/server/components.mjs +8 -0
  24. package/dist/server/config-validation.mjs +8 -0
  25. package/dist/server/config.mjs +8 -0
  26. package/dist/server/data.mjs +8 -0
  27. package/dist/server/index.mjs +1 -1
  28. package/dist/server/next.mjs +9 -1
  29. package/dist/server/prebuild.mjs +1 -1
  30. package/dist/server/rendering/server.mjs +8 -0
  31. package/dist/server/rendering.mjs +8 -0
  32. package/dist/server/routing.mjs +8 -0
  33. package/dist/server/server.mjs +9 -1
  34. package/package.json +1 -1
@@ -5,7 +5,7 @@ export declare const BOOKING_ENGINES: readonly ["event_series", "course", "appoi
5
5
  export type BookingEngine = (typeof BOOKING_ENGINES)[number];
6
6
  export declare const VERTICAL_PRESET_AVAILABILITIES: readonly ["onboarding", "settings", "future"];
7
7
  export type VerticalPresetAvailability = (typeof VERTICAL_PRESET_AVAILABILITIES)[number];
8
- export declare const VERTICAL_IDS: readonly ["yoga_wellness", "fitness_pt", "dance_school", "therapist_practitioner", "beauty_spa", "consultant_coach", "training_provider", "retreat_centre", "music_school", "voice_singing", "performing_arts_school", "community_wellbeing", "venue_event_space"];
8
+ export declare const VERTICAL_IDS: readonly ["yoga_wellness", "fitness_pt", "dance_school", "physiotherapy_physical_health", "massage_bodywork", "therapist_practitioner", "beauty_spa", "consultant_coach", "training_provider", "retreat_centre", "music_school", "voice_singing", "performing_arts_school", "community_wellbeing", "venue_event_space"];
9
9
  export type VerticalId = (typeof VERTICAL_IDS)[number];
10
10
  export type EventSeriesCanonicalBehaviour = Extract<CanonicalBookingBehaviour, 'class' | 'workshop' | 'retreat' | 'performance'>;
11
11
  export declare const EVENT_SERIES_BEHAVIOURS: readonly ["class", "workshop", "retreat", "performance"];
@@ -133,6 +133,14 @@ export declare const VERTICAL_DEFINITIONS: readonly [{
133
133
  readonly id: "dance_school";
134
134
  readonly label: "Dance school";
135
135
  readonly description: "Dance classes, terms, workshops, private lessons, and shows.";
136
+ }, {
137
+ readonly id: "physiotherapy_physical_health";
138
+ readonly label: "Physiotherapy & physical health";
139
+ readonly description: "Physiotherapists, chiropractors, osteopaths, sports therapists, and rehabilitation practitioners.";
140
+ }, {
141
+ readonly id: "massage_bodywork";
142
+ readonly label: "Massage & bodywork";
143
+ readonly description: "Massage therapists, bodyworkers, and somatic practitioners.";
136
144
  }, {
137
145
  readonly id: "therapist_practitioner";
138
146
  readonly label: "Therapist or practitioner";
@@ -311,6 +319,60 @@ export declare const VERTICAL_BOOKING_PRESETS: readonly [Readonly<{
311
319
  label: string;
312
320
  pluralLabel: string;
313
321
  description: string;
322
+ }>, Readonly<{
323
+ id: "physiotherapy_physical_health.appointments";
324
+ verticalId: VerticalId;
325
+ canonicalBehaviour: CanonicalBookingBehaviour;
326
+ engine: BookingEngine;
327
+ availability: VerticalPresetAvailability;
328
+ label: string;
329
+ pluralLabel: string;
330
+ description: string;
331
+ }>, Readonly<{
332
+ id: "physiotherapy_physical_health.rehab_classes";
333
+ verticalId: VerticalId;
334
+ canonicalBehaviour: CanonicalBookingBehaviour;
335
+ engine: BookingEngine;
336
+ availability: VerticalPresetAvailability;
337
+ label: string;
338
+ pluralLabel: string;
339
+ description: string;
340
+ }>, Readonly<{
341
+ id: "physiotherapy_physical_health.workshops";
342
+ verticalId: VerticalId;
343
+ canonicalBehaviour: CanonicalBookingBehaviour;
344
+ engine: BookingEngine;
345
+ availability: VerticalPresetAvailability;
346
+ label: string;
347
+ pluralLabel: string;
348
+ description: string;
349
+ }>, Readonly<{
350
+ id: "massage_bodywork.treatments";
351
+ verticalId: VerticalId;
352
+ canonicalBehaviour: CanonicalBookingBehaviour;
353
+ engine: BookingEngine;
354
+ availability: VerticalPresetAvailability;
355
+ label: string;
356
+ pluralLabel: string;
357
+ description: string;
358
+ }>, Readonly<{
359
+ id: "massage_bodywork.group_sessions";
360
+ verticalId: VerticalId;
361
+ canonicalBehaviour: CanonicalBookingBehaviour;
362
+ engine: BookingEngine;
363
+ availability: VerticalPresetAvailability;
364
+ label: string;
365
+ pluralLabel: string;
366
+ description: string;
367
+ }>, Readonly<{
368
+ id: "massage_bodywork.workshops";
369
+ verticalId: VerticalId;
370
+ canonicalBehaviour: CanonicalBookingBehaviour;
371
+ engine: BookingEngine;
372
+ availability: VerticalPresetAvailability;
373
+ label: string;
374
+ pluralLabel: string;
375
+ description: string;
314
376
  }>, Readonly<{
315
377
  id: "therapist_practitioner.appointments";
316
378
  verticalId: VerticalId;
@@ -696,6 +758,7 @@ export declare function getVerticalPresetsForVertical(verticalId: VerticalId, op
696
758
  availability?: VerticalPresetAvailability | 'selectable';
697
759
  }>): readonly VerticalBookingPresetDefinition[];
698
760
  export declare function getOnboardingPresetsForVertical(verticalId: VerticalId): readonly VerticalBookingPresetDefinition[];
761
+ export declare function getDefaultOnboardingPresetForVertical(verticalId: VerticalId): VerticalBookingPresetDefinition | null;
699
762
  export declare function isEventSeriesCanonicalBehaviour(behaviour: CanonicalBookingBehaviour): behaviour is EventSeriesCanonicalBehaviour;
700
763
  export declare function isEventSeriesVerticalPresetDefinition(presetDefinition: VerticalBookingPresetDefinition): presetDefinition is EventSeriesVerticalPresetDefinition;
701
764
  export declare function canonicalBehaviourToEventPreset(behaviour: EventSeriesCanonicalBehaviour): EventSeriesCanonicalBehaviour;
@@ -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;
@@ -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.1";
@@ -1,25 +1,37 @@
1
1
  import type { CuratedPaletteId, PaletteOverrides } from './curated';
2
2
  import type { PaletteColors, PaletteMode } from './colors';
3
3
  import type { PalettePersistenceReadResult, RuntimePaletteState } from './persistenceReadSource';
4
- import type { PaletteCompatibilityState } from './paletteCompatibilityTransition';
4
+ import type { LegacyPaletteRequestBaseline, PaletteCompatibilityState } from './paletteCompatibilityTransition';
5
5
  import type { PaletteSelection } from './selection';
6
6
  export type LegacyPaletteResponseProjection = Readonly<{
7
7
  paletteVariantId: CuratedPaletteId | null;
8
8
  paletteOverrides: PaletteOverrides | null;
9
9
  }>;
10
+ declare const paletteCompatibilityBaselineBrand: unique symbol;
11
+ /**
12
+ * The complete compatibility representation of a resolved palette. This is
13
+ * deliberately narrower than the nullable legacy response wire shape: every
14
+ * successful authoritative write must persist one of these values.
15
+ */
16
+ export type PaletteCompatibilityBaseline = Readonly<{
17
+ paletteVariantId: CuratedPaletteId;
18
+ paletteOverrides: PaletteOverrides | null;
19
+ [paletteCompatibilityBaselineBrand]: true;
20
+ }>;
10
21
  type ResolvedPaletteForLegacyProjection = Readonly<{
11
22
  selection: PaletteSelection;
12
23
  colors: PaletteColors;
13
24
  mode: PaletteMode;
14
25
  }>;
15
26
  /**
16
- * Projects a resolved authoritative selection to the bounded legacy
17
- * curated-plus-overrides wire shape. Site palettes retain their complete
18
- * colours, using a stable curated palette in the same mode as the base.
27
+ * Derives the bounded, lossless compatibility baseline for a resolved
28
+ * authoritative selection. Site palettes retain their complete colours,
29
+ * using a preferred same-mode curated base when possible and a stable
30
+ * same-mode fallback otherwise.
19
31
  */
20
- export declare function projectResolvedPaletteForLegacyResponse(input: ResolvedPaletteForLegacyProjection & Readonly<{
32
+ export declare function derivePaletteCompatibilityBaseline(input: ResolvedPaletteForLegacyProjection & Readonly<{
21
33
  preferredCuratedPaletteId?: CuratedPaletteId | null;
22
- }>): LegacyPaletteResponseProjection;
34
+ }>): PaletteCompatibilityBaseline;
23
35
  /**
24
36
  * One-way egress adapter for stale clients. It accepts canonical compatibility
25
37
  * state only; its lossy curated-plus-overrides response is never a transition
@@ -34,5 +46,10 @@ export declare function projectPaletteCompatibilityStateForLegacyResponse(state:
34
46
  export declare function projectRuntimePaletteStateForLegacyResponse(input: Readonly<{
35
47
  runtimePaletteState: RuntimePaletteState | null;
36
48
  persistenceRead: PalettePersistenceReadResult | null;
49
+ /**
50
+ * Parsed independently from active authority. A valid persisted request
51
+ * baseline remains the exact legacy egress value after a migrated reload.
52
+ */
53
+ legacyRequestBaseline: LegacyPaletteRequestBaseline | null;
37
54
  }>): LegacyPaletteResponseProjection;
38
55
  export {};
@@ -75,13 +75,6 @@ export type LegacyPaletteSaveSelection = Readonly<{
75
75
  paletteOverrides: PaletteOverrides | null;
76
76
  [legacyPaletteSaveSelectionBrand]: true;
77
77
  }>;
78
- declare const legacyPaletteRequestBaselineUpdateBrand: unique symbol;
79
- /** A normalized legacy request snapshot, persisted only with a successful save. */
80
- export type LegacyPaletteRequestBaselineUpdate = Readonly<{
81
- paletteVariantId: CuratedPaletteId;
82
- paletteOverrides: PaletteOverrides | null;
83
- [legacyPaletteRequestBaselineUpdateBrand]: true;
84
- }>;
85
78
  export type LegacyPaletteSaveNormalizationError = Readonly<{
86
79
  kind: 'missing-base-palette';
87
80
  }>;
@@ -235,7 +228,5 @@ export declare function normalizeLegacyPaletteSavePatch(input: Readonly<{
235
228
  baseline: LegacyPaletteRequestBaseline;
236
229
  fallbackCuratedPaletteId: CuratedPaletteId | null;
237
230
  }>): LegacyPaletteSaveNormalizationResult;
238
- /** Separates a legacy request-baseline write from the palette command ADT. */
239
- export declare function legacyPaletteRequestBaselineUpdateFromSelection(selection: LegacyPaletteSaveSelection): LegacyPaletteRequestBaselineUpdate;
240
231
  export declare function planPaletteTransition(state: PaletteCompatibilityState, intent: PaletteCompatibilityIntent): PaletteCompatibilityTransitionResult;
241
232
  export {};
@@ -15783,8 +15783,7 @@ var init_warm_dark = __esmMin((() => {
15783
15783
  function findCuratedPalette(id) {
15784
15784
  return curatedPalettesById.get(id);
15785
15785
  }
15786
- var curatedPalettes, curatedPalettesById;
15787
- var init_curated = __esmMin((() => {
15786
+ var curatedPalettes, curatedPalettesById, init_curated = __esmMin((() => {
15788
15787
  init_brand_led();
15789
15788
  init_high_contrast();
15790
15789
  init_soft_natural();
@@ -62273,6 +62272,8 @@ const VERTICAL_IDS = [
62273
62272
  "yoga_wellness",
62274
62273
  "fitness_pt",
62275
62274
  "dance_school",
62275
+ "physiotherapy_physical_health",
62276
+ "massage_bodywork",
62276
62277
  "therapist_practitioner",
62277
62278
  "beauty_spa",
62278
62279
  "consultant_coach",
@@ -62308,6 +62309,12 @@ const VERTICAL_BOOKING_PRESETS = [
62308
62309
  preset("dance_school.workshops", "dance_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
62309
62310
  preset("dance_school.private_lessons", "dance_school", "appointment", "Private lesson", "Private lessons", "One-to-one lessons or coaching sessions."),
62310
62311
  preset("dance_school.shows", "dance_school", "performance", "Show", "Shows", "Ticketed performances, showcases, and recitals."),
62312
+ preset("physiotherapy_physical_health.appointments", "physiotherapy_physical_health", "appointment", "Appointment", "Appointments", "Assessments, treatments, follow-ups, and rehabilitation sessions."),
62313
+ preset("physiotherapy_physical_health.rehab_classes", "physiotherapy_physical_health", "class", "Rehab class", "Rehab classes", "Regular rehabilitation, mobility, strength, or recovery classes."),
62314
+ preset("physiotherapy_physical_health.workshops", "physiotherapy_physical_health", "workshop", "Workshop", "Workshops", "One-off workshops, talks, or practical group sessions."),
62315
+ preset("massage_bodywork.treatments", "massage_bodywork", "appointment", "Treatment", "Treatments", "Massage treatments, bodywork sessions, and one-to-one appointments."),
62316
+ preset("massage_bodywork.group_sessions", "massage_bodywork", "class", "Group session", "Group sessions", "Regular bodywork, somatic movement, or self-massage sessions."),
62317
+ preset("massage_bodywork.workshops", "massage_bodywork", "workshop", "Workshop", "Workshops", "One-off bodywork, self-massage, or somatic practice workshops."),
62311
62318
  preset("therapist_practitioner.appointments", "therapist_practitioner", "appointment", "Appointment", "Appointments", "Sessions, consultations, treatments, or assessments."),
62312
62319
  preset("therapist_practitioner.workshops", "therapist_practitioner", "workshop", "Workshop", "Workshops", "One-off group workshops, talks, or wellbeing sessions."),
62313
62320
  preset("therapist_practitioner.retreats", "therapist_practitioner", "retreat", "Retreat", "Retreats", "Multi-day retreats or immersive group experiences."),
@@ -151828,7 +151835,7 @@ var SimpleCache = class {
151828
151835
  * 1. This constant
151829
151836
  * 2. The "version" field in package.json
151830
151837
  */
151831
- const SDK_VERSION = "0.104.0";
151838
+ const SDK_VERSION = "0.104.1";
151832
151839
  //#endregion
151833
151840
  //#region src/client/error.ts
151834
151841
  /**
@@ -15868,8 +15868,7 @@ var init_warm_dark = __esmMin((() => {
15868
15868
  function findCuratedPalette(id) {
15869
15869
  return curatedPalettesById.get(id);
15870
15870
  }
15871
- var curatedPalettes, curatedPalettesById;
15872
- var init_curated = __esmMin((() => {
15871
+ var curatedPalettes, curatedPalettesById, init_curated = __esmMin((() => {
15873
15872
  init_brand_led();
15874
15873
  init_high_contrast();
15875
15874
  init_soft_natural();
@@ -75627,6 +75626,8 @@ const VERTICAL_IDS = [
75627
75626
  "yoga_wellness",
75628
75627
  "fitness_pt",
75629
75628
  "dance_school",
75629
+ "physiotherapy_physical_health",
75630
+ "massage_bodywork",
75630
75631
  "therapist_practitioner",
75631
75632
  "beauty_spa",
75632
75633
  "consultant_coach",
@@ -75662,6 +75663,12 @@ const VERTICAL_BOOKING_PRESETS = [
75662
75663
  preset("dance_school.workshops", "dance_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
75663
75664
  preset("dance_school.private_lessons", "dance_school", "appointment", "Private lesson", "Private lessons", "One-to-one lessons or coaching sessions."),
75664
75665
  preset("dance_school.shows", "dance_school", "performance", "Show", "Shows", "Ticketed performances, showcases, and recitals."),
75666
+ preset("physiotherapy_physical_health.appointments", "physiotherapy_physical_health", "appointment", "Appointment", "Appointments", "Assessments, treatments, follow-ups, and rehabilitation sessions."),
75667
+ preset("physiotherapy_physical_health.rehab_classes", "physiotherapy_physical_health", "class", "Rehab class", "Rehab classes", "Regular rehabilitation, mobility, strength, or recovery classes."),
75668
+ preset("physiotherapy_physical_health.workshops", "physiotherapy_physical_health", "workshop", "Workshop", "Workshops", "One-off workshops, talks, or practical group sessions."),
75669
+ preset("massage_bodywork.treatments", "massage_bodywork", "appointment", "Treatment", "Treatments", "Massage treatments, bodywork sessions, and one-to-one appointments."),
75670
+ preset("massage_bodywork.group_sessions", "massage_bodywork", "class", "Group session", "Group sessions", "Regular bodywork, somatic movement, or self-massage sessions."),
75671
+ preset("massage_bodywork.workshops", "massage_bodywork", "workshop", "Workshop", "Workshops", "One-off bodywork, self-massage, or somatic practice workshops."),
75665
75672
  preset("therapist_practitioner.appointments", "therapist_practitioner", "appointment", "Appointment", "Appointments", "Sessions, consultations, treatments, or assessments."),
75666
75673
  preset("therapist_practitioner.workshops", "therapist_practitioner", "workshop", "Workshop", "Workshops", "One-off group workshops, talks, or wellbeing sessions."),
75667
75674
  preset("therapist_practitioner.retreats", "therapist_practitioner", "retreat", "Retreat", "Retreats", "Multi-day retreats or immersive group experiences."),
@@ -154414,7 +154421,7 @@ var SimpleCache = class {
154414
154421
  * 1. This constant
154415
154422
  * 2. The "version" field in package.json
154416
154423
  */
154417
- const SDK_VERSION = "0.104.0";
154424
+ const SDK_VERSION = "0.104.1";
154418
154425
  //#endregion
154419
154426
  //#region src/client/error.ts
154420
154427
  let _Symbol$for;
@@ -34004,6 +34004,8 @@ const VERTICAL_IDS = [
34004
34004
  "yoga_wellness",
34005
34005
  "fitness_pt",
34006
34006
  "dance_school",
34007
+ "physiotherapy_physical_health",
34008
+ "massage_bodywork",
34007
34009
  "therapist_practitioner",
34008
34010
  "beauty_spa",
34009
34011
  "consultant_coach",
@@ -34039,6 +34041,12 @@ const VERTICAL_BOOKING_PRESETS = [
34039
34041
  preset("dance_school.workshops", "dance_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
34040
34042
  preset("dance_school.private_lessons", "dance_school", "appointment", "Private lesson", "Private lessons", "One-to-one lessons or coaching sessions."),
34041
34043
  preset("dance_school.shows", "dance_school", "performance", "Show", "Shows", "Ticketed performances, showcases, and recitals."),
34044
+ preset("physiotherapy_physical_health.appointments", "physiotherapy_physical_health", "appointment", "Appointment", "Appointments", "Assessments, treatments, follow-ups, and rehabilitation sessions."),
34045
+ preset("physiotherapy_physical_health.rehab_classes", "physiotherapy_physical_health", "class", "Rehab class", "Rehab classes", "Regular rehabilitation, mobility, strength, or recovery classes."),
34046
+ preset("physiotherapy_physical_health.workshops", "physiotherapy_physical_health", "workshop", "Workshop", "Workshops", "One-off workshops, talks, or practical group sessions."),
34047
+ preset("massage_bodywork.treatments", "massage_bodywork", "appointment", "Treatment", "Treatments", "Massage treatments, bodywork sessions, and one-to-one appointments."),
34048
+ preset("massage_bodywork.group_sessions", "massage_bodywork", "class", "Group session", "Group sessions", "Regular bodywork, somatic movement, or self-massage sessions."),
34049
+ preset("massage_bodywork.workshops", "massage_bodywork", "workshop", "Workshop", "Workshops", "One-off bodywork, self-massage, or somatic practice workshops."),
34042
34050
  preset("therapist_practitioner.appointments", "therapist_practitioner", "appointment", "Appointment", "Appointments", "Sessions, consultations, treatments, or assessments."),
34043
34051
  preset("therapist_practitioner.workshops", "therapist_practitioner", "workshop", "Workshop", "Workshops", "One-off group workshops, talks, or wellbeing sessions."),
34044
34052
  preset("therapist_practitioner.retreats", "therapist_practitioner", "retreat", "Retreat", "Retreats", "Multi-day retreats or immersive group experiences."),
@@ -18882,8 +18882,7 @@ var init_warm_dark = __esmMin((() => {
18882
18882
  function findCuratedPalette(id) {
18883
18883
  return curatedPalettesById.get(id);
18884
18884
  }
18885
- var curatedPalettes, curatedPalettesById;
18886
- var init_curated = __esmMin((() => {
18885
+ var curatedPalettes, curatedPalettesById, init_curated = __esmMin((() => {
18887
18886
  init_brand_led();
18888
18887
  init_high_contrast();
18889
18888
  init_soft_natural();
@@ -7608,8 +7608,7 @@ var init_warm_dark = __esmMin((() => {
7608
7608
  function findCuratedPalette(id) {
7609
7609
  return curatedPalettesById.get(id);
7610
7610
  }
7611
- var curatedPalettes, curatedPalettesById;
7612
- var init_curated = __esmMin((() => {
7611
+ var curatedPalettes, curatedPalettesById, init_curated = __esmMin((() => {
7613
7612
  init_brand_led();
7614
7613
  init_high_contrast();
7615
7614
  init_soft_natural();
@@ -146319,6 +146318,8 @@ const VERTICAL_IDS = [
146319
146318
  "yoga_wellness",
146320
146319
  "fitness_pt",
146321
146320
  "dance_school",
146321
+ "physiotherapy_physical_health",
146322
+ "massage_bodywork",
146322
146323
  "therapist_practitioner",
146323
146324
  "beauty_spa",
146324
146325
  "consultant_coach",
@@ -146354,6 +146355,12 @@ const VERTICAL_BOOKING_PRESETS = [
146354
146355
  preset("dance_school.workshops", "dance_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
146355
146356
  preset("dance_school.private_lessons", "dance_school", "appointment", "Private lesson", "Private lessons", "One-to-one lessons or coaching sessions."),
146356
146357
  preset("dance_school.shows", "dance_school", "performance", "Show", "Shows", "Ticketed performances, showcases, and recitals."),
146358
+ preset("physiotherapy_physical_health.appointments", "physiotherapy_physical_health", "appointment", "Appointment", "Appointments", "Assessments, treatments, follow-ups, and rehabilitation sessions."),
146359
+ preset("physiotherapy_physical_health.rehab_classes", "physiotherapy_physical_health", "class", "Rehab class", "Rehab classes", "Regular rehabilitation, mobility, strength, or recovery classes."),
146360
+ preset("physiotherapy_physical_health.workshops", "physiotherapy_physical_health", "workshop", "Workshop", "Workshops", "One-off workshops, talks, or practical group sessions."),
146361
+ preset("massage_bodywork.treatments", "massage_bodywork", "appointment", "Treatment", "Treatments", "Massage treatments, bodywork sessions, and one-to-one appointments."),
146362
+ preset("massage_bodywork.group_sessions", "massage_bodywork", "class", "Group session", "Group sessions", "Regular bodywork, somatic movement, or self-massage sessions."),
146363
+ preset("massage_bodywork.workshops", "massage_bodywork", "workshop", "Workshop", "Workshops", "One-off bodywork, self-massage, or somatic practice workshops."),
146357
146364
  preset("therapist_practitioner.appointments", "therapist_practitioner", "appointment", "Appointment", "Appointments", "Sessions, consultations, treatments, or assessments."),
146358
146365
  preset("therapist_practitioner.workshops", "therapist_practitioner", "workshop", "Workshop", "Workshops", "One-off group workshops, talks, or wellbeing sessions."),
146359
146366
  preset("therapist_practitioner.retreats", "therapist_practitioner", "retreat", "Retreat", "Retreats", "Multi-day retreats or immersive group experiences."),
@@ -4,13 +4,13 @@ import React from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region src/preview-next/client/runtime.tsx
6
6
  const LazySdkPreviewMode = React.lazy(async () => {
7
- return { default: (await import("../../SdkPreviewModeRuntime-DmHCcIMO.mjs").then((n) => n.n)).SdkPreviewModeRuntime };
7
+ return { default: (await import("../../SdkPreviewModeRuntime-Eks51NcN.mjs").then((n) => n.n)).SdkPreviewModeRuntime };
8
8
  });
9
9
  const LazyPreviewShell = React.lazy(async () => {
10
- return { default: (await import("../../sdk-runtime-DWb08Xaz.mjs")).PreviewShell };
10
+ return { default: (await import("../../sdk-runtime-BUmJ0DaT.mjs")).PreviewShell };
11
11
  });
12
12
  const LazyPreviewShellLayout = React.lazy(async () => {
13
- return { default: (await import("../../sdk-runtime-DWb08Xaz.mjs")).PreviewShellLayout };
13
+ return { default: (await import("../../sdk-runtime-BUmJ0DaT.mjs")).PreviewShellLayout };
14
14
  });
15
15
  function SdkPreviewMode(props) {
16
16
  return /* @__PURE__ */ jsx(React.Suspense, {
@@ -1,4 +1,4 @@
1
1
  "use client";
2
2
  import "./PreviewQueryProvider-CStABBUh.mjs";
3
- import { i as PreviewShellLayout, r as PreviewShell } from "./SdkPreviewModeRuntime-DmHCcIMO.mjs";
3
+ import { i as PreviewShellLayout, r as PreviewShell } from "./SdkPreviewModeRuntime-Eks51NcN.mjs";
4
4
  export { PreviewShell, PreviewShellLayout };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Tu as Primitive, ku as cn } from "./SiteChromeCustomizeContext-BV9GU-3C.mjs";
2
+ import { Tu as Primitive, ku as cn } from "./SiteChromeCustomizeContext-Bt8zb3qu.mjs";
3
3
  import * as React$1 from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region ../../node_modules/.pnpm/@radix-ui+react-separator@1.1.10_@types+react-dom@19.2.3_@types+react@19.2.17__@types+r_adfab47c9055efb8b0c4b77a2b96b053/node_modules/@radix-ui/react-separator/dist/index.mjs
@@ -68555,6 +68555,8 @@ const VERTICAL_IDS = [
68555
68555
  "yoga_wellness",
68556
68556
  "fitness_pt",
68557
68557
  "dance_school",
68558
+ "physiotherapy_physical_health",
68559
+ "massage_bodywork",
68558
68560
  "therapist_practitioner",
68559
68561
  "beauty_spa",
68560
68562
  "consultant_coach",
@@ -68590,6 +68592,12 @@ const VERTICAL_BOOKING_PRESETS = [
68590
68592
  preset("dance_school.workshops", "dance_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
68591
68593
  preset("dance_school.private_lessons", "dance_school", "appointment", "Private lesson", "Private lessons", "One-to-one lessons or coaching sessions."),
68592
68594
  preset("dance_school.shows", "dance_school", "performance", "Show", "Shows", "Ticketed performances, showcases, and recitals."),
68595
+ preset("physiotherapy_physical_health.appointments", "physiotherapy_physical_health", "appointment", "Appointment", "Appointments", "Assessments, treatments, follow-ups, and rehabilitation sessions."),
68596
+ preset("physiotherapy_physical_health.rehab_classes", "physiotherapy_physical_health", "class", "Rehab class", "Rehab classes", "Regular rehabilitation, mobility, strength, or recovery classes."),
68597
+ preset("physiotherapy_physical_health.workshops", "physiotherapy_physical_health", "workshop", "Workshop", "Workshops", "One-off workshops, talks, or practical group sessions."),
68598
+ preset("massage_bodywork.treatments", "massage_bodywork", "appointment", "Treatment", "Treatments", "Massage treatments, bodywork sessions, and one-to-one appointments."),
68599
+ preset("massage_bodywork.group_sessions", "massage_bodywork", "class", "Group session", "Group sessions", "Regular bodywork, somatic movement, or self-massage sessions."),
68600
+ preset("massage_bodywork.workshops", "massage_bodywork", "workshop", "Workshop", "Workshops", "One-off bodywork, self-massage, or somatic practice workshops."),
68593
68601
  preset("therapist_practitioner.appointments", "therapist_practitioner", "appointment", "Appointment", "Appointments", "Sessions, consultations, treatments, or assessments."),
68594
68602
  preset("therapist_practitioner.workshops", "therapist_practitioner", "workshop", "Workshop", "Workshops", "One-off group workshops, talks, or wellbeing sessions."),
68595
68603
  preset("therapist_practitioner.retreats", "therapist_practitioner", "retreat", "Retreat", "Retreats", "Multi-day retreats or immersive group experiences."),
@@ -33549,6 +33549,8 @@ const VERTICAL_IDS = [
33549
33549
  "yoga_wellness",
33550
33550
  "fitness_pt",
33551
33551
  "dance_school",
33552
+ "physiotherapy_physical_health",
33553
+ "massage_bodywork",
33552
33554
  "therapist_practitioner",
33553
33555
  "beauty_spa",
33554
33556
  "consultant_coach",
@@ -33584,6 +33586,12 @@ const VERTICAL_BOOKING_PRESETS = [
33584
33586
  preset("dance_school.workshops", "dance_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
33585
33587
  preset("dance_school.private_lessons", "dance_school", "appointment", "Private lesson", "Private lessons", "One-to-one lessons or coaching sessions."),
33586
33588
  preset("dance_school.shows", "dance_school", "performance", "Show", "Shows", "Ticketed performances, showcases, and recitals."),
33589
+ preset("physiotherapy_physical_health.appointments", "physiotherapy_physical_health", "appointment", "Appointment", "Appointments", "Assessments, treatments, follow-ups, and rehabilitation sessions."),
33590
+ preset("physiotherapy_physical_health.rehab_classes", "physiotherapy_physical_health", "class", "Rehab class", "Rehab classes", "Regular rehabilitation, mobility, strength, or recovery classes."),
33591
+ preset("physiotherapy_physical_health.workshops", "physiotherapy_physical_health", "workshop", "Workshop", "Workshops", "One-off workshops, talks, or practical group sessions."),
33592
+ preset("massage_bodywork.treatments", "massage_bodywork", "appointment", "Treatment", "Treatments", "Massage treatments, bodywork sessions, and one-to-one appointments."),
33593
+ preset("massage_bodywork.group_sessions", "massage_bodywork", "class", "Group session", "Group sessions", "Regular bodywork, somatic movement, or self-massage sessions."),
33594
+ preset("massage_bodywork.workshops", "massage_bodywork", "workshop", "Workshop", "Workshops", "One-off bodywork, self-massage, or somatic practice workshops."),
33587
33595
  preset("therapist_practitioner.appointments", "therapist_practitioner", "appointment", "Appointment", "Appointments", "Sessions, consultations, treatments, or assessments."),
33588
33596
  preset("therapist_practitioner.workshops", "therapist_practitioner", "workshop", "Workshop", "Workshops", "One-off group workshops, talks, or wellbeing sessions."),
33589
33597
  preset("therapist_practitioner.retreats", "therapist_practitioner", "retreat", "Retreat", "Retreats", "Multi-day retreats or immersive group experiences."),
@@ -33594,6 +33594,8 @@ const VERTICAL_IDS = [
33594
33594
  "yoga_wellness",
33595
33595
  "fitness_pt",
33596
33596
  "dance_school",
33597
+ "physiotherapy_physical_health",
33598
+ "massage_bodywork",
33597
33599
  "therapist_practitioner",
33598
33600
  "beauty_spa",
33599
33601
  "consultant_coach",
@@ -33629,6 +33631,12 @@ const VERTICAL_BOOKING_PRESETS = [
33629
33631
  preset("dance_school.workshops", "dance_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
33630
33632
  preset("dance_school.private_lessons", "dance_school", "appointment", "Private lesson", "Private lessons", "One-to-one lessons or coaching sessions."),
33631
33633
  preset("dance_school.shows", "dance_school", "performance", "Show", "Shows", "Ticketed performances, showcases, and recitals."),
33634
+ preset("physiotherapy_physical_health.appointments", "physiotherapy_physical_health", "appointment", "Appointment", "Appointments", "Assessments, treatments, follow-ups, and rehabilitation sessions."),
33635
+ preset("physiotherapy_physical_health.rehab_classes", "physiotherapy_physical_health", "class", "Rehab class", "Rehab classes", "Regular rehabilitation, mobility, strength, or recovery classes."),
33636
+ preset("physiotherapy_physical_health.workshops", "physiotherapy_physical_health", "workshop", "Workshop", "Workshops", "One-off workshops, talks, or practical group sessions."),
33637
+ preset("massage_bodywork.treatments", "massage_bodywork", "appointment", "Treatment", "Treatments", "Massage treatments, bodywork sessions, and one-to-one appointments."),
33638
+ preset("massage_bodywork.group_sessions", "massage_bodywork", "class", "Group session", "Group sessions", "Regular bodywork, somatic movement, or self-massage sessions."),
33639
+ preset("massage_bodywork.workshops", "massage_bodywork", "workshop", "Workshop", "Workshops", "One-off bodywork, self-massage, or somatic practice workshops."),
33632
33640
  preset("therapist_practitioner.appointments", "therapist_practitioner", "appointment", "Appointment", "Appointments", "Sessions, consultations, treatments, or assessments."),
33633
33641
  preset("therapist_practitioner.workshops", "therapist_practitioner", "workshop", "Workshop", "Workshops", "One-off group workshops, talks, or wellbeing sessions."),
33634
33642
  preset("therapist_practitioner.retreats", "therapist_practitioner", "retreat", "Retreat", "Retreats", "Multi-day retreats or immersive group experiences."),
@@ -34008,6 +34008,8 @@ const VERTICAL_IDS = [
34008
34008
  "yoga_wellness",
34009
34009
  "fitness_pt",
34010
34010
  "dance_school",
34011
+ "physiotherapy_physical_health",
34012
+ "massage_bodywork",
34011
34013
  "therapist_practitioner",
34012
34014
  "beauty_spa",
34013
34015
  "consultant_coach",
@@ -34043,6 +34045,12 @@ const VERTICAL_BOOKING_PRESETS = [
34043
34045
  preset("dance_school.workshops", "dance_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
34044
34046
  preset("dance_school.private_lessons", "dance_school", "appointment", "Private lesson", "Private lessons", "One-to-one lessons or coaching sessions."),
34045
34047
  preset("dance_school.shows", "dance_school", "performance", "Show", "Shows", "Ticketed performances, showcases, and recitals."),
34048
+ preset("physiotherapy_physical_health.appointments", "physiotherapy_physical_health", "appointment", "Appointment", "Appointments", "Assessments, treatments, follow-ups, and rehabilitation sessions."),
34049
+ preset("physiotherapy_physical_health.rehab_classes", "physiotherapy_physical_health", "class", "Rehab class", "Rehab classes", "Regular rehabilitation, mobility, strength, or recovery classes."),
34050
+ preset("physiotherapy_physical_health.workshops", "physiotherapy_physical_health", "workshop", "Workshop", "Workshops", "One-off workshops, talks, or practical group sessions."),
34051
+ preset("massage_bodywork.treatments", "massage_bodywork", "appointment", "Treatment", "Treatments", "Massage treatments, bodywork sessions, and one-to-one appointments."),
34052
+ preset("massage_bodywork.group_sessions", "massage_bodywork", "class", "Group session", "Group sessions", "Regular bodywork, somatic movement, or self-massage sessions."),
34053
+ preset("massage_bodywork.workshops", "massage_bodywork", "workshop", "Workshop", "Workshops", "One-off bodywork, self-massage, or somatic practice workshops."),
34046
34054
  preset("therapist_practitioner.appointments", "therapist_practitioner", "appointment", "Appointment", "Appointments", "Sessions, consultations, treatments, or assessments."),
34047
34055
  preset("therapist_practitioner.workshops", "therapist_practitioner", "workshop", "Workshop", "Workshops", "One-off group workshops, talks, or wellbeing sessions."),
34048
34056
  preset("therapist_practitioner.retreats", "therapist_practitioner", "retreat", "Retreat", "Retreats", "Multi-day retreats or immersive group experiences."),
@@ -7509,7 +7509,7 @@ var SimpleCache = class {
7509
7509
  * 1. This constant
7510
7510
  * 2. The "version" field in package.json
7511
7511
  */
7512
- const SDK_VERSION = "0.104.0";
7512
+ const SDK_VERSION = "0.104.1";
7513
7513
  //#endregion
7514
7514
  //#region src/client/error.ts
7515
7515
  let _Symbol$for;