@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.
Files changed (103) hide show
  1. package/dist/{PreviewEditorSidebar-EVRS3C7T.mjs → PreviewEditorSidebar-JDR64FEC.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-54WD4IGE.mjs → PreviewEditorUI-67TMJMAF.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-ZBEMRV7N.mjs +8 -0
  4. package/dist/_dts/api/src/accessAdmin.d.ts +7 -0
  5. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  6. package/dist/_dts/api/src/index.d.ts +2 -2
  7. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +5 -1
  8. package/dist/_dts/api/src/siteMembers.d.ts +6 -1
  9. package/dist/_dts/api/src/types.d.ts +1 -1
  10. package/dist/_dts/blocks/src/system/icons/cta.d.ts +3 -3
  11. package/dist/_dts/blocks/src/system/icons/index.d.ts +1 -0
  12. package/dist/_dts/blocks/src/system/icons/registry.d.ts +2 -2
  13. package/dist/_dts/blocks/src/system/icons/semantic.d.ts +3 -3
  14. package/dist/_dts/blocks/src/system/icons/svg.d.ts +72 -0
  15. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +1 -0
  16. package/dist/_dts/blocks/src/system/runtime/hooks/loadStateError.d.ts +1 -0
  17. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.d.ts +1 -1
  18. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.state.d.ts +55 -0
  19. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.state.d.ts +39 -0
  20. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFormConfig.d.ts +4 -27
  21. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFormConfig.state.d.ts +40 -0
  22. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +20 -0
  23. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.state.d.ts +31 -0
  24. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.d.ts +3 -3
  25. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.state.d.ts +39 -0
  26. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventPaginatedListView.client.d.ts +1 -1
  27. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +24 -2
  28. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +24 -0
  29. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.state.d.ts +35 -0
  30. package/dist/_dts/content-model/src/entry-slots/types.d.ts +54 -0
  31. package/dist/_dts/core/src/branded.d.ts +7 -0
  32. package/dist/_dts/core/src/index.d.ts +1 -0
  33. package/dist/_dts/core/src/site-route-target.d.ts +40 -0
  34. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +159 -2
  35. package/dist/_dts/media-core/src/fileDomain.d.ts +4 -0
  36. package/dist/_dts/sdk/src/client/runtimeCachePolicy.d.ts +160 -0
  37. package/dist/_dts/sdk/src/client/types.d.ts +26 -1
  38. package/dist/_dts/sdk/src/index.d.ts +3 -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-YDMBIIS5.mjs → chunk-7N46MZHI.mjs} +1 -1
  42. package/dist/{chunk-7KOO7RPP.mjs → chunk-7YUAXONX.mjs} +1007 -353
  43. package/dist/{chunk-O4LVYUVH.mjs → chunk-F645A5UV.mjs} +18 -0
  44. package/dist/{chunk-ER4UIW4X.mjs → chunk-HKJQERFR.mjs} +7 -7
  45. package/dist/{chunk-K3JWH6HE.mjs → chunk-TGBJWKMP.mjs} +1 -1
  46. package/dist/{chunk-HVOBXA3Y.mjs → chunk-ZQRBLCW5.mjs} +2 -2
  47. package/dist/cli/index.mjs +668 -18
  48. package/dist/client/{accordion-PT5CGW5N.mjs → accordion-MUCVNGQ7.mjs} +2 -2
  49. package/dist/client/{bookingForm-2HLRTEYS.mjs → bookingForm-PKD6EFIE.mjs} +192 -76
  50. package/dist/client/bookings.mjs +436 -191
  51. package/dist/client/{carousel-Z2LKYSWA.mjs → carousel-3TKQSNJC.mjs} +4 -3
  52. package/dist/client/{cart-ND5IK4A6.mjs → cart-6XHSZK23.mjs} +8 -7
  53. package/dist/client/{checkout-EYUSGAY7.mjs → checkout-FVSPM6FI.mjs} +8 -7
  54. package/dist/client/chunk-6N7YRNYU.mjs +183 -0
  55. package/dist/client/{chunk-O5JNI3E4.mjs → chunk-7DH35FGA.mjs} +2 -2
  56. package/dist/client/{chunk-BAWHZ5GM.mjs → chunk-CQKKFEQD.mjs} +195 -61
  57. package/dist/client/{chunk-X7GVFB7Y.mjs → chunk-EY42X22F.mjs} +3 -3
  58. package/dist/client/{chunk-6DVPO44G.mjs → chunk-FHU6PFPM.mjs} +1 -1
  59. package/dist/client/{chunk-H4MHEXYS.mjs → chunk-LQFDYWPJ.mjs} +1 -1
  60. package/dist/client/{chunk-MHBEWDT7.mjs → chunk-RSQWWUAD.mjs} +122 -50
  61. package/dist/client/{chunk-GOFO7HRH.mjs → chunk-STJ2NCQM.mjs} +1 -1
  62. package/dist/client/{chunk-DIRW2LNG.mjs → chunk-UQFY4AHX.mjs} +272 -198
  63. package/dist/client/{chunk-WCVK4MBJ.mjs → chunk-VGLXACVK.mjs} +1 -1
  64. package/dist/client/{chunk-BL66UWGD.mjs → chunk-ZJZZA5EP.mjs} +6 -6
  65. package/dist/client/{chunk-S4G65LGR.mjs → chunk-ZT5XE7FK.mjs} +1 -1
  66. package/dist/client/client.mjs +3823 -3507
  67. package/dist/client/{courseRegistration-H3AZBUEG.mjs → courseRegistration-ATZSYDHM.mjs} +6 -6
  68. package/dist/client/{eventCalendar-FPKJGLGS.mjs → eventCalendar-6T2UGKKP.mjs} +10 -9
  69. package/dist/client/{eventCombined-QCGIZBUY.mjs → eventCombined-Q4VANXVF.mjs} +10 -9
  70. package/dist/client/{eventDetails-HIT3BJWU.mjs → eventDetails-DW37E7VW.mjs} +10 -9
  71. package/dist/client/{eventListing-R4HNWJDN.mjs → eventListing-XURTSAUW.mjs} +10 -9
  72. package/dist/client/{eventRegistration-Q7BYY5HF.mjs → eventRegistration-MRKEVAXW.mjs} +10 -9
  73. package/dist/client/{form-NI6YOG6S.mjs → form-WZZFFGMU.mjs} +3 -3
  74. package/dist/client/{headerSection-SDYGII36.mjs → headerSection-EQYVQBLM.mjs} +3 -3
  75. package/dist/client/hooks.mjs +18 -0
  76. package/dist/client/{locationMap-BDETEUQD.mjs → locationMap-MFF5VAZR.mjs} +3 -3
  77. package/dist/client/{newsletterForm-EKYIU67X.mjs → newsletterForm-JQ77UYIE.mjs} +60 -24
  78. package/dist/client/{productDetail-5UTGNN76.mjs → productDetail-25LMT3IZ.mjs} +8 -7
  79. package/dist/client/{productList-7YA5KXZQ.mjs → productList-5ABEMKUG.mjs} +8 -7
  80. package/dist/client/rendering/client.mjs +3266 -3528
  81. package/dist/client/rendering/islands.mjs +19 -19
  82. package/dist/client/rendering.mjs +3143 -3452
  83. package/dist/client/{shop-AIMUMZYC.mjs → shop-OMMQZ6YO.mjs} +8 -7
  84. package/dist/preview-next/before-render.mjs +18 -0
  85. package/dist/preview-next/client/runtime.mjs +5 -5
  86. package/dist/preview-next/middleware.mjs +18 -0
  87. package/dist/{sdk-runtime-NW472WNT.mjs → sdk-runtime-WNLBZ3ZH.mjs} +6 -6
  88. package/dist/server/components.mjs +1068 -1540
  89. package/dist/server/config-validation.mjs +18 -0
  90. package/dist/server/config.mjs +18 -0
  91. package/dist/server/data.mjs +18 -0
  92. package/dist/server/index.mjs +847 -261
  93. package/dist/server/next.mjs +1708 -1555
  94. package/dist/server/prebuild.mjs +1 -1
  95. package/dist/server/rendering/server.mjs +1068 -1540
  96. package/dist/server/rendering.mjs +1074 -1546
  97. package/dist/server/routing.mjs +314 -9
  98. package/dist/server/server.mjs +668 -25
  99. package/dist/server/theme-bridge.mjs +26 -0
  100. package/dist/styles/index.css +26 -0
  101. package/package.json +2 -1
  102. package/dist/SdkPreviewModeRuntime-ZALZDJEK.mjs +0 -8
  103. /package/dist/client/{chunk-LI2C6M5O.mjs → chunk-25W2EQUN.mjs} +0 -0
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { assertNever11 } from './chunk-DIRW2LNG.mjs';
2
+ import { assertNever11 } from './chunk-UQFY4AHX.mjs';
3
3
  import { useReducer, useRef, useCallback, useEffect } from 'react';
