@riverbankcms/sdk 0.127.0 → 0.129.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.
- package/README.md +33 -0
- package/dist/{PreviewEditorSidebar-BXtfF7tp.mjs → PreviewEditorSidebar-B43CJ0g_.mjs} +9 -33
- package/dist/{PreviewEditorUI-Dou73Q0K.mjs → PreviewEditorUI-DHirVkeM.mjs} +3 -3
- package/dist/{PreviewQueryProvider-DgFDIwvK.mjs → PreviewQueryProvider-B1kbhaJD.mjs} +1 -1
- package/dist/SdkPreviewModeRuntime-BJumZy1B.mjs +11209 -0
- package/dist/{SiteChromeCustomizeContext-DZiDBAYu.mjs → SiteChromeCustomizeContext-D9SlpwEj.mjs} +31757 -1621
- package/dist/_dts/ai/src/contracts/proposals.d.ts +288 -36
- package/dist/_dts/api/src/bookingClosures.d.ts +19 -3
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -3
- package/dist/_dts/api/src/bookingRecords.d.ts +0 -13
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
- package/dist/_dts/api/src/communications.d.ts +2 -1
- package/dist/_dts/api/src/contactFormSummary.d.ts +15 -0
- package/dist/_dts/api/src/contentRuntime.d.ts +2 -5
- package/dist/_dts/api/src/endpoints.d.ts +1 -1
- package/dist/_dts/api/src/footerSettings.d.ts +11 -0
- package/dist/_dts/api/src/index.d.ts +2 -1
- package/dist/_dts/api/src/occurrenceScheduling.d.ts +48 -0
- package/dist/_dts/api/src/participantMessaging.d.ts +5 -3
- package/dist/_dts/api/src/publicExperience/siteEndpoints.d.ts +7 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +7 -5
- package/dist/_dts/api/src/siteOperations.d.ts +12 -3
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +3 -2
- package/dist/_dts/blocks/src/PageRenderer.d.ts +20 -10
- package/dist/_dts/blocks/src/client/form.d.ts +1 -0
- package/dist/_dts/blocks/src/client/newsletter-form.d.ts +1 -0
- package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -8
- package/dist/_dts/blocks/src/index.d.ts +2 -1
- package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +30 -0
- package/dist/_dts/blocks/src/pageRenderingMode.d.ts +37 -0
- package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
- package/dist/_dts/blocks/src/server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +41 -0
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +14 -23
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +109 -23
- package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -108
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -54
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +26 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +29 -78
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -6
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +27 -8
- package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +21 -0
- package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +3 -1
- package/dist/_dts/content-editor/src/FooterEngagementEditorFields.d.ts +31 -0
- package/dist/_dts/content-editor/src/FooterEngagementEditorPanel.d.ts +17 -0
- package/dist/_dts/content-editor/src/footerComposer.d.ts +3 -0
- package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +57 -0
- package/dist/_dts/content-editor/src/footerEngagementEditor.d.ts +11 -0
- package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +13 -0
- package/dist/_dts/content-editor/src/index.d.ts +1 -0
- package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +35 -0
- package/dist/_dts/core/src/footer-arrangement.d.ts +2 -0
- package/dist/_dts/core/src/footer-composition-types.d.ts +118 -0
- package/dist/_dts/core/src/footer-composition.d.ts +7 -116
- package/dist/_dts/core/src/footer-engagement.d.ts +30 -0
- package/dist/_dts/core/src/index.d.ts +4 -0
- package/dist/_dts/core/src/newsletter-signup-destination.d.ts +38 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +73 -6
- package/dist/_dts/db/src/index.d.ts +1 -0
- package/dist/_dts/db/src/schemas/forms.d.ts +72 -2
- package/dist/_dts/db/src/schemas/standard-contact.d.ts +114 -0
- package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +6 -0
- package/dist/_dts/preview-next/src/client/index.d.ts +47 -47
- package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -5
- package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -5
- package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -4
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +19 -7
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +30 -23
- package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +18 -5
- package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +9 -0
- package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +21 -6
- package/dist/_dts/preview-next/src/client/sdk-runtime.d.ts +8 -8
- package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +6 -5
- package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +9 -0
- package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +10 -0
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +3 -5
- package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +15 -3
- package/dist/_dts/sdk/src/client/combineAbortSignals.d.ts +2 -0
- package/dist/_dts/sdk/src/client/management/types.d.ts +6 -15
- package/dist/_dts/sdk/src/client/types.d.ts +10 -2
- package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +11 -0
- package/dist/_dts/sdk/src/config/types.d.ts +1 -1
- package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
- package/dist/_dts/sdk/src/contracts/event-registration-content.d.ts +16 -0
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -15
- package/dist/_dts/sdk/src/next/catch-all.d.ts +6 -0
- package/dist/_dts/sdk/src/next/index.d.ts +2 -1
- package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +33 -0
- package/dist/_dts/sdk/src/next/types.d.ts +23 -9
- package/dist/_dts/sdk/src/preview-next/before-render.d.ts +4 -6
- package/dist/_dts/sdk/src/preview-next/client/index.d.ts +3 -3
- package/dist/_dts/sdk/src/preview-next/client/runtime.d.ts +1 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -18
- package/dist/_dts/sdk/src/public-api/teamMemberContracts.d.ts +17 -0
- package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +32 -3
- package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +13 -2
- package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +31 -18
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +20 -9
- package/dist/_dts/sdk/src/rendering/index.d.ts +8 -4
- package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +8 -2
- package/dist/_dts/sdk/src/rendering/renderingMode.d.ts +23 -0
- package/dist/_dts/sdk/src/rendering/server.d.ts +5 -3
- package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +6 -0
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commandContract.d.ts +8 -1
- package/dist/_dts/site-commands/src/commands.d.ts +16 -2
- package/dist/_dts/theme-core/src/header/paintTargets.d.ts +10 -4
- package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +2 -3
- package/dist/cli/index.mjs +5535 -4835
- package/dist/cli/init-docs/content/workflow-preview-mode.md +24 -11
- package/dist/client/{courseRegistration-DTEYWL6Z.mjs → CourseRegistrationWizard-xRmA7REV.mjs} +329 -49
- package/dist/client/{DiscountCodeDisclosure-BDFRp8Y7.mjs → DiscountCodeDisclosure-B9vriL5C.mjs} +1 -1
- package/dist/client/{EventCombined.client-DJgF1_lf.mjs → EventCombined.client-BgVnVTlz.mjs} +2 -2
- package/dist/client/{EventListing.client-CnWGNjOr.mjs → EventListing.client-CqdsO7jO.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-BISs9Bl7.mjs → LeafletStaticMap-CKPxot9M.mjs} +1 -1
- package/dist/client/{StepIndicator-D8gVYkK-.mjs → StepIndicator-DGCYuBJ1.mjs} +2 -2
- package/dist/client/{accordion-DFDajgDz.mjs → accordion-BfN5Eqd-.mjs} +1 -1
- package/dist/client/{bookingForm-Bdqj9-52.mjs → bookingForm-DOvCpBFP.mjs} +5 -5
- package/dist/client/{carousel-Cvqf-kN8.mjs → carousel-DPNmiH0f.mjs} +1 -1
- package/dist/client/{cart-CuH2TJXP.mjs → cart--egVXlrR.mjs} +3 -3
- package/dist/client/{checkout-CMNPpejZ.mjs → checkout-DywWtMcq.mjs} +3 -3
- package/dist/client/client.mjs +5324 -4942
- package/dist/client/courseRegistration-Dk9qFVwt.mjs +46 -0
- package/dist/client/{eventCalendar-BW-XoxZ0.mjs → eventCalendar-Bkz2HjlS.mjs} +4 -4
- package/dist/client/{eventCombined-Bpn7s0y9.mjs → eventCombined-D4kipYWg.mjs} +2 -2
- package/dist/client/{eventDetails-D2uUSTMH.mjs → eventDetails-Dz_5ix2Q.mjs} +56 -35
- package/dist/client/{eventListing-CVr1c094.mjs → eventListing-D0vm-zST.mjs} +2 -2
- package/dist/client/{eventRegistration-Dv4AvkMw.mjs → eventRegistration-Cw1E4Q4p.mjs} +58 -6
- package/dist/client/{form-DxdKf9fs.mjs → form-C2Zf1n3K.mjs} +1 -1
- package/dist/client/{headerSection-BaXI5Sro.mjs → headerSection-CP05gzdc.mjs} +2 -2
- package/dist/client/hooks.mjs +212 -61
- package/dist/client/{locationMap-BEtW2fKz.mjs → locationMap-Cl3x9PYJ.mjs} +2 -2
- package/dist/client/{newsletterForm-BKKs0S4R.mjs → newsletterForm-DyEJoClm.mjs} +26 -20
- package/dist/client/{pricing-ClkqcElA.mjs → pricing-DGuNR1W4.mjs} +1 -1
- package/dist/client/{productDetail-H-ru8dyy.mjs → productDetail-Cq-HrGew.mjs} +3 -3
- package/dist/client/{productList-Buyi5c0C.mjs → productList-DbB3jwqd.mjs} +3 -3
- package/dist/client/{propsDecoder-BF7i6Ijg.mjs → propsDecoder-CiTuhUwY.mjs} +130 -87
- package/dist/client/rendering/client.mjs +416 -208
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +6026 -5596
- package/dist/client/{scrollToBlock-D_7t8yWb.mjs → scrollToBlock-CShkRqab.mjs} +1 -1
- package/dist/client/{shop-CF7SZQNX.mjs → shop-Cu4Ib-ZA.mjs} +5 -5
- package/dist/client/{shop-commerce-DA7_Rq5p.mjs → shop-commerce-BzpsOdh7.mjs} +4 -4
- package/dist/client/{shop-commerce-store-BmLqW7Gh.mjs → shop-commerce-store-DaE7Fhj8.mjs} +1 -1
- package/dist/client/{shopShared-WL-E1znM.mjs → shopShared-cF0c20vB.mjs} +2 -2
- package/dist/client/{useEventFilters-rc8VLeLV.mjs → useEventFilters-QZ3HMgaJ.mjs} +2 -2
- package/dist/client/{usePolling-1ncrfd4S.mjs → usePolling-BKf0GcE-.mjs} +2 -2
- package/dist/preview-next/before-render.mjs +11 -4
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/middleware.mjs +1 -1
- package/dist/{previewAuthStore-Dev9CdG9.mjs → previewAuthStore-BesgU5Xu.mjs} +1 -1
- package/dist/{sdk-runtime-BnrCCFJq.mjs → sdk-runtime-CfZd5pAm.mjs} +2 -2
- package/dist/{separator-CFvBx2yl.mjs → separator-DkTe68HE.mjs} +1 -1
- package/dist/server/components.mjs +950 -639
- package/dist/server/config-validation.mjs +209 -61
- package/dist/server/config.mjs +209 -61
- package/dist/server/data.mjs +212 -61
- package/dist/server/index.mjs +40 -16
- package/dist/server/next.mjs +1181 -835
- package/dist/server/page-converter.mjs +211 -64
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +974 -637
- package/dist/server/rendering.mjs +980 -644
- package/dist/server/routing.mjs +254 -80
- package/dist/server/server.mjs +252 -77
- package/package.json +1 -1
- package/dist/SdkPreviewModeRuntime-B0HPXr-l.mjs +0 -39546
- package/dist/client/MagicLinkForm-b5E_HoG9.mjs +0 -327
|
@@ -61,7 +61,9 @@ export async function proxy(request: NextRequest) {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
export const config = {
|
|
64
|
-
matcher: [
|
|
64
|
+
matcher: [
|
|
65
|
+
'/((?!_next/static|_next/image|api|favicon.ico|robots.txt|sitemap.xml).*)',
|
|
66
|
+
],
|
|
65
67
|
}
|
|
66
68
|
```
|
|
67
69
|
|
|
@@ -102,13 +104,17 @@ Create `src/components/preview/SdkPreviewModeClient.tsx`:
|
|
|
102
104
|
```tsx
|
|
103
105
|
'use client'
|
|
104
106
|
|
|
105
|
-
import {
|
|
107
|
+
import {
|
|
108
|
+
PreviewQueryProvider,
|
|
109
|
+
SdkPreviewMode,
|
|
110
|
+
type SdkPreviewModePropsWithoutBlockOverrides,
|
|
111
|
+
} from '@riverbankcms/sdk/preview-next/client'
|
|
106
112
|
|
|
107
113
|
import { blockOverrides } from '@/lib/block-overrides'
|
|
108
114
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
115
|
+
export function SdkPreviewModeClient(
|
|
116
|
+
props: SdkPreviewModePropsWithoutBlockOverrides
|
|
117
|
+
) {
|
|
112
118
|
return (
|
|
113
119
|
<PreviewQueryProvider>
|
|
114
120
|
<SdkPreviewMode {...props} blockOverrides={blockOverrides} />
|
|
@@ -168,7 +174,11 @@ function SiteFooter() {
|
|
|
168
174
|
return <footer>{/* your site footer */}</footer>
|
|
169
175
|
}
|
|
170
176
|
|
|
171
|
-
export default async function RootLayout({
|
|
177
|
+
export default async function RootLayout({
|
|
178
|
+
children,
|
|
179
|
+
}: {
|
|
180
|
+
children: ReactNode
|
|
181
|
+
}) {
|
|
172
182
|
const session = await getPreviewSession()
|
|
173
183
|
const hasEditablePreviewSession = Boolean(session?.canEdit && session?.token)
|
|
174
184
|
const headerNode = <SiteHeader />
|
|
@@ -178,7 +188,10 @@ export default async function RootLayout({ children }: { children: ReactNode })
|
|
|
178
188
|
<html lang="en">
|
|
179
189
|
<body>
|
|
180
190
|
{hasEditablePreviewSession ? (
|
|
181
|
-
<PreviewLayoutProvider
|
|
191
|
+
<PreviewLayoutProvider
|
|
192
|
+
headerNode={headerNode}
|
|
193
|
+
footerNode={footerNode}
|
|
194
|
+
>
|
|
182
195
|
{children}
|
|
183
196
|
</PreviewLayoutProvider>
|
|
184
197
|
) : (
|
|
@@ -204,15 +217,15 @@ If your custom chrome needs CMS navigation data, build the `headerNode` and `foo
|
|
|
204
217
|
For Tailwind sites, add this to `src/app/globals.css`:
|
|
205
218
|
|
|
206
219
|
```css
|
|
207
|
-
@import
|
|
208
|
-
@import
|
|
209
|
-
@import
|
|
220
|
+
@import 'tailwindcss';
|
|
221
|
+
@import '@riverbankcms/sdk/preview-next/tailwind-sources.css';
|
|
222
|
+
@import '@riverbankcms/sdk/preview-next/chrome.css';
|
|
210
223
|
```
|
|
211
224
|
|
|
212
225
|
For non-Tailwind sites, use the legacy single import:
|
|
213
226
|
|
|
214
227
|
```css
|
|
215
|
-
@import
|
|
228
|
+
@import '@riverbankcms/sdk/preview-next/styles.css';
|
|
216
229
|
```
|
|
217
230
|
|
|
218
231
|
## Environment Variables
|
package/dist/client/{courseRegistration-DTEYWL6Z.mjs → CourseRegistrationWizard-xRmA7REV.mjs}
RENAMED
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { At as formatBookingTime, Dt as formatBookingDate, Ft as toBookingTimeZone, Gt as assertNever, It as toScheduledBookingDateTime, Lt as parseEventPageSurfaceSubject, X as themeButtonClassName,
|
|
3
|
-
import { n as formatCoursePriceDisplay, r as resolveCoursePricingState, t as formatCoursePriceAmount } from "./pricing-
|
|
4
|
-
import { n as useBlockApi
|
|
2
|
+
import { At as formatBookingTime, Dt as formatBookingDate, Ft as toBookingTimeZone, Gt as assertNever, It as toScheduledBookingDateTime, Lt as parseEventPageSurfaceSubject, X as themeButtonClassName, yt as assertNever$1 } from "./propsDecoder-CiTuhUwY.mjs";
|
|
3
|
+
import { n as formatCoursePriceDisplay, r as resolveCoursePricingState, t as formatCoursePriceAmount } from "./pricing-DGuNR1W4.mjs";
|
|
4
|
+
import { n as useBlockApi } from "./context-CJz1Vlsz.mjs";
|
|
5
5
|
import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
|
|
6
|
-
import { a as CheckIcon, i as StateIcon, n as useDiscountCodeUi, r as TerminalPanel, t as scrollToBlock } from "./scrollToBlock-
|
|
7
|
-
import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-
|
|
8
|
-
import { n as SpinnerNode, r as formatPrice, t as StepIndicator$1 } from "./StepIndicator-
|
|
6
|
+
import { a as CheckIcon, i as StateIcon, n as useDiscountCodeUi, r as TerminalPanel, t as scrollToBlock } from "./scrollToBlock-CShkRqab.mjs";
|
|
7
|
+
import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-B9vriL5C.mjs";
|
|
8
|
+
import { n as SpinnerNode, r as formatPrice, t as StepIndicator$1 } from "./StepIndicator-DGCYuBJ1.mjs";
|
|
9
9
|
import { t as FeedbackMessage } from "./FeedbackMessage-ByMrs3cr.mjs";
|
|
10
10
|
import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
|
|
11
11
|
import { t as buildCheckoutReturnUrls } from "./checkoutUrls-Ct8Mxna3.mjs";
|
|
12
|
-
import { a as ClockIcon, i as LoggedInAsUser, n as logoutPortal, r as useWaitlistClaim, t as MagicLinkForm } from "./MagicLinkForm-b5E_HoG9.mjs";
|
|
13
12
|
import { t as CrossIcon } from "./CrossIcon-Dn1KRKW5.mjs";
|
|
14
|
-
import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
|
|
15
|
-
import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-UNsfPcYq.mjs";
|
|
16
13
|
import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
|
|
17
|
-
import React, { Component, useCallback, useEffect, useMemo, useState } from "react";
|
|
14
|
+
import React, { Component, useCallback, useEffect, useMemo, useReducer, useState, useSyncExternalStore } from "react";
|
|
18
15
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
19
16
|
//#region ../blocks/src/system/runtime/shared/utils/validation.ts
|
|
20
17
|
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
@@ -53,6 +50,23 @@ function getStepNumber(step, wizardSteps) {
|
|
|
53
50
|
return index >= 0 ? index + 1 : 1;
|
|
54
51
|
}
|
|
55
52
|
//#endregion
|
|
53
|
+
//#region ../blocks/src/system/runtime/shared/components/ClockIcon.tsx
|
|
54
|
+
function ClockIcon({ className, strokeWidth = 2 }) {
|
|
55
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
56
|
+
fill: "none",
|
|
57
|
+
strokeLinecap: "round",
|
|
58
|
+
strokeLinejoin: "round",
|
|
59
|
+
strokeWidth,
|
|
60
|
+
viewBox: "0 0 24 24",
|
|
61
|
+
stroke: "currentColor",
|
|
62
|
+
className,
|
|
63
|
+
width: "1em",
|
|
64
|
+
height: "1em",
|
|
65
|
+
"aria-hidden": "true",
|
|
66
|
+
children: /* @__PURE__ */ jsx("path", { d: "M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" })
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
56
70
|
//#region ../blocks/src/system/runtime/shared/components/MembershipHero.tsx
|
|
57
71
|
/**
|
|
58
72
|
* Celebratory UI shown when user's membership covers the course/event.
|
|
@@ -181,6 +195,29 @@ var CourseRegistrationErrorBoundary = class extends Component {
|
|
|
181
195
|
}
|
|
182
196
|
};
|
|
183
197
|
//#endregion
|
|
198
|
+
//#region ../blocks/src/system/runtime/shared/components/LoggedInAsUser.tsx
|
|
199
|
+
/**
|
|
200
|
+
* Displays the logged-in user's email with an optional logout link.
|
|
201
|
+
*
|
|
202
|
+
* Used in registration forms when the email field is locked due to portal authentication.
|
|
203
|
+
* Shows: "Logged in as {email} — Not you? Log out"
|
|
204
|
+
*/
|
|
205
|
+
function LoggedInAsUser({ email, onLogout, classPrefix }) {
|
|
206
|
+
return /* @__PURE__ */ jsxs("p", {
|
|
207
|
+
className: `${classPrefix}-logged-in-hint`,
|
|
208
|
+
children: [
|
|
209
|
+
"Logged in as ",
|
|
210
|
+
email,
|
|
211
|
+
onLogout && /* @__PURE__ */ jsxs(Fragment, { children: [" — ", /* @__PURE__ */ jsx("button", {
|
|
212
|
+
type: "button",
|
|
213
|
+
className: `${classPrefix}-link`,
|
|
214
|
+
onClick: onLogout,
|
|
215
|
+
children: "Not you? Log out"
|
|
216
|
+
})] })
|
|
217
|
+
]
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
//#endregion
|
|
184
221
|
//#region ../blocks/src/system/runtime/nodes/course-registration/components.tsx
|
|
185
222
|
function TeamMemberInlineList({ teamMembers }) {
|
|
186
223
|
return /* @__PURE__ */ jsx(Fragment, { children: teamMembers.map((teamMember, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [index > 0 ? ", " : "", teamMember.profilePath ? /* @__PURE__ */ jsx("a", {
|
|
@@ -490,6 +527,167 @@ function EnrollmentForm({ formData, errors, onChange, isEmailLocked, isLoading,
|
|
|
490
527
|
] });
|
|
491
528
|
}
|
|
492
529
|
//#endregion
|
|
530
|
+
//#region ../blocks/src/system/runtime/shared/useWaitlistClaim.state.ts
|
|
531
|
+
const DEFAULT_WAITLIST_CLAIM_ERROR = "Failed to resolve waitlist claim";
|
|
532
|
+
function createInitialWaitlistClaimState(hasToken) {
|
|
533
|
+
return hasToken ? { kind: "resolving" } : { kind: "idle" };
|
|
534
|
+
}
|
|
535
|
+
function waitlistClaimReducer(_state, action) {
|
|
536
|
+
switch (action.type) {
|
|
537
|
+
case "cleared": return { kind: "idle" };
|
|
538
|
+
case "started": return { kind: "resolving" };
|
|
539
|
+
case "resolved": return {
|
|
540
|
+
kind: "resolved",
|
|
541
|
+
claim: action.claim
|
|
542
|
+
};
|
|
543
|
+
case "failed": return action.failure;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
function toWaitlistClaimResolveFailure(error) {
|
|
547
|
+
const message = error instanceof Error ? error.message : DEFAULT_WAITLIST_CLAIM_ERROR;
|
|
548
|
+
if (isUnauthorizedBlockApiError(error)) return {
|
|
549
|
+
kind: "portal-login-required",
|
|
550
|
+
message
|
|
551
|
+
};
|
|
552
|
+
return {
|
|
553
|
+
kind: "error",
|
|
554
|
+
message
|
|
555
|
+
};
|
|
556
|
+
}
|
|
557
|
+
function isUnauthorizedBlockApiError(error) {
|
|
558
|
+
return error instanceof Error && error.name === "BlockApiError" && hasStatus(error) && error.status === 401;
|
|
559
|
+
}
|
|
560
|
+
function hasStatus(value) {
|
|
561
|
+
return typeof value === "object" && value !== null && "status" in value;
|
|
562
|
+
}
|
|
563
|
+
function getWaitlistClaim(state) {
|
|
564
|
+
return state.kind === "resolved" ? state.claim : null;
|
|
565
|
+
}
|
|
566
|
+
function getWaitlistClaimError(state) {
|
|
567
|
+
return state.kind === "error" ? state.message : null;
|
|
568
|
+
}
|
|
569
|
+
function getWaitlistClaimLoginMessage(state) {
|
|
570
|
+
return state.kind === "portal-login-required" ? state.message : null;
|
|
571
|
+
}
|
|
572
|
+
function requiresWaitlistClaimPortalLogin(state) {
|
|
573
|
+
return state.kind === "portal-login-required";
|
|
574
|
+
}
|
|
575
|
+
function isWaitlistClaimLoading(state) {
|
|
576
|
+
return state.kind === "resolving";
|
|
577
|
+
}
|
|
578
|
+
//#endregion
|
|
579
|
+
//#region ../blocks/src/system/runtime/shared/useWaitlistClaim.ts
|
|
580
|
+
const WAITLIST_CLAIM_LOCATION_EVENT = "riverbank:waitlist-claim-location-change";
|
|
581
|
+
let historyPatched = false;
|
|
582
|
+
function emitWaitlistClaimLocationChange() {
|
|
583
|
+
if (typeof window === "undefined") return;
|
|
584
|
+
window.dispatchEvent(new Event(WAITLIST_CLAIM_LOCATION_EVENT));
|
|
585
|
+
}
|
|
586
|
+
function ensureWaitlistClaimLocationTracking() {
|
|
587
|
+
if (typeof window === "undefined" || historyPatched) return;
|
|
588
|
+
historyPatched = true;
|
|
589
|
+
const history = window.history;
|
|
590
|
+
if (history.__riverbankWaitlistClaimPatched__) return;
|
|
591
|
+
const wrapHistoryMethod = (method) => {
|
|
592
|
+
return function patched(...args) {
|
|
593
|
+
method.apply(this, args);
|
|
594
|
+
emitWaitlistClaimLocationChange();
|
|
595
|
+
};
|
|
596
|
+
};
|
|
597
|
+
try {
|
|
598
|
+
history.pushState = wrapHistoryMethod(history.pushState);
|
|
599
|
+
history.replaceState = wrapHistoryMethod(history.replaceState);
|
|
600
|
+
history.__riverbankWaitlistClaimPatched__ = true;
|
|
601
|
+
} catch {}
|
|
602
|
+
window.addEventListener("popstate", emitWaitlistClaimLocationChange);
|
|
603
|
+
}
|
|
604
|
+
function getWaitlistClaimTokenFromUrl() {
|
|
605
|
+
if (typeof window === "undefined") return null;
|
|
606
|
+
const token = new URLSearchParams(window.location.search).get("waitlist_claim")?.trim() ?? "";
|
|
607
|
+
return token.length > 0 ? token : null;
|
|
608
|
+
}
|
|
609
|
+
const useWaitlistClaimDeps = { useBlockApi };
|
|
610
|
+
function subscribeToWaitlistClaimToken(callback) {
|
|
611
|
+
if (typeof window === "undefined") return () => {};
|
|
612
|
+
ensureWaitlistClaimLocationTracking();
|
|
613
|
+
window.addEventListener(WAITLIST_CLAIM_LOCATION_EVENT, callback);
|
|
614
|
+
return () => {
|
|
615
|
+
window.removeEventListener(WAITLIST_CLAIM_LOCATION_EVENT, callback);
|
|
616
|
+
};
|
|
617
|
+
}
|
|
618
|
+
function getWaitlistClaimTokenSnapshot() {
|
|
619
|
+
return getWaitlistClaimTokenFromUrl();
|
|
620
|
+
}
|
|
621
|
+
function useWaitlistClaim() {
|
|
622
|
+
return useWaitlistClaimWithDeps(useWaitlistClaimDeps);
|
|
623
|
+
}
|
|
624
|
+
function useWaitlistClaimWithDeps(deps) {
|
|
625
|
+
const api = deps.useBlockApi();
|
|
626
|
+
const token = useSyncExternalStore(subscribeToWaitlistClaimToken, getWaitlistClaimTokenSnapshot, () => null);
|
|
627
|
+
const [state, dispatch] = useReducer(waitlistClaimReducer, Boolean(token), createInitialWaitlistClaimState);
|
|
628
|
+
useEffect(() => {
|
|
629
|
+
let cancelled = false;
|
|
630
|
+
async function resolveClaim() {
|
|
631
|
+
if (!token) {
|
|
632
|
+
dispatch({ type: "cleared" });
|
|
633
|
+
return;
|
|
634
|
+
}
|
|
635
|
+
dispatch({ type: "started" });
|
|
636
|
+
try {
|
|
637
|
+
const result = await api.resolveWaitlistClaim({ claimToken: token });
|
|
638
|
+
if (cancelled) return;
|
|
639
|
+
dispatch({
|
|
640
|
+
type: "resolved",
|
|
641
|
+
claim: result
|
|
642
|
+
});
|
|
643
|
+
} catch (claimError) {
|
|
644
|
+
if (cancelled) return;
|
|
645
|
+
dispatch({
|
|
646
|
+
type: "failed",
|
|
647
|
+
failure: toWaitlistClaimResolveFailure(claimError)
|
|
648
|
+
});
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
resolveClaim();
|
|
652
|
+
return () => {
|
|
653
|
+
cancelled = true;
|
|
654
|
+
};
|
|
655
|
+
}, [api, token]);
|
|
656
|
+
return {
|
|
657
|
+
token,
|
|
658
|
+
claim: getWaitlistClaim(state),
|
|
659
|
+
error: getWaitlistClaimError(state),
|
|
660
|
+
loginMessage: getWaitlistClaimLoginMessage(state),
|
|
661
|
+
requiresPortalLogin: requiresWaitlistClaimPortalLogin(state),
|
|
662
|
+
isLoading: isWaitlistClaimLoading(state)
|
|
663
|
+
};
|
|
664
|
+
}
|
|
665
|
+
//#endregion
|
|
666
|
+
//#region ../blocks/src/system/runtime/shared/utils/portalLogout.ts
|
|
667
|
+
/**
|
|
668
|
+
* Portal Logout Utility
|
|
669
|
+
*
|
|
670
|
+
* Logout from the customer portal by POSTing to the logout endpoint.
|
|
671
|
+
* Uses a hidden form because the httpOnly cookie can only be cleared server-side.
|
|
672
|
+
*/
|
|
673
|
+
/**
|
|
674
|
+
* Logout from the customer portal.
|
|
675
|
+
*
|
|
676
|
+
* @param anchorId - The anchor ID to redirect back to after logout
|
|
677
|
+
*/
|
|
678
|
+
function logoutPortal(anchorId) {
|
|
679
|
+
const form = document.createElement("form");
|
|
680
|
+
form.method = "POST";
|
|
681
|
+
form.action = "/api/portal/logout";
|
|
682
|
+
const redirectInput = document.createElement("input");
|
|
683
|
+
redirectInput.type = "hidden";
|
|
684
|
+
redirectInput.name = "redirect_to";
|
|
685
|
+
redirectInput.value = `${window.location.pathname}#${anchorId}`;
|
|
686
|
+
form.appendChild(redirectInput);
|
|
687
|
+
document.body.appendChild(form);
|
|
688
|
+
form.submit();
|
|
689
|
+
}
|
|
690
|
+
//#endregion
|
|
493
691
|
//#region ../blocks/src/system/runtime/nodes/course-registration/pricing.ts
|
|
494
692
|
function parseCurrencyInputToCents(value) {
|
|
495
693
|
const trimmed = value.trim();
|
|
@@ -1373,6 +1571,126 @@ function BookingModeStep({ bookingMode, onBookingModeChange, eligibleMemberships
|
|
|
1373
1571
|
});
|
|
1374
1572
|
}
|
|
1375
1573
|
//#endregion
|
|
1574
|
+
//#region ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.ts
|
|
1575
|
+
const initialMagicLinkSubmissionState = Object.freeze({ tag: "idle" });
|
|
1576
|
+
function magicLinkSubmissionReducer(state, action) {
|
|
1577
|
+
switch (action.type) {
|
|
1578
|
+
case "submit-started":
|
|
1579
|
+
if (state.tag === "submitting") return state;
|
|
1580
|
+
return { tag: "submitting" };
|
|
1581
|
+
case "submit-succeeded":
|
|
1582
|
+
if (state.tag !== "submitting") return state;
|
|
1583
|
+
return { tag: "success" };
|
|
1584
|
+
case "submit-failed":
|
|
1585
|
+
if (state.tag !== "submitting") return state;
|
|
1586
|
+
return {
|
|
1587
|
+
tag: "error",
|
|
1588
|
+
message: action.message
|
|
1589
|
+
};
|
|
1590
|
+
case "reset": return initialMagicLinkSubmissionState;
|
|
1591
|
+
default: return assertNever$1(action);
|
|
1592
|
+
}
|
|
1593
|
+
}
|
|
1594
|
+
function isMagicLinkSubmitting(state) {
|
|
1595
|
+
return state.tag === "submitting";
|
|
1596
|
+
}
|
|
1597
|
+
function getMagicLinkError(state) {
|
|
1598
|
+
return state.tag === "error" ? state.message : null;
|
|
1599
|
+
}
|
|
1600
|
+
//#endregion
|
|
1601
|
+
//#region ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.tsx
|
|
1602
|
+
/**
|
|
1603
|
+
* Reusable magic link login form.
|
|
1604
|
+
* Used by Customer Portal and Event Registration blocks.
|
|
1605
|
+
*/
|
|
1606
|
+
function MagicLinkForm({ initialEmail = "", title, subtitle, buttonText = "Send login link", successMessage = "Check your email for a login link to sign in.", onSuccess, classPrefix = "er", compact = false }) {
|
|
1607
|
+
const api = useBlockApi();
|
|
1608
|
+
const [email, setEmail] = useState(initialEmail);
|
|
1609
|
+
const [submissionState, dispatchSubmission] = useReducer(magicLinkSubmissionReducer, initialMagicLinkSubmissionState);
|
|
1610
|
+
const loading = isMagicLinkSubmitting(submissionState);
|
|
1611
|
+
const error = getMagicLinkError(submissionState);
|
|
1612
|
+
const handleSubmit = async (e) => {
|
|
1613
|
+
e.preventDefault();
|
|
1614
|
+
const normalizedEmail = email.trim().toLowerCase();
|
|
1615
|
+
if (!normalizedEmail || loading) return;
|
|
1616
|
+
dispatchSubmission({ type: "submit-started" });
|
|
1617
|
+
try {
|
|
1618
|
+
const redirectTo = `${window.location.pathname}${window.location.search}${window.location.hash}`;
|
|
1619
|
+
await api.sendMagicLink({
|
|
1620
|
+
email: normalizedEmail,
|
|
1621
|
+
redirectUrl: `${window.location.origin}/api/portal/callback?redirect_to=${encodeURIComponent(redirectTo)}`
|
|
1622
|
+
});
|
|
1623
|
+
dispatchSubmission({ type: "submit-succeeded" });
|
|
1624
|
+
onSuccess?.();
|
|
1625
|
+
} catch (err) {
|
|
1626
|
+
console.error("Magic link error:", err);
|
|
1627
|
+
dispatchSubmission({
|
|
1628
|
+
type: "submit-failed",
|
|
1629
|
+
message: getMagicLinkErrorMessage(err)
|
|
1630
|
+
});
|
|
1631
|
+
}
|
|
1632
|
+
};
|
|
1633
|
+
const handleReset = () => {
|
|
1634
|
+
setEmail("");
|
|
1635
|
+
dispatchSubmission({ type: "reset" });
|
|
1636
|
+
};
|
|
1637
|
+
if (submissionState.tag === "success") return /* @__PURE__ */ jsxs("div", {
|
|
1638
|
+
className: `${classPrefix}-magic-link-success`,
|
|
1639
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
1640
|
+
className: `${classPrefix}-portal-auth-text ${classPrefix}-portal-auth-text--success`,
|
|
1641
|
+
children: successMessage
|
|
1642
|
+
}), !compact && /* @__PURE__ */ jsx("button", {
|
|
1643
|
+
type: "button",
|
|
1644
|
+
className: classPrefix === "cp" ? themeButtonClassName({
|
|
1645
|
+
variant: "secondary",
|
|
1646
|
+
size: "md"
|
|
1647
|
+
}) : `${classPrefix}-modal-btn ${classPrefix}-modal-btn--secondary`,
|
|
1648
|
+
onClick: handleReset,
|
|
1649
|
+
children: "Try a different email"
|
|
1650
|
+
})]
|
|
1651
|
+
});
|
|
1652
|
+
return /* @__PURE__ */ jsxs("form", {
|
|
1653
|
+
onSubmit: handleSubmit,
|
|
1654
|
+
className: `${classPrefix}-magic-link-form`,
|
|
1655
|
+
children: [
|
|
1656
|
+
title && /* @__PURE__ */ jsx("h3", {
|
|
1657
|
+
className: `${classPrefix}-magic-link-title`,
|
|
1658
|
+
children: title
|
|
1659
|
+
}),
|
|
1660
|
+
subtitle && /* @__PURE__ */ jsx("p", {
|
|
1661
|
+
className: `${classPrefix}-portal-auth-text`,
|
|
1662
|
+
children: subtitle
|
|
1663
|
+
}),
|
|
1664
|
+
/* @__PURE__ */ jsx("input", {
|
|
1665
|
+
type: "email",
|
|
1666
|
+
className: classPrefix === "cp" ? "cp-input" : `${classPrefix}-form__input`,
|
|
1667
|
+
placeholder: "your@email.com",
|
|
1668
|
+
value: email,
|
|
1669
|
+
onChange: (e) => setEmail(e.target.value),
|
|
1670
|
+
autoFocus: !compact,
|
|
1671
|
+
required: true,
|
|
1672
|
+
disabled: loading
|
|
1673
|
+
}),
|
|
1674
|
+
error && /* @__PURE__ */ jsx("p", {
|
|
1675
|
+
className: `${classPrefix}-portal-auth-text ${classPrefix}-portal-auth-text--error`,
|
|
1676
|
+
children: error
|
|
1677
|
+
}),
|
|
1678
|
+
/* @__PURE__ */ jsx("button", {
|
|
1679
|
+
type: "submit",
|
|
1680
|
+
className: classPrefix === "cp" ? themeButtonClassName({
|
|
1681
|
+
variant: "primary",
|
|
1682
|
+
size: "md"
|
|
1683
|
+
}) : `${classPrefix}-modal-btn`,
|
|
1684
|
+
disabled: !email.trim() || loading,
|
|
1685
|
+
children: loading ? "Sending..." : buttonText
|
|
1686
|
+
})
|
|
1687
|
+
]
|
|
1688
|
+
});
|
|
1689
|
+
}
|
|
1690
|
+
function getMagicLinkErrorMessage(error) {
|
|
1691
|
+
return error instanceof Error ? error.message : "Failed to send. Please try again.";
|
|
1692
|
+
}
|
|
1693
|
+
//#endregion
|
|
1376
1694
|
//#region ../blocks/src/system/runtime/nodes/course-registration/PortalAuthSidebar.tsx
|
|
1377
1695
|
/**
|
|
1378
1696
|
* Portal authentication sidebar.
|
|
@@ -2012,42 +2330,4 @@ function CourseRegistrationWizard(props) {
|
|
|
2012
2330
|
});
|
|
2013
2331
|
}
|
|
2014
2332
|
//#endregion
|
|
2015
|
-
|
|
2016
|
-
function toCourseRegistrationClientProps(props) {
|
|
2017
|
-
return {
|
|
2018
|
-
...props.render.hydration,
|
|
2019
|
-
buttonText: props.render.display.summaryButtonText,
|
|
2020
|
-
className: props.render.display.className ?? void 0
|
|
2021
|
-
};
|
|
2022
|
-
}
|
|
2023
|
-
function CourseRegistrationClient(props) {
|
|
2024
|
-
return /* @__PURE__ */ jsx(CourseRegistrationErrorBoundary, {
|
|
2025
|
-
className: props.className,
|
|
2026
|
-
children: /* @__PURE__ */ jsx(CourseRegistrationWizard, { ...props })
|
|
2027
|
-
});
|
|
2028
|
-
}
|
|
2029
|
-
function CourseRegistrationIslandClient(props) {
|
|
2030
|
-
return /* @__PURE__ */ jsx(CourseRegistrationClient, { ...toCourseRegistrationClientProps(props) });
|
|
2031
|
-
}
|
|
2032
|
-
//#endregion
|
|
2033
|
-
//#region src/rendering/islands/enhancers/courseRegistration.tsx
|
|
2034
|
-
const decode = defineIslandPropsDecoder("course-registration");
|
|
2035
|
-
const enhance = (root, props) => {
|
|
2036
|
-
const { siteId, apiBaseUrl, stage, portalToken } = props;
|
|
2037
|
-
if (!siteId) throw new Error("[sdk:islands] course-registration requires siteId");
|
|
2038
|
-
if (!apiBaseUrl) throw new Error("[sdk:islands] course-registration requires apiBaseUrl");
|
|
2039
|
-
const apiConfig = buildRouteIslandApiConfig({
|
|
2040
|
-
apiBaseUrl,
|
|
2041
|
-
portalToken,
|
|
2042
|
-
siteId,
|
|
2043
|
-
stage
|
|
2044
|
-
});
|
|
2045
|
-
return mountReactIsland(root, ({ root: reactRoot }) => {
|
|
2046
|
-
reactRoot.render(/* @__PURE__ */ jsx(BlockApiProvider, {
|
|
2047
|
-
config: apiConfig,
|
|
2048
|
-
children: /* @__PURE__ */ jsx(CourseRegistrationIslandClient, { ...props })
|
|
2049
|
-
}));
|
|
2050
|
-
});
|
|
2051
|
-
};
|
|
2052
|
-
//#endregion
|
|
2053
|
-
export { decode, enhance };
|
|
2333
|
+
export { LoggedInAsUser as a, useWaitlistClaim as i, MagicLinkForm as n, CourseRegistrationErrorBoundary as o, logoutPortal as r, ClockIcon as s, CourseRegistrationWizard as t };
|
package/dist/client/{DiscountCodeDisclosure-BDFRp8Y7.mjs → DiscountCodeDisclosure-B9vriL5C.mjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { X as themeButtonClassName } from "./propsDecoder-
|
|
2
|
+
import { X as themeButtonClassName } from "./propsDecoder-CiTuhUwY.mjs";
|
|
3
3
|
import { useId } from "react";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
//#region ../blocks/src/system/runtime/api/types/discounts.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as clsx } from "./clsx-DgIEfj3H.mjs";
|
|
3
|
-
import { A as formatDate, E as getEventRuntimeFiltersKey, F as formatEventTeacherLine, I as formatTime, L as getCardOrientation, N as formatEventPrice, R as getContainerClass, T as buildEventRuntimeFilters, U as getEventAvailability, V as resolveEventLinkProps, X as themeButtonClassName, yt as assertNever, z as groupEventsByDate } from "./propsDecoder-
|
|
4
|
-
import { a as EventCardClient, i as EventPaginatedListView, n as useEventPagination, o as EventFilters, r as toError, t as useEventFilters } from "./useEventFilters-
|
|
3
|
+
import { A as formatDate, E as getEventRuntimeFiltersKey, F as formatEventTeacherLine, I as formatTime, L as getCardOrientation, N as formatEventPrice, R as getContainerClass, T as buildEventRuntimeFilters, U as getEventAvailability, V as resolveEventLinkProps, X as themeButtonClassName, yt as assertNever, z as groupEventsByDate } from "./propsDecoder-CiTuhUwY.mjs";
|
|
4
|
+
import { a as EventCardClient, i as EventPaginatedListView, n as useEventPagination, o as EventFilters, r as toError, t as useEventFilters } from "./useEventFilters-QZ3HMgaJ.mjs";
|
|
5
5
|
import { n as useBlockApi } from "./context-CJz1Vlsz.mjs";
|
|
6
6
|
import { t as createBodyThemePortalRoot } from "./themePortalRoot-AGs4cE7t.mjs";
|
|
7
7
|
import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { T as buildEventRuntimeFilters } from "./propsDecoder-
|
|
3
|
-
import { i as EventPaginatedListView, n as useEventPagination, o as EventFilters, t as useEventFilters } from "./useEventFilters-
|
|
2
|
+
import { T as buildEventRuntimeFilters } from "./propsDecoder-CiTuhUwY.mjs";
|
|
3
|
+
import { i as EventPaginatedListView, n as useEventPagination, o as EventFilters, t as useEventFilters } from "./useEventFilters-QZ3HMgaJ.mjs";
|
|
4
4
|
import { useId, useMemo } from "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region ../blocks/src/system/runtime/nodes/events/EventListing.client.tsx
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { J as isRecord } from "./propsDecoder-
|
|
2
|
+
import { J as isRecord } from "./propsDecoder-CiTuhUwY.mjs";
|
|
3
3
|
import { useEffect, useRef, useState } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
//#region ../blocks/src/system/runtime/nodes/shared/LeafletStaticMap.tsx
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as clsx } from "./clsx-DgIEfj3H.mjs";
|
|
2
|
-
import { Wt as formatCurrencyAmount } from "./propsDecoder-
|
|
3
|
-
import { a as CheckIcon } from "./scrollToBlock-
|
|
2
|
+
import { Wt as formatCurrencyAmount } from "./propsDecoder-CiTuhUwY.mjs";
|
|
3
|
+
import { a as CheckIcon } from "./scrollToBlock-CShkRqab.mjs";
|
|
4
4
|
import "react";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
//#region ../blocks/src/system/runtime/shared/utils/formatting.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
1
|
+
import { t as defineIslandPropsDecoder } from "./propsDecoder-CiTuhUwY.mjs";
|
|
2
2
|
//#region src/rendering/islands/enhancers/accordion.ts
|
|
3
3
|
const decode = defineIslandPropsDecoder("accordion");
|
|
4
4
|
function parseDefaultValues(value) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { d as unsafeAsAppointmentResourceId, f as unsafeAsAppointmentServiceId, g as unsafeAsPassId, m as unsafeAsFormId, p as unsafeAsCustomerPassId } from "./colorStyles-BWpj_h4C.mjs";
|
|
3
|
-
import { n as buildBookingPaymentSelectionViewModel, t as usePolling } from "./usePolling-
|
|
4
|
-
import { Ct as okWith, Et as addLocalScheduleDays, Nt as parseBookingLocalDate, Pt as resolveBookingTimeZoneId, Tt as reportWorkflowSuccess, Wt as formatCurrencyAmount, X as themeButtonClassName, _t as toSelectedCollectionOptionKind, at as formatBookingCentsAsCurrencyInput, bt as clearWorkflowFeedback, ct as getBookingServiceSlidingScale, dt as parseBookingCurrencyInputToCents, ft as prepareBookingSubmission, gt as resolveDefaultBookingServiceId, ht as resolveBookingSiteId, it as deriveBookingFormViewState, jt as formatLocalScheduleDate, kt as formatBookingInstant, lt as getBookingSuccessMessage, mt as resolveBookingPaymentStep, ot as formatBookingSubmissionPreparationError, pt as resolveAppointmentCheckoutVerificationState, rt as logger, st as getBookingRedirectStateFromLocation, t as defineIslandPropsDecoder, ut as isBookingServiceSlidingAmountInRange, vt as BOOKING_FORM_DATA_RESERVED_KEYS, wt as reportWorkflowError, xt as err, yt as assertNever } from "./propsDecoder-
|
|
3
|
+
import { n as buildBookingPaymentSelectionViewModel, t as usePolling } from "./usePolling-BKf0GcE-.mjs";
|
|
4
|
+
import { Ct as okWith, Et as addLocalScheduleDays, Nt as parseBookingLocalDate, Pt as resolveBookingTimeZoneId, Tt as reportWorkflowSuccess, Wt as formatCurrencyAmount, X as themeButtonClassName, _t as toSelectedCollectionOptionKind, at as formatBookingCentsAsCurrencyInput, bt as clearWorkflowFeedback, ct as getBookingServiceSlidingScale, dt as parseBookingCurrencyInputToCents, ft as prepareBookingSubmission, gt as resolveDefaultBookingServiceId, ht as resolveBookingSiteId, it as deriveBookingFormViewState, jt as formatLocalScheduleDate, kt as formatBookingInstant, lt as getBookingSuccessMessage, mt as resolveBookingPaymentStep, ot as formatBookingSubmissionPreparationError, pt as resolveAppointmentCheckoutVerificationState, rt as logger, st as getBookingRedirectStateFromLocation, t as defineIslandPropsDecoder, ut as isBookingServiceSlidingAmountInRange, vt as BOOKING_FORM_DATA_RESERVED_KEYS, wt as reportWorkflowError, xt as err, yt as assertNever } from "./propsDecoder-CiTuhUwY.mjs";
|
|
5
5
|
import { n as useBlockApi, t as BlockApiProvider } from "./context-CJz1Vlsz.mjs";
|
|
6
6
|
import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
|
|
7
|
-
import { a as CheckIcon, i as StateIcon, n as useDiscountCodeUi, r as TerminalPanel, t as scrollToBlock } from "./scrollToBlock-
|
|
8
|
-
import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-
|
|
9
|
-
import { n as SpinnerNode, t as StepIndicator } from "./StepIndicator-
|
|
7
|
+
import { a as CheckIcon, i as StateIcon, n as useDiscountCodeUi, r as TerminalPanel, t as scrollToBlock } from "./scrollToBlock-CShkRqab.mjs";
|
|
8
|
+
import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-B9vriL5C.mjs";
|
|
9
|
+
import { n as SpinnerNode, t as StepIndicator } from "./StepIndicator-DGCYuBJ1.mjs";
|
|
10
10
|
import { t as FeedbackMessage } from "./FeedbackMessage-ByMrs3cr.mjs";
|
|
11
11
|
import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
|
|
12
12
|
import { t as buildCheckoutReturnUrls } from "./checkoutUrls-Ct8Mxna3.mjs";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
1
|
+
import { t as defineIslandPropsDecoder } from "./propsDecoder-CiTuhUwY.mjs";
|
|
2
2
|
import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
|
|
3
3
|
import { n as normalizeCarouselProps, t as CarouselNodeClient } from "./carousel.client-CpwTUhIo.mjs";
|
|
4
4
|
import "react";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
2
|
-
import { t as CartController } from "./shop-commerce-
|
|
3
|
-
import { t as mountShopBlockIsland } from "./shopShared-
|
|
1
|
+
import { t as defineIslandPropsDecoder } from "./propsDecoder-CiTuhUwY.mjs";
|
|
2
|
+
import { t as CartController } from "./shop-commerce-BzpsOdh7.mjs";
|
|
3
|
+
import { t as mountShopBlockIsland } from "./shopShared-cF0c20vB.mjs";
|
|
4
4
|
import "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region ../blocks/src/system/runtime/nodes/cart.client.tsx
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
2
|
-
import { n as CheckoutController } from "./shop-commerce-
|
|
3
|
-
import { t as mountShopBlockIsland } from "./shopShared-
|
|
1
|
+
import { t as defineIslandPropsDecoder } from "./propsDecoder-CiTuhUwY.mjs";
|
|
2
|
+
import { n as CheckoutController } from "./shop-commerce-BzpsOdh7.mjs";
|
|
3
|
+
import { t as mountShopBlockIsland } from "./shopShared-cF0c20vB.mjs";
|
|
4
4
|
import "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region ../blocks/src/system/runtime/nodes/checkout.client.tsx
|