@riverbankcms/sdk 0.118.0 → 0.121.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 (34) hide show
  1. package/dist/{PreviewEditorSidebar-BBcK1DjD.mjs → PreviewEditorSidebar-lZ600tJx.mjs} +4 -4
  2. package/dist/{PreviewEditorUI-CuBFoYes.mjs → PreviewEditorUI-CTBWzLSb.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-nKUT4TL-.mjs → PreviewQueryProvider-BHT8CJvZ.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-BWIO_Dsi.mjs → SdkPreviewModeRuntime-DhPU58s7.mjs} +5 -5
  5. package/dist/{SiteChromeCustomizeContext-CciG60M5.mjs → SiteChromeCustomizeContext-BkNvpzNZ.mjs} +52 -6
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +0 -72
  7. package/dist/_dts/api/src/bookingConfig.d.ts +26 -1
  8. package/dist/_dts/api/src/contentRuntime.d.ts +1 -1
  9. package/dist/_dts/api/src/courses.d.ts +7 -1
  10. package/dist/_dts/api/src/endpoints.d.ts +2 -2
  11. package/dist/_dts/api/src/index.d.ts +3 -3
  12. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +4 -1
  13. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -3
  14. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +22 -39
  15. package/dist/_dts/sdk/src/version.d.ts +1 -1
  16. package/dist/_dts/site-commands/src/commands.d.ts +1 -7
  17. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +6 -0
  18. package/dist/cli/index.mjs +3 -7
  19. package/dist/client/client.mjs +45 -3
  20. package/dist/client/rendering.mjs +43 -1
  21. package/dist/preview-next/before-render.mjs +1 -1
  22. package/dist/preview-next/client/runtime.mjs +4 -4
  23. package/dist/preview-next/middleware.mjs +1 -1
  24. package/dist/{previewAuthStore-DN7vcRsv.mjs → previewAuthStore-31xH13Jc.mjs} +1 -1
  25. package/dist/{sdk-runtime-vW8QbyPN.mjs → sdk-runtime-BE_vcGua.mjs} +2 -2
  26. package/dist/{separator-DJ4bkeY3.mjs → separator-CiffYtk3.mjs} +1 -1
  27. package/dist/server/components.mjs +43 -1
  28. package/dist/server/index.mjs +2 -2
  29. package/dist/server/next.mjs +45 -3
  30. package/dist/server/prebuild.mjs +1 -1
  31. package/dist/server/rendering/server.mjs +43 -1
  32. package/dist/server/rendering.mjs +43 -1
  33. package/dist/server/server.mjs +2 -2
  34. package/package.json +1 -1
