@riverbankcms/sdk 0.90.0 → 0.90.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 (80) hide show
  1. package/dist/{PreviewEditorSidebar-KVXNF3VW.mjs → PreviewEditorSidebar-FNFRVSIM.mjs} +2 -2
  2. package/dist/{PreviewEditorUI-J3JN5Z7T.mjs → PreviewEditorUI-3WXJFQXG.mjs} +2 -2
  3. package/dist/SdkPreviewModeRuntime-2UCIMKUB.mjs +8 -0
  4. package/dist/_dts/api/src/bookingConfig.d.ts +3 -0
  5. package/dist/_dts/api/src/event-listing-destination.d.ts +59 -0
  6. package/dist/_dts/api/src/index.d.ts +4 -0
  7. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +0 -1
  8. package/dist/_dts/api/src/navigation.d.ts +2 -0
  9. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +3 -1
  10. package/dist/_dts/api/src/settings/permissions.d.ts +273 -0
  11. package/dist/_dts/api/src/types.d.ts +1 -0
  12. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +60 -2
  13. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +12 -1
  14. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +9 -9
  15. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +1 -1
  16. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +5 -0
  17. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +24 -0
  18. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/destination.d.ts +8 -0
  19. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/pricing.d.ts +3 -0
  20. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
  21. package/dist/_dts/core/src/event-pricing.d.ts +12 -2
  22. package/dist/_dts/sdk/src/public-api/contracts.d.ts +11 -1
  23. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +11 -1
  24. package/dist/_dts/sdk/src/version.d.ts +1 -1
  25. package/dist/{chunk-PMBB6MQ7.mjs → chunk-CR2VX432.mjs} +297 -117
  26. package/dist/{chunk-AEOYWPE4.mjs → chunk-FA6LVZ7C.mjs} +5 -5
  27. package/dist/{chunk-RQ3XZ4SJ.mjs → chunk-H6TT5ZXI.mjs} +1 -1
  28. package/dist/{chunk-GSPFFUVB.mjs → chunk-SYYJZPKU.mjs} +1 -1
  29. package/dist/cli/index.mjs +160 -103
  30. package/dist/client/{accordion-GXQNWQ6O.mjs → accordion-4K7VGZ3I.mjs} +2 -2
  31. package/dist/client/{bookingForm-STLUJ36H.mjs → bookingForm-3QXA3CIS.mjs} +5 -5
  32. package/dist/client/bookings.mjs +1154 -556
  33. package/dist/client/{carousel-CVRN6EPP.mjs → carousel-BEJKNGQ7.mjs} +3 -3
  34. package/dist/client/{cart-IYIBA5CL.mjs → cart-44BBM6XG.mjs} +6 -6
  35. package/dist/client/{checkout-O3BGM4GS.mjs → checkout-THMHEYKF.mjs} +6 -6
  36. package/dist/client/{chunk-25W2EQUN.mjs → chunk-3H5CLFKT.mjs} +8 -0
  37. package/dist/client/{chunk-MFPKS6QS.mjs → chunk-4COPESPO.mjs} +5 -5
  38. package/dist/client/{chunk-4RTFGHZN.mjs → chunk-5AJIMWKS.mjs} +6 -3
  39. package/dist/client/{chunk-6DPXDOIL.mjs → chunk-B4H6QMPY.mjs} +93 -22
  40. package/dist/client/{chunk-VFHZLZAC.mjs → chunk-DQIRKNZE.mjs} +1 -1
  41. package/dist/client/{chunk-7DH35FGA.mjs → chunk-EJBHK74Y.mjs} +1 -1
  42. package/dist/client/{chunk-DAS5CIER.mjs → chunk-JV7ZNAOU.mjs} +118 -20
  43. package/dist/client/{chunk-FHU6PFPM.mjs → chunk-KNTLBQ3N.mjs} +1 -1
  44. package/dist/client/{chunk-Z62JYS5O.mjs → chunk-PEDNDLPB.mjs} +2 -2
  45. package/dist/client/{chunk-NBFRJ5NB.mjs → chunk-SLY6UDAS.mjs} +2 -2
  46. package/dist/client/{chunk-D3ETC2SU.mjs → chunk-ZIAF2DA4.mjs} +1 -1
  47. package/dist/client/client.mjs +272 -83
  48. package/dist/client/{courseRegistration-2D3ACMJR.mjs → courseRegistration-URX7RCCK.mjs} +5 -5
  49. package/dist/client/{eventCalendar-QY4UZUFF.mjs → eventCalendar-GTENOQCE.mjs} +8 -8
  50. package/dist/client/{eventCombined-RRCDKJC2.mjs → eventCombined-EZVB72MF.mjs} +8 -8
  51. package/dist/client/{eventDetails-YO335BUT.mjs → eventDetails-CH4BJR5Z.mjs} +8 -8
  52. package/dist/client/{eventListing-PXA6GFQ3.mjs → eventListing-4BVOI5HS.mjs} +8 -8
  53. package/dist/client/{eventRegistration-2ZHEDDXO.mjs → eventRegistration-37LPIKIE.mjs} +8 -8
  54. package/dist/client/{form-ZS6KX4U2.mjs → form-FX3Y54YK.mjs} +2 -2
  55. package/dist/client/{headerSection-QK5SLIIB.mjs → headerSection-UOZZGVYL.mjs} +3 -3
  56. package/dist/client/hooks.mjs +86 -35
  57. package/dist/client/{locationMap-GFNIUD2X.mjs → locationMap-VSIPKV35.mjs} +3 -3
  58. package/dist/client/{newsletterForm-PGLTTCUG.mjs → newsletterForm-6FRJKNAF.mjs} +2 -2
  59. package/dist/client/{productDetail-OPBE5ZPI.mjs → productDetail-6AHMLXCO.mjs} +6 -6
  60. package/dist/client/{productList-NI72Q62Z.mjs → productList-M2CYIZVH.mjs} +6 -6
  61. package/dist/client/rendering/client.mjs +231 -42
  62. package/dist/client/rendering/islands.mjs +19 -19
  63. package/dist/client/rendering.mjs +273 -84
  64. package/dist/client/{shop-3ZQPEWYI.mjs → shop-AUOT6GEX.mjs} +6 -6
  65. package/dist/preview-next/client/runtime.mjs +3 -3
  66. package/dist/{sdk-runtime-FSHXCWDS.mjs → sdk-runtime-6GPJNLU6.mjs} +4 -4
  67. package/dist/server/components.mjs +136 -58
  68. package/dist/server/config-validation.mjs +78 -27
  69. package/dist/server/config.mjs +78 -27
  70. package/dist/server/data.mjs +86 -35
  71. package/dist/server/index.mjs +1 -1
  72. package/dist/server/next.mjs +157 -79
  73. package/dist/server/page-converter.mjs +72 -21
  74. package/dist/server/prebuild.mjs +1 -1
  75. package/dist/server/rendering/server.mjs +148 -70
  76. package/dist/server/rendering.mjs +152 -74
  77. package/dist/server/routing.mjs +121 -44
  78. package/dist/server/server.mjs +95 -44
  79. package/package.json +2 -2
  80. package/dist/SdkPreviewModeRuntime-UBL6MSNP.mjs +0 -8
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSidebarChromeModel, resolvePreviewEditorGuidanceModel, previewWidgetOverrides, canInspectSiteStyle, mapContentSchemaToFormFields, PreviewFormProvider, usePreviewBlockCustomizeSelectionOptional, BlockEditor, canApplySiteStyle, useBlockCustomizeControls, MAX_QUICK_MANIFEST_FIELDS } from './chunk-RQ3XZ4SJ.mjs';
3
- import { useEntryController, useEditorUiStoreInstance, useUISelector, resolvePreviewSidebarTab, unsafeAsEditorBlockId, Tabs, TabsList, TabsTrigger, Button, X, TabsContent, useEditorUiStore, deriveRouteMetadataPresentation, resolvePageRouteSlug, createManifestValidation, createStoreBackend, ManifestForm, previewAssistantEnabled, Collapsible, CollapsibleTrigger, ChevronRight, CollapsibleContent, ContentFieldsForm, usePreviewDesignCoordinator, useSiteChromeCustomizeOptional, resolveStyleConfiguratorInitialSnapshot, createStyleConfiguratorState, isPreviewingChange, createOptimisticActionRunner, syncStyleConfiguratorState, getCuratedSiteStyle, planSiteStylePreviewChange, openRow, previewSiteStyle, applyResolvedSelections, previewButtonPersonality, previewHeaderLayout, previewHeaderStyle, planSiteChromeLookSelection, previewFooterLook, buildSiteChromeLookModels, planSiteChromeFooterLayoutSelection, previewPaletteVariant, previewTypographyPreset, setTypographyBodyFontOverride, setTypographyHeadingFontOverride, clearTypographyFontOverrides, paletteOverridesSchema, setPaletteOverrides, toggleRow, cancelPreview, dismissWarnings, dismissNotices, deriveStyleConfiguratorCapabilities, buildApplySiteStyleSelectionBody, markApplyFailed, selectionSnapshotFromApplySiteStyleSelectionResponse, styleConfiguratorHistoryEntryForPersistedSelection, markApplySaved, unwrapResponse, markApplySaving, findButtonPersonality, findPaletteVariant, findTypographyPreset, getHeaderLayout, getHeaderStyle, getFooterLayout, findFooterLook, cycleSiteChromeLookId, resolveContentTitle, foldSubroute, SUBROUTE_KINDS, Smartphone, Tablet, Monitor, Maximize2, cn, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuItem, listEntryPageContentSlots, ContentSpinner, Callout, CalloutDescription, curatedSiteStyles, ChevronLeft, cycleableSiteChromeOptions, requireEntriesForCuratedChoices, buttonPersonalities, typographyPresets, paletteVariants, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, FormRenderer, evaluateTypographyFontSlot, Separator, Surface, ColorPicker, Input } from './chunk-PMBB6MQ7.mjs';
2
+ import { resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSidebarChromeModel, resolvePreviewEditorGuidanceModel, previewWidgetOverrides, canInspectSiteStyle, mapContentSchemaToFormFields, PreviewFormProvider, usePreviewBlockCustomizeSelectionOptional, BlockEditor, canApplySiteStyle, useBlockCustomizeControls, MAX_QUICK_MANIFEST_FIELDS } from './chunk-H6TT5ZXI.mjs';
3
+ import { useEntryController, useEditorUiStoreInstance, useUISelector, resolvePreviewSidebarTab, unsafeAsEditorBlockId, Tabs, TabsList, TabsTrigger, Button, X, TabsContent, useEditorUiStore, deriveRouteMetadataPresentation, resolvePageRouteSlug, createManifestValidation, createStoreBackend, ManifestForm, previewAssistantEnabled, Collapsible, CollapsibleTrigger, ChevronRight, CollapsibleContent, ContentFieldsForm, usePreviewDesignCoordinator, useSiteChromeCustomizeOptional, resolveStyleConfiguratorInitialSnapshot, createStyleConfiguratorState, isPreviewingChange, createOptimisticActionRunner, syncStyleConfiguratorState, getCuratedSiteStyle, planSiteStylePreviewChange, openRow, previewSiteStyle, applyResolvedSelections, previewButtonPersonality, previewHeaderLayout, previewHeaderStyle, planSiteChromeLookSelection, previewFooterLook, buildSiteChromeLookModels, planSiteChromeFooterLayoutSelection, previewPaletteVariant, previewTypographyPreset, setTypographyBodyFontOverride, setTypographyHeadingFontOverride, clearTypographyFontOverrides, paletteOverridesSchema, setPaletteOverrides, toggleRow, cancelPreview, dismissWarnings, dismissNotices, deriveStyleConfiguratorCapabilities, buildApplySiteStyleSelectionBody, markApplyFailed, selectionSnapshotFromApplySiteStyleSelectionResponse, styleConfiguratorHistoryEntryForPersistedSelection, markApplySaved, unwrapResponse, markApplySaving, findButtonPersonality, findPaletteVariant, findTypographyPreset, getHeaderLayout, getHeaderStyle, getFooterLayout, findFooterLook, cycleSiteChromeLookId, resolveContentTitle, foldSubroute, SUBROUTE_KINDS, Smartphone, Tablet, Monitor, Maximize2, cn, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuItem, listEntryPageContentSlots, ContentSpinner, Callout, CalloutDescription, curatedSiteStyles, ChevronLeft, cycleableSiteChromeOptions, requireEntriesForCuratedChoices, buttonPersonalities, typographyPresets, paletteVariants, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, FormRenderer, evaluateTypographyFontSlot, Separator, Surface, ColorPicker, Input } from './chunk-CR2VX432.mjs';
4
4
  import { usePreviewAuth, getDashboardUrl } from './chunk-BOQXMCSP.mjs';