4
4
 
5
5
  // ../blocks/src/system/runtime/hooks/usePolling.state.ts
@@ -1,10 +1,46 @@
1
1
  "use client";
2
- import { useBlockApi, BlockApiError } from './chunk-GOFO7HRH.mjs';
3
- import { themeButtonClassName } from './chunk-DIRW2LNG.mjs';
4
- import { resolvePlanningDateInput, formatBookingPriceDisplay } from './chunk-LI2C6M5O.mjs';
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 [loading, setLoading] = useState(false);
21
- const [success, setSuccess] = useState(false);
22
- const [error, setError] = useState(null);
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
- setLoading(true);
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
- setSuccess(true);
73
+ dispatchSubmission({ type: "submit-succeeded" });
36
74
  onSuccess?.();
37
75
  } catch (err) {
38
76
  console.error("Magic link error:", err);
39
- setError(err instanceof Error ? err.message : "Failed to send. Please try again.");
40
- } finally {
41
- setLoading(false);
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
- setError(null);
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 [claim, setClaim] = useState(null);
262
- const [error, setError] = useState(null);
263
- const [loginMessage, setLoginMessage] = useState(null);
264
- const [requiresPortalLogin, setRequiresPortalLogin] = useState(false);
265
- const [isLoading, setIsLoading] = useState(() => Boolean(token));
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
- setClaim(null);
271
- setError(null);
272
- setLoginMessage(null);
273
- setRequiresPortalLogin(false);
274
- setIsLoading(false);
359
+ dispatch({ type: "cleared" });
275
360
  return;
276
361
  }
277
- setIsLoading(true);
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
- setClaim(result);
366
+ dispatch({ type: "resolved", claim: result });
286
367
  } catch (claimError) {
287
368
  if (cancelled) return;
288
- const message = claimError instanceof Error ? claimError.message : "Failed to resolve waitlist claim";
289
- setClaim(null);
290
- if (claimError instanceof BlockApiError && claimError.status === 401) {
291
- setRequiresPortalLogin(true);
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
 
@@ -1189,4 +1189,4 @@ function FeedbackMessage({
1189
1189
  );
1190
1190
  }
1191
1191
 
1192
- export { BlockApiError, BlockApiProvider, FeedbackMessage, useBlockApi };
1192
+ export { BlockApiProvider, FeedbackMessage, useBlockApi };