@riverbankcms/sdk 0.88.0 → 0.90.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 (198) hide show
  1. package/README.md +27 -4
  2. package/dist/{PreviewEditorSidebar-EVRS3C7T.mjs → PreviewEditorSidebar-KVXNF3VW.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-54WD4IGE.mjs → PreviewEditorUI-J3JN5Z7T.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-UBL6MSNP.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +216 -0
  6. package/dist/_dts/altcha/src/AltchaWidget.d.ts +1 -1
  7. package/dist/_dts/api/src/accessAdmin.d.ts +7 -0
  8. package/dist/_dts/api/src/bookingOperations.d.ts +2 -0
  9. package/dist/_dts/api/src/bookingRecords.d.ts +4 -2
  10. package/dist/_dts/api/src/bookings.d.ts +3 -1
  11. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  12. package/dist/_dts/api/src/index.d.ts +7 -6
  13. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +15 -5
  14. package/dist/_dts/api/src/request.d.ts +21 -0
  15. package/dist/_dts/api/src/sdk-event-upsert.d.ts +3 -1
  16. package/dist/_dts/api/src/sdkContracts.d.ts +2 -0
  17. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +5 -1
  18. package/dist/_dts/api/src/siteMembers.d.ts +6 -1
  19. package/dist/_dts/api/src/types.d.ts +4 -2
  20. package/dist/_dts/api/src/url.d.ts +6 -3
  21. package/dist/_dts/block-form/src/utils/visibleWhen.d.ts +1 -0
  22. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailCard.d.ts +5 -1
  23. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailGrid.d.ts +9 -1
  24. package/dist/_dts/block-form/src/widgets/RepeaterField/components/index.d.ts +1 -0
  25. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +7 -11
  26. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +6 -0
  27. package/dist/_dts/blocks/src/index.d.ts +2 -1
  28. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +14 -6
  29. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -4
  30. package/dist/_dts/blocks/src/system/blocks/hero.d.ts +0 -2
  31. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +3 -3
  32. package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +8 -0
  33. package/dist/_dts/blocks/src/system/constants/events.d.ts +4 -1
  34. package/dist/_dts/blocks/src/system/icons/cta.d.ts +3 -3
  35. package/dist/_dts/blocks/src/system/icons/index.d.ts +1 -0
  36. package/dist/_dts/blocks/src/system/icons/registry.d.ts +2 -2
  37. package/dist/_dts/blocks/src/system/icons/semantic.d.ts +3 -3
  38. package/dist/_dts/blocks/src/system/icons/svg.d.ts +72 -0
  39. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +3 -1
  40. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -0
  41. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +18 -5
  42. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +51 -6
  43. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -0
  44. package/dist/_dts/blocks/src/system/runtime/hooks/loadStateError.d.ts +1 -0
  45. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.d.ts +1 -1
  46. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.state.d.ts +55 -0
  47. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.state.d.ts +39 -0
  48. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFormConfig.d.ts +4 -27
  49. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFormConfig.state.d.ts +40 -0
  50. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +20 -0
  51. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.state.d.ts +31 -0
  52. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.d.ts +3 -3
  53. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.state.d.ts +39 -0
  54. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationWizard.d.ts +2 -2
  55. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -17
  56. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +5 -9
  57. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +5 -9
  58. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -1
  59. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +24 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +5 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +4 -4
  62. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +50 -0
  63. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -2
  64. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +1 -1
  66. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +11 -1
  67. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -1
  68. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +11 -1
  69. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventPaginatedListView.client.d.ts +1 -1
  70. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/calendarViewOptions.d.ts +10 -0
  71. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventProductEligibility.d.ts +24 -0
  72. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +24 -2
  73. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +24 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +5 -2
  75. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +2 -2
  76. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.state.d.ts +35 -0
  77. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  78. package/dist/_dts/content-model/src/entry-slots/sdkBlocks.d.ts +21 -0
  79. package/dist/_dts/content-model/src/entry-slots/types.d.ts +61 -0
  80. package/dist/_dts/core/src/branded.d.ts +7 -0
  81. package/dist/_dts/core/src/index.d.ts +1 -0
  82. package/dist/_dts/core/src/money-input.d.ts +18 -0
  83. package/dist/_dts/core/src/site-route-target.d.ts +40 -0
  84. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +209 -2
  85. package/dist/_dts/media-core/src/fileDomain.d.ts +4 -0
  86. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -1
  87. package/dist/_dts/media-editor/src/fieldUi.d.ts +6 -0
  88. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  89. package/dist/_dts/preview-next/src/client/index.d.ts +1 -0
  90. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -2
  91. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -2
  92. package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +3 -2
  93. package/dist/_dts/preview-next/src/client/preview/SiteChromeEditableSurface.d.ts +2 -2
  94. package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +6 -0
  95. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +2 -1
  96. package/dist/_dts/sdk/src/cli/commands/pull-dated-offering-scope.d.ts +10 -0
  97. package/dist/_dts/sdk/src/cli/content/reader.d.ts +12 -5
  98. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -55
  99. package/dist/_dts/sdk/src/client/runtimeCachePolicy.d.ts +160 -0
  100. package/dist/_dts/sdk/src/client/types.d.ts +26 -1
  101. package/dist/_dts/sdk/src/components.d.ts +1 -0
  102. package/dist/_dts/sdk/src/config/field-definitions.d.ts +3 -1
  103. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +3 -1
  104. package/dist/_dts/sdk/src/index.d.ts +3 -1
  105. package/dist/_dts/sdk/src/next/types.d.ts +8 -11
  106. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +1 -1
  107. package/dist/_dts/sdk/src/rendering/blocks-theme-scope.d.ts +2 -1
  108. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +8 -7
  109. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +5 -6
  110. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -0
  111. package/dist/_dts/sdk/src/rendering/server.d.ts +1 -0
  112. package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +26 -0
  113. package/dist/_dts/sdk/src/version.d.ts +1 -1
  114. package/dist/_dts/site-commands/src/commands.d.ts +18 -0
  115. package/dist/_dts/theme-core/src/ResponsiveScope.d.ts +12 -0
  116. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
  117. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +2 -2
  118. package/dist/_dts/theme-core/src/buttons/types.d.ts +5 -5
  119. package/dist/_dts/theme-core/src/cards/types.d.ts +2 -2
  120. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  121. package/dist/_dts/theme-core/src/index.d.ts +2 -0
  122. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +21 -21
  123. package/dist/_dts/theme-core/src/schema.d.ts +18 -18
  124. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  125. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  126. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +4 -4
  127. package/dist/_dts/theme-core/src/themeRuntime.d.ts +11 -0
  128. package/dist/{chunk-ER4UIW4X.mjs → chunk-AEOYWPE4.mjs} +91 -55
  129. package/dist/{chunk-O4LVYUVH.mjs → chunk-BOQXMCSP.mjs} +147 -101
  130. package/dist/{chunk-HVOBXA3Y.mjs → chunk-GSPFFUVB.mjs} +2 -2
  131. package/dist/{chunk-7KOO7RPP.mjs → chunk-PMBB6MQ7.mjs} +2273 -1113
  132. package/dist/{chunk-K3JWH6HE.mjs → chunk-RQ3XZ4SJ.mjs} +9 -1
  133. package/dist/{chunk-YDMBIIS5.mjs → chunk-UG7I7S7W.mjs} +1 -1
  134. package/dist/cli/index.mjs +1564 -546
  135. package/dist/cli/init-docs/content/cli-reference.md +6 -1
  136. package/dist/cli/init-docs/content/content-management.md +27 -0
  137. package/dist/client/{accordion-PT5CGW5N.mjs → accordion-GXQNWQ6O.mjs} +2 -2
  138. package/dist/client/{bookingForm-2HLRTEYS.mjs → bookingForm-STLUJ36H.mjs} +206 -335
  139. package/dist/client/bookings.mjs +821 -413
  140. package/dist/client/{carousel-Z2LKYSWA.mjs → carousel-CVRN6EPP.mjs} +4 -3
  141. package/dist/client/{cart-ND5IK4A6.mjs → cart-IYIBA5CL.mjs} +8 -8
  142. package/dist/client/{checkout-EYUSGAY7.mjs → checkout-O3BGM4GS.mjs} +8 -8
  143. package/dist/client/chunk-4RTFGHZN.mjs +433 -0
  144. package/dist/client/{chunk-DIRW2LNG.mjs → chunk-6DPXDOIL.mjs} +336 -225
  145. package/dist/client/chunk-6N7YRNYU.mjs +183 -0
  146. package/dist/client/{chunk-O5JNI3E4.mjs → chunk-7DH35FGA.mjs} +2 -2
  147. package/dist/client/{chunk-S4G65LGR.mjs → chunk-D3ETC2SU.mjs} +1 -1
  148. package/dist/client/{chunk-BAWHZ5GM.mjs → chunk-DAS5CIER.mjs} +460 -157
  149. package/dist/client/{chunk-6DVPO44G.mjs → chunk-FHU6PFPM.mjs} +1 -1
  150. package/dist/client/{chunk-SDIYSQAY.mjs → chunk-HIHOQGIP.mjs} +2 -3
  151. package/dist/client/{chunk-BL66UWGD.mjs → chunk-MFPKS6QS.mjs} +13 -16
  152. package/dist/client/{chunk-X7GVFB7Y.mjs → chunk-NBFRJ5NB.mjs} +157 -5
  153. package/dist/client/{chunk-WCVK4MBJ.mjs → chunk-VFHZLZAC.mjs} +1 -1
  154. package/dist/client/{chunk-GOFO7HRH.mjs → chunk-WHZQDPBZ.mjs} +19 -1
  155. package/dist/client/{chunk-MHBEWDT7.mjs → chunk-Z62JYS5O.mjs} +122 -50
  156. package/dist/client/client.mjs +5979 -5198
  157. package/dist/client/{courseRegistration-H3AZBUEG.mjs → courseRegistration-2D3ACMJR.mjs} +20 -58
  158. package/dist/client/{eventCalendar-FPKJGLGS.mjs → eventCalendar-QY4UZUFF.mjs} +11 -11
  159. package/dist/client/{eventCombined-QCGIZBUY.mjs → eventCombined-RRCDKJC2.mjs} +11 -11
  160. package/dist/client/{eventDetails-HIT3BJWU.mjs → eventDetails-YO335BUT.mjs} +11 -11
  161. package/dist/client/{eventListing-R4HNWJDN.mjs → eventListing-PXA6GFQ3.mjs} +11 -11
  162. package/dist/client/{eventRegistration-Q7BYY5HF.mjs → eventRegistration-2ZHEDDXO.mjs} +11 -11
  163. package/dist/client/{form-NI6YOG6S.mjs → form-ZS6KX4U2.mjs} +7 -7
  164. package/dist/client/{headerSection-SDYGII36.mjs → headerSection-QK5SLIIB.mjs} +3 -3
  165. package/dist/client/hooks.mjs +1102 -1029
  166. package/dist/client/{locationMap-BDETEUQD.mjs → locationMap-GFNIUD2X.mjs} +3 -3
  167. package/dist/client/{newsletterForm-EKYIU67X.mjs → newsletterForm-PGLTTCUG.mjs} +61 -25
  168. package/dist/client/{productDetail-5UTGNN76.mjs → productDetail-OPBE5ZPI.mjs} +8 -8
  169. package/dist/client/{productList-7YA5KXZQ.mjs → productList-NI72Q62Z.mjs} +8 -8
  170. package/dist/client/rendering/client.mjs +4390 -4245
  171. package/dist/client/rendering/islands.mjs +19 -19
  172. package/dist/client/rendering.mjs +3327 -3181
  173. package/dist/client/{shop-AIMUMZYC.mjs → shop-3ZQPEWYI.mjs} +8 -8
  174. package/dist/client/spam-protection.mjs +4 -5
  175. package/dist/preview-next/before-render.mjs +20 -2
  176. package/dist/preview-next/client/runtime.mjs +5 -5
  177. package/dist/preview-next/middleware.mjs +18 -0
  178. package/dist/{sdk-runtime-NW472WNT.mjs → sdk-runtime-FSHXCWDS.mjs} +6 -6
  179. package/dist/server/components.mjs +2580 -2783
  180. package/dist/server/config-validation.mjs +1334 -1261
  181. package/dist/server/config.mjs +1334 -1261
  182. package/dist/server/data.mjs +1102 -1029
  183. package/dist/server/index.mjs +1097 -476
  184. package/dist/server/navigation.mjs +20 -30
  185. package/dist/server/next.mjs +3282 -2847
  186. package/dist/server/page-converter.mjs +1009 -946
  187. package/dist/server/prebuild.mjs +1 -1
  188. package/dist/server/rendering/server.mjs +2580 -2783
  189. package/dist/server/rendering.mjs +2586 -2789
  190. package/dist/server/routing.mjs +1440 -1053
  191. package/dist/server/server.mjs +1886 -1153
  192. package/dist/server/theme-bridge.mjs +34 -5
  193. package/dist/styles/index.css +26 -0
  194. package/package.json +3 -2
  195. package/dist/SdkPreviewModeRuntime-ZALZDJEK.mjs +0 -8
  196. package/dist/client/chunk-H4MHEXYS.mjs +0 -184
  197. package/dist/client/chunk-ZFHRN6W2.mjs +0 -66
  198. /package/dist/client/{chunk-LI2C6M5O.mjs → chunk-25W2EQUN.mjs} +0 -0
@@ -1,7 +1,7 @@
1
- import { LeafletStaticMap } from './chunk-S4G65LGR.mjs';
1
+ import { LeafletStaticMap } from './chunk-D3ETC2SU.mjs';
2
2
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
3
- import { defineIslandPropsDecoder } from './chunk-DIRW2LNG.mjs';
4
- import { normalizeLocationAddressText, toLocationCoordinates, textColorStyle, mergeStyles, borderColorStyle, backgroundColorStyle } from './chunk-LI2C6M5O.mjs';
3
+ import { defineIslandPropsDecoder } from './chunk-6DPXDOIL.mjs';
4
+ import { normalizeLocationAddressText, toLocationCoordinates, textColorStyle, mergeStyles, borderColorStyle, backgroundColorStyle } from './chunk-25W2EQUN.mjs';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
6
6
 
7
7
  // ../blocks/src/system/runtime/nodes/location-map.shared.ts
@@ -1,14 +1,31 @@
1
1
  "use client";
2
2
  import { getFieldValidationControlProps, FieldValidationMessage } from './chunk-3DCJ45Z2.mjs';
3
- import { isSpamProtectionEnabled, AltchaWidget, getChallengeUrl } from './chunk-SDIYSQAY.mjs';
4
- import { BlockApiProvider, useBlockApi, FeedbackMessage } from './chunk-GOFO7HRH.mjs';
3
+ import { isSpamProtectionEnabled, AltchaWidget, getChallengeUrl } from './chunk-HIHOQGIP.mjs';
4
+ import { BlockApiProvider, useBlockApi, FeedbackMessage } from './chunk-WHZQDPBZ.mjs';
5
5
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
6
- import { defineIslandPropsDecoder, themeButtonClassName } from './chunk-DIRW2LNG.mjs';
7
- import { clsx_default } from './chunk-LI2C6M5O.mjs';
8
- import { useState } from 'react';
6
+ import { defineIslandPropsDecoder, themeButtonClassName, assertNever } from './chunk-6DPXDOIL.mjs';
7
+ import { clsx_default } from './chunk-25W2EQUN.mjs';
8
+ import { useReducer, useState } from 'react';
9
9
  import { jsx, jsxs } from 'react/jsx-runtime';
10
10
 
11
11
  // ../blocks/src/system/runtime/nodes/newsletter-form.client.state.ts
12
+ var initialNewsletterFormSubmissionState = {
13
+ tag: "idle"
14
+ };
15
+ function newsletterFormSubmissionReducer(state, action) {
16
+ switch (action.type) {
17
+ case "submitted":
18
+ if (state.tag === "success") return state;
19
+ return { tag: "submitting" };
20
+ case "failed":
21
+ if (state.tag === "success") return state;
22
+ return { tag: "error", error: action.error };
23
+ case "succeeded":
24
+ return { tag: "success" };
25
+ default:
26
+ return assertNever(action);
27
+ }
28
+ }
12
29
  function newsletterFieldError(fieldId, message) {
13
30
  return { kind: "field", fieldId, message };
14
31
  }
@@ -21,6 +38,18 @@ function getNewsletterFieldError(error, fieldId) {
21
38
  function getNewsletterFormError(error) {
22
39
  return error?.kind === "form" ? error.message : null;
23
40
  }
41
+ function isNewsletterFormSubmitting(state) {
42
+ return state.tag === "submitting";
43
+ }
44
+ function isNewsletterFormSuccess(state) {
45
+ return state.tag === "success";
46
+ }
47
+ function getNewsletterSubmissionFieldError(state, fieldId) {
48
+ return state.tag === "error" ? getNewsletterFieldError(state.error, fieldId) : null;
49
+ }
50
+ function getNewsletterSubmissionFormError(state) {
51
+ return state.tag === "error" ? getNewsletterFormError(state.error) : null;
52
+ }
24
53
 
25
54
  // ../blocks/src/system/runtime/nodes/newsletter-form.submission.ts
26
55
  function mapNewsletterFormFieldsToSubscriberInput(fields) {
@@ -68,16 +97,16 @@ function NewsletterFormClient({
68
97
  render
69
98
  }) {
70
99
  const api = useBlockApi();
71
- const [isSubmitting, setIsSubmitting] = useState(false);
72
- const [error, setError] = useState(null);
73
- const [isSuccess, setIsSuccess] = useState(false);
100
+ const [submissionState, dispatchSubmission] = useReducer(
101
+ newsletterFormSubmissionReducer,
102
+ initialNewsletterFormSubmissionState
103
+ );
74
104
  const [altchaSolution, setAltchaSolution] = useState(null);
75
105
  const showSpamProtection = render.hydration.spamProtectionEnabled ?? isSpamProtectionEnabled();
76
106
  const fields = render.display.fields;
77
107
  const parsedTags = typeof render.hydration.tags === "string" ? render.hydration.tags.split(/[;,]/g).map((t) => t.trim()).filter(Boolean) : [];
78
108
  const handleSubmit = async (e) => {
79
109
  e.preventDefault();
80
- setError(null);
81
110
  const formData = new FormData(e.currentTarget);
82
111
  const submittedFields = mapNewsletterFormFieldsToSubscriberInput({
83
112
  email: formData.get("email"),
@@ -89,11 +118,14 @@ function NewsletterFormClient({
89
118
  website: formData.get("website")
90
119
  });
91
120
  if (submittedFields.honeypot) {
92
- setIsSuccess(true);
121
+ dispatchSubmission({ type: "succeeded" });
93
122
  return;
94
123
  }
95
124
  if (!submittedFields.email) {
96
- setError(newsletterFieldError("email", "Email is required"));
125
+ dispatchSubmission({
126
+ type: "failed",
127
+ error: newsletterFieldError("email", "Email is required")
128
+ });
97
129
  return;
98
130
  }
99
131
  const submitTarget = resolveNewsletterSubmitTarget({
@@ -101,10 +133,13 @@ function NewsletterFormClient({
101
133
  destinationRef: render.hydration.destinationRef
102
134
  });
103
135
  if (submitTarget.tag === "unavailable") {
104
- setError(newsletterFormError("Newsletter list is not configured"));
136
+ dispatchSubmission({
137
+ type: "failed",
138
+ error: newsletterFormError("Newsletter list is not configured")
139
+ });
105
140
  return;
106
141
  }
107
- setIsSubmitting(true);
142
+ dispatchSubmission({ type: "submitted" });
108
143
  try {
109
144
  await api.subscribeNewsletter({
110
145
  email: submittedFields.email,
@@ -120,18 +155,19 @@ function NewsletterFormClient({
120
155
  altchaSolution
121
156
  }
122
157
  });
123
- setIsSuccess(true);
158
+ dispatchSubmission({ type: "succeeded" });
124
159
  } catch (err) {
125
- setError(newsletterFormError(
126
- err instanceof Error ? err.message : "Subscription failed. Please try again."
127
- ));
128
- } finally {
129
- setIsSubmitting(false);
160
+ dispatchSubmission({
161
+ type: "failed",
162
+ error: newsletterFormError(
163
+ err instanceof Error ? err.message : "Subscription failed. Please try again."
164
+ )
165
+ });
130
166
  }
131
167
  };
132
168
  const renderField = (field) => {
133
169
  const inputId = `newsletter_${field.id}`;
134
- const fieldError = getNewsletterFieldError(error, field.id);
170
+ const fieldError = getNewsletterSubmissionFieldError(submissionState, field.id);
135
171
  const fieldErrorId = `${inputId}-error`;
136
172
  const validationProps = getFieldValidationControlProps({
137
173
  message: fieldError,
@@ -152,15 +188,15 @@ function NewsletterFormClient({
152
188
  placeholder: field.placeholder,
153
189
  className: "form-input",
154
190
  autoComplete: field.type === "email" ? "email" : void 0,
155
- disabled: isSubmitting,
191
+ disabled: isNewsletterFormSubmitting(submissionState),
156
192
  ...validationProps
157
193
  }
158
194
  ),
159
195
  fieldError && /* @__PURE__ */ jsx(FieldValidationMessage, { id: fieldErrorId, className: "fb-error", children: fieldError })
160
196
  ] }, field.id);
161
197
  };
162
- const formError = getNewsletterFormError(error);
163
- if (isSuccess) {
198
+ const formError = getNewsletterSubmissionFormError(submissionState);
199
+ if (isNewsletterFormSuccess(submissionState)) {
164
200
  return /* @__PURE__ */ jsx("div", { className: clsx_default("newsletter-form", "newsletter-success", render.display.className ?? void 0), children: /* @__PURE__ */ jsx(FeedbackMessage, { tone: "success", className: "fb-success", role: "status", children: render.display.successMessage?.trim() || "Thanks for subscribing!" }) });
165
201
  }
166
202
  return /* @__PURE__ */ jsxs("div", { className: clsx_default("newsletter-form", render.display.className ?? void 0), children: [
@@ -191,8 +227,8 @@ function NewsletterFormClient({
191
227
  {
192
228
  type: "submit",
193
229
  className: themeButtonClassName({ variant: "primary", size: "md" }),
194
- disabled: isSubmitting,
195
- children: isSubmitting ? "Subscribing..." : render.display.buttonLabel
230
+ disabled: isNewsletterFormSubmitting(submissionState),
231
+ children: isNewsletterFormSubmitting(submissionState) ? "Subscribing..." : render.display.buttonLabel
196
232
  }
197
233
  ) })
198
234
  ] }),
@@ -1,15 +1,15 @@
1
- import { mountShopBlockIsland, ProductDetailClient } from './chunk-BL66UWGD.mjs';
2
- import './chunk-WCVK4MBJ.mjs';
3
- import './chunk-O5JNI3E4.mjs';
4
- import './chunk-ZFHRN6W2.mjs';
1
+ import { mountShopBlockIsland, ProductDetailClient } from './chunk-MFPKS6QS.mjs';
2
+ import './chunk-VFHZLZAC.mjs';
3
+ import './chunk-7DH35FGA.mjs';
4
+ import './chunk-6N7YRNYU.mjs';
5
5
  import './chunk-L4J5Y62O.mjs';
6
- import './chunk-X7GVFB7Y.mjs';
6
+ import './chunk-NBFRJ5NB.mjs';
7
7
  import './chunk-3DCJ45Z2.mjs';
8
8
  import './chunk-WBQG7VJA.mjs';
9
- import './chunk-GOFO7HRH.mjs';
9
+ import './chunk-WHZQDPBZ.mjs';
10
10
  import './chunk-N7PBWBWQ.mjs';
11
- import { defineIslandPropsDecoder } from './chunk-DIRW2LNG.mjs';
12
- import './chunk-LI2C6M5O.mjs';
11
+ import { defineIslandPropsDecoder } from './chunk-6DPXDOIL.mjs';
12
+ import './chunk-25W2EQUN.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-BL66UWGD.mjs';
2
- import './chunk-WCVK4MBJ.mjs';
3
- import './chunk-O5JNI3E4.mjs';
4
- import './chunk-ZFHRN6W2.mjs';
1
+ import { mountShopBlockIsland, ProductListClient } from './chunk-MFPKS6QS.mjs';
2
+ import './chunk-VFHZLZAC.mjs';
3
+ import './chunk-7DH35FGA.mjs';
4
+ import './chunk-6N7YRNYU.mjs';
5
5
  import './chunk-L4J5Y62O.mjs';
6
- import './chunk-X7GVFB7Y.mjs';
6
+ import './chunk-NBFRJ5NB.mjs';
7
7
  import './chunk-3DCJ45Z2.mjs';
8
8
  import './chunk-WBQG7VJA.mjs';
9
- import './chunk-GOFO7HRH.mjs';
9
+ import './chunk-WHZQDPBZ.mjs';
10
10
  import './chunk-N7PBWBWQ.mjs';
11
- import { defineIslandPropsDecoder } from './chunk-DIRW2LNG.mjs';
12
- import './chunk-LI2C6M5O.mjs';
11
+ import { defineIslandPropsDecoder } from './chunk-6DPXDOIL.mjs';
12
+ import './chunk-25W2EQUN.mjs';
13
13
 
14
14
  // src/rendering/islands/enhancers/productList.tsx
15
15
  var decode = defineIslandPropsDecoder("product-list");