5
5
  import './chunk-R7POPVJR.mjs';
6
6
  import { useMemo, useRef, useCallback, useEffect, useState, useTransition, useLayoutEffect, useSyncExternalStore, useId } from 'react';
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { resolvePreviewChromeSurface, usePreviewPageDesignEditorState, PREVIEW_CHROME_PORTAL_CLASS_NAME, PREVIEW_CHROME_THEME_CLASS_NAME, applyPreviewChromeSurfaceToElement, setPreviewSidebarTab } from './chunk-GSPFFUVB.mjs';
3
- import { useEntryEditorController, useEditorUiStore, useMultiAutosave, usePreviewDesignHistoryOrder, useSiteChromeCustomizeOptional, selectPreviewDesignHistoryDomain, EditorChrome, previewDesignHistoryDomainForCommand, classifyHistoryShortcut, previewAssistantEnabled, unwrapResponse, cn, Dialog, Button, Palette, DialogContent, DialogHeader, DialogTitle, DialogDescription, TriangleAlert, Pencil, Sparkles, useEditorUiStoreInstance } from './chunk-PMBB6MQ7.mjs';
2
+ import { resolvePreviewChromeSurface, usePreviewPageDesignEditorState, PREVIEW_CHROME_PORTAL_CLASS_NAME, PREVIEW_CHROME_THEME_CLASS_NAME, applyPreviewChromeSurfaceToElement, setPreviewSidebarTab } from './chunk-SYYJZPKU.mjs';
3
+ import { useEntryEditorController, useEditorUiStore, useMultiAutosave, usePreviewDesignHistoryOrder, useSiteChromeCustomizeOptional, selectPreviewDesignHistoryDomain, EditorChrome, previewDesignHistoryDomainForCommand, classifyHistoryShortcut, previewAssistantEnabled, unwrapResponse, cn, Dialog, Button, Palette, DialogContent, DialogHeader, DialogTitle, DialogDescription, TriangleAlert, Pencil, Sparkles, useEditorUiStoreInstance } from './chunk-CR2VX432.mjs';
4
4
  import { usePreviewAuth } from './chunk-BOQXMCSP.mjs';
