@riverbankcms/sdk 0.75.0 → 0.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/README.md +2 -0
  2. package/dist/{PreviewEditorSidebar-U2IHCBYN.mjs → PreviewEditorSidebar-X2HWXFOL.mjs} +171 -88
  3. package/dist/{PreviewEditorUI-ZGH2RQNP.mjs → PreviewEditorUI-AQXIXPOH.mjs} +2 -2
  4. package/dist/SdkPreviewModeRuntime-ZQNDCASH.mjs +8 -0
  5. package/dist/_dts/api/src/bookingOperations.d.ts +12 -0
  6. package/dist/_dts/api/src/index.d.ts +1 -1
  7. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +11 -3
  8. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +0 -1
  9. package/dist/_dts/block-form/src/client/index.d.ts +1 -1
  10. package/dist/_dts/block-form/src/manifest/utils.d.ts +24 -0
  11. package/dist/_dts/blocks/src/client/events.d.ts +3 -1
  12. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -4
  13. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -6
  14. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
  15. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +3 -27
  16. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +163 -0
  17. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +5 -5
  18. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +29 -0
  19. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +13 -0
  20. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +4 -0
  21. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +4 -3
  22. package/dist/_dts/blocks/src/system/runtime/shared/utils/bookingRoute.d.ts +20 -0
  23. package/dist/_dts/blocks/src/system/runtime/shared/utils/index.d.ts +2 -1
  24. package/dist/_dts/blocks/src/system/types/link.d.ts +12 -0
  25. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +2 -0
  26. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +3 -1
  27. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +3 -1
  28. package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +5 -1
  29. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +2 -0
  30. package/dist/_dts/editor-blocks/src/block-editor/actionControlMode.d.ts +2 -0
  31. package/dist/_dts/editor-blocks/src/index.d.ts +1 -1
  32. package/dist/_dts/preview-next/src/client/preview/themeOverlay.d.ts +21 -3
  33. package/dist/_dts/sdk/src/components.d.ts +2 -2
  34. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -2
  35. package/dist/_dts/sdk/src/rendering/overrideResolution.d.ts +6 -0
  36. package/dist/_dts/sdk/src/rendering/overrides.d.ts +21 -1
  37. package/dist/_dts/sdk/src/rendering/server.d.ts +4 -3
  38. package/dist/_dts/sdk/src/version.d.ts +1 -1
  39. package/dist/{chunk-GFE74WRD.mjs → chunk-LYI7TEMH.mjs} +188 -90
  40. package/dist/{chunk-BGMNDF6T.mjs → chunk-Q4OLG66B.mjs} +7 -7
  41. package/dist/{chunk-RWXQBRQZ.mjs → chunk-TW2Y4RR5.mjs} +69 -14
  42. package/dist/{chunk-ZSHFGFUG.mjs → chunk-V5VORNEJ.mjs} +1 -1
  43. package/dist/cli/index.mjs +1 -1
  44. package/dist/client/{accordion-T2UD2ZTH.mjs → accordion-2YHIBOZH.mjs} +1 -1
  45. package/dist/client/{bookingForm-GUP75FKN.mjs → bookingForm-35IBDWAS.mjs} +3 -13
  46. package/dist/client/bookings.mjs +11 -11
  47. package/dist/client/{carousel-2NQA6V57.mjs → carousel-K6XG7NZQ.mjs} +1 -1
  48. package/dist/client/{cart-5TFIAFDS.mjs → cart-HCFYUTTU.mjs} +4 -4
  49. package/dist/client/{checkout-TP4WAHZE.mjs → checkout-J3U4XR7K.mjs} +4 -4
  50. package/dist/client/{chunk-FU2QRZMX.mjs → chunk-7UOSCYY4.mjs} +71 -24
  51. package/dist/client/{chunk-ZLMS67RR.mjs → chunk-BOIHIU7E.mjs} +1 -1
  52. package/dist/client/{chunk-CY2ZTSE5.mjs → chunk-FGUIVT2B.mjs} +1 -1
  53. package/dist/client/{chunk-WJXXNDSE.mjs → chunk-J227A3CQ.mjs} +1 -1
  54. package/dist/client/{chunk-NWOUL6JY.mjs → chunk-PFBX3IQL.mjs} +3 -3
  55. package/dist/client/{chunk-VUAOE3AG.mjs → chunk-SNSWVZEP.mjs} +4 -4
  56. package/dist/client/client.mjs +2261 -2279
  57. package/dist/client/{courseRegistration-5DPU6PDY.mjs → courseRegistration-ZBXS7VGI.mjs} +3 -3
  58. package/dist/client/{eventCalendar-F3GZGTEF.mjs → eventCalendar-EQQZHJBA.mjs} +5 -5
  59. package/dist/client/{eventCombined-BQOB6QMY.mjs → eventCombined-JCFTGBFQ.mjs} +5 -5
  60. package/dist/client/{eventDetails-PEM2EJWE.mjs → eventDetails-HLUTQSYY.mjs} +5 -5
  61. package/dist/client/{eventListing-YMIQPVME.mjs → eventListing-FG4MICVB.mjs} +5 -5
  62. package/dist/client/{eventRegistration-4I6ZNDUF.mjs → eventRegistration-GUEB7LBT.mjs} +5 -5
  63. package/dist/client/{form-ZJVAYZ6G.mjs → form-YQEW4YIT.mjs} +1 -1
  64. package/dist/client/{headerSection-TOT5MGTF.mjs → headerSection-GTR3TTRM.mjs} +2 -2
  65. package/dist/client/{locationMap-J66NZREU.mjs → locationMap-SPC7VGUH.mjs} +1 -1
  66. package/dist/client/{newsletterForm-ET2XUMRO.mjs → newsletterForm-4IW5BLID.mjs} +1 -1
  67. package/dist/client/{productDetail-C2XIH7C5.mjs → productDetail-KP5H2WJO.mjs} +4 -4
  68. package/dist/client/{productList-T2AZLFTP.mjs → productList-3M3M72XZ.mjs} +4 -4
  69. package/dist/client/rendering/client.mjs +3132 -3147
  70. package/dist/client/rendering/islands.mjs +18 -18
  71. package/dist/client/rendering.mjs +3344 -3354
  72. package/dist/client/{shop-UZ6IUZXD.mjs → shop-ACQKVGOM.mjs} +4 -4
  73. package/dist/preview-next/chrome.css +1 -1
  74. package/dist/preview-next/client/runtime.mjs +3 -3
  75. package/dist/preview-next/editor-base.css +2 -148
  76. package/dist/preview-next/editor-chrome.css +179 -0
  77. package/dist/{sdk-runtime-JCUQM63Y.mjs → sdk-runtime-K7HNB4U2.mjs} +4 -4
  78. package/dist/server/components.mjs +939 -891
  79. package/dist/server/index.mjs +1 -1
  80. package/dist/server/next.mjs +887 -840
  81. package/dist/server/prebuild.mjs +1 -1
  82. package/dist/server/rendering/server.mjs +951 -894
  83. package/dist/server/rendering.mjs +944 -896
  84. package/dist/server/server.mjs +1 -1
  85. package/package.json +1 -1
  86. package/dist/SdkPreviewModeRuntime-MTUGBTLQ.mjs +0 -8
  87. /package/dist/client/{chunk-2PHQZ666.mjs → chunk-JEZECJ3W.mjs} +0 -0
