@riverbankcms/sdk 0.89.1 → 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 (161) hide show
  1. package/README.md +27 -4
  2. package/dist/{PreviewEditorSidebar-JDR64FEC.mjs → PreviewEditorSidebar-KVXNF3VW.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-67TMJMAF.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/bookingOperations.d.ts +2 -0
  8. package/dist/_dts/api/src/bookingRecords.d.ts +4 -2
  9. package/dist/_dts/api/src/bookings.d.ts +3 -1
  10. package/dist/_dts/api/src/index.d.ts +6 -5
  11. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +15 -5
  12. package/dist/_dts/api/src/request.d.ts +21 -0
  13. package/dist/_dts/api/src/sdk-event-upsert.d.ts +3 -1
  14. package/dist/_dts/api/src/sdkContracts.d.ts +2 -0
  15. package/dist/_dts/api/src/types.d.ts +3 -1
  16. package/dist/_dts/api/src/url.d.ts +6 -3
  17. package/dist/_dts/block-form/src/utils/visibleWhen.d.ts +1 -0
  18. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailCard.d.ts +5 -1
  19. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailGrid.d.ts +9 -1
  20. package/dist/_dts/block-form/src/widgets/RepeaterField/components/index.d.ts +1 -0
  21. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +7 -11
  22. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +6 -0
  23. package/dist/_dts/blocks/src/index.d.ts +2 -1
  24. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +14 -6
  25. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -4
  26. package/dist/_dts/blocks/src/system/blocks/hero.d.ts +0 -2
  27. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +3 -3
  28. package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +8 -0
  29. package/dist/_dts/blocks/src/system/constants/events.d.ts +4 -1
  30. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +3 -1
  31. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +17 -5
  33. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +51 -6
  34. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -0
  35. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationWizard.d.ts +2 -2
  36. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -17
  37. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +5 -9
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +5 -9
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -1
  40. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +24 -0
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +5 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +4 -4
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +50 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -2
  45. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +1 -1
  47. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +11 -1
  48. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -1
  49. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +11 -1
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/calendarViewOptions.d.ts +10 -0
  51. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventProductEligibility.d.ts +24 -0
  52. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +5 -2
  53. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +2 -2
  54. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  55. package/dist/_dts/content-model/src/entry-slots/sdkBlocks.d.ts +21 -0
  56. package/dist/_dts/content-model/src/entry-slots/types.d.ts +7 -0
  57. package/dist/_dts/core/src/money-input.d.ts +18 -0
  58. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +50 -0
  59. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -1
  60. package/dist/_dts/media-editor/src/fieldUi.d.ts +6 -0
  61. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  62. package/dist/_dts/preview-next/src/client/index.d.ts +1 -0
  63. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -2
  64. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -2
  65. package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +3 -2
  66. package/dist/_dts/preview-next/src/client/preview/SiteChromeEditableSurface.d.ts +2 -2
  67. package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +6 -0
  68. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +2 -1
  69. package/dist/_dts/sdk/src/cli/commands/pull-dated-offering-scope.d.ts +10 -0
  70. package/dist/_dts/sdk/src/cli/content/reader.d.ts +12 -5
  71. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -55
  72. package/dist/_dts/sdk/src/components.d.ts +1 -0
  73. package/dist/_dts/sdk/src/config/field-definitions.d.ts +3 -1
  74. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +3 -1
  75. package/dist/_dts/sdk/src/next/types.d.ts +8 -11
  76. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +1 -1
  77. package/dist/_dts/sdk/src/rendering/blocks-theme-scope.d.ts +2 -1
  78. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +8 -7
  79. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +5 -6
  80. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -0
  81. package/dist/_dts/sdk/src/rendering/server.d.ts +1 -0
  82. package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +26 -0
  83. package/dist/_dts/sdk/src/version.d.ts +1 -1
  84. package/dist/_dts/site-commands/src/commands.d.ts +18 -0
  85. package/dist/_dts/theme-core/src/ResponsiveScope.d.ts +12 -0
  86. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
  87. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +2 -2
  88. package/dist/_dts/theme-core/src/buttons/types.d.ts +5 -5
  89. package/dist/_dts/theme-core/src/cards/types.d.ts +2 -2
  90. package/dist/_dts/theme-core/src/index.d.ts +2 -0
  91. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +21 -21
  92. package/dist/_dts/theme-core/src/schema.d.ts +18 -18
  93. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  94. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  95. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +4 -4
  96. package/dist/_dts/theme-core/src/themeRuntime.d.ts +11 -0
  97. package/dist/{chunk-HKJQERFR.mjs → chunk-AEOYWPE4.mjs} +91 -55
  98. package/dist/{chunk-F645A5UV.mjs → chunk-BOQXMCSP.mjs} +129 -101
  99. package/dist/{chunk-ZQRBLCW5.mjs → chunk-GSPFFUVB.mjs} +2 -2
  100. package/dist/{chunk-7YUAXONX.mjs → chunk-PMBB6MQ7.mjs} +1280 -774
  101. package/dist/{chunk-TGBJWKMP.mjs → chunk-RQ3XZ4SJ.mjs} +9 -1
  102. package/dist/{chunk-7N46MZHI.mjs → chunk-UG7I7S7W.mjs} +1 -1
  103. package/dist/cli/index.mjs +899 -531
  104. package/dist/cli/init-docs/content/cli-reference.md +6 -1
  105. package/dist/cli/init-docs/content/content-management.md +27 -0
  106. package/dist/client/{accordion-MUCVNGQ7.mjs → accordion-GXQNWQ6O.mjs} +1 -1
  107. package/dist/client/{bookingForm-PKD6EFIE.mjs → bookingForm-STLUJ36H.mjs} +25 -270
  108. package/dist/client/bookings.mjs +432 -269
  109. package/dist/client/{carousel-3TKQSNJC.mjs → carousel-CVRN6EPP.mjs} +1 -1
  110. package/dist/client/{cart-6XHSZK23.mjs → cart-IYIBA5CL.mjs} +5 -6
  111. package/dist/client/{checkout-FVSPM6FI.mjs → checkout-O3BGM4GS.mjs} +5 -6
  112. package/dist/client/chunk-4RTFGHZN.mjs +433 -0
  113. package/dist/client/{chunk-UQFY4AHX.mjs → chunk-6DPXDOIL.mjs} +65 -28
  114. package/dist/client/{chunk-ZT5XE7FK.mjs → chunk-D3ETC2SU.mjs} +1 -1
  115. package/dist/client/{chunk-CQKKFEQD.mjs → chunk-DAS5CIER.mjs} +274 -105
  116. package/dist/client/{chunk-SDIYSQAY.mjs → chunk-HIHOQGIP.mjs} +2 -3
  117. package/dist/client/{chunk-ZJZZA5EP.mjs → chunk-MFPKS6QS.mjs} +11 -14
  118. package/dist/client/{chunk-EY42X22F.mjs → chunk-NBFRJ5NB.mjs} +156 -4
  119. package/dist/client/{chunk-VGLXACVK.mjs → chunk-VFHZLZAC.mjs} +1 -1
  120. package/dist/client/{chunk-STJ2NCQM.mjs → chunk-WHZQDPBZ.mjs} +19 -1
  121. package/dist/client/{chunk-RSQWWUAD.mjs → chunk-Z62JYS5O.mjs} +3 -3
  122. package/dist/client/client.mjs +3292 -2827
  123. package/dist/client/{courseRegistration-ATZSYDHM.mjs → courseRegistration-2D3ACMJR.mjs} +18 -56
  124. package/dist/client/{eventCalendar-6T2UGKKP.mjs → eventCalendar-QY4UZUFF.mjs} +8 -9
  125. package/dist/client/{eventCombined-Q4VANXVF.mjs → eventCombined-RRCDKJC2.mjs} +8 -9
  126. package/dist/client/{eventDetails-DW37E7VW.mjs → eventDetails-YO335BUT.mjs} +8 -9
  127. package/dist/client/{eventListing-XURTSAUW.mjs → eventListing-PXA6GFQ3.mjs} +8 -9
  128. package/dist/client/{eventRegistration-MRKEVAXW.mjs → eventRegistration-2ZHEDDXO.mjs} +8 -9
  129. package/dist/client/{form-WZZFFGMU.mjs → form-ZS6KX4U2.mjs} +6 -6
  130. package/dist/client/{headerSection-EQYVQBLM.mjs → headerSection-QK5SLIIB.mjs} +2 -2
  131. package/dist/client/hooks.mjs +1084 -1029
  132. package/dist/client/{locationMap-MFF5VAZR.mjs → locationMap-GFNIUD2X.mjs} +2 -2
  133. package/dist/client/{newsletterForm-JQ77UYIE.mjs → newsletterForm-PGLTTCUG.mjs} +4 -4
  134. package/dist/client/{productDetail-25LMT3IZ.mjs → productDetail-OPBE5ZPI.mjs} +5 -6
  135. package/dist/client/{productList-5ABEMKUG.mjs → productList-NI72Q62Z.mjs} +5 -6
  136. package/dist/client/rendering/client.mjs +2692 -2285
  137. package/dist/client/rendering/islands.mjs +18 -18
  138. package/dist/client/rendering.mjs +2611 -2156
  139. package/dist/client/{shop-OMMQZ6YO.mjs → shop-3ZQPEWYI.mjs} +5 -6
  140. package/dist/client/spam-protection.mjs +4 -5
  141. package/dist/preview-next/before-render.mjs +2 -2
  142. package/dist/preview-next/client/runtime.mjs +5 -5
  143. package/dist/{sdk-runtime-WNLBZ3ZH.mjs → sdk-runtime-FSHXCWDS.mjs} +6 -6
  144. package/dist/server/components.mjs +1722 -1453
  145. package/dist/server/config-validation.mjs +1316 -1261
  146. package/dist/server/config.mjs +1316 -1261
  147. package/dist/server/data.mjs +1084 -1029
  148. package/dist/server/index.mjs +135 -100
  149. package/dist/server/navigation.mjs +20 -30
  150. package/dist/server/next.mjs +1782 -1500
  151. package/dist/server/page-converter.mjs +1009 -946
  152. package/dist/server/prebuild.mjs +1 -1
  153. package/dist/server/rendering/server.mjs +1722 -1453
  154. package/dist/server/rendering.mjs +1728 -1459
  155. package/dist/server/routing.mjs +1127 -1045
  156. package/dist/server/server.mjs +1219 -1129
  157. package/dist/server/theme-bridge.mjs +8 -5
  158. package/package.json +2 -2
  159. package/dist/SdkPreviewModeRuntime-ZBEMRV7N.mjs +0 -8
  160. package/dist/client/chunk-LQFDYWPJ.mjs +0 -184
  161. package/dist/client/chunk-ZFHRN6W2.mjs +0 -66
@@ -18944,12 +18944,15 @@ import { jsx as jsx2 } from "react/jsx-runtime";
18944
18944
  import * as React from "react";
18945
18945
  import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
18946
18946
 
18947
+ // ../theme-core/src/ResponsiveScope.tsx
18948
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
18949
+
18947
18950
  // ../theme-core/src/siteChromeOverlayClearance.ts
18948
18951
  var SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
18949
18952
  var SITE_CHROME_VISIBLE_HEADER_SELECTOR = `[${SITE_CHROME_VISIBLE_HEADER_ATTR}="true"]`;
18950
18953
 
18951
18954
  // ../theme-core/src/siteChrome.tsx
18952
- import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
18955
+ import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
18953
18956
 
18954
18957
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
18955
18958
  import { z as z20 } from "zod";
@@ -19578,10 +19581,10 @@ function buildBridgeGeneratorTheme(corners2) {
19578
19581
  }
19579
19582
 
19580
19583
  // ../theme-core/src/mock-themes/components/swatch.tsx
19581
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
19584
+ import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
19582
19585
 
19583
19586
  // ../theme-core/src/mock-themes/components/PaletteCard.tsx
19584
- import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
19587
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
19585
19588
 
19586
19589
  // src/theme-bridge/generateCssVars.ts
19587
19590
  function generateThemeBridgeCss(config) {
@@ -19609,7 +19612,7 @@ ${cssLines}
19609
19612
  }
19610
19613
 
19611
19614
  // src/theme-bridge/ThemeBridgeProvider.tsx
19612
- import { jsx as jsx7 } from "react/jsx-runtime";
19615
+ import { jsx as jsx8 } from "react/jsx-runtime";
19613
19616
  function ThemeBridgeProvider({
19614
19617
  config,
19615
19618
  children,
@@ -19620,7 +19623,7 @@ function ThemeBridgeProvider({
19620
19623
  [config]
19621
19624
  );
19622
19625
  const cssVarsStyle = runtime.cssVars;
19623
- return /* @__PURE__ */ jsx7(
19626
+ return /* @__PURE__ */ jsx8(
19624
19627
  ThemeScopeCore,
19625
19628
  {
19626
19629
  cssVars: cssVarsStyle,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.89.1",
3
+ "version": "0.90.0",
4
4
  "description": "Riverbank CMS SDK for headless content consumption",
5
5
  "main": "./dist/server/index.mjs",
6
6
  "module": "./dist/server/index.mjs",
@@ -226,7 +226,7 @@
226
226
  "check:declaration-hygiene": "node scripts/check-declaration-hygiene.mjs",
227
227
  "check:packed-exports": "node scripts/check-packed-exports.mjs",
228
228
  "measure:public-bundles": "node scripts/measure-public-bundles.mjs --pretty",
229
- "lint": "eslint --cache --cache-location node_modules/.cache/eslint/.eslintcache src",
229
+ "lint": "node ../../scripts/run-package-lint.mjs src",
230
230
  "test": "vitest run",
231
231
  "test:edge-smoke": "sh -c \"cd src/next/__fixtures__/edge-theme-smoke && mkdir -p node_modules/@riverbankcms && ln -sfn ../../../../../.. node_modules/@riverbankcms/sdk && NEXT_TELEMETRY_DISABLED=1 next build\"",
232
232
  "test:preview-client-smoke": "node scripts/preview-client-smoke.mjs",
@@ -1,8 +0,0 @@
1
- "use client";
2
- export { SdkPreviewModeRuntime } from './chunk-HKJQERFR.mjs';
3
- import './chunk-7N46MZHI.mjs';
4
- import './chunk-TGBJWKMP.mjs';
5
- import './chunk-ZQRBLCW5.mjs';
6
- import './chunk-7YUAXONX.mjs';
7
- import './chunk-F645A5UV.mjs';
8
- import './chunk-R7POPVJR.mjs';
@@ -1,184 +0,0 @@
1
- "use client";
2
- import { assertNever11 } from './chunk-UQFY4AHX.mjs';
3
- import { useReducer, useRef, useCallback, useEffect } from 'react';
4
-
5
- // ../blocks/src/system/runtime/hooks/usePolling.state.ts
6
- function createInitialPollingState() {
7
- return {
8
- tag: "idle",
9
- result: null,
10
- error: null
11
- };
12
- }
13
- function pollingReducer(state, action) {
14
- switch (action.type) {
15
- case "polling-went-idle":
16
- return createInitialPollingState();
17
- case "polling-reset":
18
- return {
19
- tag: "polling",
20
- result: null,
21
- error: null
22
- };
23
- case "polling-progressed":
24
- return {
25
- tag: "polling",
26
- result: action.result,
27
- error: null
28
- };
29
- case "polling-completed":
30
- return {
31
- tag: "completed",
32
- result: action.result,
33
- error: null
34
- };
35
- case "polling-failed":
36
- return {
37
- tag: "failed",
38
- result: action.result,
39
- error: null
40
- };
41
- case "polling-request-failed":
42
- switch (state.tag) {
43
- case "idle":
44
- return {
45
- tag: "polling",
46
- result: null,
47
- error: action.error
48
- };
49
- case "polling":
50
- return {
51
- tag: "polling",
52
- result: state.result,
53
- error: action.error
54
- };
55
- case "completed":
56
- case "failed":
57
- case "timeout":
58
- return state;
59
- default:
60
- return assertNever11(state);
61
- }
62
- case "polling-timed-out":
63
- return {
64
- tag: "timeout",
65
- result: state.result,
66
- error: new Error("Polling timed out")
67
- };
68
- default:
69
- return assertNever11(action);
70
- }
71
- }
72
-
73
- // ../blocks/src/system/runtime/hooks/usePolling.ts
74
- var DEFAULT_MAX_ATTEMPTS = 10;
75
- var DEFAULT_POLL_INTERVAL = 1e3;
76
- function usePolling(config) {
77
- const [state, dispatch] = useReducer(
78
- pollingReducer,
79
- void 0,
80
- createInitialPollingState
81
- );
82
- const attemptsRef = useRef(0);
83
- const timeoutRef = useRef(null);
84
- const isPollingRef = useRef(false);
85
- const isActiveRef = useRef(false);
86
- const generationRef = useRef(0);
87
- const configRef = useRef(config);
88
- configRef.current = config;
89
- const cleanup = useCallback(() => {
90
- isActiveRef.current = false;
91
- generationRef.current += 1;
92
- if (timeoutRef.current) {
93
- clearTimeout(timeoutRef.current);
94
- timeoutRef.current = null;
95
- }
96
- isPollingRef.current = false;
97
- }, []);
98
- const resetState = useCallback(() => {
99
- dispatch({ type: "polling-reset" });
100
- attemptsRef.current = 0;
101
- }, []);
102
- const poll = useCallback(async () => {
103
- const cfg = configRef.current;
104
- if (!cfg) return true;
105
- if (isPollingRef.current) return false;
106
- const maxAttempts = cfg.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
107
- if (attemptsRef.current >= maxAttempts) {
108
- dispatch({ type: "polling-timed-out" });
109
- cleanup();
110
- return true;
111
- }
112
- isPollingRef.current = true;
113
- attemptsRef.current += 1;
114
- const generation = generationRef.current;
115
- try {
116
- const data = await cfg.pollFn();
117
- if (generation !== generationRef.current || !isActiveRef.current) {
118
- isPollingRef.current = false;
119
- return true;
120
- }
121
- if (cfg.isFailed?.(data)) {
122
- dispatch({ type: "polling-failed", result: data });
123
- cleanup();
124
- return true;
125
- }
126
- if (cfg.isComplete(data)) {
127
- dispatch({ type: "polling-completed", result: data });
128
- cleanup();
129
- return true;
130
- }
131
- dispatch({ type: "polling-progressed", result: data });
132
- isPollingRef.current = false;
133
- return false;
134
- } catch (err) {
135
- if (generation !== generationRef.current || !isActiveRef.current) {
136
- isPollingRef.current = false;
137
- return true;
138
- }
139
- if (err instanceof Error) {
140
- dispatch({ type: "polling-request-failed", error: err });
141
- }
142
- isPollingRef.current = false;
143
- return false;
144
- }
145
- }, [cleanup]);
146
- const schedulePoll = useCallback(() => {
147
- if (!isActiveRef.current) return;
148
- const cfg = configRef.current;
149
- const pollInterval = cfg?.interval ?? DEFAULT_POLL_INTERVAL;
150
- const doPoll = async () => {
151
- const shouldStop = await poll();
152
- if (!shouldStop && isActiveRef.current) {
153
- timeoutRef.current = setTimeout(doPoll, pollInterval);
154
- }
155
- };
156
- void doPoll();
157
- }, [poll]);
158
- useEffect(() => {
159
- if (!config) {
160
- cleanup();
161
- dispatch({ type: "polling-went-idle" });
162
- return;
163
- }
164
- resetState();
165
- isActiveRef.current = true;
166
- schedulePoll();
167
- return cleanup;
168
- }, [config, cleanup, resetState, schedulePoll]);
169
- const retry = useCallback(() => {
170
- if (!configRef.current) return;
171
- cleanup();
172
- resetState();
173
- isActiveRef.current = true;
174
- schedulePoll();
175
- }, [cleanup, resetState, schedulePoll]);
176
- return {
177
- status: config ? state.tag : "idle",
178
- result: config ? state.result : null,
179
- error: config ? state.error : null,
180
- retry
181
- };
182
- }
183
-
184
- export { usePolling };
@@ -1,66 +0,0 @@
1
- "use client";
2
- import { useState, useEffect } from 'react';
3
-
4
- // ../blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.ts
5
- function useDiscountCodeUi(options) {
6
- const [discountUiOpen, setDiscountUiOpen] = useState(false);
7
- const [discountCode, setDiscountCode] = useState("");
8
- const [discountsAvailable, setDiscountsAvailable] = useState(false);
9
- const [manualCodeEntryAllowed, setManualCodeEntryAllowed] = useState(false);
10
- const [autoAppliedDiscount, setAutoAppliedDiscount] = useState(null);
11
- const [discountsAvailableLoading, setDiscountsAvailableLoading] = useState(false);
12
- useEffect(() => {
13
- let cancelled = false;
14
- async function checkDiscountAvailability() {
15
- if (!options.discountContext) {
16
- setDiscountsAvailable(false);
17
- setManualCodeEntryAllowed(false);
18
- setAutoAppliedDiscount(null);
19
- setDiscountsAvailableLoading(false);
20
- setDiscountUiOpen(false);
21
- setDiscountCode("");
22
- return;
23
- }
24
- setDiscountsAvailableLoading(true);
25
- try {
26
- const res = await options.api.getDiscountsAvailable({
27
- context: options.discountContext,
28
- subtotalCents: options.subtotalCents
29
- });
30
- if (cancelled) return;
31
- setDiscountsAvailable(res.hasDiscounts);
32
- setManualCodeEntryAllowed(res.manualCodeEntryAllowed);
33
- setAutoAppliedDiscount(res.autoAppliedDiscount);
34
- if (!res.hasDiscounts || !res.manualCodeEntryAllowed) {
35
- setDiscountUiOpen(false);
36
- setDiscountCode("");
37
- }
38
- } catch {
39
- if (cancelled) return;
40
- setDiscountsAvailable(false);
41
- setManualCodeEntryAllowed(false);
42
- setAutoAppliedDiscount(null);
43
- setDiscountUiOpen(false);
44
- setDiscountCode("");
45
- } finally {
46
- if (!cancelled) setDiscountsAvailableLoading(false);
47
- }
48
- }
49
- void checkDiscountAvailability();
50
- return () => {
51
- cancelled = true;
52
- };
53
- }, [options.api, options.discountContext, options.subtotalCents]);
54
- return {
55
- discountUiOpen,
56
- setDiscountUiOpen,
57
- discountCode,
58
- setDiscountCode,
59
- discountsAvailable,
60
- manualCodeEntryAllowed,
61
- autoAppliedDiscount,
62
- discountsAvailableLoading
63
- };
64
- }
65
-
66
- export { useDiscountCodeUi };