@flamingo-stack/openframe-frontend-core 0.0.399-snapshot.20260710120252 → 0.0.399

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 (116) hide show
  1. package/dist/{chunk-56XCRZ7I.js → chunk-2L6ALD2Q.js} +2 -2
  2. package/dist/{chunk-UYBNOHTC.js → chunk-2XVOYDRF.js} +22 -57
  3. package/dist/{chunk-UYBNOHTC.js.map → chunk-2XVOYDRF.js.map} +1 -1
  4. package/dist/{chunk-RYPCNUXA.js → chunk-4H2ICJYB.js} +4 -4
  5. package/dist/{chunk-463X3AW2.js → chunk-4K5XJ5EJ.js} +3 -3
  6. package/dist/{chunk-MTBFE3JF.js → chunk-4KWIQEZT.js} +2 -2
  7. package/dist/{chunk-QGQ76SSR.cjs → chunk-4PEC5KU6.cjs} +12 -12
  8. package/dist/{chunk-QGQ76SSR.cjs.map → chunk-4PEC5KU6.cjs.map} +1 -1
  9. package/dist/{chunk-J6IQQJJQ.cjs → chunk-7OKNKZBW.cjs} +531 -566
  10. package/dist/chunk-7OKNKZBW.cjs.map +1 -0
  11. package/dist/{chunk-MQRTT3DO.js → chunk-A6KGHQRF.js} +6 -6
  12. package/dist/{chunk-6VR7BJF6.js → chunk-BSJO5VFV.js} +5 -5
  13. package/dist/{chunk-PD5MXNTJ.js → chunk-CRRH7RJX.js} +5 -5
  14. package/dist/{chunk-ILWSJCWD.cjs → chunk-D5IHYUBY.cjs} +29 -29
  15. package/dist/{chunk-ILWSJCWD.cjs.map → chunk-D5IHYUBY.cjs.map} +1 -1
  16. package/dist/{chunk-UFP45JLE.js → chunk-FXWURWDU.js} +3 -3
  17. package/dist/{chunk-FHEIG7QO.js → chunk-G3A7QHCX.js} +2 -2
  18. package/dist/{chunk-556BG7SX.cjs → chunk-G5NDKTX6.cjs} +40 -40
  19. package/dist/{chunk-556BG7SX.cjs.map → chunk-G5NDKTX6.cjs.map} +1 -1
  20. package/dist/{chunk-MFRP2UDK.cjs → chunk-JBLBFJ4N.cjs} +32 -32
  21. package/dist/{chunk-MFRP2UDK.cjs.map → chunk-JBLBFJ4N.cjs.map} +1 -1
  22. package/dist/{chunk-J4XR6YYZ.cjs → chunk-JWBRDNYH.cjs} +4 -23
  23. package/dist/chunk-JWBRDNYH.cjs.map +1 -0
  24. package/dist/{chunk-VTSEL7CJ.cjs → chunk-NCW22SII.cjs} +73 -73
  25. package/dist/{chunk-VTSEL7CJ.cjs.map → chunk-NCW22SII.cjs.map} +1 -1
  26. package/dist/{chunk-KIC4ZEZ7.cjs → chunk-O5NA3ULU.cjs} +73 -73
  27. package/dist/{chunk-KIC4ZEZ7.cjs.map → chunk-O5NA3ULU.cjs.map} +1 -1
  28. package/dist/{chunk-ABRDOCVN.cjs → chunk-QNYNXSYQ.cjs} +7 -7
  29. package/dist/{chunk-ABRDOCVN.cjs.map → chunk-QNYNXSYQ.cjs.map} +1 -1
  30. package/dist/{chunk-OPD5V57R.cjs → chunk-RIC4TCPD.cjs} +19 -19
  31. package/dist/{chunk-OPD5V57R.cjs.map → chunk-RIC4TCPD.cjs.map} +1 -1
  32. package/dist/{chunk-6XQJSN7G.cjs → chunk-VOHOA3WV.cjs} +15 -15
  33. package/dist/{chunk-6XQJSN7G.cjs.map → chunk-VOHOA3WV.cjs.map} +1 -1
  34. package/dist/{chunk-LAL63W5J.js → chunk-VVKWNVKE.js} +6 -6
  35. package/dist/{chunk-Q3AO2QWK.cjs → chunk-WBLRUO3F.cjs} +3 -3
  36. package/dist/{chunk-Q3AO2QWK.cjs.map → chunk-WBLRUO3F.cjs.map} +1 -1
  37. package/dist/{chunk-4HAVKWTJ.js → chunk-XBCAY6NE.js} +3 -3
  38. package/dist/{chunk-EFTKJFEF.cjs → chunk-YWCCKB4J.cjs} +5 -5
  39. package/dist/{chunk-EFTKJFEF.cjs.map → chunk-YWCCKB4J.cjs.map} +1 -1
  40. package/dist/{chunk-I4XG5PJA.js → chunk-Z5ERSGP2.js} +2 -2
  41. package/dist/{chunk-RSFHAFZN.cjs → chunk-ZDT2MBKE.cjs} +40 -40
  42. package/dist/{chunk-RSFHAFZN.cjs.map → chunk-ZDT2MBKE.cjs.map} +1 -1
  43. package/dist/{chunk-DH6HTYOV.js → chunk-ZSZRJWY3.js} +134 -153
  44. package/dist/chunk-ZSZRJWY3.js.map +1 -0
  45. package/dist/components/case-studies/index.cjs +9 -9
  46. package/dist/components/case-studies/index.js +3 -3
  47. package/dist/components/chat/index.cjs +3 -3
  48. package/dist/components/chat/index.js +2 -2
  49. package/dist/components/contact/index.cjs +4 -4
  50. package/dist/components/contact/index.js +3 -3
  51. package/dist/components/docs/index.cjs +6 -6
  52. package/dist/components/docs/index.js +5 -5
  53. package/dist/components/embeds/index.cjs +4 -4
  54. package/dist/components/embeds/index.js +3 -3
  55. package/dist/components/faq/index.cjs +5 -5
  56. package/dist/components/faq/index.js +4 -4
  57. package/dist/components/features/auth/auth-benefits-panel.d.ts.map +1 -1
  58. package/dist/components/features/auth/complete-account-form.d.ts.map +1 -1
  59. package/dist/components/features/auth/create-organization-form.d.ts.map +1 -1
  60. package/dist/components/features/auth/login-form.d.ts.map +1 -1
  61. package/dist/components/features/auth/openframe-sso-login-form.d.ts.map +1 -1
  62. package/dist/components/features/auth/openframe-sso-signup-form.d.ts.map +1 -1
  63. package/dist/components/features/auth/password-reset-form.d.ts.map +1 -1
  64. package/dist/components/features/index.cjs +3 -3
  65. package/dist/components/features/index.js +2 -2
  66. package/dist/components/help-center-pages/index.cjs +22 -22
  67. package/dist/components/help-center-pages/index.js +13 -13
  68. package/dist/components/index.cjs +125 -125
  69. package/dist/components/index.js +11 -11
  70. package/dist/components/navigation/index.cjs +3 -3
  71. package/dist/components/navigation/index.js +2 -2
  72. package/dist/components/onboarding-guides/index.cjs +7 -7
  73. package/dist/components/onboarding-guides/index.js +6 -6
  74. package/dist/components/related-content/index.cjs +5 -5
  75. package/dist/components/related-content/index.js +4 -4
  76. package/dist/components/tickets/index.cjs +6 -6
  77. package/dist/components/tickets/index.js +5 -5
  78. package/dist/components/ui/index.cjs +3 -3
  79. package/dist/components/ui/index.js +2 -2
  80. package/dist/hooks/index.cjs +2 -4
  81. package/dist/hooks/index.cjs.map +1 -1
  82. package/dist/hooks/index.js +1 -3
  83. package/dist/hooks/ui/index.d.ts +0 -1
  84. package/dist/hooks/ui/index.d.ts.map +1 -1
  85. package/dist/index.cjs +3 -5
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.js +2 -4
  88. package/package.json +1 -1
  89. package/src/components/features/auth/auth-benefits-panel.tsx +1 -1
  90. package/src/components/features/auth/complete-account-form.tsx +4 -15
  91. package/src/components/features/auth/create-organization-form.tsx +5 -14
  92. package/src/components/features/auth/login-form.tsx +1 -6
  93. package/src/components/features/auth/openframe-sso-login-form.tsx +2 -9
  94. package/src/components/features/auth/openframe-sso-signup-form.tsx +5 -18
  95. package/src/components/features/auth/password-reset-form.tsx +2 -9
  96. package/src/hooks/ui/index.ts +0 -1
  97. package/src/stories/Input.stories.tsx +1 -1
  98. package/src/stories/auth/CreateOrganization.stories.tsx +1 -2
  99. package/dist/chunk-DH6HTYOV.js.map +0 -1
  100. package/dist/chunk-J4XR6YYZ.cjs.map +0 -1
  101. package/dist/chunk-J6IQQJJQ.cjs.map +0 -1
  102. package/dist/hooks/ui/use-deferred-error.d.ts +0 -16
  103. package/dist/hooks/ui/use-deferred-error.d.ts.map +0 -1
  104. package/src/hooks/ui/use-deferred-error.ts +0 -38
  105. /package/dist/{chunk-56XCRZ7I.js.map → chunk-2L6ALD2Q.js.map} +0 -0
  106. /package/dist/{chunk-RYPCNUXA.js.map → chunk-4H2ICJYB.js.map} +0 -0
  107. /package/dist/{chunk-463X3AW2.js.map → chunk-4K5XJ5EJ.js.map} +0 -0
  108. /package/dist/{chunk-MTBFE3JF.js.map → chunk-4KWIQEZT.js.map} +0 -0
  109. /package/dist/{chunk-MQRTT3DO.js.map → chunk-A6KGHQRF.js.map} +0 -0
  110. /package/dist/{chunk-6VR7BJF6.js.map → chunk-BSJO5VFV.js.map} +0 -0
  111. /package/dist/{chunk-PD5MXNTJ.js.map → chunk-CRRH7RJX.js.map} +0 -0
  112. /package/dist/{chunk-UFP45JLE.js.map → chunk-FXWURWDU.js.map} +0 -0
  113. /package/dist/{chunk-FHEIG7QO.js.map → chunk-G3A7QHCX.js.map} +0 -0
  114. /package/dist/{chunk-LAL63W5J.js.map → chunk-VVKWNVKE.js.map} +0 -0
  115. /package/dist/{chunk-4HAVKWTJ.js.map → chunk-XBCAY6NE.js.map} +0 -0
  116. /package/dist/{chunk-I4XG5PJA.js.map → chunk-Z5ERSGP2.js.map} +0 -0