@@ -231,6 +231,7 @@ export type CourseEnrollmentRecord = {
231
231
  id: string;
232
232
  siteId: string;
233
233
  courseId: string;
234
+ eventSeriesId: string;
234
235
  customerId: string;
235
236
  status: CourseEnrollmentStatus;
236
237
  paymentMethod: CourseEnrollmentPaymentMethod;
@@ -293,14 +294,19 @@ export type AddCourseEnrollmentRequest = {
293
294
  customerName?: string;
294
295
  customerEmail?: string;
295
296
  customerPhone?: string | null;
296
- status?: 'enrolled' | 'waitlist';
297
+ status: 'enrolled' | 'waitlist';
297
298
  settlement?: {
298
299
  kind: 'complimentary';
299
300
  };
300
301
  formSubmissionJson?: Record<string, unknown>;
301
302
  };
302
303
  export type AddCourseEnrollmentResponse = {
304
+ kind: 'registration';
303
305
  enrollment: CourseEnrollmentRecord;
306
+ } | {
307
+ kind: 'waitlist';
308
+ customerId: string;
309
+ waitlistPosition: number | null;
304
310
  };
305
311
  export type UpdateCourseEnrollmentRequest = {
306
312
  status: 'enrolled' | 'waitlist' | 'cancelled' | 'completed';
@@ -1,4 +1,4 @@
1
- import type { APIEndpoints } from "./types";
1
+ import type { APIEndpoints } from './types';
2
2
  export declare const API_ENDPOINTS: {
3
3
  readonly aiContentUpdateChat: {
4
4
  readonly path: "/ai/content-update-chat";
@@ -1735,7 +1735,7 @@ export declare const API_ENDPOINTS: {
1735
1735
  readonly auth: "user";
1736
1736
  readonly responseKind: "json";
1737
1737
  };
1738
- readonly publishEventOfferingPageSurface: {
1738
+ readonly publishPageSurface: {
1739
1739
  readonly path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication";
1740
1740
  readonly method: "POST";
1741
1741
  readonly errors: readonly ["auth:forbidden", "validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"];
@@ -64,8 +64,8 @@ export { updateRouteMetadata } from './routes';
64
64
  export type { RouteMetadataPayload, RouteMetadataResponse } from './routes';
65
65
  export { getBookingSettingsRequest, updateBookingSettingsRequest, createAppointmentRequest, createCourseRequest, updateCourseRequest, deleteCourseRequest, deleteCourseProgramRequest, duplicateCourseRequest, addCourseEnrollmentRequest, addEventOccurrenceAttendeeRequest, updateCourseEnrollmentRequest, } from './bookings';
66
66
  export type { AppointmentService, AppointmentServiceOnlineDetails, AppointmentServiceOnlineDetailsInput, } from './bookingOperations';
67
- export type { BookingPricing } from './bookingConfig';
68
- export { DEFAULT_APPOINTMENT_STAFF_DIGEST_LOCAL_SEND_TIME, DIRECT_CHECKOUT_COLLECTION_OPTION_KINDS, } from './bookingConfig';
67
+ export type { BookingPricing, BookingSettingsSection, BookingSettingsSectionUpdate, BookingSettingsSectionUpdateRequest, } from './bookingConfig';
68
+ export { BOOKING_SETTINGS_SECTION_LABELS, BOOKING_SETTINGS_SECTION_KEYS, BOOKING_SETTINGS_SECTIONS, DEFAULT_APPOINTMENT_STAFF_DIGEST_LOCAL_SEND_TIME, DIRECT_CHECKOUT_COLLECTION_OPTION_KINDS, applyBookingSettingsSectionUpdate, applyBookingSettingsSectionUpdates, createBookingSettingsUpdateRequest, } from './bookingConfig';
69
69
  export { BOOKING_LEDGER_CANCELLATION_MODE_VALUES, BOOKING_LEDGER_DATE_BASIS_VALUES, BOOKING_LEDGER_KIND_VALUES, BOOKING_LEDGER_PERIOD_PRESET_VALUES, BOOKING_ACTIVITY_CATEGORY_VALUES, BOOKING_ACTIVITY_TYPE_VALUES, BOOKING_QUESTION_ANSWER_EXPORT_SCOPES, BOOKING_QUESTION_ANSWER_EXPORT_SCOPE_VALUES, CUSTOMER_MEMBERSHIP_STATUS_VALUES, CUSTOMER_PASS_STATUS_VALUES, } from './bookingRecords';
70
70
  export type { BookingQuestionAnswerExportScopeKind, CreatePersonRecordEntryRequest, ExportBookingQuestionAnswersCsvRequest, } from './bookingRecords';
71
71
  export { getEmailSettingsRequest, updateEmailSettingsRequest, sendTestEmailRequest, previewEmailTemplateRequest, } from './emailSettings';
@@ -124,4 +124,4 @@ export type { AIChatMessage, AiBriefTurn, AiDesignerThemePatchOp, AiPatchApplyRe
124
124
  export type { CancelFlexibleBalanceBookingDueToNonPaymentRequest, FlexibleBalanceAdminActionPlan, FlexibleBalanceAdminActionResponse, FlexibleBalanceAdminActionSource, FlexibleBalanceAdminActionView, ReopenFlexibleBalanceBookingAfterNonPaymentCancellationRequest, } from './types';
125
125
  export type { CancelShopOrderItemRequest, CancelShopOrderItemResponse, CancelShopOrderRequest, CancelShopOrderResponse, StaffCancellationContextCategory, StaffCancellationContextInput, StaffCancellationContextUiCategory, } from './siteOperations';
126
126
  export type { ContentTypeKey } from './contentEntries';
127
- export type { BlockListItem, EntryPageContentSlot, EntryPageContentSlotAllowedBlocks, EntryPageContentSlotWarning, EntryPageContentSlotsResponse, PageSurfaceContentSlot, PageSurfaceContentSlotsResponse, PageSurfaceEditorDocument, PublishEventOfferingPageSurfaceResponse, SdkEntrySlotContent, SdkRuntimeContentByPathResponse, SdkRuntimePageSurface, SdkRuntimePageSurfaceResponse, SdkRuntimePageSurfaceSubject, SdkSurfaceSlotContent, SiteBookingOfferingPresetSummary, WorkflowContentEntryTargetSnapshot, WorkflowPageDraftContent, WorkflowPagePublishedContent, WorkflowPageStatus, WorkflowPageTargetSnapshot, WorkflowRunStatusResponse, WorkflowTargetEntrySnapshot, } from './contentRuntime';
127
+ export type { BlockListItem, EntryPageContentSlot, EntryPageContentSlotAllowedBlocks, EntryPageContentSlotWarning, EntryPageContentSlotsResponse, PageSurfaceContentSlot, PageSurfaceContentSlotsResponse, PageSurfaceEditorDocument, PublishPageSurfaceResponse, SdkEntrySlotContent, SdkRuntimeContentByPathResponse, SdkRuntimePageSurface, SdkRuntimePageSurfaceResponse, SdkRuntimePageSurfaceSubject, SdkSurfaceSlotContent, SiteBookingOfferingPresetSummary, WorkflowContentEntryTargetSnapshot, WorkflowPageDraftContent, WorkflowPagePublishedContent, WorkflowPageStatus, WorkflowPageTargetSnapshot, WorkflowRunStatusResponse, WorkflowTargetEntrySnapshot, } from './contentRuntime';
@@ -1,5 +1,5 @@
1
1
  import type { AppointmentResourceId } from "../../../core/src/index";
2
- import type { BookingVerticalConfig } from "../bookingConfig";
2
+ import type { BookingSettingsSection, BookingVerticalConfig } from "../bookingConfig";
3
3
  import { type EventSeriesCanonicalBehaviour } from "../bookingVerticals";
4
4
  import { type StaffScope } from "../staffAccess";
5
5
  import type { SiteRole } from "../siteMembers";
@@ -73,6 +73,9 @@ export type DashboardBookingsNavDestination = Readonly<{
73
73
  kind: "booking_customers";
74
74
  }> | Readonly<{
75
75
  kind: "booking_settings";
76
+ section: BookingSettingsSection;
77
+ }> | Readonly<{
78
+ kind: "booking_closures";
76
79
  }>;
77
80
  export type DashboardBookingsNavItemPlan = Readonly<{
78
81
  label: string;
@@ -10,7 +10,7 @@ import type { GetVersionHistoryResponse, ListVersionHistoryResponse, RestoreVers
10
10
  import type { ApplyContentTemplateAddonRequest, ContentTemplateDetailsResponse, CreateTemplateBlockRequest, GetTransformsResponse, ReorderTemplateBlocksRequest, SerializedContentTypeSummary, UpdateContentTemplateBlockBindingsRequest, UpdateContentTemplateBlockRequest } from './contentTypes';
11
11
  import type { LinkPayload, RoutableContentItem, SitemapRouteItem } from './navigation/types';
12
12
  import type { RouteMetadataPayload, RouteMetadataResponse } from './routes';
13
- import type { PageSurfaceEditorDocument, PublishEventOfferingPageSurfaceResponse } from './contentRuntime';
13
+ import type { PageSurfaceEditorDocument, PublishPageSurfaceResponse } from './contentRuntime';
14
14
  import type { ContentRouteRecord } from './types';
15
15
  import type { SiteAnalyticsSettingsPayload, SiteAnalyticsSettingsResponse } from './siteAnalytics';
16
16
  import type { SiteBannerSettingsPayload, SiteBannerSettingsResponse } from './siteBanner';
@@ -289,10 +289,10 @@ export type SiteManagementAPIEndpoints = {
289
289
  }, {
290
290
  route: ContentRouteRecord;
291
291
  }>;
292
- publishEventOfferingPageSurface: APIEndpoint<never, {
292
+ publishPageSurface: APIEndpoint<never, {
293
293
  siteId: string;
294
294
  pageSurfaceId: string;
295
- }, PublishEventOfferingPageSurfaceResponse>;
295
+ }, PublishPageSurfaceResponse>;
296
296
  runSdkWorkflow: APIEndpoint<never, {
297
297
  siteId: string;
298
298
  type: string;
@@ -5126,6 +5126,7 @@ export type Database = {
5126
5126
  customer_id: string;
5127
5127
  customer_membership_id: string | null;
5128
5128
  enrolled_at: string;
5129
+ event_series_id: string | null;
5129
5130
  form_submission_json: Json;
5130
5131
  id: string;
5131
5132
  metadata: Json;
@@ -5144,6 +5145,7 @@ export type Database = {
5144
5145
  customer_id: string;
5145
5146
  customer_membership_id?: string | null;
5146
5147
  enrolled_at?: string;
5148
+ event_series_id?: string | null;
5147
5149
  form_submission_json?: Json;
5148
5150
  id?: string;
5149
5151
  metadata?: Json;
@@ -5162,6 +5164,7 @@ export type Database = {
5162
5164
  customer_id?: string;
5163
5165
  customer_membership_id?: string | null;
5164
5166
  enrolled_at?: string;
5167
+ event_series_id?: string | null;
5165
5168
  form_submission_json?: Json;
5166
5169
  id?: string;
5167
5170
  metadata?: Json;
@@ -5195,6 +5198,13 @@ export type Database = {
5195
5198
  referencedRelation: "booking_customer_memberships";
5196
5199
  referencedColumns: ["id"];
5197
5200
  },
5201
+ {
5202
+ foreignKeyName: "course_enrollments_event_series_site_fkey";
5203
+ columns: ["event_series_id", "site_id"];
5204
+ isOneToOne: false;
5205
+ referencedRelation: "event_series";
5206
+ referencedColumns: ["id", "site_id"];
5207
+ },
5198
5208
  {
5199
5209
  foreignKeyName: "course_enrollments_payment_id_fkey";
5200
5210
  columns: ["payment_id"];
@@ -14729,44 +14739,6 @@ export type Database = {
14729
14739
  }
14730
14740
  ];
14731
14741
  };
14732
- site_cost_changes: {
14733
- Row: {
14734
- changed_by: string;
14735
- created_at: string;
14736
- id: string;
14737
- new_cost_cents: number;
14738
- previous_cost_cents: number;
14739
- reason: string | null;
14740
- site_id: string;
14741
- };
14742
- Insert: {
14743
- changed_by: string;
14744
- created_at?: string;
14745
- id?: string;
14746
- new_cost_cents: number;
14747
- previous_cost_cents: number;
14748
- reason?: string | null;
14749
- site_id: string;
14750
- };
14751
- Update: {
14752
- changed_by?: string;
14753
- created_at?: string;
14754
- id?: string;
14755
- new_cost_cents?: number;
14756
- previous_cost_cents?: number;
14757
- reason?: string | null;
14758
- site_id?: string;
14759
- };
14760
- Relationships: [
14761
- {
14762
- foreignKeyName: "site_cost_changes_site_id_fkey";
14763
- columns: ["site_id"];
14764
- isOneToOne: false;
14765
- referencedRelation: "sites";
14766
- referencedColumns: ["id"];
14767
- }
14768
- ];
14769
- };
14770
14742
  site_custom_blocks: {
14771
14743
  Row: {
14772
14744
  block_id: string;
@@ -18113,6 +18085,10 @@ export type Database = {
18113
18085
  participant_participation_id: string;
18114
18086
  }[];
18115
18087
  };
18088
+ backfill_order_item_attendee_reservations: {
18089
+ Args: never;
18090
+ Returns: number;
18091
+ };
18116
18092
  begin_site_billing_transition_attempt_atomic: {
18117
18093
  Args: {
18118
18094
  p_billing_user_id?: string;
@@ -18474,6 +18450,13 @@ export type Database = {
18474
18450
  };
18475
18451
  Returns: Json;
18476
18452
  };
18453
+ classify_order_item_attendee_reservations: {
18454
+ Args: never;
18455
+ Returns: {
18456
+ classification: string;
18457
+ row_count: number;
18458
+ }[];
18459
+ };
18477
18460
  commit_authoritative_page_surface_draft_version: {
18478
18461
  Args: {
18479
18462
  p_data: Json;
@@ -20176,7 +20159,7 @@ export type Database = {
20176
20159
  p_transition: string;
20177
20160
  p_user_id: string;
20178
20161
  };
20179
- Returns: boolean;
20162
+ Returns: string;
20180
20163
  };
20181
20164
  transition_authoritative_surface_slot_block_draft: {
20182
20165
  Args: {
@@ -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.118.0";
11
+ export declare const SDK_VERSION = "0.121.0";
@@ -17,7 +17,7 @@ export declare const customerMembershipStatuses: readonly ["active", "trialing",
17
17
  export type CustomerMembershipStatus = (typeof customerMembershipStatuses)[number];
18
18
  export declare const appointmentBookingStatuses: readonly ["pending", "confirmed", "cancelled", "no_show"];
19
19
  export type AppointmentBookingStatus = (typeof appointmentBookingStatuses)[number];
20
- export declare const courseEnrollmentStatuses: readonly ["enrolled", "completed", "cancelled"];
20
+ export declare const courseEnrollmentStatuses: readonly ["enrolled"];
21
21
  export type SeedCourseEnrollmentStatus = (typeof courseEnrollmentStatuses)[number];
22
22
  export declare const eventRegistrationStatuses: readonly ["confirmed"];
23
23
  export type SeedEventRegistrationStatus = (typeof eventRegistrationStatuses)[number];
@@ -1194,8 +1194,6 @@ export declare const seedCourseEnrollmentCommandSchema: z.ZodObject<{
1194
1194
  customerRef: z.ZodPipe<z.ZodString, z.ZodTransform<BookingCustomerRef, string>>;
1195
1195
  courseRef: z.ZodPipe<z.ZodString, z.ZodTransform<CourseRef, string>>;
1196
1196
  status: z.ZodDefault<z.ZodEnum<{
1197
- completed: "completed";
1198
- cancelled: "cancelled";
1199
1197
  enrolled: "enrolled";
1200
1198
  }>>;
1201
1199
  paymentMethod: z.ZodDefault<z.ZodLiteral<"free">>;
@@ -2447,8 +2445,6 @@ export declare const siteCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2447
2445
  customerRef: z.ZodPipe<z.ZodString, z.ZodTransform<BookingCustomerRef, string>>;
2448
2446
  courseRef: z.ZodPipe<z.ZodString, z.ZodTransform<CourseRef, string>>;
2449
2447
  status: z.ZodDefault<z.ZodEnum<{
2450
- completed: "completed";
2451
- cancelled: "cancelled";
2452
2448
  enrolled: "enrolled";
2453
2449
  }>>;
2454
2450
  paymentMethod: z.ZodDefault<z.ZodLiteral<"free">>;
@@ -3692,8 +3688,6 @@ export declare const siteCommandBatchSchema: z.ZodObject<{
3692
3688
  customerRef: z.ZodPipe<z.ZodString, z.ZodTransform<BookingCustomerRef, string>>;
3693
3689
  courseRef: z.ZodPipe<z.ZodString, z.ZodTransform<CourseRef, string>>;
3694
3690
  status: z.ZodDefault<z.ZodEnum<{
3695
- completed: "completed";
3696
- cancelled: "cancelled";
3697
3691
  enrolled: "enrolled";
3698
3692
  }>>;
3699
3693
  paymentMethod: z.ZodDefault<z.ZodLiteral<"free">>;
@@ -44,6 +44,12 @@ type SiteThemeSelectionsCommonInput = Readonly<{
44
44
  siteStyle: CuratedSiteStyle;
45
45
  buttonStyleSelection: ButtonStyleSelection | null;
46
46
  typography?: Theme['typography'];
47
+ /**
48
+ * Concrete footer presentation is independent of the selectable footer link
49
+ * treatment. Existing sites pass it through recompilation so choosing another
50
+ * style axis cannot reset footer structure, surfaces, branding, or legal layout.
51
+ */
52
+ footerPresentation?: Theme['footer'];
47
53
  headerLookId?: HeaderLookId | null;
48
54
  headerLayoutId?: HeaderLayoutId | null;
49
55
  headerStyleId?: HeaderStyleId | null;
@@ -5022,7 +5022,7 @@ const API_ENDPOINTS$1 = {
5022
5022
  auth: "user",
5023
5023
  responseKind: "json"
5024
5024
  },
5025
- publishEventOfferingPageSurface: {
5025
+ publishPageSurface: {
5026
5026
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
5027
5027
  method: "POST",
5028
5028
  errors: [
@@ -80414,11 +80414,7 @@ const appointmentBookingStatuses = [
80414
80414
  "cancelled",
80415
80415
  "no_show"
80416
80416
  ];
80417
- const courseEnrollmentStatuses = [
80418
- "enrolled",
80419
- "completed",
80420
- "cancelled"
80421
- ];
80417
+ const courseEnrollmentStatuses = ["enrolled"];
80422
80418
  const eventRegistrationStatuses = ["confirmed"];
80423
80419
  const offeringCapacitySchema = z$1.discriminatedUnion("kind", [z$1.object({ kind: z$1.literal("unlimited") }).strict(), z$1.object({
80424
80420
  kind: z$1.literal("limited"),
@@ -156316,7 +156312,7 @@ var SimpleCache = class {
156316
156312
  * 1. This constant
156317
156313
  * 2. The "version" field in package.json
156318
156314
  */
156319
- const SDK_VERSION = "0.118.0";
156315
+ const SDK_VERSION = "0.121.0";
156320
156316
  //#endregion
156321
156317
  //#region src/client/error.ts
156322
156318
  /**
@@ -2265,7 +2265,7 @@ const API_ENDPOINTS$1 = {
2265
2265
  auth: "user",
2266
2266
  responseKind: "json"
2267
2267
  },
2268
- publishEventOfferingPageSurface: {
2268
+ publishPageSurface: {
2269
2269
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
2270
2270
  method: "POST",
2271
2271
  errors: [
@@ -63373,6 +63373,7 @@ function generateHeaderCss(options) {
63373
63373
  cssChunks.push(generateMobilePanelStyles(header, themeId, tokens));
63374
63374
  if (header.variant === "floating" && header.container) cssChunks.push(generateFloatingContainerStyles(header, themeId, tokens));
63375
63375
  cssChunks.push(generateNavContainerStyles(header, themeId, tokens));
63376
+ cssChunks.push(generateHeaderCtaTreatmentStyles(header, themeId, tokens));
63376
63377
  cssChunks.push(generateCtaGapStyles(header, themeId));
63377
63378
  return cssChunks.filter(Boolean).join("\n\n");
63378
63379
  }
@@ -63843,6 +63844,46 @@ const HEADER_CTA_GAP_MAP = {
63843
63844
  spacious: "3rem"
63844
63845
  };
63845
63846
  /**
63847
+ * The inverted CTA treatment is contextual to branded header surfaces. It
63848
+ * cannot be represented by the generic secondary button role alone because
63849
+ * that role is transparent and inherits the surrounding surface foreground.
63850
+ * Keep the shared button's structure/effects while making the header own the
63851
+ * palette relationship for both desktop and mobile CTAs.
63852
+ */
63853
+ function generateHeaderCtaTreatmentStyles(header, themeId, tokens) {
63854
+ if (header.ctaTreatment !== "inverted") return "";
63855
+ const desktopSelector = `:where([data-theme-scope="${themeId}"]) .header-cta`;
63856
+ const mobileSelector = `:where([data-theme-scope="${themeId}"]) .nav-mobile-cta`;
63857
+ const selectors = `${desktopSelector},\n${mobileSelector}`;
63858
+ const hoverSelectors = [
63859
+ `${desktopSelector}:hover`,
63860
+ `${desktopSelector}[data-force-hover="true"]`,
63861
+ `${mobileSelector}:hover`,
63862
+ `${mobileSelector}[data-force-hover="true"]`
63863
+ ].join(",\n");
63864
+ const focusSelectors = [`${desktopSelector}:focus-visible`, `${mobileSelector}:focus-visible`].join(",\n");
63865
+ return `
63866
+ ${selectors} {
63867
+ background-color: ${tokens.getColor("background")};
63868
+ background-image: none;
63869
+ color: ${tokens.getColor("onBackground")};
63870
+ border-color: currentColor;
63871
+ }
63872
+
63873
+ ${hoverSelectors} {
63874
+ background-color: ${tokens.getColor("surface")};
63875
+ background-image: none;
63876
+ color: ${tokens.getColor("onSurface")};
63877
+ }
63878
+
63879
+ ${focusSelectors} {
63880
+ outline: 2px solid ${tokens.getColor("onBackground")};
63881
+ outline-offset: 2px;
63882
+ box-shadow: 0 0 0 4px ${tokens.getColor("background")};
63883
+ }
63884
+ `;
63885
+ }
63886
+ /**
63846
63887
  * Generate CTA button gap styles (left margin between nav links and CTA)
63847
63888
  */
63848
63889
  function generateCtaGapStyles(header, themeId) {
@@ -63901,7 +63942,8 @@ ${`:where([data-theme-scope="${themeId}"])`} .footer-logo img {
63901
63942
  `;
63902
63943
  }
63903
63944
  function resolveFooterLogoSize(footer, headerLogo) {
63904
- return footerLogoSizeFromHeaderLogo(headerLogo) ?? footer.logo?.maxHeight ?? footer.logo?.size ?? "md";
63945
+ const brandDrivenSize = footerLogoSizeFromHeaderLogo(headerLogo);
63946
+ return footer.logo?.maxHeight ?? brandDrivenSize ?? footer.logo?.size ?? "md";
63905
63947
  }
63906
63948
  function footerLogoSizeFromHeaderLogo(headerLogo) {
63907
63949
  const size = headerLogo?.size;
@@ -160116,7 +160158,7 @@ var SimpleCache = class {
160116
160158
  * 1. This constant
160117
160159
  * 2. The "version" field in package.json
160118
160160
  */
160119
- const SDK_VERSION = "0.118.0";
160161
+ const SDK_VERSION = "0.121.0";
160120
160162
  //#endregion
160121
160163
  //#region src/client/error.ts
160122
160164
  let _Symbol$for;
@@ -133058,6 +133058,7 @@ function generateHeaderCss(options) {
133058
133058
  cssChunks.push(generateMobilePanelStyles(header, themeId, tokens));
133059
133059
  if (header.variant === "floating" && header.container) cssChunks.push(generateFloatingContainerStyles(header, themeId, tokens));
133060
133060
  cssChunks.push(generateNavContainerStyles(header, themeId, tokens));
133061
+ cssChunks.push(generateHeaderCtaTreatmentStyles(header, themeId, tokens));
133061
133062
  cssChunks.push(generateCtaGapStyles(header, themeId));
133062
133063
  return cssChunks.filter(Boolean).join("\n\n");
133063
133064
  }
@@ -133528,6 +133529,46 @@ const HEADER_CTA_GAP_MAP = {
133528
133529
  spacious: "3rem"
133529
133530
  };
133530
133531
  /**
133532
+ * The inverted CTA treatment is contextual to branded header surfaces. It
133533
+ * cannot be represented by the generic secondary button role alone because
133534
+ * that role is transparent and inherits the surrounding surface foreground.
133535
+ * Keep the shared button's structure/effects while making the header own the
133536
+ * palette relationship for both desktop and mobile CTAs.
133537
+ */
133538
+ function generateHeaderCtaTreatmentStyles(header, themeId, tokens) {
133539
+ if (header.ctaTreatment !== "inverted") return "";
133540
+ const desktopSelector = `:where([data-theme-scope="${themeId}"]) .header-cta`;
133541
+ const mobileSelector = `:where([data-theme-scope="${themeId}"]) .nav-mobile-cta`;
133542
+ const selectors = `${desktopSelector},\n${mobileSelector}`;
133543
+ const hoverSelectors = [
133544
+ `${desktopSelector}:hover`,
133545
+ `${desktopSelector}[data-force-hover="true"]`,
133546
+ `${mobileSelector}:hover`,
133547
+ `${mobileSelector}[data-force-hover="true"]`
133548
+ ].join(",\n");
133549
+ const focusSelectors = [`${desktopSelector}:focus-visible`, `${mobileSelector}:focus-visible`].join(",\n");
133550
+ return `
133551
+ ${selectors} {
133552
+ background-color: ${tokens.getColor("background")};
133553
+ background-image: none;
133554
+ color: ${tokens.getColor("onBackground")};
133555
+ border-color: currentColor;
133556
+ }
133557
+
133558
+ ${hoverSelectors} {
133559
+ background-color: ${tokens.getColor("surface")};
133560
+ background-image: none;
133561
+ color: ${tokens.getColor("onSurface")};
133562
+ }
133563
+
133564
+ ${focusSelectors} {
133565
+ outline: 2px solid ${tokens.getColor("onBackground")};
133566
+ outline-offset: 2px;
133567
+ box-shadow: 0 0 0 4px ${tokens.getColor("background")};
133568
+ }
133569
+ `;
133570
+ }
133571
+ /**
133531
133572
  * Generate CTA button gap styles (left margin between nav links and CTA)
133532
133573
  */
133533
133574
  function generateCtaGapStyles(header, themeId) {
@@ -133586,7 +133627,8 @@ ${`:where([data-theme-scope="${themeId}"])`} .footer-logo img {
133586
133627
  `;
133587
133628
  }
133588
133629
  function resolveFooterLogoSize(footer, headerLogo) {
133589
- return footerLogoSizeFromHeaderLogo(headerLogo) ?? footer.logo?.maxHeight ?? footer.logo?.size ?? "md";
133630
+ const brandDrivenSize = footerLogoSizeFromHeaderLogo(headerLogo);
133631
+ return footer.logo?.maxHeight ?? brandDrivenSize ?? footer.logo?.size ?? "md";
133590
133632
  }
133591
133633
  function footerLogoSizeFromHeaderLogo(headerLogo) {
133592
133634
  const size = headerLogo?.size;
@@ -2270,7 +2270,7 @@ const API_ENDPOINTS = {
2270
2270
  auth: "user",
2271
2271
  responseKind: "json"
2272
2272
  },
2273
- publishEventOfferingPageSurface: {
2273
+ publishPageSurface: {
2274
2274
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
2275
2275
  method: "POST",
2276
2276
  errors: [
@@ -1,16 +1,16 @@
1
1
  "use client";
2
- import { a as usePreviewLayout, i as useOptionalPreviewLayout, n as createPreviewQueryClient, r as PreviewLayoutProvider, t as PreviewQueryProvider } from "../../PreviewQueryProvider-nKUT4TL-.mjs";
2
+ import { a as usePreviewLayout, i as useOptionalPreviewLayout, n as createPreviewQueryClient, r as PreviewLayoutProvider, t as PreviewQueryProvider } from "../../PreviewQueryProvider-BHT8CJvZ.mjs";
3
3
  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-BWIO_Dsi.mjs").then((n) => n.n)).SdkPreviewModeRuntime };
7
+ return { default: (await import("../../SdkPreviewModeRuntime-DhPU58s7.mjs").then((n) => n.n)).SdkPreviewModeRuntime };
8
8
  });
9
9
  const LazyPreviewShell = React.lazy(async () => {
10
- return { default: (await import("../../sdk-runtime-vW8QbyPN.mjs")).PreviewShell };
10
+ return { default: (await import("../../sdk-runtime-BE_vcGua.mjs")).PreviewShell };
11
11
  });
12
12
  const LazyPreviewShellLayout = React.lazy(async () => {
13
- return { default: (await import("../../sdk-runtime-vW8QbyPN.mjs")).PreviewShellLayout };
13
+ return { default: (await import("../../sdk-runtime-BE_vcGua.mjs")).PreviewShellLayout };
14
14
  });
15
15
  function SdkPreviewMode(props) {
16
16
  return /* @__PURE__ */ jsx(React.Suspense, {
@@ -2272,7 +2272,7 @@ const API_ENDPOINTS = {
2272
2272
  auth: "user",
2273
2273
  responseKind: "json"
2274
2274
  },
2275
- publishEventOfferingPageSurface: {
2275
+ publishPageSurface: {
2276
2276
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
2277
2277
  method: "POST",
2278
2278
  errors: [
@@ -2243,7 +2243,7 @@ const API_ENDPOINTS = {
2243
2243
  auth: "user",
2244
2244
  responseKind: "json"
2245
2245
  },
2246
- publishEventOfferingPageSurface: {
2246
+ publishPageSurface: {
2247
2247
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
2248
2248
  method: "POST",
2249
2249
  errors: [
@@ -1,4 +1,4 @@
1
1
  "use client";
2
- import "./PreviewQueryProvider-nKUT4TL-.mjs";
3
- import { i as PreviewShellLayout, r as PreviewShell } from "./SdkPreviewModeRuntime-BWIO_Dsi.mjs";
2
+ import "./PreviewQueryProvider-BHT8CJvZ.mjs";
3
+ import { i as PreviewShellLayout, r as PreviewShell } from "./SdkPreviewModeRuntime-DhPU58s7.mjs";
4
4
  export { PreviewShell, PreviewShellLayout };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { $c as cn, Yc as Primitive } from "./SiteChromeCustomizeContext-CciG60M5.mjs";
2
+ import { $c as cn, Yc as Primitive } from "./SiteChromeCustomizeContext-BkNvpzNZ.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
@@ -55192,6 +55192,7 @@ function generateHeaderCss(options) {
55192
55192
  cssChunks.push(generateMobilePanelStyles(header, themeId, tokens));
55193
55193
  if (header.variant === "floating" && header.container) cssChunks.push(generateFloatingContainerStyles(header, themeId, tokens));
55194
55194
  cssChunks.push(generateNavContainerStyles(header, themeId, tokens));
55195
+ cssChunks.push(generateHeaderCtaTreatmentStyles(header, themeId, tokens));
55195
55196
  cssChunks.push(generateCtaGapStyles(header, themeId));
55196
55197
  return cssChunks.filter(Boolean).join("\n\n");
55197
55198
  }
@@ -55662,6 +55663,46 @@ const HEADER_CTA_GAP_MAP = {
55662
55663
  spacious: "3rem"
55663
55664
  };
55664
55665
  /**
55666
+ * The inverted CTA treatment is contextual to branded header surfaces. It
55667
+ * cannot be represented by the generic secondary button role alone because
55668
+ * that role is transparent and inherits the surrounding surface foreground.
55669
+ * Keep the shared button's structure/effects while making the header own the
55670
+ * palette relationship for both desktop and mobile CTAs.
55671
+ */
55672
+ function generateHeaderCtaTreatmentStyles(header, themeId, tokens) {
55673
+ if (header.ctaTreatment !== "inverted") return "";
55674
+ const desktopSelector = `:where([data-theme-scope="${themeId}"]) .header-cta`;
55675
+ const mobileSelector = `:where([data-theme-scope="${themeId}"]) .nav-mobile-cta`;
55676
+ const selectors = `${desktopSelector},\n${mobileSelector}`;
55677
+ const hoverSelectors = [
55678
+ `${desktopSelector}:hover`,
55679
+ `${desktopSelector}[data-force-hover="true"]`,
55680
+ `${mobileSelector}:hover`,
55681
+ `${mobileSelector}[data-force-hover="true"]`
55682
+ ].join(",\n");
55683
+ const focusSelectors = [`${desktopSelector}:focus-visible`, `${mobileSelector}:focus-visible`].join(",\n");
55684
+ return `
55685
+ ${selectors} {
55686
+ background-color: ${tokens.getColor("background")};
55687
+ background-image: none;
55688
+ color: ${tokens.getColor("onBackground")};
55689
+ border-color: currentColor;
55690
+ }
55691
+
55692
+ ${hoverSelectors} {
55693
+ background-color: ${tokens.getColor("surface")};
55694
+ background-image: none;
55695
+ color: ${tokens.getColor("onSurface")};
55696
+ }
55697
+
55698
+ ${focusSelectors} {
55699
+ outline: 2px solid ${tokens.getColor("onBackground")};
55700
+ outline-offset: 2px;
55701
+ box-shadow: 0 0 0 4px ${tokens.getColor("background")};
55702
+ }
55703
+ `;
55704
+ }
55705
+ /**
55665
55706
  * Generate CTA button gap styles (left margin between nav links and CTA)
55666
55707
  */
55667
55708
  function generateCtaGapStyles(header, themeId) {
@@ -55719,7 +55760,8 @@ ${`:where([data-theme-scope="${themeId}"])`} .footer-logo img {
55719
55760
  `;
55720
55761
  }
55721
55762
  function resolveFooterLogoSize(footer, headerLogo) {
55722
- return footerLogoSizeFromHeaderLogo(headerLogo) ?? footer.logo?.maxHeight ?? footer.logo?.size ?? "md";
55763
+ const brandDrivenSize = footerLogoSizeFromHeaderLogo(headerLogo);
55764
+ return footer.logo?.maxHeight ?? brandDrivenSize ?? footer.logo?.size ?? "md";
55723
55765
  }
55724
55766
  function footerLogoSizeFromHeaderLogo(headerLogo) {
55725
55767
  const size = headerLogo?.size;
@@ -2260,7 +2260,7 @@ const API_ENDPOINTS$1 = {
2260
2260
  auth: "user",
2261
2261
  responseKind: "json"
2262
2262
  },
2263
- publishEventOfferingPageSurface: {
2263
+ publishPageSurface: {
2264
2264
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
2265
2265
  method: "POST",
2266
2266
  errors: [
@@ -7849,7 +7849,7 @@ var SimpleCache = class {
7849
7849
  * 1. This constant
7850
7850
  * 2. The "version" field in package.json
7851
7851
  */
7852
- const SDK_VERSION = "0.118.0";
7852
+ const SDK_VERSION = "0.121.0";
7853
7853
  //#endregion
7854
7854
  //#region src/client/error.ts
7855
7855
  let _Symbol$for;