@@ -5,6 +5,7 @@ import type { BlockFocusRequest, BlockItem } from './types';
5
5
  import { type SdkConfigForBlockPicker } from './sdkBlockMerger';
6
6
  import { BlockCard } from './BlockCard';
7
7
  import type { FieldWidgetComponent } from '../../../block-form/src/client/index';
8
+ import { type BlockActionControlMode } from './actionControlMode';
8
9
  import { type ReorderControlMode } from './reorderControlMode';
9
10
  export declare const SortableBlockItem: import("react").NamedExoticComponent<{
10
11
  siteId: string;
@@ -30,4 +31,5 @@ export declare const SortableBlockItem: import("react").NamedExoticComponent<{
30
31
  hideThemeV2RawStyleFields?: boolean;
31
32
  pageDesignBlock?: PageDesignEditorBlock | null;
32
33
  reorderControlMode?: ReorderControlMode;
34
+ actionControlMode?: BlockActionControlMode;
33
35
  }>;
@@ -0,0 +1,2 @@
1
+ export type BlockActionControlMode = 'inline' | 'menu';
2
+ export declare const DEFAULT_BLOCK_ACTION_CONTROL_MODE: BlockActionControlMode;
@@ -13,7 +13,7 @@ export { FormProvider } from './FormProvider';
13
13
  export type { FormProviderProps } from './FormProvider';
14
14
  export { buildBlockContentPayload, formatManifestIssues } from './blockPayload';
15
15
  export type { BlockContentPayloadResult, ManifestFieldIssue, BuildBlockContentPayloadOptions } from './blockPayload';
16
- export { deriveBlockDraftSaveability, formatUnfinishedBlocksSummary, normalizeManifestIssueMessage, shouldShowBlockFieldValidation, unfinishedBlockCopy, validateBlockManifestValues, } from '../../block-form/src/client/index';
16
+ export { deriveBlockDraftSaveability, formatUnfinishedBlocksSummary, shouldShowBlockFieldValidation, unfinishedBlockCopy, validateBlockManifestValues, } from '../../block-form/src/client/index';
17
17
  export type { BlockDraftSaveability, BlockDraftValidationIssue } from '../../block-form/src/client/index';
18
18
  export { applyManifestIssuesToForm } from './manifestIssues';
19
19
  export { BlockPickerDialog } from './block-editor/BlockPickerDialog';
@@ -2,14 +2,32 @@ import { type ReactNode } from 'react';
2
2
  import type { Theme } from '../../../../blocks/src/index';
3
3
  import { type Rfc6902Op } from '../utils/rfc6902';
4
4
  type ThemePatchOp = Rfc6902Op;
5
+ export type PreviewThemeOverlaySource = 'ai-designer' | 'site-chrome' | 'style-configurator' | 'unknown';
6
+ type PreviewThemeOverlaySourceOptions = Readonly<{
7
+ source?: PreviewThemeOverlaySource;
8
+ }>;
9
+ export type PreviewThemeOverlay = Readonly<{
10
+ kind: 'none';
11
+ }> | Readonly<{
12
+ kind: 'patch';
13
+ source: PreviewThemeOverlaySource;
14
+ ops: readonly ThemePatchOp[];
15
+ }> | Readonly<{
16
+ kind: 'theme';
17
+ source: PreviewThemeOverlaySource;
18
+ theme: Theme;
19
+ }>;
5
20
  type PreviewThemeOverlayContextValue = {
6
21
  baseTheme: Theme;
22
+ overlay: PreviewThemeOverlay;
7
23
  overlayOps: ThemePatchOp[] | null;
8
- setOverlayOps: (ops: ThemePatchOp[] | null) => void;
24
+ overlayOpsSource: PreviewThemeOverlaySource | null;
25
+ setOverlayOps: (ops: ThemePatchOp[] | null, options?: PreviewThemeOverlaySourceOptions) => void;
9
26
  overrideTheme: Theme | null;
10
- setOverrideTheme: (theme: Theme | null) => void;
27
+ overrideThemeSource: PreviewThemeOverlaySource | null;
28
+ setOverrideTheme: (theme: Theme | null, options?: PreviewThemeOverlaySourceOptions) => void;
11
29
  effectiveTheme: Theme;
12
- clearOverlay: () => void;
30
+ clearOverlay: (options?: PreviewThemeOverlaySourceOptions) => void;
13
31
  };
14
32
  export declare function PreviewThemeOverlayProvider({ baseTheme, children }: {
15
33
  baseTheme: Theme;
@@ -27,5 +27,5 @@ export { Layout } from './rendering/components/Layout';
27
27
  export type { LayoutProps, HeaderData, FooterData } from './rendering/components/Layout';
28
28
  export { PageRenderer, ThemeScope, buildThemeRuntime, RichText, resolveImageUrl, resolveImageUrlWithContext, resolveImageSourceSetWithContext, ImagePresets, } from './rendering';
29
29
  export type { AppointmentBookingContent, BlogListingContent, BlogPostContent, BodyTextAlignment, BodyTextContent, CollectionContent, ColumnsContent, CourseDetailsContent, CourseRegistrationContent, CtaFullContent, EmbedContent, EventCalendarContent, EventDetailsContent, EventListingContent, EventRegistrationContent, EventSpotlightContent, FaqContent, FormBlockContent, GiftingContent, HeroContent, HeroMedia, ImageGalleryContent, MediaTextContent, NewsletterSignupContent, ShopContent, SingleButtonContent, SiteFooterContent, SiteHeaderContent, SystemBlockContentByKind, SystemBlockContentFor, TeamMembersContent, TestimonialEntryContent, TestimonialsBlockContent, VideoGridContent, ImageOptions, ResolveImageUrlContext, ResolveImageSourceSetOptions, ResolvedImageSourceSet, PageOutline, RouteMap, Theme, ThemeTokens, Media, TipTapNode, LinkValue, RichTextPrimitiveProps, } from './rendering';
30
- export type { BlockOverrideProps, BlockOverrideRegistration, BlockOverrideRegistrations, BlockOverrides, BlockOverrideComponent, KnownSystemBlockOverrides, LazyBlockOverrideFactory, LazyBlockOverrideRegistration, } from './rendering';
31
- export { defineLazyBlockOverride } from './rendering';
30
+ export type { BlockOverrideProps, BlockOverrideRegistration, BlockOverrideRegistrations, BlockOverrides, BlockOverrideComponent, CustomBlockOverrideKey, KnownSystemBlockOverrides, KnownBlockOverrideKey, LazyBlockOverrideFactory, LazyBlockOverrideRegistration, StrictBlockOverrideRegistrations, StrictBlockOverrides, SystemBlockOverrideKey, } from './rendering';
31
+ export { defineBlockOverrideRegistrations, defineBlockOverrides, defineLazyBlockOverride, } from './rendering';
@@ -23,8 +23,8 @@ export { ThemeScope, } from './blocks-theme-scope';
23
23
  export { buildThemeRuntime, } from './blocks-theme-runtime';
24
24
  export type { ComponentRegistry, PageRendererDataContext, PageRendererProps, SdkConfigForRenderer, } from './blocks-page-renderer';
25
25
  export type { ThemeScopeProps, } from './blocks-theme-scope';
26
- export type { BlockOverrideProps, BlockOverrideComponent, BlockOverrideRegistration, BlockOverrideRegistrations, BlockOverrides, KnownSystemBlockOverrides, LazyBlockOverrideFactory, LazyBlockOverrideRegistration, } from './overrides';
27
- export { defineLazyBlockOverride } from './overrides';
26
+ export type { BlockOverrideProps, BlockOverrideComponent, BlockOverrideRegistration, BlockOverrideRegistrations, BlockOverrides, CustomBlockOverrideKey, KnownSystemBlockOverrides, KnownBlockOverrideKey, LazyBlockOverrideFactory, LazyBlockOverrideRegistration, StrictBlockOverrideRegistrations, StrictBlockOverrides, SystemBlockOverrideKey, } from './overrides';
27
+ export { defineBlockOverrideRegistrations, defineBlockOverrides, defineLazyBlockOverride, } from './overrides';
28
28
  /**
29
29
  * @example Server-side rendering (Next.js App Router)
30
30
  * ```tsx
@@ -1,5 +1,11 @@
1
1
  import type { PageOutline } from '../contracts';
2
2
  import { type BlockOverrideRegistrations, type BlockOverrides } from './overrides';
3
+ export type PageBlockKindIndex = Readonly<{
4
+ kind: 'page-block-kind-index';
5
+ blockKinds: ReadonlySet<string>;
6
+ }>;
7
+ export declare function collectUsedBlockKindsFromPageOutline(page: PageOutline | null | undefined): ReadonlySet<string>;
8
+ export declare function buildPageBlockKindIndex(page: PageOutline | null | undefined): PageBlockKindIndex;
3
9
  /**
4
10
  * Resolve only override registrations used by the current page or template.
5
11
  *
@@ -1,5 +1,5 @@
1
1
  import type React from 'react';
2
- import type { SystemBlockContentByKind, Theme, ThemeTokens } from '../contracts';
2
+ import type { SystemBlockContentByKind, SystemBlockShortKind, Theme, ThemeTokens } from '../contracts';
3
3
  import type { ResolveImageUrlContext } from '../contracts';
4
4
  /**
5
5
  * Props passed to block override components.
@@ -32,7 +32,27 @@ export type LazyBlockOverrideRegistration<TContent = Record<string, unknown>> =
32
32
  readonly load: LazyBlockOverrideFactory<TContent>;
33
33
  };
34
34
  export type BlockOverrideRegistration<TContent = Record<string, unknown>> = CompatibleBlockOverrideComponent<TContent> | LazyBlockOverrideRegistration<TContent>;
35
+ export type SystemBlockOverrideKey = SystemBlockShortKind | `block.${SystemBlockShortKind}`;
36
+ export type CustomBlockOverrideKey = `custom.${string}`;
37
+ export type KnownBlockOverrideKey = SystemBlockOverrideKey | CustomBlockOverrideKey;
38
+ type StrictSystemBlockOverrides = {
39
+ [K in SystemBlockOverrideKey]?: K extends keyof SystemBlockContentByKind ? CompatibleBlockOverrideComponent<SystemBlockContentByKind[K]> : K extends `block.${infer ShortKind extends keyof SystemBlockContentByKind}` ? CompatibleBlockOverrideComponent<SystemBlockContentByKind[ShortKind]> : never;
40
+ };
41
+ type StrictSystemBlockOverrideRegistrations = {
42
+ [K in SystemBlockOverrideKey]?: K extends keyof SystemBlockContentByKind ? BlockOverrideRegistration<SystemBlockContentByKind[K]> : K extends `block.${infer ShortKind extends keyof SystemBlockContentByKind}` ? BlockOverrideRegistration<SystemBlockContentByKind[ShortKind]> : never;
43
+ };
44
+ type StrictCustomBlockOverrides = {
45
+ [K in CustomBlockOverrideKey]?: CompatibleBlockOverrideComponent<Record<string, unknown>>;
46
+ };
47
+ type StrictCustomBlockOverrideRegistrations = {
48
+ [K in CustomBlockOverrideKey]?: BlockOverrideRegistration<Record<string, unknown>>;
49
+ };
50
+ export type StrictBlockOverrides = StrictSystemBlockOverrides & StrictCustomBlockOverrides;
51
+ export type StrictBlockOverrideRegistrations = StrictSystemBlockOverrideRegistrations & StrictCustomBlockOverrideRegistrations;
52
+ type RejectUnknownOverrideKeys<T> = Exclude<keyof T, KnownBlockOverrideKey> extends never ? T : never;
35
53
  export declare function defineLazyBlockOverride<TContent = Record<string, unknown>>(load: LazyBlockOverrideFactory<TContent>): LazyBlockOverrideRegistration<TContent>;
54
+ export declare function defineBlockOverrides<const TOverrides extends StrictBlockOverrides>(overrides: RejectUnknownOverrideKeys<TOverrides>): TOverrides & BlockOverrides;
55
+ export declare function defineBlockOverrideRegistrations<const TRegistrations extends StrictBlockOverrideRegistrations>(registrations: RejectUnknownOverrideKeys<TRegistrations>): TRegistrations & BlockOverrideRegistrations;
36
56
  export type KnownSystemBlockOverrides = {
37
57
  [K in keyof SystemBlockContentByKind]?: CompatibleBlockOverrideComponent<SystemBlockContentByKind[K]>;
38
58
  };
@@ -8,6 +8,7 @@ export { Layout } from './components/Layout';
8
8
  export type { LayoutProps, HeaderData, FooterData } from './components/Layout';
9
9
  export { Block } from './components/Block.server';
10
10
  export type { BlockProps } from './components/Block.server';
11
- export { defineLazyBlockOverride } from './overrides';
12
- export { resolveBlockOverridesForPage } from './overrideResolution';
13
- export type { BlockOverrideComponent, BlockOverrideProps, BlockOverrideRegistration, BlockOverrideRegistrations, BlockOverrides, LazyBlockOverrideFactory, LazyBlockOverrideRegistration, } from './overrides';
11
+ export { defineBlockOverrideRegistrations, defineBlockOverrides, defineLazyBlockOverride, } from './overrides';
12
+ export { buildPageBlockKindIndex, collectUsedBlockKindsFromPageOutline, resolveBlockOverridesForPage, } from './overrideResolution';
13
+ export type { PageBlockKindIndex } from './overrideResolution';
14
+ export type { BlockOverrideComponent, BlockOverrideProps, BlockOverrideRegistration, BlockOverrideRegistrations, BlockOverrides, CustomBlockOverrideKey, KnownBlockOverrideKey, LazyBlockOverrideFactory, LazyBlockOverrideRegistration, StrictBlockOverrideRegistrations, StrictBlockOverrides, SystemBlockOverrideKey, } from './overrides';
@@ -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.75.0";
11
+ export declare const SDK_VERSION = "0.76.0";
@@ -52689,6 +52689,37 @@ function pickReadableTextColor(background) {
52689
52689
  return "rgb(var(--tb-onAccent, 255 255 255))";
52690
52690
  }
52691
52691
  }
52692
+ function BookingOptionCompactRow({
52693
+ option,
52694
+ buttonVariant = "primary"
52695
+ }) {
52696
+ const primaryMeta = option.primaryMeta?.filter((item) => item.length > 0) ?? [];
52697
+ const secondaryMeta = option.secondaryMeta?.filter((item) => item.label.length > 0) ?? [];
52698
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "sm" });
52699
+ return /* @__PURE__ */ jsxs("div", { className: "event-compact-row", children: [
52700
+ /* @__PURE__ */ jsxs("div", { className: "event-compact-row-content", children: [
52701
+ /* @__PURE__ */ jsxs("div", { className: "event-compact-row-top", children: [
52702
+ /* @__PURE__ */ jsx("span", { className: "event-compact-row-title", children: option.title }),
52703
+ primaryMeta.length > 0 && /* @__PURE__ */ jsx("span", { className: "event-compact-row-datetime", children: primaryMeta.join(" \xB7 ") })
52704
+ ] }),
52705
+ /* @__PURE__ */ jsxs("div", { className: "event-compact-row-bottom", children: [
52706
+ secondaryMeta.map((item) => /* @__PURE__ */ jsxs(
52707
+ "span",
52708
+ {
52709
+ className: item.className,
52710
+ children: [
52711
+ item.icon,
52712
+ item.label
52713
+ ]
52714
+ },
52715
+ item.id ?? `${item.className ?? "meta"}:${item.label}`
52716
+ )),
52717
+ option.priceLabel && /* @__PURE__ */ jsx("span", { className: "event-compact-row-price", children: option.priceLabel })
52718
+ ] })
52719
+ ] }),
52720
+ option.action.kind === "status" ? /* @__PURE__ */ jsx("span", { className: "event-compact-row-status", children: option.action.label }) : /* @__PURE__ */ jsx("a", { href: option.action.href, className: `${buttonClass} event-compact-row-cta`, children: option.action.label })
52721
+ ] });
52722
+ }
52692
52723
  var EventCompactRow = ({
52693
52724
  event,
52694
52725
  buttonVariant = "primary",
@@ -52700,28 +52731,31 @@ var EventCompactRow = ({
52700
52731
  const price = formatEventPrice(event);
52701
52732
  const teacherLine = formatEventTeacherLine(event);
52702
52733
  const cta = resolveEventCta(event, buttonText);
52703
- const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "sm" });
52704
- return /* @__PURE__ */ jsxs("div", { className: "event-compact-row", children: [
52705
- /* @__PURE__ */ jsxs("div", { className: "event-compact-row-content", children: [
52706
- /* @__PURE__ */ jsxs("div", { className: "event-compact-row-top", children: [
52707
- /* @__PURE__ */ jsx("span", { className: "event-compact-row-title", children: event.title }),
52708
- /* @__PURE__ */ jsxs("span", { className: "event-compact-row-datetime", children: [
52709
- formattedDate,
52710
- " \xB7 ",
52711
- formattedTime
52712
- ] })
52713
- ] }),
52714
- /* @__PURE__ */ jsxs("div", { className: "event-compact-row-bottom", children: [
52715
- event.venue && /* @__PURE__ */ jsxs("span", { className: "event-compact-row-venue", children: [
52716
- /* @__PURE__ */ jsx(MapPinIcon, { className: "rb-shrink-0" }),
52717
- event.venue.name
52718
- ] }),
52719
- teacherLine && /* @__PURE__ */ jsx("span", { className: "event-compact-row-teacher", children: teacherLine }),
52720
- /* @__PURE__ */ jsx("span", { className: "event-compact-row-price", children: price })
52721
- ] })
52722
- ] }),
52723
- cta.hidden ? /* @__PURE__ */ jsx("span", { className: "event-compact-row-status", children: cta.label }) : /* @__PURE__ */ jsx("a", { href: cta.href, className: `${buttonClass} event-compact-row-cta`, children: cta.label })
52724
- ] });
52734
+ const option = {
52735
+ id: event.occurrenceId ?? event.id,
52736
+ title: event.title,
52737
+ primaryMeta: [formattedDate, formattedTime],
52738
+ secondaryMeta: [
52739
+ ...event.venue ? [
52740
+ {
52741
+ id: "venue",
52742
+ label: event.venue.name,
52743
+ icon: /* @__PURE__ */ jsx(MapPinIcon, { className: "rb-shrink-0" }),
52744
+ className: "event-compact-row-venue"
52745
+ }
52746
+ ] : [],
52747
+ ...teacherLine ? [
52748
+ {
52749
+ id: "teacher",
52750
+ label: teacherLine,
52751
+ className: "event-compact-row-teacher"
52752
+ }
52753
+ ] : []
52754
+ ],
52755
+ priceLabel: price,
52756
+ action: cta.hidden ? { kind: "status", label: cta.label } : { kind: "action", label: cta.label, href: cta.href }
52757
+ };
52758
+ return /* @__PURE__ */ jsx(BookingOptionCompactRow, { buttonVariant, option });
52725
52759
  };
52726
52760
  var EmptyState = ({
52727
52761
  message: message2 = "No upcoming events scheduled.",
@@ -60994,7 +61028,18 @@ function getBookingSuccessMessage(successMessage) {
60994
61028
  return successMessage?.trim() || "Your appointment has been booked! Check your email for confirmation.";
60995
61029
  }
60996
61030
 
60997
- // ../blocks/src/system/runtime/nodes/booking-form.interactive.ts
61031
+ // ../logger/src/noop.ts
61032
+ var noop = () => {
61033
+ };
61034
+ var logger = {
61035
+ debug: noop,
61036
+ info: noop,
61037
+ warn: noop,
61038
+ error: noop,
61039
+ withFields: (_2) => logger
61040
+ };
61041
+
61042
+ // ../blocks/src/system/runtime/nodes/booking-runtime-sources.ts
60998
61043
  var bookingFieldOptionSchema = z.object({
60999
61044
  value: z.string(),
61000
61045
  label: z.string()
@@ -61048,6 +61093,8 @@ var bookingSourceFormSchema = z.object({
61048
61093
  createdAt: z.string(),
61049
61094
  updatedAt: z.string()
61050
61095
  });
61096
+
61097
+ // ../blocks/src/system/runtime/nodes/booking-form.interactive.ts
61051
61098
  var blockBookingPaymentTermsAvailabilitySchema = z.union([
61052
61099
  z.object({
61053
61100
  kind: z.literal("available"),
@@ -80576,19 +80623,13 @@ function deriveBlockDraftSaveability(input) {
80576
80623
  issues
80577
80624
  };
80578
80625
  }
80579
- function withNormalizedManifestMessage(issue2) {
80580
- return {
80581
- ...issue2,
80582
- message: normalizeManifestIssueMessage(issue2)
80583
- };
80584
- }
80585
80626
  function validateBlockManifestIssues(manifest, values, mode) {
80586
80627
  const validator = getManifestValidation(manifest, mode);
80587
80628
  const result = validator.safeParse(values);
80588
80629
  if (result.success) {
80589
80630
  return [];
80590
80631
  }
80591
- return result.error.issues.map(withNormalizedManifestMessage);
80632
+ return result.error.issues;
80592
80633
  }
80593
80634
  function validateBlockManifest(manifest, values, mode) {
80594
80635
  const plans = getManifestValidationCacheEntry(manifest).plans;
@@ -80609,23 +80650,6 @@ function isValidationFieldVisibleInSidebar(descriptor) {
80609
80650
  if (!descriptor) return true;
80610
80651
  return descriptor.visibility.kind === "visible";
80611
80652
  }
80612
- function normalizeManifestIssueMessage(issue2) {
80613
- switch (issue2.code) {
80614
- case "invalid_type":
80615
- return issue2.message;
80616
- case "too_big":
80617
- return issue2.origin === "string" ? `Use ${issue2.maximum} characters or fewer` : issue2.message;
80618
- case "too_small":
80619
- if (issue2.origin !== "string") return issue2.message;
80620
- return issue2.minimum === 1 ? "This field is required" : `Use at least ${issue2.minimum} characters`;
80621
- case "invalid_format":
80622
- if (issue2.format === "email") return "Enter a valid email address";
80623
- if (issue2.format === "url") return "Enter a valid web address";
80624
- return "Check the format and try again";
80625
- default:
80626
- return issue2.message;
80627
- }
80628
- }
80629
80653
  function getManifestValidation(manifest, mode) {
80630
80654
  const cached = getManifestValidationCacheEntry(manifest);
80631
80655
  const existing = cached.validators[mode];
@@ -82156,7 +82180,6 @@ function useBlockAutosave({
82156
82180
  if (saveability.kind === "saveable") {
82157
82181
  return true;
82158
82182
  }
82159
- drafts.clearPending(snapshot.id);
82160
82183
  return false;
82161
82184
  });
82162
82185
  return saveablePending.map((s2) => ({
@@ -82290,16 +82313,12 @@ function applyBlockedPublishPlan(uiStore, plan, setErrorMessage) {
82290
82313
  // ../content-editor/src/hooks/validateBlocksForPublish.ts
82291
82314
  function validateAllBlocks(uiStore) {
82292
82315
  const errors = [];
82293
- const draftsState = uiStore.getState().drafts;
82316
+ const state = uiStore.getState();
82317
+ const draftsState = state.drafts;
82294
82318
  const allBlocks = draftsState.inspect();
82295
82319
  for (const snapshot of allBlocks) {
82296
82320
  if (!snapshot.meta?.kind) continue;
82297
- const content = snapshot.current ?? snapshot.baseline ?? {};
82298
- const definition = getBlockDefinition(snapshot.meta.kind);
82299
- if (!definition?.manifest) {
82300
- continue;
82301
- }
82302
- const issues = validateBlockManifest(definition.manifest, content, "strict");
82321
+ const { issues, manifest } = getPublishValidationIssues(uiStore, snapshot);
82303
82322
  if (issues.length > 0) {
82304
82323
  for (const issue2 of issues) {
82305
82324
  errors.push({
@@ -82309,7 +82328,7 @@ function validateAllBlocks(uiStore) {
82309
82328
  fieldDescriptor: issue2.fieldDescriptor,
82310
82329
  isFieldVisibleInSidebar: issue2.isFieldVisibleInSidebar,
82311
82330
  fieldLabel: getFieldLabelFromManifest(
82312
- definition.manifest,
82331
+ manifest,
82313
82332
  issue2.path,
82314
82333
  issue2.fieldDescriptor
82315
82334
  ),
@@ -82320,12 +82339,49 @@ function validateAllBlocks(uiStore) {
82320
82339
  }
82321
82340
  return errors;
82322
82341
  }
82342
+ function getPublishValidationIssues(uiStore, snapshot) {
82343
+ const definition = getBlockDefinition(snapshot.meta.kind);
82344
+ const registryManifest = definition?.manifest ?? null;
82345
+ if (registryManifest) {
82346
+ const content = snapshot.current ?? snapshot.baseline ?? {};
82347
+ return {
82348
+ issues: validateBlockManifest(registryManifest, content, "strict"),
82349
+ manifest: registryManifest
82350
+ };
82351
+ }
82352
+ const saveability = uiStore.getState().blockValidation?.getBlockSaveability(snapshot.id);
82353
+ if (!saveability) {
82354
+ return { issues: [], manifest: null };
82355
+ }
82356
+ if (saveability.issues.length > 0) {
82357
+ return {
82358
+ issues: saveability.issues,
82359
+ manifest: null
82360
+ };
82361
+ }
82362
+ if (saveability.kind === "save_failed") {
82363
+ return {
82364
+ issues: [
82365
+ {
82366
+ code: "custom",
82367
+ path: [],
82368
+ fieldPath: "",
82369
+ fieldDescriptor: null,
82370
+ isFieldVisibleInSidebar: true,
82371
+ message: saveability.error
82372
+ }
82373
+ ],
82374
+ manifest: null
82375
+ };
82376
+ }
82377
+ return { issues: [], manifest: null };
82378
+ }
82323
82379
  function getFieldLabelFromManifest(manifest, path, descriptor) {
82324
82380
  if (descriptor) return descriptor.label;
82325
82381
  if (path.length === 0) return "Unknown field";
82326
82382
  const fieldId = path[0];
82327
82383
  if (typeof fieldId !== "string") return String(fieldId);
82328
- const field = manifest.fields?.find((f2) => f2.id === fieldId);
82384
+ const field = manifest?.fields?.find((f2) => f2.id === fieldId);
82329
82385
  return field?.label ?? fieldId;
82330
82386
  }
82331
82387
 
@@ -82440,15 +82496,6 @@ function useEntryActions({
82440
82496
  }, [uiStore, hasRoute, setErrorMessage]);
82441
82497
  const performPublish = useCallback(async (options) => {
82442
82498
  setErrorMessage(null);
82443
- const dirtyTypes = getDirtyAutosaveTypes(uiStore, hasRoute);
82444
- uiStore.getState().autosave.saveNow(dirtyTypes);
82445
- uiStore.getState().autosave.flushAllPending();
82446
- await waitForAutosavesComplete(uiStore);
82447
- if (hasAutosaveErrors(uiStore)) {
82448
- const message2 = "Cannot publish: failed to save draft changes.";
82449
- setErrorMessage(message2);
82450
- throw new Error(message2);
82451
- }
82452
82499
  const validationErrors = validateAllBlocks(uiStore);
82453
82500
  const blockedPublishPlan = deriveBlockedPublishPlan({
82454
82501
  validationErrors,
@@ -82458,6 +82505,15 @@ function useEntryActions({
82458
82505
  applyBlockedPublishPlan(uiStore, blockedPublishPlan, setErrorMessage);
82459
82506
  return;
82460
82507
  }
82508
+ const dirtyTypes = getDirtyAutosaveTypes(uiStore, hasRoute);
82509
+ uiStore.getState().autosave.saveNow(dirtyTypes);
82510
+ uiStore.getState().autosave.flushAllPending();
82511
+ await waitForAutosavesComplete(uiStore);
82512
+ if (hasAutosaveErrors(uiStore)) {
82513
+ const message2 = "Cannot publish: failed to save draft changes.";
82514
+ setErrorMessage(message2);
82515
+ throw new Error(message2);
82516
+ }
82461
82517
  uiStore.getState().autosave.setMetadataStatus({ status: "saving" });
82462
82518
  try {
82463
82519
  const values = uiStore.getState().metadata.getCurrentValues() || {};
@@ -90416,9 +90472,9 @@ var computePosition2 = (reference, floating, options) => {
90416
90472
  });
90417
90473
  };
90418
90474
  var isClient = typeof document !== "undefined";
90419
- var noop = function noop2() {
90475
+ var noop2 = function noop3() {
90420
90476
  };
90421
- var index = isClient ? useLayoutEffect : noop;
90477
+ var index = isClient ? useLayoutEffect : noop2;
90422
90478
  function deepEqual4(a2, b2) {
90423
90479
  if (a2 === b2) {
90424
90480
  return true;
@@ -105731,6 +105787,17 @@ function readSliderFieldUiConfig(ui) {
105731
105787
  };
105732
105788
  }
105733
105789
 
105790
+ // ../block-form/src/manifest/utils.ts
105791
+ function assertNever9(value) {
105792
+ throw new Error(`Unhandled manifest variant: ${JSON.stringify(value)}`);
105793
+ }
105794
+ function getGroupChildFields(field) {
105795
+ return field.schema?.fields ?? field.fields;
105796
+ }
105797
+ function getRepeaterChildFields(field) {
105798
+ return field.schema?.fields ?? field.fields ?? [];
105799
+ }
105800
+
105734
105801
  // ../block-form/src/manifest/canonicalValidation.ts
105735
105802
  function buildCanonicalFieldSchema(field) {
105736
105803
  const manifestField = normalizeFieldForCanonicalValidation(field);
@@ -105795,7 +105862,7 @@ function groupFieldToManifestInput(field) {
105795
105862
  ...field,
105796
105863
  schema: {
105797
105864
  ...field.schema,
105798
- fields: (field.schema?.fields ?? field.fields).map(toManifestFieldInput)
105865
+ fields: getGroupChildFields(field).map(toManifestFieldInput)
105799
105866
  }
105800
105867
  };
105801
105868
  }
@@ -105827,13 +105894,10 @@ function repeaterFieldToManifestInput(field) {
105827
105894
  ...field,
105828
105895
  schema: {
105829
105896
  ...field.schema,
105830
- fields: (field.schema?.fields ?? field.fields).map(toManifestFieldInput)
105897
+ fields: getRepeaterChildFields(field).map(toManifestFieldInput)
105831
105898
  }
105832
105899
  };
105833
105900
  }
105834
- function assertNever9(value) {
105835
- throw new Error(`Unhandled field config variant: ${JSON.stringify(value)}`);
105836
- }
105837
105901
 
105838
105902
  // ../block-form/src/widgets/TextField/textFieldSchema.ts
105839
105903
  function buildTextFieldSchema(field) {
@@ -106369,13 +106433,58 @@ function isFieldVisible(field, role) {
106369
106433
  function buildValidationSchema(fields3) {
106370
106434
  const shape = {};
106371
106435
  const ctx = {
106372
- getFieldSchema: (field) => buildFieldSchema(field, ctx)
106436
+ getFieldSchema: (field) => buildManifestFieldSchema(field, ctx)
106373
106437
  };
106374
106438
  for (const field of fields3) {
106375
- shape[field.id] = buildFieldSchema(field, ctx);
106439
+ shape[field.id] = buildManifestFieldSchema(field, ctx);
106376
106440
  }
106377
106441
  return z.object(shape).catchall(z.unknown()).passthrough();
106378
106442
  }
106443
+ function buildManifestFieldSchema(field, ctx) {
106444
+ if (shouldUseCanonicalSchema(field)) {
106445
+ return buildCanonicalFieldSchema(field);
106446
+ }
106447
+ return buildFieldSchema(field, ctx);
106448
+ }
106449
+ function shouldUseCanonicalSchema(field) {
106450
+ switch (field.type) {
106451
+ case "text":
106452
+ case "number":
106453
+ case "select":
106454
+ case "boolean":
106455
+ case "url":
106456
+ case "slug":
106457
+ case "link":
106458
+ case "media":
106459
+ case "file":
106460
+ case "reference":
106461
+ return true;
106462
+ case "group":
106463
+ return getGroupChildFields(field).every(shouldUseCanonicalSchema);
106464
+ case "modal":
106465
+ return field.schema.fields.every(shouldUseCanonicalSchema);
106466
+ case "repeater":
106467
+ if (field.polymorphic) {
106468
+ return Object.values(field.itemTypes).every(
106469
+ (itemType) => itemType.fields.every(shouldUseCanonicalSchema)
106470
+ );
106471
+ }
106472
+ return getRepeaterChildFields(field).every(shouldUseCanonicalSchema);
106473
+ case "tabGroup":
106474
+ if (field.activeTabField) return false;
106475
+ return field.tabs.every((tab) => tab.fields.every(shouldUseCanonicalSchema));
106476
+ case "richText":
106477
+ case "date":
106478
+ case "time":
106479
+ case "datetime":
106480
+ case "presetOrCustom":
106481
+ case "contentTypeSelect":
106482
+ case "entryPicker":
106483
+ case "button":
106484
+ return false;
106485
+ }
106486
+ return assertNever9(field);
106487
+ }
106379
106488
  function createManifestValidation(manifest, options) {
106380
106489
  const { fields: fields3, schema } = createManifestFormAdapter(manifest, {
106381
106490
  role: options?.role
@@ -108738,17 +108847,6 @@ function useBlockApi() {
108738
108847
  }
108739
108848
  return client;
108740
108849
  }
108741
-
108742
- // ../logger/src/noop.ts
108743
- var noop3 = () => {
108744
- };
108745
- var logger = {
108746
- debug: noop3,
108747
- info: noop3,
108748
- warn: noop3,
108749
- error: noop3,
108750
- withFields: (_2) => logger
108751
- };
108752
108850
  function AltchaWidget({
108753
108851
  challengeUrl,
108754
108852
  onSolutionChange,
@@ -123464,7 +123562,7 @@ function shouldHoistNestedGroupSettings(field) {
123464
123562
  const ui = field.ui;
123465
123563
  return ui?.hideLabel === true;
123466
123564
  }
123467
- function getGroupChildFields(field) {
123565
+ function getGroupChildFields2(field) {
123468
123566
  if (field.type !== "group") return [];
123469
123567
  if (Array.isArray(field.fields)) return field.fields;
123470
123568
  if (Array.isArray(field.schema?.fields)) return field.schema.fields;
@@ -123472,7 +123570,7 @@ function getGroupChildFields(field) {
123472
123570
  }
123473
123571
  function hoistNestedGroupSettings(field) {
123474
123572
  if (!shouldHoistNestedGroupSettings(field)) return [];
123475
- const groupChildren = getGroupChildFields(field);
123573
+ const groupChildren = getGroupChildFields2(field);
123476
123574
  if (groupChildren.length === 0) return [];
123477
123575
  const { display, behavior, style: style2 } = partitionFieldsByIntent(groupChildren);
123478
123576
  const nestedSettings = [...display, ...behavior, ...style2];
@@ -161428,7 +161526,7 @@ function EditorStatusBar({
161428
161526
  lastSavedLabel,
161429
161527
  secondaryMessage
161430
161528
  ]);
161431
- const disablePublish = isSaving || toolbar?.disablePublish || !hasChanges;
161529
+ const disablePublish = isSaving || toolbar?.disablePublish || !hasChanges && currentLifecycle !== "draft";
161432
161530
  isSaving || toolbar?.disableDiscard || !hasChanges;
161433
161531
  const statusClass = unsavedError || generalError ? "text-destructive" : "text-slate-600";
161434
161532
  return /* @__PURE__ */ jsx(FixedBottomSurface, { variant: "light", children: /* @__PURE__ */ jsxs(
@@ -164927,4 +165025,4 @@ lucide-react/dist/esm/lucide-react.js:
164927
165025
  *)
164928
165026
  */
164929
165027
 
164930
- export { ArrowDown, ArrowUp, BackgroundColorField, BackgroundGradientField, Badge2 as Badge, BlockApiProvider, Box, Button, CSS2 as CSS, CTA_ICON_OPTIONS, Callout, CalloutDescription, CalloutTitle, Card, CardContent, CardHeader, CardTitle, Check, ChevronDown, ChevronLeft, ChevronRight, Collapsible2 as Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, Combobox, Content, ContentFieldsForm, Copy, DEFAULT_LAUNCH_READINESS_INPUT, Dialog2 as Dialog, DialogClose2 as DialogClose, DialogContent2 as DialogContent, DialogDescription2 as DialogDescription, DialogFooter, DialogHeader, DialogTitle2 as DialogTitle, DndContext, DropdownMenu2 as DropdownMenu, DropdownMenuContent2 as DropdownMenuContent, DropdownMenuItem2 as DropdownMenuItem, DropdownMenuLabel2 as DropdownMenuLabel, DropdownMenuSeparator2 as DropdownMenuSeparator, DropdownMenuTrigger2 as DropdownMenuTrigger, EMPTY_DOC, EditableBlockProvider, EditorChrome, EditorProvider, EmptyState2 as EmptyState, EntryControllerProvider, FieldFrame, FixedBottomSurface, FormRenderer, GripVertical, Input, KeyboardCode, Label4 as Label, List2 as List, LoaderCircle, ManifestForm, Maximize2, MediaEditor, MediaEditorProvider, MediaPickerDialog, MediaPickerMini, Monitor, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, PUBLIC_FILE_FIELD_KINDS, PageRenderer, Palette, PaletteProvider, Pencil, Plus, PointerSensor, PreviewRichTextEditor, PreviewTextEditor, ResizableSplitPane, RichText2 as RichText, RichTextEditorSurface, Root2, RotateCcw, SUBROUTE_KINDS, ScrollableDialogContent, Search, Select2 as Select, SelectContent2 as SelectContent, SelectItem2 as SelectItem, SelectTrigger2 as SelectTrigger, SelectValue2 as SelectValue, Separator2 as Separator, Settings, SiteDocumentLayout, Smartphone, Sparkles, Surface, Tablet, Tabs2 as Tabs, TabsContent2 as TabsContent, TabsList2 as TabsList, TabsTrigger2 as TabsTrigger, Text2 as Text, ThemeScope, Trash2, TriangleAlert, Trigger, X, applyCompiledRuntimeFieldsToContent, applyPageDesignEditorAction, asDesignBlockId, asEditorBlockId, asEditorBlockValues, asRecord, asSiteId, assertNever3 as assertNever, assertNever5 as assertNever2, augmentManifestWithStyleGroups, buildEditorModelRuntimeFieldsByBlockId, buildThemeRuntime, buttonPersonalities, canRedoHistory, canUndoHistory, classifyHistoryShortcut, clientComponentRegistry, closestCenter, cn, compileSiteThemeFromSelections, createBlock, createEditorInsertBlockCommand, createEditorRemoveBlockCommand, createEditorReorderBlocksCommand, createHistoryState, createManifestFormAdapter, createManifestValidation, createRoutingHelpers, createSnapshotFromPageRecord, createStoreBackend, curatedSiteStyles, deleteBlock, deriveLaunchReadiness, findButtonPersonality, findFooterLook, findHeaderLook, findPaletteVariant, foldSubroute, footerLookCatalog, footerLookRejectionReasonLabel, getBlockDefinition, getClientRect, getCtaIconComponent, getCuratedSiteStyle, getDirectImageUrlForMediaAsset, getFieldIntent, getModalConfig, getPageDesignEditorState, getRichTextImagePositionFromTarget, getRouteMetadataManifestForType, headerLookCatalog, headerLookRejectionReasonLabel, insertOrReplaceRichTextImage, isCtaIconName, isHeaderField, isInternalResolvedLinkValue, isKeyboardEvent, isNonEmptyValue, isObjectRecord2 as isObjectRecord, isSvgMimeType, isThemeV2NormalEditorRawStyleFieldName, isThemeV2NormalEditorRawStylePath, listBlockDescriptors, listContentTypes, lucide_react_exports, mergeManifestWithSdkOptions, mutateBlockContent, normalEditorCuratedPromotedFieldPaths, normalizePickerSearchThreshold, omitRouteTitleFieldFromManifest, paletteOverridesSchema, paletteVariants, parseAspectRatioValue, planPageDesignLayoutLookCompatibility, planSiteDocument, previewAssistantEnabled, pushHistoryEntry, recoveryConflictCopy, redoHistory, reorderBlocks, requireEntriesForCuratedChoices, resolveBlockTitle, resolveImageUrlWithContext, resolveMediaSlotContract, resolvePickerSelectionLabel, resolvePreviewSidebarTab, resolveVisiblePromotedFieldPathsForEditorBlock, shouldShowPickerSearch, siteStyleIdFromTheme, surfaceResolutionContextFromTheme, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetApplyContentPatch, systemCustomizeFacetCurrentValue, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetLabelForValue, systemCustomizeFacetNextValue, systemCustomizeFacetRollbackContentPatch, toRoutableLinkPayload, transformSdkBlockToDefinition, transformSdkBlockToManifest, undoHistory, unfinishedBlockCopy, unwrapResponse, useAsyncPickerOptions, useBackendWatch, useBlockContext, useCombinedRefs, useDebouncedLatestSave, useDndContext, useDraggable, useDroppable, useEditor2 as useEditor, useEditorUiStore, useEditorUiStoreInstance, useEntryController, useEntryEditorController, useField, useIsomorphicLayoutEffect3 as useIsomorphicLayoutEffect, useMediaEditor, useMediaEditorOptional, useMultiAutosave, useOptionalEditorUiStoreInstance, useRichTextEditor, useSdkConfig, useSensor, useSensors, useUISelector, useUniqueId, validateBlockManifestIssues, writePlanForLookCustomizationCommand };
165028
+ export { ArrowDown, ArrowUp, BackgroundColorField, BackgroundGradientField, Badge2 as Badge, BlockApiProvider, Box, Button, CSS2 as CSS, CTA_ICON_OPTIONS, Callout, CalloutDescription, CalloutTitle, Card, CardContent, CardHeader, CardTitle, Check, ChevronDown, ChevronLeft, ChevronRight, Collapsible2 as Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, Combobox, Content, ContentFieldsForm, Copy, DEFAULT_LAUNCH_READINESS_INPUT, Dialog2 as Dialog, DialogClose2 as DialogClose, DialogContent2 as DialogContent, DialogDescription2 as DialogDescription, DialogFooter, DialogHeader, DialogTitle2 as DialogTitle, DndContext, DropdownMenu2 as DropdownMenu, DropdownMenuContent2 as DropdownMenuContent, DropdownMenuItem2 as DropdownMenuItem, DropdownMenuLabel2 as DropdownMenuLabel, DropdownMenuSeparator2 as DropdownMenuSeparator, DropdownMenuTrigger2 as DropdownMenuTrigger, EMPTY_DOC, EditableBlockProvider, EditorChrome, EditorProvider, EllipsisVertical, EmptyState2 as EmptyState, EntryControllerProvider, FieldFrame, FixedBottomSurface, FormRenderer, GripVertical, Input, KeyboardCode, Label4 as Label, List2 as List, LoaderCircle, ManifestForm, Maximize2, MediaEditor, MediaEditorProvider, MediaPickerDialog, MediaPickerMini, Monitor, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, PUBLIC_FILE_FIELD_KINDS, PageRenderer, Palette, PaletteProvider, Pencil, Plus, PointerSensor, PreviewRichTextEditor, PreviewTextEditor, ResizableSplitPane, RichText2 as RichText, RichTextEditorSurface, Root2, RotateCcw, SUBROUTE_KINDS, ScrollableDialogContent, Search, Select2 as Select, SelectContent2 as SelectContent, SelectItem2 as SelectItem, SelectTrigger2 as SelectTrigger, SelectValue2 as SelectValue, Separator2 as Separator, Settings, SiteDocumentLayout, Smartphone, Sparkles, Surface, Tablet, Tabs2 as Tabs, TabsContent2 as TabsContent, TabsList2 as TabsList, TabsTrigger2 as TabsTrigger, Text2 as Text, ThemeScope, Trash2, TriangleAlert, Trigger, X, applyCompiledRuntimeFieldsToContent, applyPageDesignEditorAction, asDesignBlockId, asEditorBlockId, asEditorBlockValues, asRecord, asSiteId, assertNever3 as assertNever, assertNever5 as assertNever2, augmentManifestWithStyleGroups, buildEditorModelRuntimeFieldsByBlockId, buildThemeRuntime, buttonPersonalities, canRedoHistory, canUndoHistory, classifyHistoryShortcut, clientComponentRegistry, closestCenter, cn, compileSiteThemeFromSelections, createBlock, createEditorInsertBlockCommand, createEditorRemoveBlockCommand, createEditorReorderBlocksCommand, createHistoryState, createManifestFormAdapter, createManifestValidation, createRoutingHelpers, createSnapshotFromPageRecord, createStoreBackend, curatedSiteStyles, deleteBlock, deriveLaunchReadiness, findButtonPersonality, findFooterLook, findHeaderLook, findPaletteVariant, foldSubroute, footerLookCatalog, footerLookRejectionReasonLabel, getBlockDefinition, getClientRect, getCtaIconComponent, getCuratedSiteStyle, getDirectImageUrlForMediaAsset, getFieldIntent, getModalConfig, getPageDesignEditorState, getRichTextImagePositionFromTarget, getRouteMetadataManifestForType, headerLookCatalog, headerLookRejectionReasonLabel, insertOrReplaceRichTextImage, isCtaIconName, isHeaderField, isInternalResolvedLinkValue, isKeyboardEvent, isNonEmptyValue, isObjectRecord2 as isObjectRecord, isSvgMimeType, isThemeV2NormalEditorRawStyleFieldName, isThemeV2NormalEditorRawStylePath, listBlockDescriptors, listContentTypes, lucide_react_exports, mergeManifestWithSdkOptions, mutateBlockContent, normalEditorCuratedPromotedFieldPaths, normalizePickerSearchThreshold, omitRouteTitleFieldFromManifest, paletteOverridesSchema, paletteVariants, parseAspectRatioValue, planPageDesignLayoutLookCompatibility, planSiteDocument, previewAssistantEnabled, pushHistoryEntry, recoveryConflictCopy, redoHistory, reorderBlocks, requireEntriesForCuratedChoices, resolveBlockTitle, resolveImageUrlWithContext, resolveMediaSlotContract, resolvePickerSelectionLabel, resolvePreviewSidebarTab, resolveVisiblePromotedFieldPathsForEditorBlock, shouldShowPickerSearch, siteStyleIdFromTheme, surfaceResolutionContextFromTheme, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetApplyContentPatch, systemCustomizeFacetCurrentValue, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetLabelForValue, systemCustomizeFacetNextValue, systemCustomizeFacetRollbackContentPatch, toRoutableLinkPayload, transformSdkBlockToDefinition, transformSdkBlockToManifest, undoHistory, unfinishedBlockCopy, unwrapResponse, useAsyncPickerOptions, useBackendWatch, useBlockContext, useCombinedRefs, useDebouncedLatestSave, useDndContext, useDraggable, useDroppable, useEditor2 as useEditor, useEditorUiStore, useEditorUiStoreInstance, useEntryController, useEntryEditorController, useField, useIsomorphicLayoutEffect3 as useIsomorphicLayoutEffect, useMediaEditor, useMediaEditorOptional, useMultiAutosave, useOptionalEditorUiStoreInstance, useRichTextEditor, useSdkConfig, useSensor, useSensors, useUISelector, useUniqueId, validateBlockManifestIssues, writePlanForLookCustomizationCommand };