@riverbankcms/sdk 0.88.0 → 0.89.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.
- package/dist/{PreviewEditorSidebar-EVRS3C7T.mjs → PreviewEditorSidebar-JDR64FEC.mjs} +3 -3
- package/dist/{PreviewEditorUI-54WD4IGE.mjs → PreviewEditorUI-67TMJMAF.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-ZBEMRV7N.mjs +8 -0
- package/dist/_dts/api/src/accessAdmin.d.ts +7 -0
- package/dist/_dts/api/src/endpoints.d.ts +8 -0
- package/dist/_dts/api/src/index.d.ts +2 -2
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +5 -1
- package/dist/_dts/api/src/siteMembers.d.ts +6 -1
- package/dist/_dts/api/src/types.d.ts +1 -1
- package/dist/_dts/blocks/src/system/icons/cta.d.ts +3 -3
- package/dist/_dts/blocks/src/system/icons/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/icons/registry.d.ts +2 -2
- package/dist/_dts/blocks/src/system/icons/semantic.d.ts +3 -3
- package/dist/_dts/blocks/src/system/icons/svg.d.ts +72 -0
- package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/loadStateError.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.state.d.ts +55 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.state.d.ts +39 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFormConfig.d.ts +4 -27
- package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFormConfig.state.d.ts +40 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +20 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.state.d.ts +31 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.state.d.ts +39 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventPaginatedListView.client.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +24 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +24 -0
- package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.state.d.ts +35 -0
- package/dist/_dts/content-model/src/entry-slots/types.d.ts +54 -0
- package/dist/_dts/core/src/branded.d.ts +7 -0
- package/dist/_dts/core/src/index.d.ts +1 -0
- package/dist/_dts/core/src/site-route-target.d.ts +40 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +159 -2
- package/dist/_dts/media-core/src/fileDomain.d.ts +4 -0
- package/dist/_dts/sdk/src/client/runtimeCachePolicy.d.ts +160 -0
- package/dist/_dts/sdk/src/client/types.d.ts +26 -1
- package/dist/_dts/sdk/src/index.d.ts +3 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/{chunk-YDMBIIS5.mjs → chunk-7N46MZHI.mjs} +1 -1
- package/dist/{chunk-7KOO7RPP.mjs → chunk-7YUAXONX.mjs} +1007 -353
- package/dist/{chunk-O4LVYUVH.mjs → chunk-F645A5UV.mjs} +18 -0
- package/dist/{chunk-ER4UIW4X.mjs → chunk-HKJQERFR.mjs} +7 -7
- package/dist/{chunk-K3JWH6HE.mjs → chunk-TGBJWKMP.mjs} +1 -1
- package/dist/{chunk-HVOBXA3Y.mjs → chunk-ZQRBLCW5.mjs} +2 -2
- package/dist/cli/index.mjs +668 -18
- package/dist/client/{accordion-PT5CGW5N.mjs → accordion-MUCVNGQ7.mjs} +2 -2
- package/dist/client/{bookingForm-2HLRTEYS.mjs → bookingForm-PKD6EFIE.mjs} +192 -76
- package/dist/client/bookings.mjs +436 -191
- package/dist/client/{carousel-Z2LKYSWA.mjs → carousel-3TKQSNJC.mjs} +4 -3
- package/dist/client/{cart-ND5IK4A6.mjs → cart-6XHSZK23.mjs} +8 -7
- package/dist/client/{checkout-EYUSGAY7.mjs → checkout-FVSPM6FI.mjs} +8 -7
- package/dist/client/chunk-6N7YRNYU.mjs +183 -0
- package/dist/client/{chunk-O5JNI3E4.mjs → chunk-7DH35FGA.mjs} +2 -2
- package/dist/client/{chunk-BAWHZ5GM.mjs → chunk-CQKKFEQD.mjs} +195 -61
- package/dist/client/{chunk-X7GVFB7Y.mjs → chunk-EY42X22F.mjs} +3 -3
- package/dist/client/{chunk-6DVPO44G.mjs → chunk-FHU6PFPM.mjs} +1 -1
- package/dist/client/{chunk-H4MHEXYS.mjs → chunk-LQFDYWPJ.mjs} +1 -1
- package/dist/client/{chunk-MHBEWDT7.mjs → chunk-RSQWWUAD.mjs} +122 -50
- package/dist/client/{chunk-GOFO7HRH.mjs → chunk-STJ2NCQM.mjs} +1 -1
- package/dist/client/{chunk-DIRW2LNG.mjs → chunk-UQFY4AHX.mjs} +272 -198
- package/dist/client/{chunk-WCVK4MBJ.mjs → chunk-VGLXACVK.mjs} +1 -1
- package/dist/client/{chunk-BL66UWGD.mjs → chunk-ZJZZA5EP.mjs} +6 -6
- package/dist/client/{chunk-S4G65LGR.mjs → chunk-ZT5XE7FK.mjs} +1 -1
- package/dist/client/client.mjs +3823 -3507
- package/dist/client/{courseRegistration-H3AZBUEG.mjs → courseRegistration-ATZSYDHM.mjs} +6 -6
- package/dist/client/{eventCalendar-FPKJGLGS.mjs → eventCalendar-6T2UGKKP.mjs} +10 -9
- package/dist/client/{eventCombined-QCGIZBUY.mjs → eventCombined-Q4VANXVF.mjs} +10 -9
- package/dist/client/{eventDetails-HIT3BJWU.mjs → eventDetails-DW37E7VW.mjs} +10 -9
- package/dist/client/{eventListing-R4HNWJDN.mjs → eventListing-XURTSAUW.mjs} +10 -9
- package/dist/client/{eventRegistration-Q7BYY5HF.mjs → eventRegistration-MRKEVAXW.mjs} +10 -9
- package/dist/client/{form-NI6YOG6S.mjs → form-WZZFFGMU.mjs} +3 -3
- package/dist/client/{headerSection-SDYGII36.mjs → headerSection-EQYVQBLM.mjs} +3 -3
- package/dist/client/hooks.mjs +18 -0
- package/dist/client/{locationMap-BDETEUQD.mjs → locationMap-MFF5VAZR.mjs} +3 -3
- package/dist/client/{newsletterForm-EKYIU67X.mjs → newsletterForm-JQ77UYIE.mjs} +60 -24
- package/dist/client/{productDetail-5UTGNN76.mjs → productDetail-25LMT3IZ.mjs} +8 -7
- package/dist/client/{productList-7YA5KXZQ.mjs → productList-5ABEMKUG.mjs} +8 -7
- package/dist/client/rendering/client.mjs +3266 -3528
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +3143 -3452
- package/dist/client/{shop-AIMUMZYC.mjs → shop-OMMQZ6YO.mjs} +8 -7
- package/dist/preview-next/before-render.mjs +18 -0
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/preview-next/middleware.mjs +18 -0
- package/dist/{sdk-runtime-NW472WNT.mjs → sdk-runtime-WNLBZ3ZH.mjs} +6 -6
- package/dist/server/components.mjs +1068 -1540
- package/dist/server/config-validation.mjs +18 -0
- package/dist/server/config.mjs +18 -0
- package/dist/server/data.mjs +18 -0
- package/dist/server/index.mjs +847 -261
- package/dist/server/next.mjs +1708 -1555
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1068 -1540
- package/dist/server/rendering.mjs +1074 -1546
- package/dist/server/routing.mjs +314 -9
- package/dist/server/server.mjs +668 -25
- package/dist/server/theme-bridge.mjs +26 -0
- package/dist/styles/index.css +26 -0
- package/package.json +2 -1
- package/dist/SdkPreviewModeRuntime-ZALZDJEK.mjs +0 -8
- /package/dist/client/{chunk-LI2C6M5O.mjs → chunk-25W2EQUN.mjs} +0 -0
|
@@ -1,10 +1,46 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useBlockApi
|
|
3
|
-
import { themeButtonClassName } from './chunk-
|
|
4
|
-
import { resolvePlanningDateInput, formatBookingPriceDisplay } from './chunk-
|
|
5
|
-
import { useState, useSyncExternalStore, useEffect } from 'react';
|
|
2
|
+
import { useBlockApi } from './chunk-STJ2NCQM.mjs';
|
|
3
|
+
import { themeButtonClassName, assertNever11 } from './chunk-UQFY4AHX.mjs';
|
|
4
|
+
import { resolvePlanningDateInput, formatBookingPriceDisplay } from './chunk-25W2EQUN.mjs';
|
|
5
|
+
import { useState, useReducer, useSyncExternalStore, useEffect } from 'react';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
|
+
// ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.ts
|
|
9
|
+
var initialMagicLinkSubmissionState = Object.freeze({
|
|
10
|
+
tag: "idle"
|
|
11
|
+
});
|
|
12
|
+
function magicLinkSubmissionReducer(state, action) {
|
|
13
|
+
switch (action.type) {
|
|
14
|
+
case "submit-started":
|
|
15
|
+
if (state.tag === "submitting") {
|
|
16
|
+
return state;
|
|
17
|
+
}
|
|
18
|
+
return { tag: "submitting" };
|
|
19
|
+
case "submit-succeeded":
|
|
20
|
+
if (state.tag !== "submitting") {
|
|
21
|
+
return state;
|
|
22
|
+
}
|
|
23
|
+
return { tag: "success" };
|
|
24
|
+
case "submit-failed":
|
|
25
|
+
if (state.tag !== "submitting") {
|
|
26
|
+
return state;
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
tag: "error",
|
|
30
|
+
message: action.message
|
|
31
|
+
};
|
|
32
|
+
case "reset":
|
|
33
|
+
return initialMagicLinkSubmissionState;
|
|
34
|
+
default:
|
|
35
|
+
return assertNever11(action);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function isMagicLinkSubmitting(state) {
|
|
39
|
+
return state.tag === "submitting";
|
|
40
|
+
}
|
|
41
|
+
function getMagicLinkError(state) {
|
|
42
|
+
return state.tag === "error" ? state.message : null;
|
|
43
|
+
}
|
|
8
44
|
function MagicLinkForm({
|
|
9
45
|
initialEmail = "",
|
|
10
46
|
title,
|
|
@@ -17,36 +53,38 @@ function MagicLinkForm({
|
|
|
17
53
|
}) {
|
|
18
54
|
const api = useBlockApi();
|
|
19
55
|
const [email, setEmail] = useState(initialEmail);
|
|
20
|
-
const [
|
|
21
|
-
|
|
22
|
-
|
|
56
|
+
const [submissionState, dispatchSubmission] = useReducer(
|
|
57
|
+
magicLinkSubmissionReducer,
|
|
58
|
+
initialMagicLinkSubmissionState
|
|
59
|
+
);
|
|
60
|
+
const loading = isMagicLinkSubmitting(submissionState);
|
|
61
|
+
const error = getMagicLinkError(submissionState);
|
|
23
62
|
const handleSubmit = async (e) => {
|
|
24
63
|
e.preventDefault();
|
|
25
64
|
const normalizedEmail = email.trim().toLowerCase();
|
|
26
65
|
if (!normalizedEmail || loading) return;
|
|
27
|
-
|
|
28
|
-
setError(null);
|
|
66
|
+
dispatchSubmission({ type: "submit-started" });
|
|
29
67
|
try {
|
|
30
68
|
const redirectTo = `${window.location.pathname}${window.location.search}${window.location.hash}`;
|
|
31
69
|
await api.sendMagicLink({
|
|
32
70
|
email: normalizedEmail,
|
|
33
71
|
redirectUrl: `${window.location.origin}/api/portal/callback?redirect_to=${encodeURIComponent(redirectTo)}`
|
|
34
72
|
});
|
|
35
|
-
|
|
73
|
+
dispatchSubmission({ type: "submit-succeeded" });
|
|
36
74
|
onSuccess?.();
|
|
37
75
|
} catch (err) {
|
|
38
76
|
console.error("Magic link error:", err);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
77
|
+
dispatchSubmission({
|
|
78
|
+
type: "submit-failed",
|
|
79
|
+
message: getMagicLinkErrorMessage(err)
|
|
80
|
+
});
|
|
42
81
|
}
|
|
43
82
|
};
|
|
44
83
|
const handleReset = () => {
|
|
45
|
-
setSuccess(false);
|
|
46
84
|
setEmail("");
|
|
47
|
-
|
|
85
|
+
dispatchSubmission({ type: "reset" });
|
|
48
86
|
};
|
|
49
|
-
if (success) {
|
|
87
|
+
if (submissionState.tag === "success") {
|
|
50
88
|
return /* @__PURE__ */ jsxs("div", { className: `${classPrefix}-magic-link-success`, children: [
|
|
51
89
|
/* @__PURE__ */ jsx("p", { className: `${classPrefix}-portal-auth-text ${classPrefix}-portal-auth-text--success`, children: successMessage }),
|
|
52
90
|
!compact && /* @__PURE__ */ jsx(
|
|
@@ -88,6 +126,9 @@ function MagicLinkForm({
|
|
|
88
126
|
)
|
|
89
127
|
] });
|
|
90
128
|
}
|
|
129
|
+
function getMagicLinkErrorMessage(error) {
|
|
130
|
+
return error instanceof Error ? error.message : "Failed to send. Please try again.";
|
|
131
|
+
}
|
|
91
132
|
|
|
92
133
|
// ../blocks/src/system/blocks/courses/shared/pricing.ts
|
|
93
134
|
function isSaleWindowOpen(option, now) {
|
|
@@ -201,6 +242,54 @@ function formatCoursePriceAmount(amount, currency, locale) {
|
|
|
201
242
|
locale
|
|
202
243
|
);
|
|
203
244
|
}
|
|
245
|
+
|
|
246
|
+
// ../blocks/src/system/runtime/shared/useWaitlistClaim.state.ts
|
|
247
|
+
var DEFAULT_WAITLIST_CLAIM_ERROR = "Failed to resolve waitlist claim";
|
|
248
|
+
function createInitialWaitlistClaimState(hasToken) {
|
|
249
|
+
return hasToken ? { kind: "resolving" } : { kind: "idle" };
|
|
250
|
+
}
|
|
251
|
+
function waitlistClaimReducer(_state, action) {
|
|
252
|
+
switch (action.type) {
|
|
253
|
+
case "cleared":
|
|
254
|
+
return { kind: "idle" };
|
|
255
|
+
case "started":
|
|
256
|
+
return { kind: "resolving" };
|
|
257
|
+
case "resolved":
|
|
258
|
+
return { kind: "resolved", claim: action.claim };
|
|
259
|
+
case "failed":
|
|
260
|
+
return action.failure;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
function toWaitlistClaimResolveFailure(error) {
|
|
264
|
+
const message = error instanceof Error ? error.message : DEFAULT_WAITLIST_CLAIM_ERROR;
|
|
265
|
+
if (isUnauthorizedBlockApiError(error)) {
|
|
266
|
+
return { kind: "portal-login-required", message };
|
|
267
|
+
}
|
|
268
|
+
return { kind: "error", message };
|
|
269
|
+
}
|
|
270
|
+
function isUnauthorizedBlockApiError(error) {
|
|
271
|
+
return error instanceof Error && error.name === "BlockApiError" && hasStatus(error) && error.status === 401;
|
|
272
|
+
}
|
|
273
|
+
function hasStatus(value) {
|
|
274
|
+
return typeof value === "object" && value !== null && "status" in value;
|
|
275
|
+
}
|
|
276
|
+
function getWaitlistClaim(state) {
|
|
277
|
+
return state.kind === "resolved" ? state.claim : null;
|
|
278
|
+
}
|
|
279
|
+
function getWaitlistClaimError(state) {
|
|
280
|
+
return state.kind === "error" ? state.message : null;
|
|
281
|
+
}
|
|
282
|
+
function getWaitlistClaimLoginMessage(state) {
|
|
283
|
+
return state.kind === "portal-login-required" ? state.message : null;
|
|
284
|
+
}
|
|
285
|
+
function requiresWaitlistClaimPortalLogin(state) {
|
|
286
|
+
return state.kind === "portal-login-required";
|
|
287
|
+
}
|
|
288
|
+
function isWaitlistClaimLoading(state) {
|
|
289
|
+
return state.kind === "resolving";
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// ../blocks/src/system/runtime/shared/useWaitlistClaim.ts
|
|
204
293
|
var WAITLIST_CLAIM_LOCATION_EVENT = "riverbank:waitlist-claim-location-change";
|
|
205
294
|
var historyPatched = false;
|
|
206
295
|
function emitWaitlistClaimLocationChange() {
|
|
@@ -258,46 +347,29 @@ function useWaitlistClaim() {
|
|
|
258
347
|
getWaitlistClaimTokenSnapshot,
|
|
259
348
|
() => null
|
|
260
349
|
);
|
|
261
|
-
const [
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
350
|
+
const [state, dispatch] = useReducer(
|
|
351
|
+
waitlistClaimReducer,
|
|
352
|
+
Boolean(token),
|
|
353
|
+
createInitialWaitlistClaimState
|
|
354
|
+
);
|
|
266
355
|
useEffect(() => {
|
|
267
356
|
let cancelled = false;
|
|
268
357
|
async function resolveClaim() {
|
|
269
358
|
if (!token) {
|
|
270
|
-
|
|
271
|
-
setError(null);
|
|
272
|
-
setLoginMessage(null);
|
|
273
|
-
setRequiresPortalLogin(false);
|
|
274
|
-
setIsLoading(false);
|
|
359
|
+
dispatch({ type: "cleared" });
|
|
275
360
|
return;
|
|
276
361
|
}
|
|
277
|
-
|
|
278
|
-
setClaim(null);
|
|
279
|
-
setError(null);
|
|
280
|
-
setLoginMessage(null);
|
|
281
|
-
setRequiresPortalLogin(false);
|
|
362
|
+
dispatch({ type: "started" });
|
|
282
363
|
try {
|
|
283
364
|
const result = await api.resolveWaitlistClaim({ claimToken: token });
|
|
284
365
|
if (cancelled) return;
|
|
285
|
-
|
|
366
|
+
dispatch({ type: "resolved", claim: result });
|
|
286
367
|
} catch (claimError) {
|
|
287
368
|
if (cancelled) return;
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
setLoginMessage(message);
|
|
293
|
-
setError(null);
|
|
294
|
-
} else {
|
|
295
|
-
setError(message);
|
|
296
|
-
}
|
|
297
|
-
} finally {
|
|
298
|
-
if (!cancelled) {
|
|
299
|
-
setIsLoading(false);
|
|
300
|
-
}
|
|
369
|
+
dispatch({
|
|
370
|
+
type: "failed",
|
|
371
|
+
failure: toWaitlistClaimResolveFailure(claimError)
|
|
372
|
+
});
|
|
301
373
|
}
|
|
302
374
|
}
|
|
303
375
|
void resolveClaim();
|
|
@@ -307,11 +379,11 @@ function useWaitlistClaim() {
|
|
|
307
379
|
}, [api, token]);
|
|
308
380
|
return {
|
|
309
381
|
token,
|
|
310
|
-
claim,
|
|
311
|
-
error,
|
|
312
|
-
loginMessage,
|
|
313
|
-
requiresPortalLogin,
|
|
314
|
-
isLoading
|
|
382
|
+
claim: getWaitlistClaim(state),
|
|
383
|
+
error: getWaitlistClaimError(state),
|
|
384
|
+
loginMessage: getWaitlistClaimLoginMessage(state),
|
|
385
|
+
requiresPortalLogin: requiresWaitlistClaimPortalLogin(state),
|
|
386
|
+
isLoading: isWaitlistClaimLoading(state)
|
|
315
387
|
};
|
|
316
388
|
}
|
|
317
389
|
|