5
5
  import './chunk-R7POPVJR.mjs';
6
6
  import { useState, useMemo, useCallback, useEffect, useTransition } from 'react';
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ export { SdkPreviewModeRuntime } from './chunk-FA6LVZ7C.mjs';
3
+ import './chunk-UG7I7S7W.mjs';
4
+ import './chunk-H6TT5ZXI.mjs';
5
+ import './chunk-SYYJZPKU.mjs';
6
+ import './chunk-CR2VX432.mjs';
7
+ import './chunk-BOQXMCSP.mjs';
8
+ import './chunk-R7POPVJR.mjs';
@@ -1,5 +1,6 @@
1
1
  import type { EventOnlineDetails, EventOnlineDetailsInput } from "./bookingRecords";
2
2
  import type { SiteVerticalBookingConfig } from "./bookingVerticals";
3
+ import type { EventListingDestinationInput } from "./event-listing-destination";
3
4
  import type { EventPricingMode, StaffMemberId, UserId } from "../../core/src/index";
4
5
  export type { EventPricingMode } from "../../core/src/index";
5
6
  /**
@@ -235,6 +236,7 @@ export type CreateEventSeriesRequest = {
235
236
  visibility?: "public" | "private" | "unlisted";
236
237
  eventCategoryId?: string | null;
237
238
  status?: "draft" | "active" | "archived" | "cancelled" | "completed";
239
+ listingDestination?: EventListingDestinationInput;
238
240
  /** Arbitrary per-series settings persisted to event_series.settings_json (server-validated). */
239
241
  settingsJson?: Record<string, unknown>;
240
242
  contentEntryId?: string | null;
@@ -380,6 +382,7 @@ export type TeamMemberProfilePageSettings = {
380
382
  policy: TeamMemberProfilePagePolicyMode;
381
383
  };
382
384
  export type { EventDestinationMode, EventDestinationPolicy, EventDestinationPreset, EventDestinationPresetOverrides, } from "./event-destination-policy";
385
+ export type { EventListingDestination, EventListingDestinationInput, PublicEventDestination, } from "./event-listing-destination";
383
386
  export { DEFAULT_EVENT_DESTINATION_POLICY, eventDestinationModeValues, eventDestinationPresetValues, isEventDestinationMode, macadamiaDefaultEventDestinationPolicy, resolveEventDestinationMode, } from "./event-destination-policy";
