@riverbankcms/sdk 0.93.0 → 0.95.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 (99) hide show
  1. package/README.md +3 -0
  2. package/dist/{PreviewEditorSidebar-D3PAF7NW.mjs → PreviewEditorSidebar-6FQYKOSB.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-G5JVJEIJ.mjs → PreviewEditorUI-NPO2XMFB.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-PBEFH5AL.mjs +8 -0
  5. package/dist/_dts/api/src/bookingOperations.d.ts +7 -0
  6. package/dist/_dts/api/src/bookingRecords.d.ts +3 -0
  7. package/dist/_dts/api/src/cache-tags.d.ts +4 -0
  8. package/dist/_dts/api/src/contentRuntime.d.ts +14 -0
  9. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  10. package/dist/_dts/api/src/event-presentation.d.ts +15 -0
  11. package/dist/_dts/api/src/index.d.ts +1 -1
  12. package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
  13. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +17 -4
  14. package/dist/_dts/api/src/shared-contracts.d.ts +19 -9
  15. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
  16. package/dist/_dts/blocks/src/portal/types.d.ts +7 -0
  17. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  18. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +21 -6
  19. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +5 -3
  20. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +5 -1
  21. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +2 -2
  22. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +9 -6
  23. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/ticketSelectionLines.d.ts +36 -0
  24. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +7 -1
  25. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +2 -2
  26. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -3
  27. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +19 -4
  28. package/dist/_dts/content-model/src/entry-slots/types.d.ts +6 -0
  29. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +163 -2
  30. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +7 -0
  31. package/dist/_dts/media-core/src/mediaUsageProjection.d.ts +29 -1
  32. package/dist/_dts/sdk/src/client/types.d.ts +7 -2
  33. package/dist/_dts/sdk/src/next/middleware.d.ts +1 -0
  34. package/dist/_dts/sdk/src/next/redirect-destination.d.ts +3 -0
  35. package/dist/_dts/sdk/src/next/route-outcome-proxy.d.ts +22 -0
  36. package/dist/_dts/sdk/src/public-api/contracts.d.ts +20 -1
  37. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  38. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +9 -1
  39. package/dist/_dts/sdk/src/version.d.ts +1 -1
  40. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  41. package/dist/{chunk-XIK2HYI3.mjs → chunk-4A6NWO3X.mjs} +7 -7
  42. package/dist/{chunk-NT76QGIJ.mjs → chunk-7ED5UNHL.mjs} +14 -0
  43. package/dist/{chunk-AQ6RT6LZ.mjs → chunk-K2SJTZMX.mjs} +2 -2
  44. package/dist/{chunk-A63UXN3P.mjs → chunk-PJPFTVZG.mjs} +2 -2
  45. package/dist/{chunk-AJZGT6YG.mjs → chunk-VTPPVAOL.mjs} +1 -1
  46. package/dist/{chunk-PCNCETBI.mjs → chunk-VZBSD4AJ.mjs} +449 -183
  47. package/dist/cli/index.mjs +176 -73
  48. package/dist/client/{accordion-RNQIPG55.mjs → accordion-LGO4IO5U.mjs} +1 -1
  49. package/dist/client/{bookingForm-HYEEVRLP.mjs → bookingForm-MWLS4LGU.mjs} +3 -3
  50. package/dist/client/bookings.mjs +211 -105
  51. package/dist/client/{carousel-W7DQ3YPU.mjs → carousel-6AHNP5HA.mjs} +1 -1
  52. package/dist/client/{cart-PXJ3SXXO.mjs → cart-CIXGYAZB.mjs} +4 -4
  53. package/dist/client/{checkout-X3JYSOXI.mjs → checkout-OTX6O3DN.mjs} +4 -4
  54. package/dist/client/{chunk-Q47XGAGS.mjs → chunk-AVBQSUIS.mjs} +1 -1
  55. package/dist/client/{chunk-WERRJXNJ.mjs → chunk-HOP7MKAZ.mjs} +1 -1
  56. package/dist/client/{chunk-IXDSXF2D.mjs → chunk-INRIT6DP.mjs} +353 -187
  57. package/dist/client/{chunk-DUOHLWLF.mjs → chunk-MYCXAKWP.mjs} +2 -2
  58. package/dist/client/{chunk-J6TMMMXW.mjs → chunk-R3NQTBWE.mjs} +1 -1
  59. package/dist/client/{chunk-YYVGSYBO.mjs → chunk-TREIML53.mjs} +3 -3
  60. package/dist/client/{chunk-6SYGVVWA.mjs → chunk-V67AT7ZW.mjs} +3 -0
  61. package/dist/client/{chunk-PICR3NTQ.mjs → chunk-Y2PMKCXO.mjs} +1 -1
  62. package/dist/client/client.mjs +503 -183
  63. package/dist/client/{courseRegistration-QZ67PVHO.mjs → courseRegistration-2LU6C3JL.mjs} +3 -3
  64. package/dist/client/{eventCalendar-V3BDHQNT.mjs → eventCalendar-OKUSISBZ.mjs} +6 -6
  65. package/dist/client/{eventCombined-XYFRN2RG.mjs → eventCombined-CMF6CD4S.mjs} +6 -6
  66. package/dist/client/{eventDetails-TFE5TWKV.mjs → eventDetails-XYWH7WXI.mjs} +6 -6
  67. package/dist/client/{eventListing-IQ6AGWZ6.mjs → eventListing-EK5DJTAH.mjs} +6 -6
  68. package/dist/client/{eventRegistration-WGJVFKQJ.mjs → eventRegistration-XDOSICV6.mjs} +6 -6
  69. package/dist/client/{form-6UZY6RUA.mjs → form-J6GOHKYG.mjs} +1 -1
  70. package/dist/client/{headerSection-RSFXY6V3.mjs → headerSection-C5SYJTRW.mjs} +2 -2
  71. package/dist/client/hooks.mjs +14 -0
  72. package/dist/client/{locationMap-24FH67I4.mjs → locationMap-QSQIFVVT.mjs} +2 -2
  73. package/dist/client/{newsletterForm-QVL3MLTN.mjs → newsletterForm-47VXJRWK.mjs} +1 -1
  74. package/dist/client/{productDetail-ZDYN3G4T.mjs → productDetail-5U6ISCC2.mjs} +4 -4
  75. package/dist/client/{productList-4BMJLQHZ.mjs → productList-XDZUMR3P.mjs} +4 -4
  76. package/dist/client/rendering/client.mjs +362 -182
  77. package/dist/client/rendering/islands.mjs +18 -18
  78. package/dist/client/rendering.mjs +489 -182
  79. package/dist/client/{shop-U5C634FF.mjs → shop-ZSZKIY3R.mjs} +4 -4
  80. package/dist/preview-next/before-render.mjs +14 -0
  81. package/dist/preview-next/client/runtime.mjs +5 -5
  82. package/dist/preview-next/middleware.mjs +14 -0
  83. package/dist/{sdk-runtime-VGV46WVB.mjs → sdk-runtime-PHNM7MRD.mjs} +6 -6
  84. package/dist/server/components.mjs +111 -0
  85. package/dist/server/config-validation.mjs +14 -0
  86. package/dist/server/config.mjs +14 -0
  87. package/dist/server/data.mjs +14 -0
  88. package/dist/server/index.mjs +44 -1
  89. package/dist/server/next/middleware.mjs +120 -0
  90. package/dist/server/next.mjs +225 -2
  91. package/dist/server/prebuild.mjs +1 -1
  92. package/dist/server/rendering/server.mjs +111 -0
  93. package/dist/server/rendering.mjs +127 -0
  94. package/dist/server/routing.mjs +14 -0
  95. package/dist/server/server.mjs +60 -1
  96. package/dist/server/theme-bridge.mjs +97 -0
  97. package/dist/styles/index.css +95 -0
  98. package/package.json +5 -1
  99. package/dist/SdkPreviewModeRuntime-NHTLRNQD.mjs +0 -8
@@ -5,21 +5,24 @@
5
5
  * Handles graceful degradation when sessionStorage is unavailable.
6
6
  */
7
7
  import type { FormData } from './types';
8
- import type { PaymentSelection } from './types';
9
- type PendingRegistrationV3 = {
10
- version: 3;
8
+ import type { EventTicketSelectionLine, PaymentSelection } from './types';
9
+ /**
10
+ * Schema for pending registration data stored in sessionStorage.
11
+ * Version field allows future migrations if schema changes.
12
+ */
13
+ type PendingRegistrationV4 = {
14
+ version: 4;
11
15
  attendeeId: string;
12
16
  formData: FormData;
13
- ticketsCount: number;
17
+ ticketSelections: EventTicketSelectionLine[];
14
18
  selectedEventId: string | null;
15
19
  selectedAttendanceMode?: 'in_person' | 'online' | null;
16
- selectedTicketTypeId: string | null;
17
20
  paymentSelection: PaymentSelection & {
18
21
  method: Exclude<PaymentSelection['method'], null>;
19
22
  };
20
23
  timestamp: number;
21
24
  };
22
- export type PendingRegistration = PendingRegistrationV3;
25
+ export type PendingRegistration = PendingRegistrationV4;
23
26
  /**
24
27
  * Save pending registration data before Stripe redirect.
25
28
  *
@@ -0,0 +1,36 @@
1
+ import type { EventTicketSelectionLine } from './types';
2
+ import type { SelectableEventTicketType } from './utils';
3
+ export declare function normalizeTicketSelectionLines(lines: readonly EventTicketSelectionLine[]): EventTicketSelectionLine[];
4
+ export declare function getTicketSelectionTotal(lines: readonly EventTicketSelectionLine[]): number;
5
+ export declare function getTicketLineQuantity(lines: readonly EventTicketSelectionLine[], ticketTypeId: string | null): number;
6
+ export declare function getSingleSelectedTicketTypeId(lines: readonly EventTicketSelectionLine[]): string | null;
7
+ export declare function setTicketLineQuantity(input: Readonly<{
8
+ lines: readonly EventTicketSelectionLine[];
9
+ ticketTypeId: string | null;
10
+ quantity: number;
11
+ }>): EventTicketSelectionLine[];
12
+ export declare function getTicketTypeLineMax(input: Readonly<{
13
+ currentQuantity: number;
14
+ totalSelectedQuantity: number;
15
+ maxTickets: number;
16
+ availableSpots: number | null | undefined;
17
+ ticketTypeRemainingCapacity: number | null;
18
+ }>): number;
19
+ export declare function calculateTicketSelectionSubtotal(input: Readonly<{
20
+ lines: readonly EventTicketSelectionLine[];
21
+ ticketTypes: readonly Pick<SelectableEventTicketType, 'id' | 'priceAmount'>[];
22
+ fallbackUnitPriceCents: number;
23
+ }>): number;
24
+ export type TicketSelectionSummaryLine = Readonly<{
25
+ ticketTypeId: string | null;
26
+ label: string;
27
+ quantity: number;
28
+ unitPriceCents: number;
29
+ subtotalCents: number;
30
+ }>;
31
+ export declare function buildTicketSelectionSummaryLines(input: Readonly<{
32
+ lines: readonly EventTicketSelectionLine[];
33
+ ticketTypes: readonly Pick<SelectableEventTicketType, 'id' | 'name' | 'priceAmount'>[];
34
+ fallbackLabel: string;
35
+ fallbackUnitPriceCents: number;
36
+ }>): TicketSelectionSummaryLine[];
@@ -1,7 +1,7 @@
1
1
  import type { PublicEvent, PublicEventTicketType, PublicEventTicketTypeAvailability } from '../../../blocks/events/shared/types';
2
2
  import type { OccurrenceContext } from '../../../blocks/event-registration.shared';
3
3
  import type { PublicMembershipProductCollection, PublicPassProductCollection } from '../../../blocks/shop.shared';
4
- import type { AvailablePass, AvailableMembership, DirectCheckoutCollectionOptionKind, EligibilityEventTicketType } from '../../api/types';
4
+ import type { AvailablePass, AvailableMembership, DirectCheckoutCollectionOptionKind, EventTicketLineSummary, EligibilityEventTicketType } from '../../api/types';
5
5
  export type { PublicEvent, OccurrenceContext };
6
6
  export type { FormData } from '../../shared';
7
7
  /**
@@ -31,6 +31,10 @@ export type RegistrationResult = {
31
31
  variant?: 'success' | 'info';
32
32
  };
33
33
  export type RegistrationAttendanceMode = 'in_person' | 'online';
34
+ export type EventTicketSelectionLine = Readonly<{
35
+ ticketTypeId: string | null;
36
+ quantity: number;
37
+ }>;
34
38
  /**
35
39
  * Eligibility data for an event registration.
36
40
  * Transformed from API response for component use.
@@ -46,6 +50,8 @@ export type EligibilityData = {
46
50
  pricingMode?: 'single' | 'ticket_types' | 'sliding_scale';
47
51
  /** Selected ticket type echoed back from the eligibility API, if any. */
48
52
  selectedTicketTypeId?: string | null;
53
+ /** Selected ticket-line pricing echoed back from the eligibility API. */
54
+ ticketLines: EventTicketLineSummary[];
49
55
  /** Public ticket types available for selection in ticket-type mode. */
50
56
  ticketTypes?: EligibilityEventTicketType[];
51
57
  /** Whether the event is currently full for the requested ticket count */
@@ -1,6 +1,6 @@
1
1
  import { usePaymentVerification } from '../../hooks/usePaymentVerification';
2
2
  import type { BlockApiClient } from '../../api';
3
- import type { FormData, PaymentSelection, RegistrationEvent, RegistrationResult, RegistrationStep } from './types';
3
+ import type { EventTicketSelectionLine, FormData, PaymentSelection, RegistrationEvent, RegistrationResult, RegistrationStep } from './types';
4
4
  export declare function useEventRegistrationStripeReturn(options: {
5
5
  api: BlockApiClient;
6
6
  events: RegistrationEvent[];
@@ -9,9 +9,9 @@ export declare function useEventRegistrationStripeReturn(options: {
9
9
  pendingAttendeeId: string | null;
10
10
  setFormData: (data: FormData) => void;
11
11
  setTicketsCount: (count: number) => void;
12
+ setTicketSelections: (lines: readonly EventTicketSelectionLine[]) => void;
12
13
  setSelectedEvent: (event: RegistrationEvent | null) => void;
13
14
  setSelectedAttendanceMode: (attendanceMode: 'in_person' | 'online' | null) => void;
14
- setSelectedTicketTypeId: (ticketTypeId: string | null) => void;
15
15
  setPaymentSelection: (selection: PaymentSelection) => void;
16
16
  setPendingAttendeeId: (id: string | null) => void;
17
17
  setStep: (step: RegistrationStep) => void;
@@ -1,5 +1,5 @@
1
1
  import type { BlockApiClient } from '../../api';
2
- import type { FormData, Guest, RegistrationResult, RegistrationStep, PaymentSelection } from './types';
2
+ import type { EventTicketSelectionLine, FormData, Guest, RegistrationResult, RegistrationStep, PaymentSelection } from './types';
3
3
  import type { PaymentMethod } from '../../api/types';
4
4
  import type { RegistrationTarget } from './registrationDerivations';
5
5
  export type EventRegistrationSubmitOptions = Readonly<{
@@ -25,9 +25,8 @@ export declare function useEventRegistrationSubmit(options: {
25
25
  api: BlockApiClient;
26
26
  registrationTarget: RegistrationTarget | null;
27
27
  selectedAttendanceMode: 'in_person' | 'online' | null;
28
- selectedTicketTypeId: string | null;
28
+ ticketSelections: readonly EventTicketSelectionLine[];
29
29
  selectedSlidingAmount: number | null;
30
- ticketsCount: number;
31
30
  formData: FormData;
32
31
  altchaSolution: string | null;
33
32
  requireGuestDetails: boolean;
@@ -1,5 +1,5 @@
1
1
  import type { DiscountContext } from '../../api/types';
2
- import type { EventRegistrationClientProps, FormData, Guest, GuestErrors, PaymentSelection, PaymentStepState, PublicEvent, RegistrationEvent, RegistrationResult, RegistrationStep } from './types';
2
+ import type { EventTicketSelectionLine, EventRegistrationClientProps, FormData, Guest, GuestErrors, PaymentSelection, PaymentStepState, PublicEvent, RegistrationEvent, RegistrationResult, RegistrationStep } from './types';
3
3
  export type EventRegistrationDetailsCompleteResult = Readonly<{
4
4
  ok: true;
5
5
  outcome: 'payment-step' | 'submitted';
@@ -48,8 +48,15 @@ export declare function useEventRegistrationWizard(options: {
48
48
  setTicketsCount: (nextTicketsCount: number) => void;
49
49
  selectedAttendanceMode: "in_person" | "online" | null;
50
50
  setSelectedAttendanceMode: import("react").Dispatch<import("react").SetStateAction<"in_person" | "online" | null>>;
51
- selectedTicketTypeId: string | null;
52
- setSelectedTicketTypeId: import("react").Dispatch<import("react").SetStateAction<string | null>>;
51
+ ticketSelections: Readonly<{
52
+ ticketTypeId: string | null;
53
+ quantity: number;
54
+ }>[];
55
+ selectedTicketLines: Readonly<{
56
+ ticketTypeId: string | null;
57
+ quantity: number;
58
+ }>[];
59
+ setSelectedTicketLines: (lines: readonly EventTicketSelectionLine[]) => void;
53
60
  selectedSlidingAmountInput: string;
54
61
  setSelectedSlidingAmountInput: import("react").Dispatch<import("react").SetStateAction<string>>;
55
62
  selectedSlidingAmount: number | null;
@@ -60,9 +67,17 @@ export declare function useEventRegistrationWizard(options: {
60
67
  }> | null;
61
68
  slidingScaleSelectionMessage: string | null;
62
69
  selectedTicketType: import("./utils").SelectableEventTicketType | null;
70
+ ticketSelectionSummaryLines: Readonly<{
71
+ ticketTypeId: string | null;
72
+ label: string;
73
+ quantity: number;
74
+ unitPriceCents: number;
75
+ subtotalCents: number;
76
+ }>[];
77
+ ticketSelectionSubtotalCents: number;
63
78
  visibleTicketTypes: import("./utils").SelectableEventTicketType[];
64
79
  ticketTypeSelectionRequired: boolean;
65
- hasValidSelectedTicketType: boolean;
80
+ hasValidTicketSelection: boolean;
66
81
  eventRequiresPayment: boolean;
67
82
  formData: FormData;
68
83
  setFormData: import("react").Dispatch<import("react").SetStateAction<FormData>>;
@@ -474,6 +474,9 @@ export type ContentVersionOwner = Readonly<{
474
474
  }> | Readonly<{
475
475
  kind: 'entry-slot';
476
476
  entrySlotId: EntryBlockSlotId;
477
+ }> | Readonly<{
478
+ kind: 'surface-slot';
479
+ surfaceSlotId: PageSurfaceSlotId;
477
480
  }>;
478
481
  export type EditableBlockOwner = Readonly<{
479
482
  kind: 'page';
@@ -481,6 +484,9 @@ export type EditableBlockOwner = Readonly<{
481
484
  }> | Readonly<{
482
485
  kind: 'entry-slot';
483
486
  entrySlotId: EntryBlockSlotId;
487
+ }> | Readonly<{
488
+ kind: 'surface-slot';
489
+ surfaceSlotId: PageSurfaceSlotId;
484
490
  }>;
485
491
  export type SlotCompositionTransferReviewReason = Readonly<{
486
492
  kind: 'target-is-not-surface-slot';
@@ -1472,6 +1472,7 @@ export type Database = {
1472
1472
  published_content_id: string | null;
1473
1473
  purpose: string;
1474
1474
  site_id: string;
1475
+ surface_slot_id: string | null;
1475
1476
  updated_at: string;
1476
1477
  user_id: string;
1477
1478
  };
@@ -1488,6 +1489,7 @@ export type Database = {
1488
1489
  published_content_id?: string | null;
1489
1490
  purpose: string;
1490
1491
  site_id: string;
1492
+ surface_slot_id?: string | null;
1491
1493
  updated_at?: string;
1492
1494
  user_id: string;
1493
1495
  };
@@ -1504,6 +1506,7 @@ export type Database = {
1504
1506
  published_content_id?: string | null;
1505
1507
  purpose?: string;
1506
1508
  site_id?: string;
1509
+ surface_slot_id?: string | null;
1507
1510
  updated_at?: string;
1508
1511
  user_id?: string;
1509
1512
  };
@@ -1542,6 +1545,13 @@ export type Database = {
1542
1545
  isOneToOne: false;
1543
1546
  referencedRelation: "sites";
1544
1547
  referencedColumns: ["id"];
1548
+ },
1549
+ {
1550
+ foreignKeyName: "blocks_surface_slot_id_fkey";
1551
+ columns: ["surface_slot_id"];
1552
+ isOneToOne: false;
1553
+ referencedRelation: "page_surface_slots";
1554
+ referencedColumns: ["id"];
1545
1555
  }
1546
1556
  ];
1547
1557
  };
@@ -4544,6 +4554,7 @@ export type Database = {
4544
4554
  page_id: string | null;
4545
4555
  site_id: string;
4546
4556
  stage: Database["public"]["Enums"]["content_stage"];
4557
+ surface_slot_id: string | null;
4547
4558
  updated_at: string;
4548
4559
  user_id: string;
4549
4560
  version: number | null;
@@ -4562,6 +4573,7 @@ export type Database = {
4562
4573
  page_id?: string | null;
4563
4574
  site_id: string;
4564
4575
  stage?: Database["public"]["Enums"]["content_stage"];
4576
+ surface_slot_id?: string | null;
4565
4577
  updated_at?: string;
4566
4578
  user_id: string;
4567
4579
  version?: number | null;
@@ -4580,6 +4592,7 @@ export type Database = {
4580
4592
  page_id?: string | null;
4581
4593
  site_id?: string;
4582
4594
  stage?: Database["public"]["Enums"]["content_stage"];
4595
+ surface_slot_id?: string | null;
4583
4596
  updated_at?: string;
4584
4597
  user_id?: string;
4585
4598
  version?: number | null;
@@ -4619,6 +4632,13 @@ export type Database = {
4619
4632
  isOneToOne: false;
4620
4633
  referencedRelation: "pages";
4621
4634
  referencedColumns: ["id"];
4635
+ },
4636
+ {
4637
+ foreignKeyName: "content_versions_surface_slot_id_fkey";
4638
+ columns: ["surface_slot_id"];
4639
+ isOneToOne: false;
4640
+ referencedRelation: "page_surface_slots";
4641
+ referencedColumns: ["id"];
4622
4642
  }
4623
4643
  ];
4624
4644
  };
@@ -6876,6 +6896,73 @@ export type Database = {
6876
6896
  }
6877
6897
  ];
6878
6898
  };
6899
+ event_attendee_ticket_lines: {
6900
+ Row: {
6901
+ created_at: string;
6902
+ currency: string;
6903
+ event_attendee_id: string;
6904
+ id: string;
6905
+ quantity: number;
6906
+ site_id: string;
6907
+ sort_order: number;
6908
+ ticket_description_snapshot: string | null;
6909
+ ticket_name_snapshot: string;
6910
+ ticket_type_id: string | null;
6911
+ unit_price_cents: number;
6912
+ updated_at: string;
6913
+ };
6914
+ Insert: {
6915
+ created_at?: string;
6916
+ currency?: string;
6917
+ event_attendee_id: string;
6918
+ id?: string;
6919
+ quantity: number;
6920
+ site_id: string;
6921
+ sort_order?: number;
6922
+ ticket_description_snapshot?: string | null;
6923
+ ticket_name_snapshot: string;
6924
+ ticket_type_id?: string | null;
6925
+ unit_price_cents?: number;
6926
+ updated_at?: string;
6927
+ };
6928
+ Update: {
6929
+ created_at?: string;
6930
+ currency?: string;
6931
+ event_attendee_id?: string;
6932
+ id?: string;
6933
+ quantity?: number;
6934
+ site_id?: string;
6935
+ sort_order?: number;
6936
+ ticket_description_snapshot?: string | null;
6937
+ ticket_name_snapshot?: string;
6938
+ ticket_type_id?: string | null;
6939
+ unit_price_cents?: number;
6940
+ updated_at?: string;
6941
+ };
6942
+ Relationships: [
6943
+ {
6944
+ foreignKeyName: "event_attendee_ticket_lines_attendee_site_fk";
6945
+ columns: ["event_attendee_id", "site_id"];
6946
+ isOneToOne: false;
6947
+ referencedRelation: "event_attendees";
6948
+ referencedColumns: ["id", "site_id"];
6949
+ },
6950
+ {
6951
+ foreignKeyName: "event_attendee_ticket_lines_site_id_fkey";
6952
+ columns: ["site_id"];
6953
+ isOneToOne: false;
6954
+ referencedRelation: "sites";
6955
+ referencedColumns: ["id"];
6956
+ },
6957
+ {
6958
+ foreignKeyName: "event_attendee_ticket_lines_ticket_type_id_fkey";
6959
+ columns: ["ticket_type_id"];
6960
+ isOneToOne: false;
6961
+ referencedRelation: "event_ticket_types";
6962
+ referencedColumns: ["id"];
6963
+ }
6964
+ ];
6965
+ };
6879
6966
  event_attendee_transfers: {
6880
6967
  Row: {
6881
6968
  attendee_id: string;
@@ -7591,9 +7678,11 @@ export type Database = {
7591
7678
  Row: {
7592
7679
  accepts_memberships: boolean | null;
7593
7680
  accepts_passes: boolean | null;
7681
+ booking_scope: string;
7594
7682
  capacity: number | null;
7595
7683
  content_entry_id: string | null;
7596
7684
  created_at: string;
7685
+ dated_offering_metadata: Json;
7597
7686
  default_start_time: string;
7598
7687
  duration_minutes: number;
7599
7688
  event_category_id: string | null;
@@ -7623,9 +7712,11 @@ export type Database = {
7623
7712
  Insert: {
7624
7713
  accepts_memberships?: boolean | null;
7625
7714
  accepts_passes?: boolean | null;
7715
+ booking_scope?: string;
7626
7716
  capacity?: number | null;
7627
7717
  content_entry_id?: string | null;
7628
7718
  created_at?: string;
7719
+ dated_offering_metadata?: Json;
7629
7720
  default_start_time?: string;
7630
7721
  duration_minutes?: number;
7631
7722
  event_category_id?: string | null;
@@ -7655,9 +7746,11 @@ export type Database = {
7655
7746
  Update: {
7656
7747
  accepts_memberships?: boolean | null;
7657
7748
  accepts_passes?: boolean | null;
7749
+ booking_scope?: string;
7658
7750
  capacity?: number | null;
7659
7751
  content_entry_id?: string | null;
7660
7752
  created_at?: string;
7753
+ dated_offering_metadata?: Json;
7661
7754
  default_start_time?: string;
7662
7755
  duration_minutes?: number;
7663
7756
  event_category_id?: string | null;
@@ -10723,6 +10816,7 @@ export type Database = {
10723
10816
  customer_pass_id: string | null;
10724
10817
  discount_cents: number | null;
10725
10818
  event_attendee_id: string | null;
10819
+ event_attendee_ticket_line_id: string | null;
10726
10820
  fulfilled_at: string | null;
10727
10821
  fulfillment_claim_token: string | null;
10728
10822
  fulfillment_claimed_at: string | null;
@@ -10755,6 +10849,7 @@ export type Database = {
10755
10849
  customer_pass_id?: string | null;
10756
10850
  discount_cents?: number | null;
10757
10851
  event_attendee_id?: string | null;
10852
+ event_attendee_ticket_line_id?: string | null;
10758
10853
  fulfilled_at?: string | null;
10759
10854
  fulfillment_claim_token?: string | null;
10760
10855
  fulfillment_claimed_at?: string | null;
@@ -10787,6 +10882,7 @@ export type Database = {
10787
10882
  customer_pass_id?: string | null;
10788
10883
  discount_cents?: number | null;
10789
10884
  event_attendee_id?: string | null;
10885
+ event_attendee_ticket_line_id?: string | null;
10790
10886
  fulfilled_at?: string | null;
10791
10887
  fulfillment_claim_token?: string | null;
10792
10888
  fulfillment_claimed_at?: string | null;
@@ -10820,6 +10916,24 @@ export type Database = {
10820
10916
  referencedRelation: "event_attendees";
10821
10917
  referencedColumns: ["id", "site_id"];
10822
10918
  },
10919
+ {
10920
+ foreignKeyName: "order_items_attendee_ticket_line_attendee_site_fk";
10921
+ columns: [
10922
+ "event_attendee_ticket_line_id",
10923
+ "event_attendee_id",
10924
+ "site_id"
10925
+ ];
10926
+ isOneToOne: false;
10927
+ referencedRelation: "event_attendee_ticket_lines";
10928
+ referencedColumns: ["id", "event_attendee_id", "site_id"];
10929
+ },
10930
+ {
10931
+ foreignKeyName: "order_items_attendee_ticket_line_site_fk";
10932
+ columns: ["event_attendee_ticket_line_id", "site_id"];
10933
+ isOneToOne: false;
10934
+ referencedRelation: "event_attendee_ticket_lines";
10935
+ referencedColumns: ["id", "site_id"];
10936
+ },
10823
10937
  {
10824
10938
  foreignKeyName: "order_items_enrollment_site_fk";
10825
10939
  columns: ["course_enrollment_id", "site_id"];
@@ -11544,8 +11658,10 @@ export type Database = {
11544
11658
  created_by: string | null;
11545
11659
  deleted_at: string | null;
11546
11660
  deleted_by: string | null;
11661
+ draft_composition_version_id: string | null;
11547
11662
  id: string;
11548
11663
  page_surface_id: string;
11664
+ published_composition_version_id: string | null;
11549
11665
  site_id: string;
11550
11666
  slot_key: string;
11551
11667
  updated_at: string;
@@ -11556,8 +11672,10 @@ export type Database = {
11556
11672
  created_by?: string | null;
11557
11673
  deleted_at?: string | null;
11558
11674
  deleted_by?: string | null;
11675
+ draft_composition_version_id?: string | null;
11559
11676
  id?: string;
11560
11677
  page_surface_id: string;
11678
+ published_composition_version_id?: string | null;
11561
11679
  site_id: string;
11562
11680
  slot_key: string;
11563
11681
  updated_at?: string;
@@ -11568,14 +11686,23 @@ export type Database = {
11568
11686
  created_by?: string | null;
11569
11687
  deleted_at?: string | null;
11570
11688
  deleted_by?: string | null;
11689
+ draft_composition_version_id?: string | null;
11571
11690
  id?: string;
11572
11691
  page_surface_id?: string;
11692
+ published_composition_version_id?: string | null;
11573
11693
  site_id?: string;
11574
11694
  slot_key?: string;
11575
11695
  updated_at?: string;
11576
11696
  updated_by?: string | null;
11577
11697
  };
11578
11698
  Relationships: [
11699
+ {
11700
+ foreignKeyName: "page_surface_slots_draft_composition_version_id_fkey";
11701
+ columns: ["draft_composition_version_id"];
11702
+ isOneToOne: false;
11703
+ referencedRelation: "content_versions";
11704
+ referencedColumns: ["id"];
11705
+ },
11579
11706
  {
11580
11707
  foreignKeyName: "page_surface_slots_page_surface_id_fkey";
11581
11708
  columns: ["page_surface_id"];
@@ -11583,6 +11710,13 @@ export type Database = {
11583
11710
  referencedRelation: "page_surfaces";
11584
11711
  referencedColumns: ["id"];
11585
11712
  },
11713
+ {
11714
+ foreignKeyName: "page_surface_slots_published_composition_version_id_fkey";
11715
+ columns: ["published_composition_version_id"];
11716
+ isOneToOne: false;
11717
+ referencedRelation: "content_versions";
11718
+ referencedColumns: ["id"];
11719
+ },
11586
11720
  {
11587
11721
  foreignKeyName: "page_surface_slots_site_id_fkey";
11588
11722
  columns: ["site_id"];
@@ -16305,6 +16439,7 @@ export type Database = {
16305
16439
  owner_kind: Database["public"]["Enums"]["content_owner_kind"];
16306
16440
  page_id: string;
16307
16441
  stage: Database["public"]["Enums"]["content_stage"];
16442
+ surface_slot_id: string;
16308
16443
  updated_at: string;
16309
16444
  version: number;
16310
16445
  }[];
@@ -16437,6 +16572,32 @@ export type Database = {
16437
16572
  waitlist_position: number;
16438
16573
  }[];
16439
16574
  };
16575
+ create_event_attendee_with_ticket_lines_atomic: {
16576
+ Args: {
16577
+ p_attendance_mode: string;
16578
+ p_attendee_id: string;
16579
+ p_capacity: number;
16580
+ p_capacity_reservation: string;
16581
+ p_customer_id: string;
16582
+ p_customer_membership_id: string;
16583
+ p_customer_pass_id: string;
16584
+ p_event_instance_id: string;
16585
+ p_event_series_id: string;
16586
+ p_form_data: Json;
16587
+ p_metadata: Json;
16588
+ p_occurrence_id: string;
16589
+ p_payment_method: string;
16590
+ p_payment_status: string;
16591
+ p_site_id: string;
16592
+ p_ticket_lines: Json;
16593
+ p_ticket_type_id: string;
16594
+ p_tickets_count: number;
16595
+ };
16596
+ Returns: {
16597
+ attendee_id: string;
16598
+ status: string;
16599
+ }[];
16600
+ };
16440
16601
  create_media_asset_with_storage_quota: {
16441
16602
  Args: {
16442
16603
  p_asset: Json;
@@ -17445,7 +17606,7 @@ export type Database = {
17445
17606
  billing_interval: "monthly" | "annual";
17446
17607
  cancellation_context_category: "customer_requested" | "schedule_conflict" | "duplicate_or_admin_error" | "non_payment" | "policy_or_eligibility" | "other" | "legacy_client_unspecified";
17447
17608
  content_entry_status: "draft" | "scheduled" | "published" | "archived";
17448
- content_owner_kind: "block" | "entry" | "page" | "entry_slot";
17609
+ content_owner_kind: "block" | "entry" | "page" | "entry_slot" | "surface_slot";
17449
17610
  content_stage: "draft" | "published";
17450
17611
  gsc_property_type: "domain" | "url_prefix";
17451
17612
  impersonation_scope: "read" | "write";
@@ -18187,7 +18348,7 @@ export declare const Constants: {
18187
18348
  readonly billing_interval: readonly ["monthly", "annual"];
18188
18349
  readonly cancellation_context_category: readonly ["customer_requested", "schedule_conflict", "duplicate_or_admin_error", "non_payment", "policy_or_eligibility", "other", "legacy_client_unspecified"];
18189
18350
  readonly content_entry_status: readonly ["draft", "scheduled", "published", "archived"];
18190
- readonly content_owner_kind: readonly ["block", "entry", "page", "entry_slot"];
18351
+ readonly content_owner_kind: readonly ["block", "entry", "page", "entry_slot", "surface_slot"];
18191
18352
  readonly content_stage: readonly ["draft", "published"];
18192
18353
  readonly gsc_property_type: readonly ["domain", "url_prefix"];
18193
18354
  readonly impersonation_scope: readonly ["read", "write"];
@@ -14,6 +14,13 @@ export type AssetsInUseLocationLike = Readonly<{
14
14
  slotKey: string;
15
15
  stage: AssetsInUseStage;
16
16
  blockKind: string;
17
+ }> | Readonly<{
18
+ kind: 'surfaceSlotBlock';
19
+ pageSurfaceId: string;
20
+ surfaceSlotId: string;
21
+ slotKey: string;
22
+ stage: AssetsInUseStage;
23
+ blockKind: string;
17
24
  }> | Readonly<{
18
25
  kind: 'contentEntry';
19
26
  routeDraftPath?: string | null;
@@ -18,11 +18,22 @@ export type MediaUsageEntrySlotBlockProjection = Readonly<{
18
18
  kind: string;
19
19
  identifier: string | null;
20
20
  }>;
21
+ export type MediaUsageSurfaceSlotBlockProjection = Readonly<{
22
+ id: string;
23
+ surfaceSlotId: string;
24
+ kind: string;
25
+ identifier: string | null;
26
+ }>;
21
27
  export type MediaUsageEntrySlotProjection = Readonly<{
22
28
  id: string;
23
29
  contentEntryId: string;
24
30
  slotKey: string;
25
31
  }>;
32
+ export type MediaUsageSurfaceSlotProjection = Readonly<{
33
+ id: string;
34
+ pageSurfaceId: string;
35
+ slotKey: string;
36
+ }>;
26
37
  export type MediaUsageContentEntryProjection = Readonly<{
27
38
  id: string;
28
39
  identifier: string | null;
@@ -66,6 +77,17 @@ export type EntrySlotBlockMediaUsageLocation = Readonly<{
66
77
  blockIdentifier: string | null;
67
78
  stage: MediaUsageStage;
68
79
  }>;
80
+ export type SurfaceSlotBlockMediaUsageLocation = Readonly<{
81
+ kind: 'surfaceSlotBlock';
82
+ siteId: string;
83
+ pageSurfaceId: string;
84
+ surfaceSlotId: string;
85
+ slotKey: string;
86
+ blockId: string;
87
+ blockKind: string;
88
+ blockIdentifier: string | null;
89
+ stage: MediaUsageStage;
90
+ }>;
69
91
  export type ContentEntryMediaUsageLocation = Readonly<{
70
92
  kind: 'contentEntry';
71
93
  siteId: string;
@@ -82,7 +104,7 @@ export type ProductFileDownloadMediaUsageLocation = Readonly<{
82
104
  productId: string;
83
105
  productTitle: string;
84
106
  }>;
85
- export type MediaUsageLocationProjection = PageBlockMediaUsageLocation | EntrySlotBlockMediaUsageLocation | ContentEntryMediaUsageLocation | ProductFileDownloadMediaUsageLocation;
107
+ export type MediaUsageLocationProjection = PageBlockMediaUsageLocation | EntrySlotBlockMediaUsageLocation | SurfaceSlotBlockMediaUsageLocation | ContentEntryMediaUsageLocation | ProductFileDownloadMediaUsageLocation;
86
108
  export type MediaUsageCheckItemProjection = Readonly<{
87
109
  assetId: string;
88
110
  filename: string | null;
@@ -104,6 +126,12 @@ export declare function projectEntrySlotBlockMediaUsageLocation(params: Readonly
104
126
  route: MediaUsageRouteProjection | null;
105
127
  stage: MediaUsageStage;
106
128
  }>): EntrySlotBlockMediaUsageLocation | null;
129
+ export declare function projectSurfaceSlotBlockMediaUsageLocation(params: Readonly<{
130
+ siteId: string;
131
+ block: MediaUsageSurfaceSlotBlockProjection | null;
132
+ surfaceSlot: MediaUsageSurfaceSlotProjection | null;
133
+ stage: MediaUsageStage;
134
+ }>): SurfaceSlotBlockMediaUsageLocation | null;
107
135
  export declare function projectContentEntryMediaUsageLocation(params: Readonly<{
108
136
  siteId: string;
109
137
  entry: MediaUsageContentEntryProjection | null;
@@ -1,6 +1,6 @@
1
- import type { CheckRedirectResponse, EntriesResponse, EntryResponse, PageResponse, PublicBookingServicesResponse, PublicCoursesResponse, PublicFormResponse, PublicFormsResponse, PublicProductsResponse, PublicTeamMembersResponse, PublicMembershipsResponse, PublicPassesResponse, PublicEventDetailsResponse, PublicEventsResponse, ResolveEntrySubrouteResponse, ResolveEventOccurrenceResponse, RoutableContentResponse, SiteResponse, SitemapRoutesResponse, PublicProductCategorySelector } from '../public-api/contracts';
1
+ import type { CheckRedirectResponse, EntriesResponse, EntryResponse, PageResponse, PublicBookingServicesResponse, PublicCoursesResponse, PublicFormResponse, PublicFormsResponse, PublicProductsResponse, PublicTeamMembersResponse, PublicMembershipsResponse, PublicPassesResponse, PublicEventDetailsResponse, PublicEventsResponse, ResolveEntrySubrouteResponse, ResolveEventOccurrenceResponse, RouteOutcomeResponse, RoutableContentResponse, SiteResponse, SitemapRoutesResponse, PublicProductCategorySelector } from '../public-api/contracts';
2
2
  import type { PublishedRuntimeCacheAdapter, PublishedRuntimeCacheAdapterErrorKind } from './runtimeCachePolicy';
3
- export type { CheckRedirectResponse, EntriesResponse, EntryResponse, PageResponse, PublicBookingServicesResponse, PublicCoursesResponse, PublicEventsResponse, PublicFormResponse, PublicFormsResponse, PublicProductsResponse, PublicTeamMembersResponse, PublicMembershipsResponse, PublicPassesResponse, PublicEventDetailsResponse, ResolveEntrySubrouteResponse, ResolveEventOccurrenceResponse, RoutableContentResponse, SiteResponse, SitemapRoutesResponse, } from '../public-api/contracts';
3
+ export type { CheckRedirectResponse, EntriesResponse, EntryResponse, PageResponse, PublicBookingServicesResponse, PublicCoursesResponse, PublicEventsResponse, PublicFormResponse, PublicFormsResponse, PublicProductsResponse, PublicTeamMembersResponse, PublicMembershipsResponse, PublicPassesResponse, PublicEventDetailsResponse, ResolveEntrySubrouteResponse, ResolveEventOccurrenceResponse, RouteOutcomeResponse, RoutableContentResponse, SiteResponse, SitemapRoutesResponse, } from '../public-api/contracts';
4
4
  /**
5
5
  * Pagination metadata returned when `includeMeta: true`
6
6
  */
@@ -604,6 +604,11 @@ export interface RiverbankClient {
604
604
  siteId: string;
605
605
  path: string;
606
606
  } & SdkMethodOptions): Promise<CheckRedirectResponse>;
607
+ resolveRouteOutcome(params: {
608
+ siteId: string;
609
+ path: string;
610
+ preview?: boolean;
611
+ } & SdkMethodOptions): Promise<RouteOutcomeResponse>;
607
612
  /**
608
613
  * Get all published routes for a site.
609
614
  * Useful for static site generation (SSG) to enumerate all pages.
@@ -0,0 +1 @@
1
+ export { handleRouteOutcomeRedirect, planRouteOutcomeRedirect, type HandleRouteOutcomeRedirectOptions, type RouteOutcomeRedirectPlan, type RouteOutcomeRedirectFailureContext, } from './route-outcome-proxy';
@@ -0,0 +1,3 @@
1
+ type IncomingSearch = string | URLSearchParams | Readonly<Record<string, string | string[] | undefined>> | null | undefined;
2
+ export declare function appendSearchToRedirectDestination(destination: string, incomingSearch: IncomingSearch): string;
3
+ export {};