@riverbankcms/sdk 0.90.1 → 0.91.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 (70) hide show
  1. package/dist/{PreviewEditorSidebar-FNFRVSIM.mjs → PreviewEditorSidebar-3TT47WCF.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-3WXJFQXG.mjs → PreviewEditorUI-ORCLLUNZ.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-GMCDQPZZ.mjs +8 -0
  4. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +17 -0
  5. package/dist/_dts/core/src/string.d.ts +12 -0
  6. package/dist/_dts/sdk/src/cli/sync/validation.d.ts +2 -2
  7. package/dist/_dts/sdk/src/version.d.ts +1 -1
  8. package/dist/{chunk-SYYJZPKU.mjs → chunk-AFPMCLS7.mjs} +2 -2
  9. package/dist/{chunk-H6TT5ZXI.mjs → chunk-GDT2QGIL.mjs} +1 -1
  10. package/dist/{chunk-CR2VX432.mjs → chunk-RQUZYSES.mjs} +48 -36
  11. package/dist/{chunk-FA6LVZ7C.mjs → chunk-S3YHJWEU.mjs} +7 -7
  12. package/dist/{chunk-UG7I7S7W.mjs → chunk-U5YM4AWE.mjs} +1 -1
  13. package/dist/{chunk-BOQXMCSP.mjs → chunk-ZA2S7H34.mjs} +3 -3
  14. package/dist/cli/index.mjs +204 -335
  15. package/dist/cli/init-docs/content/workflow-add-block.md +48 -0
  16. package/dist/cli/init-docs/content/workflow-custom-block.md +10 -0
  17. package/dist/client/{accordion-4K7VGZ3I.mjs → accordion-AFX37652.mjs} +2 -2
  18. package/dist/client/{bookingForm-3QXA3CIS.mjs → bookingForm-32V5QCOW.mjs} +6 -6
  19. package/dist/client/bookings.mjs +16 -15
  20. package/dist/client/{carousel-BEJKNGQ7.mjs → carousel-TJGQJ7ER.mjs} +3 -3
  21. package/dist/client/{cart-44BBM6XG.mjs → cart-JUU2JEW4.mjs} +6 -6
  22. package/dist/client/{checkout-THMHEYKF.mjs → checkout-RD6BTFX4.mjs} +6 -6
  23. package/dist/client/{chunk-JV7ZNAOU.mjs → chunk-6QZIBNGV.mjs} +8 -8
  24. package/dist/client/{chunk-DQIRKNZE.mjs → chunk-6RN62XBV.mjs} +1 -1
  25. package/dist/client/{chunk-ZIAF2DA4.mjs → chunk-C4LP6BPG.mjs} +1 -1
  26. package/dist/client/{chunk-SLY6UDAS.mjs → chunk-CKXEUWWA.mjs} +2 -2
  27. package/dist/client/{chunk-5AJIMWKS.mjs → chunk-E6VIWZUG.mjs} +3 -3
  28. package/dist/client/{chunk-PEDNDLPB.mjs → chunk-FMZZHAIR.mjs} +2 -2
  29. package/dist/client/{chunk-KNTLBQ3N.mjs → chunk-ISAUXU5R.mjs} +1 -1
  30. package/dist/client/{chunk-HIHOQGIP.mjs → chunk-LJCX6V7Q.mjs} +9 -9
  31. package/dist/client/{chunk-B4H6QMPY.mjs → chunk-MLBNVN4H.mjs} +7 -5
  32. package/dist/client/{chunk-EJBHK74Y.mjs → chunk-PMNAV6LO.mjs} +1 -1
  33. package/dist/client/{chunk-4COPESPO.mjs → chunk-RMOFBBNA.mjs} +5 -5
  34. package/dist/client/{chunk-3H5CLFKT.mjs → chunk-RWYFG625.mjs} +9 -8
  35. package/dist/client/client.mjs +34 -31
  36. package/dist/client/{courseRegistration-URX7RCCK.mjs → courseRegistration-X63QAIVV.mjs} +6 -6
  37. package/dist/client/{eventCalendar-GTENOQCE.mjs → eventCalendar-5T24GCZL.mjs} +9 -9
  38. package/dist/client/{eventCombined-EZVB72MF.mjs → eventCombined-AZVTF22X.mjs} +9 -9
  39. package/dist/client/{eventDetails-CH4BJR5Z.mjs → eventDetails-7GPFNLGF.mjs} +9 -9
  40. package/dist/client/{eventListing-4BVOI5HS.mjs → eventListing-QEUMTMUM.mjs} +9 -9
  41. package/dist/client/{eventRegistration-37LPIKIE.mjs → eventRegistration-P2EDKCQZ.mjs} +9 -9
  42. package/dist/client/{form-FX3Y54YK.mjs → form-NUJ7H4IN.mjs} +3 -3
  43. package/dist/client/{headerSection-UOZZGVYL.mjs → headerSection-JB7LECPL.mjs} +3 -3
  44. package/dist/client/hooks.mjs +7 -7
  45. package/dist/client/{locationMap-VSIPKV35.mjs → locationMap-UEYWUCSW.mjs} +3 -3
  46. package/dist/client/{newsletterForm-6FRJKNAF.mjs → newsletterForm-S2YZQ2X7.mjs} +3 -3
  47. package/dist/client/{productDetail-6AHMLXCO.mjs → productDetail-H5MADGG7.mjs} +6 -6
  48. package/dist/client/{productList-M2CYIZVH.mjs → productList-DK7YON7H.mjs} +6 -6
  49. package/dist/client/rendering/client.mjs +31 -28
  50. package/dist/client/rendering/islands.mjs +19 -19
  51. package/dist/client/rendering.mjs +33 -30
  52. package/dist/client/{shop-AUOT6GEX.mjs → shop-6PA7RDRJ.mjs} +6 -6
  53. package/dist/client/spam-protection.mjs +10 -10
  54. package/dist/preview-next/client/runtime.mjs +5 -5
  55. package/dist/{sdk-runtime-6GPJNLU6.mjs → sdk-runtime-JP5347OB.mjs} +6 -6
  56. package/dist/server/components.mjs +13 -11
  57. package/dist/server/config-validation.mjs +7 -7
  58. package/dist/server/config.mjs +7 -7
  59. package/dist/server/data.mjs +7 -7
  60. package/dist/server/index.mjs +1 -1
  61. package/dist/server/navigation.mjs +2 -2
  62. package/dist/server/next.mjs +14 -12
  63. package/dist/server/page-converter.mjs +5 -5
  64. package/dist/server/prebuild.mjs +1 -1
  65. package/dist/server/rendering/server.mjs +13 -11
  66. package/dist/server/rendering.mjs +13 -11
  67. package/dist/server/routing.mjs +14 -14
  68. package/dist/server/server.mjs +8 -8
  69. package/package.json +1 -1
  70. package/dist/SdkPreviewModeRuntime-2UCIMKUB.mjs +0 -8
@@ -379,10 +379,11 @@ function omitZeroAmountFutureRows(rows) {
379
379
  if (rows.length <= 1) {
380
380
  return rows;
381
381
  }
382
- const [firstRow, ...futureRows] = rows;
383
- if (!firstRow) {
382
+ const firstRow = rows[0];
383
+ if (firstRow === void 0) {
384
384
  return [];
385
385
  }
386
+ const futureRows = rows.slice(1);
386
387
  return [
387
388
  firstRow,
388
389
  ...futureRows.filter((row) => row.amountCents > 0)
@@ -427,11 +428,11 @@ function isValidTimeZone(timeZone) {
427
428
  }
428
429
  function getSafeTimeZone(timeZone) {
429
430
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
430
- return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
431
+ return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
431
432
  }
432
433
  function parseStrictBookingTimeZone(timeZone) {
433
434
  const normalized = timeZone.trim();
434
- if (!normalized || !isValidTimeZone(normalized)) {
435
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) {
435
436
  return null;
436
437
  }
437
438
  return normalized;
@@ -517,7 +518,7 @@ function parseScheduledBookingDateTime(input) {
517
518
  try {
518
519
  const startsAt = toUtcIsoDateTimeString(input.startsAt);
519
520
  const timeZone = parseStrictBookingTimeZone(input.timeZone);
520
- if (!timeZone) {
521
+ if (timeZone === null) {
521
522
  return {
522
523
  ok: false,
523
524
  field: "timeZone",
@@ -656,7 +657,7 @@ function getBookingLocalDateKey(input) {
656
657
  }
657
658
  function parseBookingLocalDate(value) {
658
659
  const match = LOCAL_DATE_PATTERN.exec(value.trim());
659
- if (!match?.groups) {
660
+ if (match === null || match.groups === void 0) {
660
661
  throw new Error(`Invalid booking date format: "${value}" (expected YYYY-MM-DD)`);
661
662
  }
662
663
  const year = Number(match.groups.year);
@@ -715,10 +716,10 @@ function normalizeLocationAddressText(value) {
715
716
  return null;
716
717
  }
717
718
  const trimmed = value.trim();
718
- return trimmed ? trimmed : null;
719
+ return trimmed.length > 0 ? trimmed : null;
719
720
  }
720
721
  function hasLocationCoordinates(value) {
721
- return typeof value?.lat === "number" && typeof value?.lng === "number";
722
+ return value != null && typeof value.lat === "number" && typeof value.lng === "number";
722
723
  }
723
724
  function toLocationCoordinates(value) {
724
725
  if (!hasLocationCoordinates(value)) {
@@ -735,6 +736,13 @@ var init_location = __esm({
735
736
  }
736
737
  });
737
738
 
739
+ // ../core/src/string.ts
740
+ var init_string = __esm({
741
+ "../core/src/string.ts"() {
742
+ "use strict";
743
+ }
744
+ });
745
+
738
746
  // ../core/src/business-address.ts
739
747
  var init_business_address = __esm({
740
748
  "../core/src/business-address.ts"() {
@@ -875,13 +883,6 @@ var init_slug = __esm({
875
883
  }
876
884
  });
877
885
 
878
- // ../core/src/string.ts
879
- var init_string = __esm({
880
- "../core/src/string.ts"() {
881
- "use strict";
882
- }
883
- });
884
-
885
886
  // ../core/src/uuid.ts
886
887
  var init_uuid = __esm({
887
888
  "../core/src/uuid.ts"() {
@@ -24607,7 +24608,7 @@ function formatCalendarTitle(viewDate, view, days, monthNames = MONTH_NAMES) {
24607
24608
  if (view === "week") {
24608
24609
  const weekStart = days[0];
24609
24610
  const weekEnd = days[6];
24610
- if (!weekStart || !weekEnd) {
24611
+ if (weekStart === void 0 || weekEnd === void 0) {
24611
24612
  return `${monthNames[viewDate.getMonth()] ?? ""} ${viewDate.getFullYear()}`;
24612
24613
  }
24613
24614
  const startMonth = monthNames[weekStart.getMonth()] ?? "";
@@ -24739,7 +24740,9 @@ function getLocalDateKey(isoTimestamp, timeZone) {
24739
24740
  const year = parts.find((part) => part.type === "year")?.value;
24740
24741
  const month = parts.find((part) => part.type === "month")?.value;
24741
24742
  const day = parts.find((part) => part.type === "day")?.value;
24742
- if (!year || !month || !day) return null;
24743
+ if (year === void 0 || year.length === 0) return null;
24744
+ if (month === void 0 || month.length === 0) return null;
24745
+ if (day === void 0 || day.length === 0) return null;
24743
24746
  return `${year}-${month}-${day}`;
24744
24747
  }
24745
24748
  function isValidTimeZone2(timeZone) {
@@ -24996,7 +24999,7 @@ function enumerateDateKeys(startDateKey, endDateKey) {
24996
24999
  }
24997
25000
  function parseDateKey(dateKey) {
24998
25001
  const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dateKey);
24999
- if (!match) {
25002
+ if (match === null) {
25000
25003
  throw new Error(`Invalid timetable date key: ${dateKey}`);
25001
25004
  }
25002
25005
  const [, year, month, day] = match;
@@ -25032,7 +25035,7 @@ function groupItemsByDate(items, accessors) {
25032
25035
  const dateKey = getLocalDateKey(startsAt, timeZone);
25033
25036
  if (dateKey == null) continue;
25034
25037
  const existing = grouped.get(dateKey);
25035
- if (existing) {
25038
+ if (existing !== void 0) {
25036
25039
  existing.push(item);
25037
25040
  } else {
25038
25041
  grouped.set(dateKey, [item]);
@@ -39257,22 +39260,22 @@ function AltchaWidget({
39257
39260
  if (typeof window === "undefined") return;
39258
39261
  let widget = null;
39259
39262
  Promise.resolve().then(() => (init_altcha(), altcha_exports)).then(() => {
39260
- if (!containerRef.current) return;
39263
+ if (containerRef.current === null) return;
39261
39264
  widget = document.createElement("altcha-widget");
39262
39265
  widget.setAttribute("challengeurl", challengeUrl);
39263
- if (auto) {
39266
+ if (auto === true) {
39264
39267
  widget.setAttribute("auto", "onload");
39265
39268
  }
39266
- if (hidelogo) {
39269
+ if (hidelogo === true) {
39267
39270
  widget.setAttribute("hidelogo", "true");
39268
39271
  }
39269
39272
  widget.setAttribute("hidefooter", "true");
39270
- if (className) {
39273
+ if (className !== void 0 && className.length > 0) {
39271
39274
  widget.className = className;
39272
39275
  }
39273
39276
  widget.addEventListener("statechange", ((event) => {
39274
39277
  const { state, payload } = event.detail;
39275
- if (state === "verified" && payload) {
39278
+ if (state === "verified" && payload !== void 0 && payload.length > 0) {
39276
39279
  onSolutionChange?.(payload);
39277
39280
  } else if (state === "error" || state === "expired") {
39278
39281
  onSolutionChange?.(null);
@@ -39283,7 +39286,7 @@ function AltchaWidget({
39283
39286
  console.error("Failed to load ALTCHA widget:", err3);
39284
39287
  });
39285
39288
  return () => {
39286
- if (widget && containerRef.current) {
39289
+ if (widget !== null && containerRef.current !== null) {
39287
39290
  containerRef.current.removeChild(widget);
39288
39291
  }
39289
39292
  };
@@ -39329,15 +39332,15 @@ var init_dist2 = __esm({
39329
39332
  // ../altcha/src/index.ts
39330
39333
  function getCmsApiUrl2() {
39331
39334
  const env = process.env.RIVERBANK_ENV;
39332
- if (env) {
39335
+ if (env !== void 0 && env.length > 0) {
39333
39336
  const envKey = `RIVERBANK_${env.toUpperCase()}_DASHBOARD_URL`;
39334
39337
  const dashboardUrl2 = process.env[envKey];
39335
- if (dashboardUrl2) {
39338
+ if (dashboardUrl2 !== void 0 && dashboardUrl2.length > 0) {
39336
39339
  return `${dashboardUrl2.replace(/\/$/, "")}/api`;
39337
39340
  }
39338
39341
  }
39339
39342
  const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;
39340
- if (dashboardUrl) {
39343
+ if (dashboardUrl !== void 0 && dashboardUrl.length > 0) {
39341
39344
  return `${dashboardUrl.replace(/\/$/, "")}/api`;
39342
39345
  }
39343
39346
  throw new Error("Dashboard URL not configured. Set NEXT_PUBLIC_DASHBOARD_URL");
@@ -75254,11 +75257,11 @@ function extractRouteUpdatedAt(candidate) {
75254
75257
  }
75255
75258
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
75256
75259
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
75257
- if (!routeId || !routes) return null;
75260
+ if (routeId === null || routeId.length === 0 || routes === void 0) return null;
75258
75261
  const routeEntry = routes[routeId];
75259
75262
  if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
75260
75263
  const href = extractRouteHref(routeEntry, stageInput);
75261
- if (!href) return null;
75264
+ if (href === null) return null;
75262
75265
  return {
75263
75266
  routeId,
75264
75267
  href,
@@ -99095,7 +99098,7 @@ var SimpleCache = class {
99095
99098
  };
99096
99099
 
99097
99100
  // src/version.ts
99098
- var SDK_VERSION = "0.90.1";
99101
+ var SDK_VERSION = "0.91.0";
99099
99102
 
99100
99103
  // src/client/error.ts
99101
99104
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -1,15 +1,15 @@
1
1
  "use client";
2
- import { useWaitlistClaim, resolveCoursePricingState, formatCoursePriceDisplay, formatCoursePriceAmount, MagicLinkForm } from './chunk-PEDNDLPB.mjs';
3
- import { SpinnerNode } from './chunk-KNTLBQ3N.mjs';
2
+ import { useWaitlistClaim, resolveCoursePricingState, formatCoursePriceDisplay, formatCoursePriceAmount, MagicLinkForm } from './chunk-FMZZHAIR.mjs';
3
+ import { SpinnerNode } from './chunk-ISAUXU5R.mjs';
4
4
  import { buildRouteIslandApiConfig } from './chunk-L4J5Y62O.mjs';
5
- import { DiscountCodeDisclosure, useDiscountCodeUi, getStepNumber, logoutPortal, StepIndicator, LoggedInAsUser, CheckIcon, formatPrice, TerminalPanel, StateIcon, ClockIcon, CrossIcon, scrollToBlock, buildCheckoutReturnUrls, MembershipHero, validateFormData } from './chunk-SLY6UDAS.mjs';
5
+ import { DiscountCodeDisclosure, useDiscountCodeUi, getStepNumber, logoutPortal, StepIndicator, LoggedInAsUser, CheckIcon, formatPrice, TerminalPanel, StateIcon, ClockIcon, CrossIcon, scrollToBlock, buildCheckoutReturnUrls, MembershipHero, validateFormData } from './chunk-CKXEUWWA.mjs';
6
6
  import { getFieldValidationControlProps, FieldValidationMessage } from './chunk-3DCJ45Z2.mjs';
7
7
  import { ModalShell } from './chunk-WBQG7VJA.mjs';
8
- import { AltchaWidget, getChallengeUrl, isSpamProtectionEnabled } from './chunk-HIHOQGIP.mjs';
8
+ import { AltchaWidget, getChallengeUrl, isSpamProtectionEnabled } from './chunk-LJCX6V7Q.mjs';
9
9
  import { BlockApiProvider, useBlockApi } from './chunk-WHZQDPBZ.mjs';
10
10
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
11
- import { defineIslandPropsDecoder, themeButtonClassName } from './chunk-B4H6QMPY.mjs';
12
- import { formatBookingDate, toScheduledBookingDateTime, toBookingTimeZone, formatBookingTime } from './chunk-3H5CLFKT.mjs';
11
+ import { defineIslandPropsDecoder, themeButtonClassName } from './chunk-MLBNVN4H.mjs';
12
+ import { formatBookingDate, toScheduledBookingDateTime, toBookingTimeZone, formatBookingTime } from './chunk-RWYFG625.mjs';
13
13
  import React2, { Component, useMemo, useState, useEffect } from 'react';
14
14
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
15
15
 
@@ -1,18 +1,18 @@
1
- import { EventCalendarClient } from './chunk-JV7ZNAOU.mjs';
2
- import './chunk-ZIAF2DA4.mjs';
3
- import './chunk-PEDNDLPB.mjs';
1
+ import { EventCalendarClient } from './chunk-6QZIBNGV.mjs';
2
+ import './chunk-C4LP6BPG.mjs';
3
+ import './chunk-FMZZHAIR.mjs';
4
4
  import './chunk-6N7YRNYU.mjs';
5
- import './chunk-5AJIMWKS.mjs';
6
- import './chunk-KNTLBQ3N.mjs';
5
+ import './chunk-E6VIWZUG.mjs';
6
+ import './chunk-ISAUXU5R.mjs';
7
7
  import { buildRouteIslandApiConfig } from './chunk-L4J5Y62O.mjs';
8
- import './chunk-SLY6UDAS.mjs';
8
+ import './chunk-CKXEUWWA.mjs';
9
9
  import './chunk-3DCJ45Z2.mjs';
10
10
  import './chunk-WBQG7VJA.mjs';
11
- import './chunk-HIHOQGIP.mjs';
11
+ import './chunk-LJCX6V7Q.mjs';
12
12
  import { BlockApiProvider } from './chunk-WHZQDPBZ.mjs';
13
13
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
14
- import { defineIslandPropsDecoder } from './chunk-B4H6QMPY.mjs';
15
- import './chunk-3H5CLFKT.mjs';
14
+ import { defineIslandPropsDecoder } from './chunk-MLBNVN4H.mjs';
15
+ import './chunk-RWYFG625.mjs';
16
16
  import { jsx } from 'react/jsx-runtime';
17
17
 
18
18
  var decode = defineIslandPropsDecoder("event-calendar");
@@ -1,18 +1,18 @@
1
- import { EventCombinedIslandClient } from './chunk-JV7ZNAOU.mjs';
2
- import './chunk-ZIAF2DA4.mjs';
3
- import './chunk-PEDNDLPB.mjs';
1
+ import { EventCombinedIslandClient } from './chunk-6QZIBNGV.mjs';
2
+ import './chunk-C4LP6BPG.mjs';
3
+ import './chunk-FMZZHAIR.mjs';
4
4
  import './chunk-6N7YRNYU.mjs';
5
- import './chunk-5AJIMWKS.mjs';
6
- import './chunk-KNTLBQ3N.mjs';
5
+ import './chunk-E6VIWZUG.mjs';
6
+ import './chunk-ISAUXU5R.mjs';
7
7
  import { buildRouteIslandApiConfig } from './chunk-L4J5Y62O.mjs';
8
- import './chunk-SLY6UDAS.mjs';
8
+ import './chunk-CKXEUWWA.mjs';
9
9
  import './chunk-3DCJ45Z2.mjs';
10
10
  import './chunk-WBQG7VJA.mjs';
11
- import './chunk-HIHOQGIP.mjs';
11
+ import './chunk-LJCX6V7Q.mjs';
12
12
  import { BlockApiProvider } from './chunk-WHZQDPBZ.mjs';
13
13
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
14
- import { defineIslandPropsDecoder } from './chunk-B4H6QMPY.mjs';
15
- import './chunk-3H5CLFKT.mjs';
14
+ import { defineIslandPropsDecoder } from './chunk-MLBNVN4H.mjs';
15
+ import './chunk-RWYFG625.mjs';
16
16
  import { jsx } from 'react/jsx-runtime';
17
17
 
18
18
  var decode = defineIslandPropsDecoder("event-combined");
@@ -1,17 +1,17 @@
1
- import { EventDetailsIslandClient } from './chunk-JV7ZNAOU.mjs';
2
- import './chunk-ZIAF2DA4.mjs';
3
- import './chunk-PEDNDLPB.mjs';
1
+ import { EventDetailsIslandClient } from './chunk-6QZIBNGV.mjs';
2
+ import './chunk-C4LP6BPG.mjs';
3
+ import './chunk-FMZZHAIR.mjs';
4
4
  import './chunk-6N7YRNYU.mjs';
5
- import './chunk-5AJIMWKS.mjs';
6
- import './chunk-KNTLBQ3N.mjs';
7
- import './chunk-SLY6UDAS.mjs';
5
+ import './chunk-E6VIWZUG.mjs';
6
+ import './chunk-ISAUXU5R.mjs';
7
+ import './chunk-CKXEUWWA.mjs';
8
8
  import './chunk-3DCJ45Z2.mjs';
9
9
  import './chunk-WBQG7VJA.mjs';
10
- import './chunk-HIHOQGIP.mjs';
10
+ import './chunk-LJCX6V7Q.mjs';
11
11
  import './chunk-WHZQDPBZ.mjs';
12
12
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
13
- import { defineIslandPropsDecoder } from './chunk-B4H6QMPY.mjs';
14
- import './chunk-3H5CLFKT.mjs';
13
+ import { defineIslandPropsDecoder } from './chunk-MLBNVN4H.mjs';
14
+ import './chunk-RWYFG625.mjs';
15
15
  import { jsx } from 'react/jsx-runtime';
16
16
 
17
17
  var decode = defineIslandPropsDecoder("event-details");
@@ -1,18 +1,18 @@
1
- import { EventListingClient } from './chunk-JV7ZNAOU.mjs';
2
- import './chunk-ZIAF2DA4.mjs';
3
- import './chunk-PEDNDLPB.mjs';
1
+ import { EventListingClient } from './chunk-6QZIBNGV.mjs';
2
+ import './chunk-C4LP6BPG.mjs';
3
+ import './chunk-FMZZHAIR.mjs';
4
4
  import './chunk-6N7YRNYU.mjs';
5
- import './chunk-5AJIMWKS.mjs';
6
- import './chunk-KNTLBQ3N.mjs';
5
+ import './chunk-E6VIWZUG.mjs';
6
+ import './chunk-ISAUXU5R.mjs';
7
7
  import { buildRouteIslandApiConfig } from './chunk-L4J5Y62O.mjs';
8
- import './chunk-SLY6UDAS.mjs';
8
+ import './chunk-CKXEUWWA.mjs';
9
9
  import './chunk-3DCJ45Z2.mjs';
10
10
  import './chunk-WBQG7VJA.mjs';
11
- import './chunk-HIHOQGIP.mjs';
11
+ import './chunk-LJCX6V7Q.mjs';
12
12
  import { BlockApiProvider } from './chunk-WHZQDPBZ.mjs';
13
13
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
14
- import { defineIslandPropsDecoder } from './chunk-B4H6QMPY.mjs';
15
- import './chunk-3H5CLFKT.mjs';
14
+ import { defineIslandPropsDecoder } from './chunk-MLBNVN4H.mjs';
15
+ import './chunk-RWYFG625.mjs';
16
16
  import { jsx } from 'react/jsx-runtime';
17
17
 
18
18
  var decode = defineIslandPropsDecoder("event-listing");
@@ -1,18 +1,18 @@
1
- import { EventRegistrationIslandClient } from './chunk-JV7ZNAOU.mjs';
2
- import './chunk-ZIAF2DA4.mjs';
3
- import './chunk-PEDNDLPB.mjs';
1
+ import { EventRegistrationIslandClient } from './chunk-6QZIBNGV.mjs';
2
+ import './chunk-C4LP6BPG.mjs';
3
+ import './chunk-FMZZHAIR.mjs';
4
4
  import './chunk-6N7YRNYU.mjs';
5
- import './chunk-5AJIMWKS.mjs';
6
- import './chunk-KNTLBQ3N.mjs';
5
+ import './chunk-E6VIWZUG.mjs';
6
+ import './chunk-ISAUXU5R.mjs';
7
7
  import { buildRouteIslandApiConfig } from './chunk-L4J5Y62O.mjs';
8
- import './chunk-SLY6UDAS.mjs';
8
+ import './chunk-CKXEUWWA.mjs';
9
9
  import './chunk-3DCJ45Z2.mjs';
10
10
  import './chunk-WBQG7VJA.mjs';
11
- import './chunk-HIHOQGIP.mjs';
11
+ import './chunk-LJCX6V7Q.mjs';
12
12
  import { BlockApiProvider } from './chunk-WHZQDPBZ.mjs';
13
13
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
14
- import { defineIslandPropsDecoder } from './chunk-B4H6QMPY.mjs';
15
- import './chunk-3H5CLFKT.mjs';
14
+ import { defineIslandPropsDecoder } from './chunk-MLBNVN4H.mjs';
15
+ import './chunk-RWYFG625.mjs';
16
16
  import { jsx } from 'react/jsx-runtime';
17
17
 
18
18
  var decode = defineIslandPropsDecoder("event-registration");
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { isSpamProtectionEnabled, AltchaWidget, getChallengeUrl } from './chunk-HIHOQGIP.mjs';
2
+ import { isSpamProtectionEnabled, AltchaWidget, getChallengeUrl } from './chunk-LJCX6V7Q.mjs';
3
3
  import { BlockApiProvider, FeedbackMessage, useBlockApi } from './chunk-WHZQDPBZ.mjs';
4
4
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
5
- import { defineIslandPropsDecoder, themeButtonClassName, assertNever, err, ok } from './chunk-B4H6QMPY.mjs';
6
- import { clsx_default } from './chunk-3H5CLFKT.mjs';
5
+ import { defineIslandPropsDecoder, themeButtonClassName, assertNever, err, ok } from './chunk-MLBNVN4H.mjs';
6
+ import { clsx_default } from './chunk-RWYFG625.mjs';
7
7
  import { useState, useReducer, useRef } from 'react';
8
8
  import { jsx, jsxs } from 'react/jsx-runtime';
9
9
 
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { useCommerceCart } from './chunk-DQIRKNZE.mjs';
2
+ import { useCommerceCart } from './chunk-6RN62XBV.mjs';
3
3
  import { resolveDedicatedCheckoutPath, ModalShell } from './chunk-WBQG7VJA.mjs';
4
- import { defineIslandPropsDecoder, buildCartDisplay, themeButtonClassName } from './chunk-B4H6QMPY.mjs';
5
- import './chunk-3H5CLFKT.mjs';
4
+ import { defineIslandPropsDecoder, buildCartDisplay, themeButtonClassName } from './chunk-MLBNVN4H.mjs';
5
+ import './chunk-RWYFG625.mjs';
6
6
  import * as React2 from 'react';
7
7
  import { createPortal } from 'react-dom';
8
8
  import { createRoot } from 'react-dom/client';
@@ -6537,11 +6537,11 @@ function isValidTimeZone(timeZone) {
6537
6537
  }
6538
6538
  function getSafeTimeZone(timeZone) {
6539
6539
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
6540
- return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6540
+ return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6541
6541
  }
6542
6542
  function parseStrictBookingTimeZone(timeZone) {
6543
6543
  const normalized = timeZone.trim();
6544
- if (!normalized || !isValidTimeZone(normalized)) {
6544
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) {
6545
6545
  return null;
6546
6546
  }
6547
6547
  return normalized;
@@ -6615,7 +6615,7 @@ function parseScheduledBookingDateTime(input) {
6615
6615
  try {
6616
6616
  const startsAt = toUtcIsoDateTimeString(input.startsAt);
6617
6617
  const timeZone = parseStrictBookingTimeZone(input.timeZone);
6618
- if (!timeZone) {
6618
+ if (timeZone === null) {
6619
6619
  return {
6620
6620
  ok: false,
6621
6621
  field: "timeZone",
@@ -6661,10 +6661,10 @@ function normalizeLocationAddressText(value) {
6661
6661
  return null;
6662
6662
  }
6663
6663
  const trimmed = value.trim();
6664
- return trimmed ? trimmed : null;
6664
+ return trimmed.length > 0 ? trimmed : null;
6665
6665
  }
6666
6666
  function hasLocationCoordinates(value) {
6667
- return typeof value?.lat === "number" && typeof value?.lng === "number";
6667
+ return value != null && typeof value.lat === "number" && typeof value.lng === "number";
6668
6668
  }
6669
6669
  function toLocationCoordinates(value) {
6670
6670
  if (!hasLocationCoordinates(value)) {
@@ -37049,11 +37049,11 @@ function extractRouteUpdatedAt(candidate) {
37049
37049
  }
37050
37050
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
37051
37051
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
37052
- if (!routeId || !routes) return null;
37052
+ if (routeId === null || routeId.length === 0 || routes === void 0) return null;
37053
37053
  const routeEntry = routes[routeId];
37054
37054
  if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
37055
37055
  const href = extractRouteHref(routeEntry, stageInput);
37056
- if (!href) return null;
37056
+ if (href === null) return null;
37057
37057
  return {
37058
37058
  routeId,
37059
37059
  href,
@@ -1,7 +1,7 @@
1
- import { LeafletStaticMap } from './chunk-ZIAF2DA4.mjs';
1
+ import { LeafletStaticMap } from './chunk-C4LP6BPG.mjs';
2
2
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
3
- import { defineIslandPropsDecoder } from './chunk-B4H6QMPY.mjs';
4
- import { normalizeLocationAddressText, toLocationCoordinates, textColorStyle, mergeStyles, borderColorStyle, backgroundColorStyle } from './chunk-3H5CLFKT.mjs';
3
+ import { defineIslandPropsDecoder } from './chunk-MLBNVN4H.mjs';
4
+ import { normalizeLocationAddressText, toLocationCoordinates, textColorStyle, mergeStyles, borderColorStyle, backgroundColorStyle } from './chunk-RWYFG625.mjs';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
6
6
 
7
7
  // ../blocks/src/system/runtime/nodes/location-map.shared.ts
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { getFieldValidationControlProps, FieldValidationMessage } from './chunk-3DCJ45Z2.mjs';
3
- import { isSpamProtectionEnabled, AltchaWidget, getChallengeUrl } from './chunk-HIHOQGIP.mjs';
3
+ import { isSpamProtectionEnabled, AltchaWidget, getChallengeUrl } from './chunk-LJCX6V7Q.mjs';
4
4
  import { BlockApiProvider, useBlockApi, FeedbackMessage } from './chunk-WHZQDPBZ.mjs';
5
5
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
6
- import { defineIslandPropsDecoder, themeButtonClassName, assertNever } from './chunk-B4H6QMPY.mjs';
7
- import { clsx_default } from './chunk-3H5CLFKT.mjs';
6
+ import { defineIslandPropsDecoder, themeButtonClassName, assertNever } from './chunk-MLBNVN4H.mjs';
7
+ import { clsx_default } from './chunk-RWYFG625.mjs';
8
8
  import { useReducer, useState } from 'react';
9
9
  import { jsx, jsxs } from 'react/jsx-runtime';
10
10
 
@@ -1,15 +1,15 @@
1
- import { mountShopBlockIsland, ProductDetailClient } from './chunk-4COPESPO.mjs';
2
- import './chunk-DQIRKNZE.mjs';
3
- import './chunk-EJBHK74Y.mjs';
1
+ import { mountShopBlockIsland, ProductDetailClient } from './chunk-RMOFBBNA.mjs';
2
+ import './chunk-6RN62XBV.mjs';
3
+ import './chunk-PMNAV6LO.mjs';
4
4
  import './chunk-6N7YRNYU.mjs';
5
5
  import './chunk-L4J5Y62O.mjs';
6
- import './chunk-SLY6UDAS.mjs';
6
+ import './chunk-CKXEUWWA.mjs';
7
7
  import './chunk-3DCJ45Z2.mjs';
8
8
  import './chunk-WBQG7VJA.mjs';
9
9
  import './chunk-WHZQDPBZ.mjs';
10
10
  import './chunk-N7PBWBWQ.mjs';
11
- import { defineIslandPropsDecoder } from './chunk-B4H6QMPY.mjs';
12
- import './chunk-3H5CLFKT.mjs';
11
+ import { defineIslandPropsDecoder } from './chunk-MLBNVN4H.mjs';
12
+ import './chunk-RWYFG625.mjs';
13
13
 
14
14
  // src/rendering/islands/enhancers/productDetail.tsx
15
15
  var decode = defineIslandPropsDecoder("product-detail");
@@ -1,15 +1,15 @@
1
- import { mountShopBlockIsland, ProductListClient } from './chunk-4COPESPO.mjs';
2
- import './chunk-DQIRKNZE.mjs';
3
- import './chunk-EJBHK74Y.mjs';
1
+ import { mountShopBlockIsland, ProductListClient } from './chunk-RMOFBBNA.mjs';
2
+ import './chunk-6RN62XBV.mjs';
3
+ import './chunk-PMNAV6LO.mjs';
4
4
  import './chunk-6N7YRNYU.mjs';
5
5
  import './chunk-L4J5Y62O.mjs';
6
- import './chunk-SLY6UDAS.mjs';
6
+ import './chunk-CKXEUWWA.mjs';
7
7
  import './chunk-3DCJ45Z2.mjs';
8
8
  import './chunk-WBQG7VJA.mjs';
9
9
  import './chunk-WHZQDPBZ.mjs';
10
10
  import './chunk-N7PBWBWQ.mjs';
11
- import { defineIslandPropsDecoder } from './chunk-B4H6QMPY.mjs';
12
- import './chunk-3H5CLFKT.mjs';
11
+ import { defineIslandPropsDecoder } from './chunk-MLBNVN4H.mjs';
12
+ import './chunk-RWYFG625.mjs';
13
13
 
14
14
  // src/rendering/islands/enhancers/productList.tsx
15
15
  var decode = defineIslandPropsDecoder("product-list");