384
387
  export type BookingSettings = {
385
388
  modules: BookingModuleToggles;
@@ -0,0 +1,59 @@
1
+ import { type Brand } from "../../core/src/index";
2
+ import type { EventDestinationMode } from "./event-destination-policy";
3
+ export declare const EVENT_LISTING_DESTINATION_SETTINGS_KEY = "listingDestination";
4
+ export declare const DEFAULT_EXTERNAL_EVENT_CTA_LABEL = "View details";
5
+ export type ExternalEventUrl = Brand<string, "ExternalEventUrl">;
6
+ export type EventListingDestination = Readonly<{
7
+ kind: "native";
8
+ }> | Readonly<{
9
+ kind: "external";
10
+ url: string;
11
+ label: string | null;
12
+ }>;
13
+ export type EventListingDestinationInput = Readonly<{
14
+ kind: "native";
15
+ }> | Readonly<{
16
+ kind: "external";
17
+ url?: string | null;
18
+ label?: string | null;
19
+ }>;
20
+ export type PublicEventDestination = Readonly<{
21
+ kind: "native";
22
+ mode: EventDestinationMode;
23
+ path: string;
24
+ }> | Readonly<{
25
+ kind: "external";
26
+ url: ExternalEventUrl;
27
+ label: string;
28
+ }>;
29
+ export type ExternalEventUrlValidationErrorCode = "missing_url" | "invalid_url";
30
+ export type ExternalEventUrlValidationError = Readonly<{
31
+ code: ExternalEventUrlValidationErrorCode;
32
+ message: string;
33
+ }>;
34
+ export type ExternalEventUrlValidationResult = Readonly<{
35
+ ok: true;
36
+ url: ExternalEventUrl;
37
+ }> | Readonly<{
38
+ ok: false;
39
+ error: ExternalEventUrlValidationError;
40
+ }>;
41
+ export type EventListingDestinationPublicationIssue = Readonly<{
42
+ field: "listingDestination.url";
43
+ code: ExternalEventUrlValidationErrorCode;
44
+ message: string;
45
+ }>;
46
+ export declare function normalizeEventListingDestinationInput(value: EventListingDestinationInput | null | undefined): EventListingDestination;
47
+ export declare function readEventListingDestinationFromSettings(settingsJson: unknown): EventListingDestination;
48
+ export declare function serializeEventListingDestination(destination: EventListingDestination): Record<string, unknown>;
49
+ export declare function buildEventListingDestinationSettingsPatch(destination: EventListingDestination): Record<typeof EVENT_LISTING_DESTINATION_SETTINGS_KEY, Record<string, unknown>>;
50
+ export declare function parseExternalEventUrl(value: unknown): ExternalEventUrlValidationResult;
51
+ export declare function getExternalEventCtaLabel(destination: Extract<EventListingDestination, {
52
+ kind: "external";
53
+ }>): string;
54
+ export declare function getEventListingDestinationPublicationIssue(destination: EventListingDestination): EventListingDestinationPublicationIssue | null;
55
+ export declare function buildPublicEventDestination(input: Readonly<{
56
+ listingDestination: EventListingDestination;
57
+ nativeMode: EventDestinationMode;
58
+ nativePath: string;
59
+ }>): PublicEventDestination | null;
@@ -25,6 +25,8 @@ export * from "./customerMembershipOutcomes";
25
25
  export * from "./bookingVerticals";
26
26
  export { DEFAULT_EVENT_DESTINATION_POLICY, eventDestinationModeValues, eventDestinationPresetValues, isEventDestinationMode, macadamiaDefaultEventDestinationPolicy, resolveEventDestinationMode, } from "./event-destination-policy";
27
27
  export type { EventDestinationMode, EventDestinationPolicy, EventDestinationPreset, EventDestinationPresetOverrides, } from "./event-destination-policy";
28
+ export { DEFAULT_EXTERNAL_EVENT_CTA_LABEL, EVENT_LISTING_DESTINATION_SETTINGS_KEY, buildEventListingDestinationSettingsPatch, buildPublicEventDestination, getEventListingDestinationPublicationIssue, getExternalEventCtaLabel, normalizeEventListingDestinationInput, parseExternalEventUrl, readEventListingDestinationFromSettings, serializeEventListingDestination, } from "./event-listing-destination";
29
+ export type { EventListingDestination, EventListingDestinationInput, EventListingDestinationPublicationIssue, ExternalEventUrl, ExternalEventUrlValidationError, ExternalEventUrlValidationErrorCode, ExternalEventUrlValidationResult, PublicEventDestination, } from "./event-listing-destination";
28
30
  export { APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX, APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX, applyAppointmentSetupRequestSchema, applyAppointmentSetupRequest, appointmentSetupAvailabilityDraftSchema, appointmentSetupBookingNoticeSchema, appointmentSetupPaymentDraftSchema, appointmentSetupPractitionerDraftSchema, appointmentSetupRefSchema, appointmentSetupServiceAssignmentDraftSchema, appointmentSetupServiceDraftSchema, appointmentSetupVenueChoiceSchema, appointmentSetupWeeklyWindowDraftSchema, getAppointmentSetupRequest, } from "./appointmentSetup";
29
31
  export type { ApplyAppointmentSetupRequest, ApplyAppointmentSetupResponse, AppointmentPractitionerMode, AppointmentSetupAvailabilityDraft, AppointmentSetupAvailabilityWindowInvalidReason, AppointmentSetupBookingNotice, AppointmentSetupDraftMapping, AppointmentSetupPaymentDraft, AppointmentSetupPlanIssue, AppointmentSetupPractitionerDraft, AppointmentSetupReadiness, AppointmentSetupRef, AppointmentSetupResponse, AppointmentSetupSeedCandidate, AppointmentSetupSeedInvalidMetadata, AppointmentSetupSeedSelection, AppointmentSetupServiceAssignmentDraft, AppointmentSetupServiceDraft, AppointmentSetupServiceResourceLink, AppointmentSetupTargetStep, AppointmentSetupVenueChoice, AppointmentSetupWeeklyWindowDraft, } from "./appointmentSetup";
30
32
  export type { AppointmentHistoryStatus, BookingSessionCreateAppointmentRequest, BookingSessionCreateAppointmentResponse, BookingSessionEligibleAppointmentPackage, BookingSessionListEligibleAppointmentPackagesResponse, } from "./bookingOperations";
@@ -76,12 +78,14 @@ export { toRoutableLinkPayload } from "./navigation/routableLink";
76
78
  export { linkPayloadKindToNavigationUrlType } from "./navigation/linkUrlType";
77
79
  export { DASHBOARD_SITE_NAV_DESCRIPTORS, buildDashboardSiteNavPlan, dashboardDemoUiModeValues, isDemoDashboardUiRestricted, isDemoSiteNavSurfaceVisible, } from "./navigation/dashboardSiteNav";
78
80
  export { DASHBOARD_SETTINGS_NAV_GROUPS, buildDashboardSettingsNavPlan, isDemoSettingsNavSurfaceVisible, } from "./navigation/dashboardSettingsNav";
81
+ export { SETTINGS_ACTION_POLICIES, SETTINGS_SURFACE_POLICIES, getRolePolicyMinimumRole, getSettingsActionPolicy, getSettingsSurfaceNavPolicy, getSettingsSurfacePagePolicy, getSettingsSurfacePolicy, isSettingsRolePolicyAllowed, } from "./settings/permissions";
79
82
  export { planEntryDraftUpdatedWorkflowTriggers } from "./workflows/automaticWorkflowTriggers";
80
83
  export type { AutomaticWorkflowCandidate, EntryDraftUpdatedWorkflowTriggerSource, PlanEntryDraftUpdatedWorkflowTriggersInput, WorkflowTriggerSource, } from "./workflows/automaticWorkflowTriggers";
81
84
  export type { RoutableLinkPayload } from "./navigation/routableLink";
82
85
  export type { LinkPayloadNavigationUrlType } from "./navigation/linkUrlType";
83
86
  export type { DashboardDemoUiMode, DashboardSiteNavDescriptor, DashboardSiteNavGroupId, DashboardSiteNavGroupPlan, DashboardSiteNavItemPlan, DashboardSiteNavLinkPlan, DashboardSiteNavPlanContext, DashboardSiteNavSurfaceId, SiteNavFeatureFlag, } from "./navigation/dashboardSiteNav";
84
87
  export type { DashboardSettingsDangerItemId, DashboardSettingsDangerItemPlan, DashboardSettingsNavDescriptor, DashboardSettingsNavGroupDescriptor, DashboardSettingsNavGroupPlan, DashboardSettingsNavItemPlan, DashboardSettingsNavPlan, DashboardSettingsNavPlanContext, DashboardSettingsNavSurfaceId, SettingsNavFeatureFlag, } from "./navigation/dashboardSettingsNav";
88
+ export type { SettingsActionId, SettingsPermissionPolicy, SettingsRolePermissionPolicy, SettingsSurfacePolicy, } from "./settings/permissions";
85
89
  export { isInternalLink, isPageLink, isEntryLink, resolveNavigationLinkInput, } from "./navigation/linkResolver";
86
90
  export type { NavigationUrlType, ResolvedNavigationLink, LinkResolutionOptions, } from "./navigation/linkResolver";
87
91
  export { matchNavigationItems } from "./navigation/matcher";
@@ -9,7 +9,6 @@ export type DashboardSettingsNavDescriptor = Readonly<{
9
9
  label: string;
10
10
  keywords: readonly string[];
11
11
  stage: NavStage;
12
- minRole?: SiteRole;
13
12
  featureFlag?: SettingsNavFeatureFlag;
14
13
  }>;
15
14
  export type DashboardSettingsNavGroupDescriptor = Readonly<{
@@ -9,12 +9,14 @@ export { linkPayloadKindToNavigationUrlType } from './navigation/linkUrlType';
9
9
  export type { LinkPayloadNavigationUrlType } from './navigation/linkUrlType';
10
10
  export { DASHBOARD_SITE_NAV_DESCRIPTORS, buildDashboardSiteNavPlan, dashboardDemoUiModeValues, isDemoDashboardUiRestricted, isDemoSiteNavSurfaceVisible, } from './navigation/dashboardSiteNav';
11
11
  export { DASHBOARD_SETTINGS_NAV_GROUPS, buildDashboardSettingsNavPlan, isDemoSettingsNavSurfaceVisible, } from './navigation/dashboardSettingsNav';
12
+ export { SETTINGS_ACTION_POLICIES, SETTINGS_SURFACE_POLICIES, getRolePolicyMinimumRole, getSettingsActionPolicy, getSettingsSurfaceNavPolicy, getSettingsSurfacePagePolicy, getSettingsSurfacePolicy, isSettingsRolePolicyAllowed, } from './settings/permissions';
12
13
  export { buildDashboardTeamMemberNavPlan, isTeamMemberAccessiblePath, } from './navigation/dashboardTeamMemberNav';
13
14
  export { buildDashboardBookingsNavPlan, resolveDashboardBookingsNavPolicy, } from './navigation/dashboardBookingsNav';
14
15
  export { MAIN_NAVIGATION_MENU_IDENTIFIER, actionableNavigationMenuMatchPlan, isMainNavigationMenuIdentifier, navigationMenuIdentity, normalizeNavigationMenuIdentifier, parseNavigationMenuIdentifier, planNavigationMenuMatch, unsafeAsNavigationMenuIdentifier, unsafeAsNavigationMenuIdentity, } from './navigation/identity';
15
16
  export { isDemoMoneyNavSurfaceVisible, isDemoShopNavSurfaceVisible, } from './navigation/dashboardDemoNav';
16
17
  export type { DashboardDemoUiMode, DashboardSiteNavDescriptor, DashboardSiteNavGroupId, DashboardSiteNavGroupPlan, DashboardSiteNavItemPlan, DashboardSiteNavLinkPlan, DashboardSiteNavPlanContext, DashboardSiteNavSurfaceId, SiteNavFeatureFlag, } from './navigation/dashboardSiteNav';
17
18
  export type { DashboardSettingsDangerItemId, DashboardSettingsDangerItemPlan, DashboardSettingsNavDescriptor, DashboardSettingsNavGroupDescriptor, DashboardSettingsNavGroupPlan, DashboardSettingsNavItemPlan, DashboardSettingsNavPlan, DashboardSettingsNavPlanContext, DashboardSettingsNavSurfaceId, SettingsNavFeatureFlag, } from './navigation/dashboardSettingsNav';
19
+ export type { SettingsActionId, SettingsPermissionPolicy, SettingsRolePermissionPolicy, SettingsSurfacePolicy, } from './settings/permissions';
18
20
  export type { DashboardTeamMemberNavContext, DashboardTeamMemberNavDestination, DashboardTeamMemberNavItemId, DashboardTeamMemberNavItemPlan, } from './navigation/dashboardTeamMemberNav';
19
21
  export type { DashboardAppointmentResourceLabel, DashboardBookingModules, DashboardBookingsNavContext, DashboardBookingsNavDestination, DashboardBookingsNavGroupPlan, DashboardBookingsNavItemPlan, DashboardBookingsNavPolicy, DashboardBookingsTeamMemberContext, FullAppointmentsNavPolicy, StaffScopedAppointmentsNavPolicy, } from './navigation/dashboardBookingsNav';
20
22
  export type { DashboardMoneyNavSurfaceId, DashboardShopNavSurfaceId, } from './navigation/dashboardDemoNav';
@@ -1,5 +1,6 @@
1
1
  import type { APIEndpoint } from "./apiEndpointTypes";
2
2
  import type { PublicEventPricing } from "../../core/src/index";
3
+ import type { PublicEventDestination } from "./event-listing-destination";
3
4
  import type { BookingPaymentTermsConfig, BookingPricing, DirectCheckoutCollectionOptionKind, EventAttendanceMode, EventDeliveryMode, EventPricingMode, PublicEventEligibilityTicketTypeRecord, PublicEventTicketTypeRecord } from "./bookingConfig";
4
5
  import type { AutoAppliedDiscountPreview } from "./bookingRecords";
5
6
  import type { PublicCourseDetails } from "./courses";
@@ -123,6 +124,7 @@ export type PublicExperienceAPIEndpoints = {
123
124
  kind?: "event" | "course_session";
124
125
  eventPreset?: EventPreset;
125
126
  eventDestinationMode?: import("./event-destination-policy").EventDestinationMode;
127
+ destination: PublicEventDestination;
126
128
  scheduleScope?: Exclude<PublicEventScheduleScope, "any">;
127
129
  id: string;
128
130
  occurrenceId: string;
@@ -154,7 +156,7 @@ export type PublicExperienceAPIEndpoints = {
154
156
  } | null;
155
157
  };
156
158
  slug: string;
157
- path: string;
159
+ path: string | null;
158
160
  requiresRegistration: boolean;
159
161
  deliveryMode: EventDeliveryMode;
160
162
  attendanceModes: Array<{
@@ -0,0 +1,273 @@
1
+ import type { DashboardSettingsNavSurfaceId } from "../navigation/dashboardSettingsNav";
2
+ import { type SiteRole } from "../siteMembers";
3
+ export type SettingsPermissionPolicy = Readonly<{
4
+ kind: "roleAtLeast";
5
+ minimumRole: SiteRole;
6
+ }> | Readonly<{
7
+ kind: "siteRecordOwner";
8
+ }>;
9
+ export type SettingsRolePermissionPolicy = Extract<SettingsPermissionPolicy, {
10
+ kind: "roleAtLeast";
11
+ }>;
12
+ export type SettingsActionId = "privacy.update" | "emails.read" | "emails.update" | "apiKeys.read" | "apiKeys.readAccessLogs" | "apiKeys.manageContentKeys" | "apiKeys.managePreviewKey" | "apiKeys.manageManagementKeys" | "backup.export" | "backup.import" | "fonts.upload";
13
+ export type SettingsSurfacePolicy = Readonly<{
14
+ surfaceId: DashboardSettingsNavSurfaceId;
15
+ navVisibilityPolicy: SettingsRolePermissionPolicy;
16
+ pageAccessPolicy: SettingsPermissionPolicy;
17
+ actionIds: readonly SettingsActionId[];
18
+ }>;
19
+ export declare const SETTINGS_SURFACE_POLICIES: {
20
+ readonly "settings.features": {
21
+ readonly surfaceId: "settings.features";
22
+ readonly navVisibilityPolicy: {
23
+ readonly kind: "roleAtLeast";
24
+ readonly minimumRole: "administrator";
25
+ };
26
+ readonly pageAccessPolicy: {
27
+ readonly kind: "roleAtLeast";
28
+ readonly minimumRole: "administrator";
29
+ };
30
+ readonly actionIds: readonly [];
31
+ };
32
+ readonly "settings.general": {
33
+ readonly surfaceId: "settings.general";
34
+ readonly navVisibilityPolicy: {
35
+ readonly kind: "roleAtLeast";
36
+ readonly minimumRole: "editor";
37
+ };
38
+ readonly pageAccessPolicy: {
39
+ readonly kind: "roleAtLeast";
40
+ readonly minimumRole: "editor";
41
+ };
42
+ readonly actionIds: readonly [];
43
+ };
44
+ readonly "settings.privacy": {
45
+ readonly surfaceId: "settings.privacy";
46
+ readonly navVisibilityPolicy: {
47
+ readonly kind: "roleAtLeast";
48
+ readonly minimumRole: "administrator";
49
+ };
50
+ readonly pageAccessPolicy: {
51
+ readonly kind: "roleAtLeast";
52
+ readonly minimumRole: "administrator";
53
+ };
54
+ readonly actionIds: readonly ["privacy.update"];
55
+ };
56
+ readonly "settings.domains": {
57
+ readonly surfaceId: "settings.domains";
58
+ readonly navVisibilityPolicy: {
59
+ readonly kind: "roleAtLeast";
60
+ readonly minimumRole: "owner";
61
+ };
62
+ readonly pageAccessPolicy: {
63
+ readonly kind: "roleAtLeast";
64
+ readonly minimumRole: "owner";
65
+ };
66
+ readonly actionIds: readonly [];
67
+ };
68
+ readonly "settings.fonts": {
69
+ readonly surfaceId: "settings.fonts";
70
+ readonly navVisibilityPolicy: {
71
+ readonly kind: "roleAtLeast";
72
+ readonly minimumRole: "editor";
73
+ };
74
+ readonly pageAccessPolicy: {
75
+ readonly kind: "roleAtLeast";
76
+ readonly minimumRole: "editor";
77
+ };
78
+ readonly actionIds: readonly ["fonts.upload"];
79
+ };
80
+ readonly "settings.bookings": {
81
+ readonly surfaceId: "settings.bookings";
82
+ readonly navVisibilityPolicy: {
83
+ readonly kind: "roleAtLeast";
84
+ readonly minimumRole: "administrator";
85
+ };
86
+ readonly pageAccessPolicy: {
87
+ readonly kind: "roleAtLeast";
88
+ readonly minimumRole: "administrator";
89
+ };
90
+ readonly actionIds: readonly [];
91
+ };
92
+ readonly "settings.redirects": {
93
+ readonly surfaceId: "settings.redirects";
94
+ readonly navVisibilityPolicy: {
95
+ readonly kind: "roleAtLeast";
96
+ readonly minimumRole: "editor";
97
+ };
98
+ readonly pageAccessPolicy: {
99
+ readonly kind: "roleAtLeast";
100
+ readonly minimumRole: "editor";
101
+ };
102
+ readonly actionIds: readonly [];
103
+ };
104
+ readonly "settings.emails": {
105
+ readonly surfaceId: "settings.emails";
106
+ readonly navVisibilityPolicy: {
107
+ readonly kind: "roleAtLeast";
108
+ readonly minimumRole: "administrator";
109
+ };
110
+ readonly pageAccessPolicy: {
111
+ readonly kind: "roleAtLeast";
112
+ readonly minimumRole: "administrator";
113
+ };
114
+ readonly actionIds: readonly ["emails.read", "emails.update"];
115
+ };
116
+ readonly "settings.ai.siteProfile": {
117
+ readonly surfaceId: "settings.ai.siteProfile";
118
+ readonly navVisibilityPolicy: {
119
+ readonly kind: "roleAtLeast";
120
+ readonly minimumRole: "editor";
121
+ };
122
+ readonly pageAccessPolicy: {
123
+ readonly kind: "roleAtLeast";
124
+ readonly minimumRole: "editor";
125
+ };
126
+ readonly actionIds: readonly [];
127
+ };
128
+ readonly "settings.ai.brandGuidelines": {
129
+ readonly surfaceId: "settings.ai.brandGuidelines";
130
+ readonly navVisibilityPolicy: {
131
+ readonly kind: "roleAtLeast";
132
+ readonly minimumRole: "editor";
133
+ };
134
+ readonly pageAccessPolicy: {
135
+ readonly kind: "roleAtLeast";
136
+ readonly minimumRole: "editor";
137
+ };
138
+ readonly actionIds: readonly [];
139
+ };
140
+ readonly "settings.ai.iconStyleGuide": {
141
+ readonly surfaceId: "settings.ai.iconStyleGuide";
142
+ readonly navVisibilityPolicy: {
143
+ readonly kind: "roleAtLeast";
144
+ readonly minimumRole: "editor";
145
+ };
146
+ readonly pageAccessPolicy: {
147
+ readonly kind: "roleAtLeast";
148
+ readonly minimumRole: "editor";
149
+ };
150
+ readonly actionIds: readonly [];
151
+ };
152
+ readonly "settings.team": {
153
+ readonly surfaceId: "settings.team";
154
+ readonly navVisibilityPolicy: {
155
+ readonly kind: "roleAtLeast";
156
+ readonly minimumRole: "editor";
157
+ };
158
+ readonly pageAccessPolicy: {
159
+ readonly kind: "roleAtLeast";
160
+ readonly minimumRole: "editor";
161
+ };
162
+ readonly actionIds: readonly [];
163
+ };
164
+ readonly "settings.billing": {
165
+ readonly surfaceId: "settings.billing";
166
+ readonly navVisibilityPolicy: {
167
+ readonly kind: "roleAtLeast";
168
+ readonly minimumRole: "editor";
169
+ };
170
+ readonly pageAccessPolicy: {
171
+ readonly kind: "roleAtLeast";
172
+ readonly minimumRole: "editor";
173
+ };
174
+ readonly actionIds: readonly [];
175
+ };
176
+ readonly "settings.developer": {
177
+ readonly surfaceId: "settings.developer";
178
+ readonly navVisibilityPolicy: {
179
+ readonly kind: "roleAtLeast";
180
+ readonly minimumRole: "administrator";
181
+ };
182
+ readonly pageAccessPolicy: {
183
+ readonly kind: "roleAtLeast";
184
+ readonly minimumRole: "administrator";
185
+ };
186
+ readonly actionIds: readonly [];
187
+ };
188
+ readonly "settings.logs": {
189
+ readonly surfaceId: "settings.logs";
190
+ readonly navVisibilityPolicy: {
191
+ readonly kind: "roleAtLeast";
192
+ readonly minimumRole: "administrator";
193
+ };
194
+ readonly pageAccessPolicy: {
195
+ readonly kind: "roleAtLeast";
196
+ readonly minimumRole: "administrator";
197
+ };
198
+ readonly actionIds: readonly [];
199
+ };
200
+ readonly "settings.apiKeys": {
201
+ readonly surfaceId: "settings.apiKeys";
202
+ readonly navVisibilityPolicy: {
203
+ readonly kind: "roleAtLeast";
204
+ readonly minimumRole: "administrator";
205
+ };
206
+ readonly pageAccessPolicy: {
207
+ readonly kind: "roleAtLeast";
208
+ readonly minimumRole: "administrator";
209
+ };
210
+ readonly actionIds: readonly ["apiKeys.read", "apiKeys.readAccessLogs", "apiKeys.manageContentKeys", "apiKeys.managePreviewKey", "apiKeys.manageManagementKeys"];
211
+ };
212
+ readonly "settings.backup": {
213
+ readonly surfaceId: "settings.backup";
214
+ readonly navVisibilityPolicy: {
215
+ readonly kind: "roleAtLeast";
216
+ readonly minimumRole: "owner";
217
+ };
218
+ readonly pageAccessPolicy: {
219
+ readonly kind: "siteRecordOwner";
220
+ };
221
+ readonly actionIds: readonly ["backup.export", "backup.import"];
222
+ };
223
+ };
224
+ export declare const SETTINGS_ACTION_POLICIES: {
225
+ readonly "privacy.update": {
226
+ readonly kind: "roleAtLeast";
227
+ readonly minimumRole: "administrator";
228
+ };
229
+ readonly "emails.read": {
230
+ readonly kind: "roleAtLeast";
231
+ readonly minimumRole: "administrator";
232
+ };
233
+ readonly "emails.update": {
234
+ readonly kind: "roleAtLeast";
235
+ readonly minimumRole: "administrator";
236
+ };
237
+ readonly "apiKeys.read": {
238
+ readonly kind: "roleAtLeast";
239
+ readonly minimumRole: "editor";
240
+ };
241
+ readonly "apiKeys.readAccessLogs": {
242
+ readonly kind: "roleAtLeast";
243
+ readonly minimumRole: "editor";
244
+ };
245
+ readonly "apiKeys.manageContentKeys": {
246
+ readonly kind: "roleAtLeast";
247
+ readonly minimumRole: "administrator";
248
+ };
249
+ readonly "apiKeys.managePreviewKey": {
250
+ readonly kind: "roleAtLeast";
251
+ readonly minimumRole: "administrator";
252
+ };
253
+ readonly "apiKeys.manageManagementKeys": {
254
+ readonly kind: "roleAtLeast";
255
+ readonly minimumRole: "administrator";
256
+ };
257
+ readonly "backup.export": {
258
+ readonly kind: "siteRecordOwner";
259
+ };
260
+ readonly "backup.import": {
261
+ readonly kind: "siteRecordOwner";
262
+ };
263
+ readonly "fonts.upload": {
264
+ readonly kind: "roleAtLeast";
265
+ readonly minimumRole: "editor";
266
+ };
267
+ };
268
+ export declare function getSettingsSurfacePolicy(surfaceId: DashboardSettingsNavSurfaceId): SettingsSurfacePolicy;
269
+ export declare function getSettingsSurfaceNavPolicy(surfaceId: DashboardSettingsNavSurfaceId): SettingsRolePermissionPolicy;
270
+ export declare function getSettingsSurfacePagePolicy(surfaceId: DashboardSettingsNavSurfaceId): SettingsPermissionPolicy;
271
+ export declare function getSettingsActionPolicy(actionId: SettingsActionId): SettingsPermissionPolicy;
272
+ export declare function getRolePolicyMinimumRole(policy: SettingsPermissionPolicy): SiteRole | null;
273
+ export declare function isSettingsRolePolicyAllowed(role: SiteRole | null, policy: SettingsRolePermissionPolicy): boolean;
@@ -11,6 +11,7 @@ export type * from "./aiEndpoints";
11
11
  export type * from "./apiEndpointTypes";
12
12
  export type * from "./bookingAdjustments";
13
13
  export type * from "./bookingConfig";
14
+ export type * from "./event-listing-destination";
14
15
  export type * from "./bookingVerticals";
15
16
  export type * from "./bookingManagementEndpoints";
16
17
  export type * from "./bookingOperations";
@@ -14,6 +14,18 @@ export declare const eventDestinationModeSchema: z.ZodEnum<{
14
14
  "cms-managed": "cms-managed";
15
15
  "system-managed": "system-managed";
16
16
  }>;
17
+ export declare const publicEventDestinationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
18
+ kind: z.ZodLiteral<"native">;
19
+ mode: z.ZodEnum<{
20
+ "cms-managed": "cms-managed";
21
+ "system-managed": "system-managed";
22
+ }>;
23
+ path: z.ZodString;
24
+ }, z.core.$strip>, z.ZodObject<{
25
+ kind: z.ZodLiteral<"external">;
26
+ url: z.ZodString;
27
+ label: z.ZodString;
28
+ }, z.core.$strip>], "kind">;
17
29
  /**
18
30
  * Zod schema for venue data
19
31
  */
@@ -40,6 +52,7 @@ export declare const eventCategorySchema: z.ZodObject<{
40
52
  export declare const pricingTypeSchema: z.ZodEnum<{
41
53
  free: "free";
42
54
  paid: "paid";
55
+ external: "external";
43
56
  }>;
44
57
  /**
45
58
  * Access restriction type for public events
@@ -91,6 +104,9 @@ export declare const publicEventPriceDisplaySchema: z.ZodDiscriminatedUnion<[z.Z
91
104
  }, z.core.$strip>, z.ZodObject<{
92
105
  kind: z.ZodLiteral<"unavailable">;
93
106
  currency: z.ZodString;
107
+ }, z.core.$strip>, z.ZodObject<{
108
+ kind: z.ZodLiteral<"external">;
109
+ label: z.ZodString;
94
110
  }, z.core.$strip>, z.ZodObject<{
95
111
  kind: z.ZodLiteral<"course">;
96
112
  display: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -309,6 +325,12 @@ export declare const publicEventPricingSchema: z.ZodDiscriminatedUnion<[z.ZodObj
309
325
  currency: z.ZodString;
310
326
  }, z.core.$strip>], "kind">;
311
327
  }, z.core.$strip>;
328
+ }, z.core.$strip>, z.ZodObject<{
329
+ kind: z.ZodLiteral<"external">;
330
+ display: z.ZodObject<{
331
+ kind: z.ZodLiteral<"external">;
332
+ label: z.ZodString;
333
+ }, z.core.$strip>;
312
334
  }, z.core.$strip>], "kind">;
313
335
  export declare const publicTeamMemberSummarySchema: z.ZodObject<{
314
336
  id: z.ZodString;
@@ -615,7 +637,19 @@ export declare const publicEventSchema: z.ZodObject<{
615
637
  }, z.core.$strip>], "type">>>;
616
638
  }, z.core.$strip>>;
617
639
  slug: z.ZodString;
618
- path: z.ZodString;
640
+ path: z.ZodNullable<z.ZodString>;
641
+ destination: z.ZodDiscriminatedUnion<[z.ZodObject<{
642
+ kind: z.ZodLiteral<"native">;
643
+ mode: z.ZodEnum<{
644
+ "cms-managed": "cms-managed";
645
+ "system-managed": "system-managed";
646
+ }>;
647
+ path: z.ZodString;
648
+ }, z.core.$strip>, z.ZodObject<{
649
+ kind: z.ZodLiteral<"external">;
650
+ url: z.ZodString;
651
+ label: z.ZodString;
652
+ }, z.core.$strip>], "kind">;
619
653
  requiresRegistration: z.ZodBoolean;
620
654
  deliveryMode: z.ZodEnum<{
621
655
  in_person: "in_person";
@@ -774,6 +808,12 @@ export declare const publicEventSchema: z.ZodObject<{
774
808
  currency: z.ZodString;
775
809
  }, z.core.$strip>], "kind">;
776
810
  }, z.core.$strip>;
811
+ }, z.core.$strip>, z.ZodObject<{
812
+ kind: z.ZodLiteral<"external">;
813
+ display: z.ZodObject<{
814
+ kind: z.ZodLiteral<"external">;
815
+ label: z.ZodString;
816
+ }, z.core.$strip>;
777
817
  }, z.core.$strip>], "kind">;
778
818
  paymentTerms: z.ZodObject<{
779
819
  allowedOptions: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
@@ -1241,7 +1281,19 @@ export declare const publicEventsArraySchema: z.ZodArray<z.ZodObject<{
1241
1281
  }, z.core.$strip>], "type">>>;
1242
1282
  }, z.core.$strip>>;
1243
1283
  slug: z.ZodString;
1244
- path: z.ZodString;
1284
+ path: z.ZodNullable<z.ZodString>;
1285
+ destination: z.ZodDiscriminatedUnion<[z.ZodObject<{
1286
+ kind: z.ZodLiteral<"native">;
1287
+ mode: z.ZodEnum<{
1288
+ "cms-managed": "cms-managed";
1289
+ "system-managed": "system-managed";
1290
+ }>;
1291
+ path: z.ZodString;
1292
+ }, z.core.$strip>, z.ZodObject<{
1293
+ kind: z.ZodLiteral<"external">;
1294
+ url: z.ZodString;
1295
+ label: z.ZodString;
1296
+ }, z.core.$strip>], "kind">;
1245
1297
  requiresRegistration: z.ZodBoolean;
1246
1298
  deliveryMode: z.ZodEnum<{
1247
1299
  in_person: "in_person";
@@ -1400,6 +1452,12 @@ export declare const publicEventsArraySchema: z.ZodArray<z.ZodObject<{
1400
1452
  currency: z.ZodString;
1401
1453
  }, z.core.$strip>], "kind">;
1402
1454
  }, z.core.$strip>;
1455
+ }, z.core.$strip>, z.ZodObject<{
1456
+ kind: z.ZodLiteral<"external">;
1457
+ display: z.ZodObject<{
1458
+ kind: z.ZodLiteral<"external">;
1459
+ label: z.ZodString;
1460
+ }, z.core.$strip>;
1403
1461
  }, z.core.$strip>], "kind">;
1404
1462
  paymentTerms: z.ZodObject<{
1405
1463
  allowedOptions: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
@@ -39,6 +39,15 @@ export type PricingType = PublicEventPricingType;
39
39
  * Access restriction type for events
40
40
  */
41
41
  export type AccessRestriction = "none" | "category";
42
+ export type PublicEventDestination = Readonly<{
43
+ kind: "native";
44
+ mode: "cms-managed" | "system-managed";
45
+ path: string;
46
+ }> | Readonly<{
47
+ kind: "external";
48
+ url: string;
49
+ label: string;
50
+ }>;
42
51
  export type PublicEventTicketTypeAvailability = {
43
52
  kind: "available";
44
53
  remainingCapacity: number | null;
@@ -84,6 +93,8 @@ export type PublicEvent = {
84
93
  eventPreset?: "event" | EventSurfacePreset;
85
94
  /** Resolved destination mode for the event series. */
86
95
  eventDestinationMode?: "cms-managed" | "system-managed";
96
+ /** Public navigation destination for cards/details CTAs. */
97
+ destination: PublicEventDestination;
87
98
  /** Whether this occurrence belongs to a recurring or one-off series. */
88
99
  scheduleScope?: Exclude<EventScheduleScope, "any">;
89
100
  id: string;
@@ -102,7 +113,7 @@ export type PublicEvent = {
102
113
  };
103
114
  slug: string;
104
115
  /** Canonical URL path (includes any required date segments for occurrences) */
105
- path: string;
116
+ path: string | null;
106
117
  /** Whether this event requires registration (drop-in events return false). */
107
118
  requiresRegistration: boolean;
108
119
  /** How people can attend this event. */