@@ -123,29 +123,11 @@ function useDebounce(value, delay = 500) {
123
123
  return debouncedValue;
124
124
  }
125
125
 
126
- // src/hooks/ui/use-deferred-error.ts
127
- import * as React from "react";
128
- function useDeferredError(error, value, delay = 1500) {
129
- const [touched, setTouched] = React.useState(false);
130
- const [paused, setPaused] = React.useState(false);
131
- React.useEffect(() => {
132
- if (touched) return;
133
- setPaused(false);
134
- const timer = setTimeout(() => setPaused(true), delay);
135
- return () => clearTimeout(timer);
136
- }, [value, delay, touched]);
137
- const onBlur = React.useCallback(() => setTouched(true), []);
138
- return {
139
- error: error && (touched || paused) ? error : void 0,
140
- onBlur
141
- };
142
- }
143
-
144
126
  // src/hooks/ui/use-header-height.ts
145
- import { useEffect as useEffect4, useState as useState4 } from "react";
127
+ import { useEffect as useEffect3, useState as useState3 } from "react";
146
128
  function useHeaderHeight(defaultHeight = 64) {
147
- const [height, setHeight] = useState4(defaultHeight);
148
- useEffect4(() => {
129
+ const [height, setHeight] = useState3(defaultHeight);
130
+ useEffect3(() => {
149
131
  const measure = () => {
150
132
  let total = 0;
151
133
  const header2 = document.querySelector("header");
@@ -184,22 +166,22 @@ function useHeaderHeight(defaultHeight = 64) {
184
166
  }
185
167
 
186
168
  // src/hooks/ui/use-horizontal-scrollbar.ts
187
- import { useRef as useRef2, useState as useState5, useCallback as useCallback3 } from "react";
169
+ import { useRef as useRef2, useState as useState4, useCallback as useCallback2 } from "react";
188
170
  function useHorizontalScrollbar() {
189
171
  const scrollElRef = useRef2(null);
190
172
  const trackRef = useRef2(null);
191
173
  const thumbRef = useRef2(null);
192
174
  const roRef = useRef2(null);
193
175
  const moRef = useRef2(null);
194
- const [thumbRatio, setThumbRatio] = useState5(0);
195
- const [canScrollLeft, setCanScrollLeft] = useState5(false);
196
- const [canScrollRight, setCanScrollRight] = useState5(false);
176
+ const [thumbRatio, setThumbRatio] = useState4(0);
177
+ const [canScrollLeft, setCanScrollLeft] = useState4(false);
178
+ const [canScrollRight, setCanScrollRight] = useState4(false);
197
179
  const prevCanScrollLeftRef = useRef2(false);
198
180
  const prevCanScrollRightRef = useRef2(false);
199
181
  const isDraggingRef = useRef2(false);
200
182
  const dragStartRef = useRef2({ mouseX: 0, scrollLeft: 0 });
201
183
  const rafIdRef = useRef2(0);
202
- const syncThumbToDOM = useCallback3(() => {
184
+ const syncThumbToDOM = useCallback2(() => {
203
185
  const el = scrollElRef.current;
204
186
  const thumb = thumbRef.current;
205
187
  if (!el || !thumb) return;
@@ -212,7 +194,7 @@ function useHorizontalScrollbar() {
212
194
  const fraction = Math.min(Math.max(el.scrollLeft, 0), maxScroll) / maxScroll;
213
195
  thumb.style.left = `${fraction * (1 - ratio) * 100}%`;
214
196
  }, []);
215
- const syncEdgeFades = useCallback3(() => {
197
+ const syncEdgeFades = useCallback2(() => {
216
198
  const el = scrollElRef.current;
217
199
  if (!el) return;
218
200
  const maxScroll = el.scrollWidth - el.clientWidth;
@@ -240,7 +222,7 @@ function useHorizontalScrollbar() {
240
222
  setCanScrollRight(right);
241
223
  }
242
224
  }, []);
243
- const measure = useCallback3(() => {
225
+ const measure = useCallback2(() => {
244
226
  const el = scrollElRef.current;
245
227
  if (!el) return;
246
228
  const ratio = el.clientWidth / el.scrollWidth;
@@ -248,7 +230,7 @@ function useHorizontalScrollbar() {
248
230
  syncThumbToDOM();
249
231
  syncEdgeFades();
250
232
  }, [syncThumbToDOM, syncEdgeFades]);
251
- const scrollRef = useCallback3((node) => {
233
+ const scrollRef = useCallback2((node) => {
252
234
  if (roRef.current) {
253
235
  roRef.current.disconnect();
254
236
  roRef.current = null;
@@ -290,7 +272,7 @@ function useHorizontalScrollbar() {
290
272
  setCanScrollRight(false);
291
273
  }
292
274
  }, [measure, syncThumbToDOM, syncEdgeFades]);
293
- const onScroll = useCallback3(() => {
275
+ const onScroll = useCallback2(() => {
294
276
  if (isDraggingRef.current) return;
295
277
  if (rafIdRef.current) cancelAnimationFrame(rafIdRef.current);
296
278
  rafIdRef.current = requestAnimationFrame(() => {
@@ -298,7 +280,7 @@ function useHorizontalScrollbar() {
298
280
  syncEdgeFades();
299
281
  });
300
282
  }, [syncThumbToDOM, syncEdgeFades]);
301
- const onTrackClick = useCallback3((e) => {
283
+ const onTrackClick = useCallback2((e) => {
302
284
  if (e.target.closest("[data-scrollbar-thumb]")) return;
303
285
  const track = trackRef.current;
304
286
  const el = scrollElRef.current;
@@ -316,13 +298,13 @@ function useHorizontalScrollbar() {
316
298
  const targetScrollLeft = targetFraction * (el.scrollWidth - el.clientWidth);
317
299
  el.scrollTo({ left: targetScrollLeft, behavior: "smooth" });
318
300
  }, []);
319
- const onTrackWheel = useCallback3((e) => {
301
+ const onTrackWheel = useCallback2((e) => {
320
302
  const el = scrollElRef.current;
321
303
  if (!el) return;
322
304
  e.preventDefault();
323
305
  el.scrollLeft += e.deltaX || e.deltaY;
324
306
  }, []);
325
- const onThumbPointerDown = useCallback3((e) => {
307
+ const onThumbPointerDown = useCallback2((e) => {
326
308
  e.preventDefault();
327
309
  e.stopPropagation();
328
310
  const el = scrollElRef.current;
@@ -333,7 +315,7 @@ function useHorizontalScrollbar() {
333
315
  target.setPointerCapture(e.pointerId);
334
316
  target.style.cursor = "grabbing";
335
317
  }, []);
336
- const onThumbPointerMove = useCallback3((e) => {
318
+ const onThumbPointerMove = useCallback2((e) => {
337
319
  if (!isDraggingRef.current) return;
338
320
  const el = scrollElRef.current;
339
321
  const track = trackRef.current;
@@ -353,7 +335,7 @@ function useHorizontalScrollbar() {
353
335
  syncThumbToDOM();
354
336
  syncEdgeFades();
355
337
  }, [syncThumbToDOM, syncEdgeFades]);
356
- const onThumbPointerUp = useCallback3((e) => {
338
+ const onThumbPointerUp = useCallback2((e) => {
357
339
  isDraggingRef.current = false;
358
340
  const target = e.currentTarget;
359
341
  target.releasePointerCapture(e.pointerId);
@@ -376,7 +358,7 @@ function useHorizontalScrollbar() {
376
358
  }
377
359
 
378
360
  // src/hooks/ui/use-image-edge-color.ts
379
- import { useState as useState6, useEffect as useEffect5 } from "react";
361
+ import { useState as useState5, useEffect as useEffect4 } from "react";
380
362
  function extractEdgeColor(img) {
381
363
  const canvas = document.createElement("canvas");
382
364
  const ctx = canvas.getContext("2d");
@@ -432,8 +414,8 @@ function extractEdgeColor(img) {
432
414
  return `rgb(${r}, ${g}, ${b})`;
433
415
  }
434
416
  function useImageEdgeColor(imageUrl, fallback = "#000000") {
435
- const [color, setColor] = useState6(fallback);
436
- useEffect5(() => {
417
+ const [color, setColor] = useState5(fallback);
418
+ useEffect4(() => {
437
419
  if (!imageUrl) {
438
420
  setColor(fallback);
439
421
  return;
@@ -462,9 +444,9 @@ function useImageEdgeColor(imageUrl, fallback = "#000000") {
462
444
  }
463
445
 
464
446
  // src/hooks/ui/use-local-storage.ts
465
- import { useEffect as useEffect6, useRef as useRef3, useState as useState7 } from "react";
447
+ import { useEffect as useEffect5, useRef as useRef3, useState as useState6 } from "react";
466
448
  function useLocalStorage(key, initialValue) {
467
- const [storedValue, setStoredValue] = useState7(() => {
449
+ const [storedValue, setStoredValue] = useState6(() => {
468
450
  try {
469
451
  if (typeof window !== "undefined") {
470
452
  const item = window.localStorage.getItem(key);
@@ -477,7 +459,7 @@ function useLocalStorage(key, initialValue) {
477
459
  });
478
460
  const isInitialized = useRef3(true);
479
461
  const isFromStorageEvent = useRef3(false);
480
- useEffect6(() => {
462
+ useEffect5(() => {
481
463
  if (!isInitialized.current) return;
482
464
  const handleStorageChange = (e) => {
483
465
  if (e.key === key && e.newValue !== null) {
@@ -516,7 +498,7 @@ function useLocalStorage(key, initialValue) {
516
498
  window.removeEventListener("localStorageUpdate", handleCustomStorageUpdate);
517
499
  };
518
500
  }, [key]);
519
- useEffect6(() => {
501
+ useEffect5(() => {
520
502
  if (!isInitialized.current) return;
521
503
  if (isFromStorageEvent.current) {
522
504
  isFromStorageEvent.current = false;
@@ -542,9 +524,9 @@ function useLocalStorage(key, initialValue) {
542
524
  }
543
525
 
544
526
  // src/hooks/ui/use-media-query.ts
545
- import { useLayoutEffect, useState as useState8 } from "react";
527
+ import { useLayoutEffect, useState as useState7 } from "react";
546
528
  function useMediaQuery(query) {
547
- const [matches, setMatches] = useState8(void 0);
529
+ const [matches, setMatches] = useState7(void 0);
548
530
  useLayoutEffect(() => {
549
531
  const matchMedia = window.matchMedia(query);
550
532
  const handleChange = () => {
@@ -577,7 +559,7 @@ function useLgUp() {
577
559
  }
578
560
 
579
561
  // src/hooks/ui/use-memoized-callback.ts
580
- import { useCallback as useCallback4, useRef as useRef4 } from "react";
562
+ import { useCallback as useCallback3, useRef as useRef4 } from "react";
581
563
  function useMemoizedCallback(callback, dependencies) {
582
564
  const callbackRef = useRef4(callback);
583
565
  const dependenciesRef = useRef4(dependencies);
@@ -586,15 +568,15 @@ function useMemoizedCallback(callback, dependencies) {
586
568
  if (depsChanged) {
587
569
  dependenciesRef.current = dependencies;
588
570
  }
589
- return useCallback4(((...args) => callbackRef.current(...args)), [depsChanged]);
571
+ return useCallback3(((...args) => callbackRef.current(...args)), [depsChanged]);
590
572
  }
591
573
 
592
574
  // src/hooks/ui/use-notification-permission.ts
593
- import { useCallback as useCallback5, useEffect as useEffect7, useState as useState9 } from "react";
575
+ import { useCallback as useCallback4, useEffect as useEffect6, useState as useState8 } from "react";
594
576
  function useNotificationPermission() {
595
- const [supported, setSupported] = useState9(false);
596
- const [permission, setPermission] = useState9("default");
597
- useEffect7(() => {
577
+ const [supported, setSupported] = useState8(false);
578
+ const [permission, setPermission] = useState8("default");
579
+ useEffect6(() => {
598
580
  if (typeof window === "undefined" || !("Notification" in window)) return;
599
581
  setSupported(true);
600
582
  const sync = () => setPermission(Notification.permission);
@@ -615,7 +597,7 @@ function useNotificationPermission() {
615
597
  window.removeEventListener("focus", sync);
616
598
  };
617
599
  }, []);
618
- const request = useCallback5(async () => {
600
+ const request = useCallback4(async () => {
619
601
  if (typeof window === "undefined" || !("Notification" in window)) {
620
602
  return "denied";
621
603
  }
@@ -630,7 +612,7 @@ function useNotificationPermission() {
630
612
  }
631
613
 
632
614
  // src/hooks/ui/use-onboarding-state.ts
633
- import { useState as useState10, useEffect as useEffect8, useCallback as useCallback6 } from "react";
615
+ import { useState as useState9, useEffect as useEffect7, useCallback as useCallback5 } from "react";
634
616
 
635
617
  // src/utils/onboarding-storage.ts
636
618
  var DEFAULT_STATE = {
@@ -705,9 +687,9 @@ function dismissOnboarding(key) {
705
687
 
706
688
  // src/hooks/ui/use-onboarding-state.ts
707
689
  function useOnboardingState(storageKey = "openframe-onboarding-state") {
708
- const [state, setState] = useState10(() => loadOnboardingState(storageKey));
709
- const [, forceUpdate] = useState10(0);
710
- useEffect8(() => {
690
+ const [state, setState] = useState9(() => loadOnboardingState(storageKey));
691
+ const [, forceUpdate] = useState9(0);
692
+ useEffect7(() => {
711
693
  const handleStorageUpdate = (e) => {
712
694
  if (e.detail.key === storageKey) {
713
695
  const newState = loadOnboardingState(storageKey);
@@ -721,38 +703,38 @@ function useOnboardingState(storageKey = "openframe-onboarding-state") {
721
703
  window.removeEventListener("localStorageUpdate", handleStorageUpdate);
722
704
  };
723
705
  }, [storageKey]);
724
- const markComplete = useCallback6((stepId) => {
706
+ const markComplete = useCallback5((stepId) => {
725
707
  console.log(`\u{1F3AF} markComplete called for: "${stepId}"`);
726
708
  const newState = markStepComplete(storageKey, stepId);
727
709
  setState(newState);
728
710
  forceUpdate((prev) => prev + 1);
729
711
  }, [storageKey]);
730
- const markSkipped = useCallback6((stepId) => {
712
+ const markSkipped = useCallback5((stepId) => {
731
713
  console.log(`\u23ED\uFE0F markSkipped called for: "${stepId}"`);
732
714
  const newState = markStepSkipped(storageKey, stepId);
733
715
  setState(newState);
734
716
  forceUpdate((prev) => prev + 1);
735
717
  }, [storageKey]);
736
- const dismissOnboarding2 = useCallback6(() => {
718
+ const dismissOnboarding2 = useCallback5(() => {
737
719
  console.log(`\u{1F6AB} dismissOnboarding called`);
738
720
  const newState = dismissOnboarding(storageKey);
739
721
  setState(newState);
740
722
  forceUpdate((prev) => prev + 1);
741
723
  }, [storageKey]);
742
- const markMultipleComplete2 = useCallback6((stepIds) => {
724
+ const markMultipleComplete2 = useCallback5((stepIds) => {
743
725
  console.log(`\u{1F3AF} markMultipleComplete called for:`, stepIds);
744
726
  const newState = markMultipleComplete(storageKey, stepIds);
745
727
  setState(newState);
746
728
  forceUpdate((prev) => prev + 1);
747
729
  console.log(`\u{1F4DD} State after batch:`, newState);
748
730
  }, [storageKey]);
749
- const isStepComplete = useCallback6((stepId) => {
731
+ const isStepComplete = useCallback5((stepId) => {
750
732
  return state.completedSteps.includes(stepId);
751
733
  }, [state.completedSteps]);
752
- const isStepSkipped = useCallback6((stepId) => {
734
+ const isStepSkipped = useCallback5((stepId) => {
753
735
  return state.skippedSteps.includes(stepId);
754
736
  }, [state.skippedSteps]);
755
- const allStepsComplete = useCallback6((steps) => {
737
+ const allStepsComplete = useCallback5((steps) => {
756
738
  return steps.every((step) => isStepComplete(step.id) || isStepSkipped(step.id));
757
739
  }, [isStepComplete, isStepSkipped]);
758
740
  return {
@@ -768,19 +750,19 @@ function useOnboardingState(storageKey = "openframe-onboarding-state") {
768
750
  }
769
751
 
770
752
  // src/hooks/ui/use-search.ts
771
- import { useState as useState11, useEffect as useEffect9, useCallback as useCallback7 } from "react";
753
+ import { useState as useState10, useEffect as useEffect8, useCallback as useCallback6 } from "react";
772
754
  function useSearch(config) {
773
755
  const { searchFn, mapResult, debounceMs = 300, minQueryLength = 2 } = config;
774
- const [query, setQuery] = useState11("");
775
- const [results, setResults] = useState11([]);
776
- const [isLoading, setIsLoading] = useState11(false);
777
- const [error, setError] = useState11(null);
756
+ const [query, setQuery] = useState10("");
757
+ const [results, setResults] = useState10([]);
758
+ const [isLoading, setIsLoading] = useState10(false);
759
+ const [error, setError] = useState10(null);
778
760
  const debouncedQuery = useDebounce(query, debounceMs);
779
- const clearResults = useCallback7(() => {
761
+ const clearResults = useCallback6(() => {
780
762
  setResults([]);
781
763
  setError(null);
782
764
  }, []);
783
- useEffect9(() => {
765
+ useEffect8(() => {
784
766
  if (!debouncedQuery || debouncedQuery.length < minQueryLength) {
785
767
  setResults([]);
786
768
  setIsLoading(false);
@@ -853,11 +835,11 @@ function useTablePagination(config) {
853
835
  }
854
836
 
855
837
  // src/hooks/ui/use-throttle.ts
856
- import { useState as useState12, useEffect as useEffect10, useRef as useRef5 } from "react";
838
+ import { useState as useState11, useEffect as useEffect9, useRef as useRef5 } from "react";
857
839
  function useThrottle(value, limit = 200) {
858
- const [throttledValue, setThrottledValue] = useState12(value);
840
+ const [throttledValue, setThrottledValue] = useState11(value);
859
841
  const lastUpdated = useRef5(Date.now());
860
- useEffect10(() => {
842
+ useEffect9(() => {
861
843
  const now = Date.now();
862
844
  const elapsed = now - lastUpdated.current;
863
845
  if (elapsed >= limit) {
@@ -877,13 +859,13 @@ function useThrottle(value, limit = 200) {
877
859
  }
878
860
 
879
861
  // src/hooks/ui/use-window-size.ts
880
- import { useLayoutEffect as useLayoutEffect2, useState as useState13 } from "react";
862
+ import { useLayoutEffect as useLayoutEffect2, useState as useState12 } from "react";
881
863
  function useWindowSize() {
882
- const [windowSize, setWindowSize] = useState13({
864
+ const [windowSize, setWindowSize] = useState12({
883
865
  width: 0,
884
866
  height: 0
885
867
  });
886
- const [isClient, setIsClient] = useState13(false);
868
+ const [isClient, setIsClient] = useState12(false);
887
869
  useLayoutEffect2(() => {
888
870
  setIsClient(true);
889
871
  if (!isClient) return;
@@ -901,7 +883,7 @@ function useWindowSize() {
901
883
  }
902
884
 
903
885
  // src/hooks/platform/use-platform-config.ts
904
- import { useState as useState14, useEffect as useEffect11 } from "react";
886
+ import { useState as useState13, useEffect as useEffect10 } from "react";
905
887
 
906
888
  // src/utils/platform-config.tsx
907
889
  import { Globe } from "lucide-react";
@@ -1079,10 +1061,10 @@ function getPlatformIconComponent(platformName, className = "h-6 w-6") {
1079
1061
  var platformCache = null;
1080
1062
  var fetchPromise = null;
1081
1063
  function usePlatformConfig() {
1082
- const [platforms, setPlatforms] = useState14(platformCache || []);
1083
- const [isLoading, setIsLoading] = useState14(!platformCache);
1084
- const [error, setError] = useState14(null);
1085
- useEffect11(() => {
1064
+ const [platforms, setPlatforms] = useState13(platformCache || []);
1065
+ const [isLoading, setIsLoading] = useState13(!platformCache);
1066
+ const [error, setError] = useState13(null);
1067
+ useEffect10(() => {
1086
1068
  if (platformCache) {
1087
1069
  setPlatforms(platformCache);
1088
1070
  setIsLoading(false);
@@ -1150,7 +1132,7 @@ function useValidatePlatform(value) {
1150
1132
  import { toast as sonnerToast2 } from "sonner";
1151
1133
 
1152
1134
  // src/components/ui/toaster.tsx
1153
- import * as React2 from "react";
1135
+ import * as React from "react";
1154
1136
  import { Toaster as SonnerToaster, toast as sonnerToast } from "sonner";
1155
1137
 
1156
1138
  // src/types/tool.types.ts
@@ -1318,7 +1300,7 @@ function CommandApprovalToast({
1318
1300
  defaultExpanded = false,
1319
1301
  className
1320
1302
  }) {
1321
- const [expanded, setExpanded] = React2.useState(defaultExpanded);
1303
+ const [expanded, setExpanded] = React.useState(defaultExpanded);
1322
1304
  const handleApprove = () => {
1323
1305
  onApprove?.();
1324
1306
  sonnerToast.dismiss(id);
@@ -1531,7 +1513,7 @@ var useToast = () => ({
1531
1513
  });
1532
1514
 
1533
1515
  // src/hooks/use-contact-submission.ts
1534
- import { useState as useState16, useCallback as useCallback8, useEffect as useEffect12 } from "react";
1516
+ import { useState as useState15, useCallback as useCallback7, useEffect as useEffect11 } from "react";
1535
1517
  init_next_navigation();
1536
1518
 
1537
1519
  // src/utils/local-storage-adapter.ts
@@ -1792,9 +1774,9 @@ function useContactSubmission(options = {}) {
1792
1774
  const { toast: toast2 } = useToast();
1793
1775
  const router = useRouter();
1794
1776
  const { contactUrl } = useRequiredEndpointsRuntime();
1795
- const [isSubmitting, setIsSubmitting] = useState16(false);
1796
- const [isSuccess, setIsSuccess] = useState16(false);
1797
- const submit = useCallback8(async (formData) => {
1777
+ const [isSubmitting, setIsSubmitting] = useState15(false);
1778
+ const [isSuccess, setIsSuccess] = useState15(false);
1779
+ const submit = useCallback7(async (formData) => {
1798
1780
  if (isSubmitting) return;
1799
1781
  setIsSubmitting(true);
1800
1782
  try {
@@ -1829,7 +1811,7 @@ function useContactSubmission(options = {}) {
1829
1811
  setIsSubmitting(false);
1830
1812
  }
1831
1813
  }, [isSubmitting, toast2, userId, successToastMessage, contactUrl]);
1832
- useEffect12(() => {
1814
+ useEffect11(() => {
1833
1815
  if (isSuccess && successRedirectUrl) {
1834
1816
  console.log("\u{1F680} Contact submission successful, redirecting to:", successRedirectUrl);
1835
1817
  const timer = setTimeout(() => {
@@ -1843,7 +1825,7 @@ function useContactSubmission(options = {}) {
1843
1825
  return () => clearTimeout(timer);
1844
1826
  }
1845
1827
  }, [isSuccess, successRedirectUrl, router]);
1846
- useEffect12(() => {
1828
+ useEffect11(() => {
1847
1829
  if (isSuccess && onSuccess) {
1848
1830
  onSuccess();
1849
1831
  }
@@ -1852,19 +1834,19 @@ function useContactSubmission(options = {}) {
1852
1834
  }
1853
1835
 
1854
1836
  // src/hooks/use-quick-action-hint.ts
1855
- import { useEffect as useEffect13, useState as useState17, useRef as useRef6, useCallback as useCallback9 } from "react";
1837
+ import { useEffect as useEffect12, useState as useState16, useRef as useRef6, useCallback as useCallback8 } from "react";
1856
1838
  function useQuickActionHint({
1857
1839
  actionCount,
1858
1840
  cycleDuration = 5e3,
1859
1841
  enabled = true
1860
1842
  }) {
1861
- const [activeHintIndex, setActiveHintIndex] = useState17(-1);
1843
+ const [activeHintIndex, setActiveHintIndex] = useState16(-1);
1862
1844
  const containerRef = useRef6(null);
1863
1845
  const timeoutRef = useRef6(null);
1864
1846
  const cycleCountRef = useRef6(0);
1865
1847
  const currentIndexRef = useRef6(0);
1866
1848
  const sequenceRef = useRef6([]);
1867
- const shuffleIndices = useCallback9((length) => {
1849
+ const shuffleIndices = useCallback8((length) => {
1868
1850
  const indices = Array.from({ length }, (_, i) => i);
1869
1851
  for (let i = indices.length - 1; i > 0; i--) {
1870
1852
  const j = Math.floor(Math.random() * (i + 1));
@@ -1872,7 +1854,7 @@ function useQuickActionHint({
1872
1854
  }
1873
1855
  return indices;
1874
1856
  }, []);
1875
- const stopHint = useCallback9(() => {
1857
+ const stopHint = useCallback8(() => {
1876
1858
  if (timeoutRef.current) {
1877
1859
  clearTimeout(timeoutRef.current);
1878
1860
  timeoutRef.current = null;
@@ -1882,7 +1864,7 @@ function useQuickActionHint({
1882
1864
  currentIndexRef.current = 0;
1883
1865
  sequenceRef.current = [];
1884
1866
  }, []);
1885
- const advanceHint = useCallback9(() => {
1867
+ const advanceHint = useCallback8(() => {
1886
1868
  if (currentIndexRef.current === 0) {
1887
1869
  sequenceRef.current = shuffleIndices(actionCount);
1888
1870
  }
@@ -1895,7 +1877,7 @@ function useQuickActionHint({
1895
1877
  }
1896
1878
  timeoutRef.current = setTimeout(advanceHint, cycleDuration);
1897
1879
  }, [actionCount, cycleDuration, shuffleIndices]);
1898
- useEffect13(() => {
1880
+ useEffect12(() => {
1899
1881
  if (!enabled || actionCount === 0) {
1900
1882
  return;
1901
1883
  }
@@ -1921,7 +1903,7 @@ function useQuickActionHint({
1921
1903
  }
1922
1904
 
1923
1905
  // src/hooks/use-copy-to-clipboard.ts
1924
- import { useCallback as useCallback10, useState as useState18 } from "react";
1906
+ import { useCallback as useCallback9, useState as useState17 } from "react";
1925
1907
  function useCopyToClipboard({
1926
1908
  successTitle = "Copied",
1927
1909
  successDescription = "Copied to clipboard",
@@ -1930,8 +1912,8 @@ function useCopyToClipboard({
1930
1912
  resetDelay = 2e3
1931
1913
  } = {}) {
1932
1914
  const { toast: toast2 } = useToast();
1933
- const [copied, setCopied] = useState18(false);
1934
- const copy = useCallback10(
1915
+ const [copied, setCopied] = useState17(false);
1916
+ const copy = useCallback9(
1935
1917
  async (text) => {
1936
1918
  try {
1937
1919
  await navigator.clipboard.writeText(text);
@@ -1948,7 +1930,7 @@ function useCopyToClipboard({
1948
1930
  }
1949
1931
 
1950
1932
  // src/hooks/use-batch-images.ts
1951
- import { useEffect as useEffect14, useMemo as useMemo2, useState as useState19, useRef as useRef7 } from "react";
1933
+ import { useEffect as useEffect13, useMemo as useMemo2, useState as useState18, useRef as useRef7 } from "react";
1952
1934
  var globalBatchImageConfig = {};
1953
1935
  function configureBatchImageFetch(config) {
1954
1936
  globalBatchImageConfig = { ...globalBatchImageConfig, ...config };
@@ -2021,14 +2003,14 @@ async function batchFetchAuthenticatedImages(imageUrls, config) {
2021
2003
  return results;
2022
2004
  }
2023
2005
  function useBatchImages(imageUrls, config) {
2024
- const [fetchedImages, setFetchedImages] = useState19({});
2025
- const [loading, setLoading] = useState19(false);
2006
+ const [fetchedImages, setFetchedImages] = useState18({});
2007
+ const [loading, setLoading] = useState18(false);
2026
2008
  const uniqueUrls = useMemo2(
2027
2009
  () => Array.from(new Set(imageUrls.filter((url) => Boolean(url)))),
2028
2010
  [imageUrls]
2029
2011
  );
2030
2012
  const requestedUrls = useRef7(/* @__PURE__ */ new Set());
2031
- useEffect14(() => {
2013
+ useEffect13(() => {
2032
2014
  if (uniqueUrls.length === 0) {
2033
2015
  setFetchedImages({});
2034
2016
  return;
@@ -2058,7 +2040,7 @@ function useBatchImages(imageUrls, config) {
2058
2040
  }
2059
2041
 
2060
2042
  // src/hooks/use-authenticated-image.ts
2061
- import { useEffect as useEffect15, useState as useState20, useRef as useRef8 } from "react";
2043
+ import { useEffect as useEffect14, useState as useState19, useRef as useRef8 } from "react";
2062
2044
  var globalImageConfig = {};
2063
2045
  var imageCache = /* @__PURE__ */ new Map();
2064
2046
  var pendingRequests = /* @__PURE__ */ new Map();
@@ -2087,11 +2069,11 @@ function getImageConfig() {
2087
2069
  };
2088
2070
  }
2089
2071
  function useAuthenticatedImage(imageUrl, refreshKey, config) {
2090
- const [fetchedImageUrl, setFetchedImageUrl] = useState20();
2091
- const [isLoading, setIsLoading] = useState20(false);
2092
- const [error, setError] = useState20(null);
2072
+ const [fetchedImageUrl, setFetchedImageUrl] = useState19();
2073
+ const [isLoading, setIsLoading] = useState19(false);
2074
+ const [error, setError] = useState19(null);
2093
2075
  const currentCacheKeyRef = useRef8(null);
2094
- useEffect15(() => {
2076
+ useEffect14(() => {
2095
2077
  if (!imageUrl) {
2096
2078
  setFetchedImageUrl(void 0);
2097
2079
  setIsLoading(false);
@@ -2202,7 +2184,7 @@ function useAuthenticatedImage(imageUrl, refreshKey, config) {
2202
2184
  });
2203
2185
  pendingRequests.set(cacheKey, fetchPromise2);
2204
2186
  }, [imageUrl, refreshKey, config]);
2205
- useEffect15(() => {
2187
+ useEffect14(() => {
2206
2188
  return () => {
2207
2189
  if (currentCacheKeyRef.current) {
2208
2190
  const entry = imageCache.get(currentCacheKeyRef.current);
@@ -2217,7 +2199,7 @@ function useAuthenticatedImage(imageUrl, refreshKey, config) {
2217
2199
 
2218
2200
  // src/hooks/state/use-query-params.ts
2219
2201
  init_next_navigation();
2220
- import { useEffect as useEffect16, useState as useState21, useMemo as useMemo3, useCallback as useCallback11 } from "react";
2202
+ import { useEffect as useEffect15, useState as useState20, useMemo as useMemo3, useCallback as useCallback10 } from "react";
2221
2203
 
2222
2204
  // src/hooks/state/graphql-parser.ts
2223
2205
  import {
@@ -2679,14 +2661,14 @@ var introspector = new GraphQLIntrospector();
2679
2661
  function useQueryParams(query, options = {}) {
2680
2662
  const router = useRouter();
2681
2663
  const searchParams = useSearchParams();
2682
- const [isLoading, setIsLoading] = useState21(true);
2683
- const [isReady, setIsReady] = useState21(false);
2684
- const [error, setError] = useState21(null);
2685
- const [schema, setSchema] = useState21({});
2664
+ const [isLoading, setIsLoading] = useState20(true);
2665
+ const [isReady, setIsReady] = useState20(false);
2666
+ const [error, setError] = useState20(null);
2667
+ const [schema, setSchema] = useState20({});
2686
2668
  const defaultValues = options.defaultValues || {};
2687
2669
  const skipIntrospection = options.skipIntrospection || false;
2688
2670
  const debug = options.debug || false;
2689
- useEffect16(() => {
2671
+ useEffect15(() => {
2690
2672
  async function initialize() {
2691
2673
  try {
2692
2674
  if (debug) console.log("[useQueryParams] Initializing...");
@@ -2756,14 +2738,14 @@ function useQueryParams(query, options = {}) {
2756
2738
  });
2757
2739
  return result;
2758
2740
  }, [searchParams]);
2759
- const updateUrl = useCallback11((newParams) => {
2741
+ const updateUrl = useCallback10((newParams) => {
2760
2742
  const url = newParams.toString() ? `?${newParams.toString()}` : window.location.pathname;
2761
2743
  if (debug) {
2762
2744
  console.log("[useQueryParams] Updating URL:", url);
2763
2745
  }
2764
2746
  router.replace(url, { scroll: false });
2765
2747
  }, [router, debug]);
2766
- const setParam = useCallback11((key, value) => {
2748
+ const setParam = useCallback10((key, value) => {
2767
2749
  if (!isReady) {
2768
2750
  console.warn("[useQueryParams] Schema not ready, cannot set param");
2769
2751
  return;
@@ -2777,7 +2759,7 @@ function useQueryParams(query, options = {}) {
2777
2759
  console.error("[useQueryParams] Failed to set param:", err);
2778
2760
  }
2779
2761
  }, [variables, schema, isReady, updateUrl]);
2780
- const setParams = useCallback11((updates) => {
2762
+ const setParams = useCallback10((updates) => {
2781
2763
  if (!isReady) {
2782
2764
  console.warn("[useQueryParams] Schema not ready, cannot set params");
2783
2765
  return;
@@ -2791,7 +2773,7 @@ function useQueryParams(query, options = {}) {
2791
2773
  console.error("[useQueryParams] Failed to set params:", err);
2792
2774
  }
2793
2775
  }, [variables, schema, isReady, updateUrl]);
2794
- const clearParamsHandler = useCallback11((keys) => {
2776
+ const clearParamsHandler = useCallback10((keys) => {
2795
2777
  if (!isReady) {
2796
2778
  console.warn("[useQueryParams] Schema not ready, cannot clear params");
2797
2779
  return;
@@ -2805,7 +2787,7 @@ function useQueryParams(query, options = {}) {
2805
2787
  console.error("[useQueryParams] Failed to clear params:", err);
2806
2788
  }
2807
2789
  }, [variables, schema, isReady, updateUrl]);
2808
- const resetParams = useCallback11(() => {
2790
+ const resetParams = useCallback10(() => {
2809
2791
  if (debug) {
2810
2792
  console.log("[useQueryParams] Resetting params");
2811
2793
  }
@@ -2838,7 +2820,7 @@ function applyParamMapping(schema, mapping) {
2838
2820
 
2839
2821
  // src/hooks/state/use-api-params.ts
2840
2822
  init_next_navigation();
2841
- import { useCallback as useCallback12, useMemo as useMemo4, useRef as useRef9 } from "react";
2823
+ import { useCallback as useCallback11, useMemo as useMemo4, useRef as useRef9 } from "react";
2842
2824
  function useContentStable(value, key) {
2843
2825
  const ref = useRef9(void 0);
2844
2826
  if (ref.current && ref.current.key === key) return ref.current.value;
@@ -2897,7 +2879,7 @@ function useApiParams(schema, options = {}) {
2897
2879
  prevParamsRef.current = result;
2898
2880
  return result;
2899
2881
  }, [searchString, schemaKey, debug]);
2900
- const addParamToSearchParams = useCallback12((searchParams, key, value) => {
2882
+ const addParamToSearchParams = useCallback11((searchParams, key, value) => {
2901
2883
  if (value === void 0 || value === "" || value === null) {
2902
2884
  return;
2903
2885
  }
@@ -2925,7 +2907,7 @@ function useApiParams(schema, options = {}) {
2925
2907
  }
2926
2908
  return newParams;
2927
2909
  }, [params, schemaKey, flattenedSchema, addParamToSearchParams]);
2928
- const updateUrl = useCallback12((newParams, keysToRemove = []) => {
2910
+ const updateUrl = useCallback11((newParams, keysToRemove = []) => {
2929
2911
  const finalParams = new URLSearchParams(searchString);
2930
2912
  keysToRemove.forEach((key) => {
2931
2913
  if (key in stableSchema) {
@@ -2961,7 +2943,7 @@ function useApiParams(schema, options = {}) {
2961
2943
  }
2962
2944
  return false;
2963
2945
  };
2964
- const setParam = useCallback12((key, value) => {
2946
+ const setParam = useCallback11((key, value) => {
2965
2947
  const config = stableSchema[key];
2966
2948
  if (!config) {
2967
2949
  console.warn(`[useApiParams] Unknown parameter: ${key}`);
@@ -2975,7 +2957,7 @@ function useApiParams(schema, options = {}) {
2975
2957
  updateUrl(newParams);
2976
2958
  }
2977
2959
  }, [schemaKey, updateUrl, addParamToSearchParams]);
2978
- const setParams = useCallback12((updates) => {
2960
+ const setParams = useCallback11((updates) => {
2979
2961
  const newParams = new URLSearchParams();
2980
2962
  const keysToRemove = [];
2981
2963
  for (const [key, value] of Object.entries(updates)) {
@@ -2992,11 +2974,11 @@ function useApiParams(schema, options = {}) {
2992
2974
  }
2993
2975
  updateUrl(newParams, keysToRemove);
2994
2976
  }, [schemaKey, updateUrl, addParamToSearchParams]);
2995
- const clearParams2 = useCallback12((keys) => {
2977
+ const clearParams2 = useCallback11((keys) => {
2996
2978
  const newParams = new URLSearchParams();
2997
2979
  updateUrl(newParams, keys);
2998
2980
  }, [updateUrl]);
2999
- const resetParams = useCallback12(() => {
2981
+ const resetParams = useCallback11(() => {
3000
2982
  if (debug) {
3001
2983
  console.log("[useApiParams] Resetting params");
3002
2984
  }
@@ -3033,7 +3015,7 @@ function createSearchParams(params) {
3033
3015
  }
3034
3016
 
3035
3017
  // src/hooks/state/use-cursor-pagination-state.ts
3036
- import { useCallback as useCallback13, useEffect as useEffect17, useRef as useRef10, useState as useState22 } from "react";
3018
+ import { useCallback as useCallback12, useEffect as useEffect16, useRef as useRef10, useState as useState21 } from "react";
3037
3019
  var urlSchema = {
3038
3020
  search: { type: "string", default: "" },
3039
3021
  cursor: { type: "string", default: "" }
@@ -3044,13 +3026,13 @@ function useCursorPaginationState(options) {
3044
3026
  onSearchChange
3045
3027
  } = options;
3046
3028
  const { params, setParam, setParams } = useApiParams(urlSchema);
3047
- const [searchInput, setSearchInput] = useState22(params.search || "");
3048
- const [hasLoadedBeyondFirst, setHasLoadedBeyondFirst] = useState22(false);
3049
- const [initialLoadCount, setInitialLoadCount] = useState22(0);
3029
+ const [searchInput, setSearchInput] = useState21(params.search || "");
3030
+ const [hasLoadedBeyondFirst, setHasLoadedBeyondFirst] = useState21(false);
3031
+ const [initialLoadCount, setInitialLoadCount] = useState21(0);
3050
3032
  const lastSearchRef = useRef10(null);
3051
3033
  const isSyncingFromUrl = useRef10(false);
3052
3034
  const isInitialLoadInProgress = useRef10(true);
3053
- useEffect17(() => {
3035
+ useEffect16(() => {
3054
3036
  if (isInitialLoadInProgress.current) return;
3055
3037
  const urlSearch = params.search || "";
3056
3038
  if (urlSearch !== searchInput) {
@@ -3061,7 +3043,7 @@ function useCursorPaginationState(options) {
3061
3043
  }, 0);
3062
3044
  }
3063
3045
  }, [params.search, initialLoadCount]);
3064
- useEffect17(() => {
3046
+ useEffect16(() => {
3065
3047
  if (isInitialLoadInProgress.current) return;
3066
3048
  if (isSyncingFromUrl.current) return;
3067
3049
  if (searchInput !== params.search) {
@@ -3072,7 +3054,7 @@ function useCursorPaginationState(options) {
3072
3054
  });
3073
3055
  }
3074
3056
  }, [searchInput, params.search, setParams, initialLoadCount]);
3075
- useEffect17(() => {
3057
+ useEffect16(() => {
3076
3058
  if (initialLoadCount === 0) {
3077
3059
  const cursor = params.cursor || null;
3078
3060
  const search = params.search || "";
@@ -3086,7 +3068,7 @@ function useCursorPaginationState(options) {
3086
3068
  });
3087
3069
  }
3088
3070
  }, []);
3089
- useEffect17(() => {
3071
+ useEffect16(() => {
3090
3072
  if (isInitialLoadInProgress.current) return;
3091
3073
  if (initialLoadCount === 0) return;
3092
3074
  const currentSearch = params.search || "";
@@ -3096,7 +3078,7 @@ function useCursorPaginationState(options) {
3096
3078
  onSearchChange(currentSearch);
3097
3079
  }
3098
3080
  }, [params.search, onSearchChange, initialLoadCount]);
3099
- const handleNextPage = useCallback13(
3081
+ const handleNextPage = useCallback12(
3100
3082
  async (endCursor, fetchFn) => {
3101
3083
  setParam("cursor", endCursor);
3102
3084
  await fetchFn();
@@ -3104,7 +3086,7 @@ function useCursorPaginationState(options) {
3104
3086
  },
3105
3087
  [setParam]
3106
3088
  );
3107
- const handleResetToFirstPage = useCallback13(
3089
+ const handleResetToFirstPage = useCallback12(
3108
3090
  async (fetchFn) => {
3109
3091
  setParam("cursor", "");
3110
3092
  await fetchFn();
@@ -3126,16 +3108,16 @@ function useCursorPaginationState(options) {
3126
3108
  }
3127
3109
 
3128
3110
  // src/hooks/nats/use-nats-client.ts
3129
- import { useEffect as useEffect18, useMemo as useMemo5, useState as useState23 } from "react";
3111
+ import { useEffect as useEffect17, useMemo as useMemo5, useState as useState22 } from "react";
3130
3112
  function useNatsClient(clientOptions, options = {}) {
3131
3113
  const { autoConnect = true } = options;
3132
3114
  const client = useMemo5(() => {
3133
3115
  if (!clientOptions) return null;
3134
3116
  return createNatsClient(clientOptions);
3135
3117
  }, [clientOptions]);
3136
- const [status, setStatus] = useState23("disconnected");
3137
- const [lastError, setLastError] = useState23(null);
3138
- useEffect18(() => {
3118
+ const [status, setStatus] = useState22("disconnected");
3119
+ const [lastError, setLastError] = useState22(null);
3120
+ useEffect17(() => {
3139
3121
  if (!client) {
3140
3122
  setStatus("disconnected");
3141
3123
  setLastError(null);
@@ -3166,7 +3148,7 @@ function useNatsClient(clientOptions, options = {}) {
3166
3148
  }
3167
3149
 
3168
3150
  // src/hooks/use-near-viewport.ts
3169
- import { useEffect as useEffect19, useRef as useRef11, useState as useState24, useCallback as useCallback14 } from "react";
3151
+ import { useEffect as useEffect18, useRef as useRef11, useState as useState23, useCallback as useCallback13 } from "react";
3170
3152
  var observers = /* @__PURE__ */ new Map();
3171
3153
  var subscribers = /* @__PURE__ */ new WeakMap();
3172
3154
  function getObserverFor(rootMargin) {
@@ -3190,9 +3172,9 @@ function getObserverFor(rootMargin) {
3190
3172
  return io;
3191
3173
  }
3192
3174
  function useNearViewport(rootMargin = "500px") {
3193
- const [isNear, setIsNear] = useState24(false);
3175
+ const [isNear, setIsNear] = useState23(false);
3194
3176
  const elRef = useRef11(null);
3195
- const ref = useCallback14(
3177
+ const ref = useCallback13(
3196
3178
  (node) => {
3197
3179
  const prev = elRef.current;
3198
3180
  if (prev) {
@@ -3210,7 +3192,7 @@ function useNearViewport(rootMargin = "500px") {
3210
3192
  },
3211
3193
  [rootMargin]
3212
3194
  );
3213
- useEffect19(() => {
3195
+ useEffect18(() => {
3214
3196
  return () => {
3215
3197
  const el = elRef.current;
3216
3198
  if (!el) return;
@@ -3224,7 +3206,7 @@ function useNearViewport(rootMargin = "500px") {
3224
3206
  }
3225
3207
 
3226
3208
  // src/hooks/use-access-code-integration.ts
3227
- import React3 from "react";
3209
+ import React2 from "react";
3228
3210
 
3229
3211
  // src/utils/access-code-client.ts
3230
3212
  async function validateAccessCode(email, code, endpoints) {
@@ -3287,8 +3269,8 @@ async function validateAndConsumeAccessCode(email, code, endpoints) {
3287
3269
  function useAccessCodeIntegration() {
3288
3270
  const runtime = useRequiredEndpointsRuntime();
3289
3271
  const endpoints = runtime.accessCode;
3290
- const [isValidating, setIsValidating] = React3.useState(false);
3291
- const [isConsuming, setIsConsuming] = React3.useState(false);
3272
+ const [isValidating, setIsValidating] = React2.useState(false);
3273
+ const [isConsuming, setIsConsuming] = React2.useState(false);
3292
3274
  const validate = async (email, code) => {
3293
3275
  setIsValidating(true);
3294
3276
  try {
@@ -3368,7 +3350,7 @@ function useOgPlaceholderUrl({
3368
3350
  }
3369
3351
 
3370
3352
  // src/hooks/use-scroll-to-hash.ts
3371
- import { useEffect as useEffect20 } from "react";
3353
+ import { useEffect as useEffect19 } from "react";
3372
3354
 
3373
3355
  // src/utils/scroll-into-view.ts
3374
3356
  var activeRaf = 0;
@@ -3506,7 +3488,7 @@ function navigateSamePageHash(target, options = {}) {
3506
3488
  var MAX_POLL_FRAMES = 60;
3507
3489
  function useScrollToHash(readyDep = true, options) {
3508
3490
  const headerOffset = options?.headerOffset ?? 0;
3509
- useEffect20(() => {
3491
+ useEffect19(() => {
3510
3492
  if (typeof window === "undefined") return;
3511
3493
  if (readyDep === null || readyDep === false) return;
3512
3494
  let rafId = null;
@@ -3546,7 +3528,7 @@ function useScrollToHash(readyDep = true, options) {
3546
3528
  }
3547
3529
 
3548
3530
  // src/hooks/use-humanity-signals.ts
3549
- import { useCallback as useCallback15, useRef as useRef12 } from "react";
3531
+ import { useCallback as useCallback14, useRef as useRef12 } from "react";
3550
3532
 
3551
3533
  // src/utils/humanity-signals.ts
3552
3534
  var HONEYPOT_FIELD = "contact_url_confirm";
@@ -3572,14 +3554,14 @@ var splitCsvEnv = (s) => s?.split(",").map((t) => t.trim()).filter(Boolean) ?? [
3572
3554
  function useHumanitySignals() {
3573
3555
  const ref = useRef12(null);
3574
3556
  const mountedAt = useRef12(typeof performance !== "undefined" ? performance.now() : 0);
3575
- const getSignals = useCallback15(
3557
+ const getSignals = useCallback14(
3576
3558
  () => ({
3577
3559
  [HONEYPOT_FIELD]: ref.current?.value ?? "",
3578
3560
  [ELAPSED_MS_FIELD]: typeof performance !== "undefined" ? Math.round(performance.now() - mountedAt.current) : 0
3579
3561
  }),
3580
3562
  []
3581
3563
  );
3582
- const resetSignals = useCallback15(() => {
3564
+ const resetSignals = useCallback14(() => {
3583
3565
  if (ref.current) ref.current.value = "";
3584
3566
  if (typeof performance !== "undefined") mountedAt.current = performance.now();
3585
3567
  }, []);
@@ -3589,7 +3571,6 @@ function useHumanitySignals() {
3589
3571
  export {
3590
3572
  useAutoLimitTags,
3591
3573
  useDebounce,
3592
- useDeferredError,
3593
3574
  useHeaderHeight,
3594
3575
  useHorizontalScrollbar,
3595
3576
  useImageEdgeColor,
@@ -3700,4 +3681,4 @@ export {
3700
3681
  splitCsvEnv,
3701
3682
  useHumanitySignals
3702
3683
  };
3703
- //# sourceMappingURL=chunk-DH6HTYOV.js.map
3684
+ //# sourceMappingURL=chunk-ZSZRJWY3.js.map