@flamingo-stack/openframe-frontend-core 0.0.296-snapshot.20260621021605 → 0.0.296

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 (276) hide show
  1. package/README.md +0 -9
  2. package/dist/chunk-26PKDALD.js +2379 -0
  3. package/dist/chunk-26PKDALD.js.map +1 -0
  4. package/dist/chunk-3MCHAFHB.js +89 -0
  5. package/dist/chunk-3MCHAFHB.js.map +1 -0
  6. package/dist/{chunk-PI4WSYQV.js → chunk-3ZXUQQL4.js} +2 -2
  7. package/dist/{chunk-WMSTJAZT.cjs → chunk-5E2HOSSH.cjs} +51 -913
  8. package/dist/chunk-5E2HOSSH.cjs.map +1 -0
  9. package/dist/{chunk-IL47XWV5.js → chunk-5P3B2LZW.js} +14 -8
  10. package/dist/{chunk-IL47XWV5.js.map → chunk-5P3B2LZW.js.map} +1 -1
  11. package/dist/chunk-66AANIOC.cjs +619 -0
  12. package/dist/chunk-66AANIOC.cjs.map +1 -0
  13. package/dist/{chunk-AD6C23QY.js → chunk-6GCI7JOE.js} +7 -8
  14. package/dist/{chunk-AD6C23QY.js.map → chunk-6GCI7JOE.js.map} +1 -1
  15. package/dist/chunk-6JINAOI7.cjs +311 -0
  16. package/dist/chunk-6JINAOI7.cjs.map +1 -0
  17. package/dist/{chunk-2QG57XOJ.js → chunk-7RIYT7ZH.js} +205 -1067
  18. package/dist/chunk-7RIYT7ZH.js.map +1 -0
  19. package/dist/{chunk-L6PSSIUQ.cjs → chunk-AQOWFSMB.cjs} +1 -1
  20. package/dist/chunk-AQOWFSMB.cjs.map +1 -0
  21. package/dist/chunk-BOCFIKYS.cjs +3009 -0
  22. package/dist/chunk-BOCFIKYS.cjs.map +1 -0
  23. package/dist/{chunk-54KNMC2R.cjs → chunk-D3LEFMOA.cjs} +3 -3
  24. package/dist/{chunk-54KNMC2R.cjs.map → chunk-D3LEFMOA.cjs.map} +1 -1
  25. package/dist/chunk-D652TJBQ.js +3009 -0
  26. package/dist/chunk-D652TJBQ.js.map +1 -0
  27. package/dist/{chunk-PWQUAVA3.js → chunk-E4XABBSU.js} +98 -338
  28. package/dist/chunk-E4XABBSU.js.map +1 -0
  29. package/dist/{chunk-JALO4TAZ.js → chunk-EL6QLAWX.js} +55 -357
  30. package/dist/chunk-EL6QLAWX.js.map +1 -0
  31. package/dist/{chunk-6C526VNN.cjs → chunk-EYEW6PTA.cjs} +118 -358
  32. package/dist/chunk-EYEW6PTA.cjs.map +1 -0
  33. package/dist/chunk-FQJK446R.js +1606 -0
  34. package/dist/chunk-FQJK446R.js.map +1 -0
  35. package/dist/{chunk-4PSQS3SW.cjs → chunk-GLLDTKZK.cjs} +9 -7
  36. package/dist/chunk-GLLDTKZK.cjs.map +1 -0
  37. package/dist/{chunk-FQOTC3UU.cjs → chunk-IE6OU3WQ.cjs} +16 -318
  38. package/dist/chunk-IE6OU3WQ.cjs.map +1 -0
  39. package/dist/chunk-J54Z3OCR.cjs +1606 -0
  40. package/dist/chunk-J54Z3OCR.cjs.map +1 -0
  41. package/dist/{chunk-PC746XCO.js → chunk-K2PFPBMF.js} +5563 -15048
  42. package/dist/chunk-K2PFPBMF.js.map +1 -0
  43. package/dist/chunk-KXCRGTRN.cjs +2379 -0
  44. package/dist/chunk-KXCRGTRN.cjs.map +1 -0
  45. package/dist/{chunk-IZ7JSBFP.js → chunk-LCNMR277.js} +1 -1
  46. package/dist/chunk-LCNMR277.js.map +1 -0
  47. package/dist/chunk-LFGGF7OT.cjs +449 -0
  48. package/dist/chunk-LFGGF7OT.cjs.map +1 -0
  49. package/dist/chunk-M2OCXTNT.js +311 -0
  50. package/dist/chunk-M2OCXTNT.js.map +1 -0
  51. package/dist/{chunk-L7ULJKG7.js → chunk-MBFWU2EM.js} +10 -6
  52. package/dist/{chunk-L7ULJKG7.js.map → chunk-MBFWU2EM.js.map} +1 -1
  53. package/dist/chunk-ME4EVDFP.js +619 -0
  54. package/dist/chunk-ME4EVDFP.js.map +1 -0
  55. package/dist/chunk-OQ6X7ZOC.js +449 -0
  56. package/dist/chunk-OQ6X7ZOC.js.map +1 -0
  57. package/dist/{chunk-4TLE6VLU.js → chunk-OY7OF7E7.js} +24 -30
  58. package/dist/chunk-OY7OF7E7.js.map +1 -0
  59. package/dist/chunk-POKKCWKF.js +354 -0
  60. package/dist/chunk-POKKCWKF.js.map +1 -0
  61. package/dist/{chunk-GUTS7HGA.cjs → chunk-QHIXS3W2.cjs} +2514 -11999
  62. package/dist/chunk-QHIXS3W2.cjs.map +1 -0
  63. package/dist/chunk-TFSYSWPS.cjs +89 -0
  64. package/dist/chunk-TFSYSWPS.cjs.map +1 -0
  65. package/dist/{chunk-53FUMSZ5.cjs → chunk-W6M2FLLT.cjs} +46 -40
  66. package/dist/chunk-W6M2FLLT.cjs.map +1 -0
  67. package/dist/{chunk-3JIQVE7T.js → chunk-WHMATDVP.js} +15 -9
  68. package/dist/{chunk-3JIQVE7T.js.map → chunk-WHMATDVP.js.map} +1 -1
  69. package/dist/{chunk-YBYI62OE.cjs → chunk-X647HY3F.cjs} +37 -33
  70. package/dist/chunk-X647HY3F.cjs.map +1 -0
  71. package/dist/{chunk-UNVE2SDJ.cjs → chunk-X6BV7MB7.cjs} +31 -37
  72. package/dist/chunk-X6BV7MB7.cjs.map +1 -0
  73. package/dist/{chunk-7OVGB2DQ.cjs → chunk-XREEV72C.cjs} +25 -19
  74. package/dist/chunk-XREEV72C.cjs.map +1 -0
  75. package/dist/chunk-YETA25JW.cjs +354 -0
  76. package/dist/chunk-YETA25JW.cjs.map +1 -0
  77. package/dist/{chunk-FCDQNTDG.cjs → chunk-YIGPRLQY.cjs} +20 -21
  78. package/dist/chunk-YIGPRLQY.cjs.map +1 -0
  79. package/dist/{chunk-X4DOXQRT.js → chunk-ZP4AVIZP.js} +6 -4
  80. package/dist/{chunk-X4DOXQRT.js.map → chunk-ZP4AVIZP.js.map} +1 -1
  81. package/dist/components/chat/index.cjs +18 -8
  82. package/dist/components/chat/index.cjs.map +1 -1
  83. package/dist/components/chat/index.js +85 -75
  84. package/dist/components/contact/index.cjs +15 -8
  85. package/dist/components/contact/index.cjs.map +1 -1
  86. package/dist/components/contact/index.js +14 -7
  87. package/dist/components/docs/doc-viewer.d.ts +2 -39
  88. package/dist/components/docs/doc-viewer.d.ts.map +1 -1
  89. package/dist/components/docs/index.cjs +9 -17
  90. package/dist/components/docs/index.cjs.map +1 -1
  91. package/dist/components/docs/index.d.ts +0 -4
  92. package/dist/components/docs/index.d.ts.map +1 -1
  93. package/dist/components/docs/index.js +8 -16
  94. package/dist/components/docs/use-document-tree.d.ts.map +1 -1
  95. package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
  96. package/dist/components/embeds/index.cjs +15 -38
  97. package/dist/components/embeds/index.cjs.map +1 -1
  98. package/dist/components/embeds/index.d.ts +0 -8
  99. package/dist/components/embeds/index.d.ts.map +1 -1
  100. package/dist/components/embeds/index.js +17 -40
  101. package/dist/components/faq/index.cjs +16 -9
  102. package/dist/components/faq/index.cjs.map +1 -1
  103. package/dist/components/faq/index.js +15 -8
  104. package/dist/components/features/index.cjs +16 -8
  105. package/dist/components/features/index.cjs.map +1 -1
  106. package/dist/components/features/index.js +32 -24
  107. package/dist/components/index.cjs +452 -257
  108. package/dist/components/index.cjs.map +1 -1
  109. package/dist/components/index.js +976 -781
  110. package/dist/components/index.js.map +1 -1
  111. package/dist/components/layout/page-layout.d.ts +1 -10
  112. package/dist/components/layout/page-layout.d.ts.map +1 -1
  113. package/dist/components/layout/title-block.d.ts +1 -17
  114. package/dist/components/layout/title-block.d.ts.map +1 -1
  115. package/dist/components/navigation/index.cjs +15 -7
  116. package/dist/components/navigation/index.cjs.map +1 -1
  117. package/dist/components/navigation/index.js +17 -9
  118. package/dist/components/onboarding-guides/index.cjs +36 -35
  119. package/dist/components/onboarding-guides/index.cjs.map +1 -1
  120. package/dist/components/onboarding-guides/index.js +14 -13
  121. package/dist/components/onboarding-guides/index.js.map +1 -1
  122. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +1 -1
  123. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  124. package/dist/components/related-content/index.cjs +16 -9
  125. package/dist/components/related-content/index.cjs.map +1 -1
  126. package/dist/components/related-content/index.js +15 -8
  127. package/dist/components/shared/dev-section/dev-section-page.d.ts +0 -9
  128. package/dist/components/shared/dev-section/dev-section-page.d.ts.map +1 -1
  129. package/dist/components/shared/dev-section/dev-section-view.d.ts.map +1 -1
  130. package/dist/components/shared/dev-section/index.d.ts +1 -1
  131. package/dist/components/shared/dev-section/index.d.ts.map +1 -1
  132. package/dist/components/shared/doc-search/use-doc-search.d.ts.map +1 -1
  133. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  134. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  135. package/dist/components/tickets/index.cjs +112 -100
  136. package/dist/components/tickets/index.cjs.map +1 -1
  137. package/dist/components/tickets/index.js +32 -20
  138. package/dist/components/tickets/index.js.map +1 -1
  139. package/dist/components/ui/file-manager/index.cjs +52 -50
  140. package/dist/components/ui/file-manager/index.cjs.map +1 -1
  141. package/dist/components/ui/file-manager/index.js +6 -4
  142. package/dist/components/ui/file-manager/index.js.map +1 -1
  143. package/dist/components/ui/index.cjs +19 -13
  144. package/dist/components/ui/index.cjs.map +1 -1
  145. package/dist/components/ui/index.d.ts +0 -2
  146. package/dist/components/ui/index.d.ts.map +1 -1
  147. package/dist/components/ui/index.js +139 -133
  148. package/dist/components/ui/release-changelog-section.d.ts +2 -6
  149. package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
  150. package/dist/components/ui/simple-markdown-renderer.d.ts +8 -2
  151. package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -1
  152. package/dist/contexts/chat-runtime-context.d.ts +0 -14
  153. package/dist/contexts/chat-runtime-context.d.ts.map +1 -1
  154. package/dist/contexts/index.cjs +3 -3
  155. package/dist/contexts/index.js +5 -5
  156. package/dist/embed-shims/index.cjs +3 -3
  157. package/dist/embed-shims/index.cjs.map +1 -1
  158. package/dist/embed-shims/index.js +4 -4
  159. package/dist/hooks/index.cjs +9 -4
  160. package/dist/hooks/index.cjs.map +1 -1
  161. package/dist/hooks/index.js +11 -6
  162. package/dist/index.cjs +20 -14
  163. package/dist/index.cjs.map +1 -1
  164. package/dist/index.js +364 -358
  165. package/dist/types/doc-source.d.ts +1 -31
  166. package/dist/types/doc-source.d.ts.map +1 -1
  167. package/dist/utils/index.cjs +0 -4
  168. package/dist/utils/index.cjs.map +1 -1
  169. package/dist/utils/index.d.ts +0 -1
  170. package/dist/utils/index.d.ts.map +1 -1
  171. package/dist/utils/index.js +1 -4
  172. package/dist/utils/index.js.map +1 -1
  173. package/package.json +1 -7
  174. package/src/components/chat/embeddable-chat.tsx +1 -1
  175. package/src/components/docs/doc-viewer.tsx +19 -111
  176. package/src/components/docs/index.ts +0 -17
  177. package/src/components/docs/use-document-tree.ts +0 -21
  178. package/src/components/embeds/embed-iframe.tsx +9 -7
  179. package/src/components/embeds/index.ts +0 -30
  180. package/src/components/embeds/og-link-preview.tsx +13 -13
  181. package/src/components/layout/page-layout.tsx +1 -14
  182. package/src/components/layout/title-block.tsx +62 -40
  183. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +3 -3
  184. package/src/components/shared/dev-section/dev-section-page.tsx +1 -9
  185. package/src/components/shared/dev-section/dev-section-view.tsx +9 -14
  186. package/src/components/shared/dev-section/index.ts +1 -1
  187. package/src/components/shared/doc-search/use-doc-search.ts +3 -7
  188. package/src/components/shared/legal-document/legal-document-page.tsx +2 -2
  189. package/src/components/shared/product-release/release-detail-page.tsx +4 -6
  190. package/src/components/ui/index.ts +0 -2
  191. package/src/components/ui/release-changelog-section.tsx +2 -7
  192. package/src/components/ui/simple-markdown-renderer.tsx +11 -7
  193. package/src/contexts/chat-runtime-context.tsx +0 -14
  194. package/src/types/doc-source.ts +1 -33
  195. package/src/utils/index.ts +0 -1
  196. package/dist/chunk-2QG57XOJ.js.map +0 -1
  197. package/dist/chunk-4PSQS3SW.cjs.map +0 -1
  198. package/dist/chunk-4TLE6VLU.js.map +0 -1
  199. package/dist/chunk-53FUMSZ5.cjs.map +0 -1
  200. package/dist/chunk-6C526VNN.cjs.map +0 -1
  201. package/dist/chunk-7OVGB2DQ.cjs.map +0 -1
  202. package/dist/chunk-F5OB2YAL.cjs +0 -144
  203. package/dist/chunk-F5OB2YAL.cjs.map +0 -1
  204. package/dist/chunk-FBWXMMRB.cjs +0 -2
  205. package/dist/chunk-FBWXMMRB.cjs.map +0 -1
  206. package/dist/chunk-FCDQNTDG.cjs.map +0 -1
  207. package/dist/chunk-FQOTC3UU.cjs.map +0 -1
  208. package/dist/chunk-GUTS7HGA.cjs.map +0 -1
  209. package/dist/chunk-GZ4C3XW6.js +0 -2
  210. package/dist/chunk-GZ4C3XW6.js.map +0 -1
  211. package/dist/chunk-IZ7JSBFP.js.map +0 -1
  212. package/dist/chunk-JALO4TAZ.js.map +0 -1
  213. package/dist/chunk-L6PSSIUQ.cjs.map +0 -1
  214. package/dist/chunk-PC746XCO.js.map +0 -1
  215. package/dist/chunk-PWQUAVA3.js.map +0 -1
  216. package/dist/chunk-SA2WPJVO.js +0 -144
  217. package/dist/chunk-SA2WPJVO.js.map +0 -1
  218. package/dist/chunk-UNVE2SDJ.cjs.map +0 -1
  219. package/dist/chunk-WMSTJAZT.cjs.map +0 -1
  220. package/dist/chunk-YBYI62OE.cjs.map +0 -1
  221. package/dist/components/case-studies/index.cjs +0 -126
  222. package/dist/components/case-studies/index.cjs.map +0 -1
  223. package/dist/components/case-studies/index.d.ts +0 -2
  224. package/dist/components/case-studies/index.d.ts.map +0 -1
  225. package/dist/components/case-studies/index.js +0 -126
  226. package/dist/components/case-studies/index.js.map +0 -1
  227. package/dist/components/case-studies/share-experience-section.d.ts +0 -48
  228. package/dist/components/case-studies/share-experience-section.d.ts.map +0 -1
  229. package/dist/components/docs/docs-hub-page.d.ts +0 -46
  230. package/dist/components/docs/docs-hub-page.d.ts.map +0 -1
  231. package/dist/components/docs/skeletons.d.ts +0 -32
  232. package/dist/components/docs/skeletons.d.ts.map +0 -1
  233. package/dist/components/docs/use-docs-resolve-link.d.ts +0 -20
  234. package/dist/components/docs/use-docs-resolve-link.d.ts.map +0 -1
  235. package/dist/components/embeds/embed-container.d.ts +0 -37
  236. package/dist/components/embeds/embed-container.d.ts.map +0 -1
  237. package/dist/components/embeds/file-download-card.d.ts +0 -18
  238. package/dist/components/embeds/file-download-card.d.ts.map +0 -1
  239. package/dist/components/embeds/linkedin-embed-client.d.ts +0 -8
  240. package/dist/components/embeds/linkedin-embed-client.d.ts.map +0 -1
  241. package/dist/components/embeds/markdown-image.d.ts +0 -5
  242. package/dist/components/embeds/markdown-image.d.ts.map +0 -1
  243. package/dist/components/embeds/reddit-embed-client.d.ts +0 -7
  244. package/dist/components/embeds/reddit-embed-client.d.ts.map +0 -1
  245. package/dist/components/embeds/rich-markdown-runtime.d.ts +0 -46
  246. package/dist/components/embeds/rich-markdown-runtime.d.ts.map +0 -1
  247. package/dist/components/embeds/twitter-embed-client.d.ts +0 -8
  248. package/dist/components/embeds/twitter-embed-client.d.ts.map +0 -1
  249. package/dist/components/layout/page-header.d.ts +0 -78
  250. package/dist/components/layout/page-header.d.ts.map +0 -1
  251. package/dist/components/layout/page-with-header.d.ts +0 -67
  252. package/dist/components/layout/page-with-header.d.ts.map +0 -1
  253. package/dist/components/ui/rich-markdown-renderer.d.ts +0 -34
  254. package/dist/components/ui/rich-markdown-renderer.d.ts.map +0 -1
  255. package/dist/utils/page-header-constants.d.ts +0 -15
  256. package/dist/utils/page-header-constants.d.ts.map +0 -1
  257. package/dist/utils/social-embed-cache.d.ts +0 -29
  258. package/dist/utils/social-embed-cache.d.ts.map +0 -1
  259. package/src/components/case-studies/index.ts +0 -4
  260. package/src/components/case-studies/share-experience-section.tsx +0 -185
  261. package/src/components/docs/docs-hub-page.tsx +0 -149
  262. package/src/components/docs/skeletons.tsx +0 -138
  263. package/src/components/docs/use-docs-resolve-link.ts +0 -52
  264. package/src/components/embeds/embed-container.tsx +0 -80
  265. package/src/components/embeds/file-download-card.tsx +0 -54
  266. package/src/components/embeds/linkedin-embed-client.tsx +0 -100
  267. package/src/components/embeds/markdown-image.tsx +0 -88
  268. package/src/components/embeds/reddit-embed-client.tsx +0 -550
  269. package/src/components/embeds/rich-markdown-runtime.tsx +0 -79
  270. package/src/components/embeds/twitter-embed-client.tsx +0 -308
  271. package/src/components/layout/page-header.tsx +0 -182
  272. package/src/components/layout/page-with-header.tsx +0 -110
  273. package/src/components/ui/rich-markdown-renderer.tsx +0 -1203
  274. package/src/utils/page-header-constants.ts +0 -15
  275. package/src/utils/social-embed-cache.ts +0 -391
  276. /package/dist/{chunk-PI4WSYQV.js.map → chunk-3ZXUQQL4.js.map} +0 -0
@@ -1,130 +1,51 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
2
 
3
3
 
4
- var _chunk27APPAJNcjs = require('./chunk-27APPAJN.cjs');
5
4
 
6
5
 
7
6
 
8
7
 
9
- var _chunkG7UE6RKVcjs = require('./chunk-G7UE6RKV.cjs');
10
8
 
11
9
 
12
10
 
13
11
 
12
+ var _chunkLFGGF7OTcjs = require('./chunk-LFGGF7OT.cjs');
14
13
 
15
- var _chunkLGLPNWS6cjs = require('./chunk-LGLPNWS6.cjs');
16
14
 
15
+ var _chunk27APPAJNcjs = require('./chunk-27APPAJN.cjs');
17
16
 
18
17
 
19
- var _chunkFIG2RKZFcjs = require('./chunk-FIG2RKZF.cjs');
18
+ var _chunkPXXS27EEcjs = require('./chunk-PXXS27EE.cjs');
20
19
 
21
20
 
21
+ var _chunkTFSYSWPScjs = require('./chunk-TFSYSWPS.cjs');
22
22
 
23
23
 
24
+ var _chunkYETA25JWcjs = require('./chunk-YETA25JW.cjs');
24
25
 
25
26
 
26
27
 
27
28
 
28
- var _chunkZS2SBWBRcjs = require('./chunk-ZS2SBWBR.cjs');
29
+ var _chunkG7UE6RKVcjs = require('./chunk-G7UE6RKV.cjs');
29
30
 
30
31
 
31
- var _chunkPXXS27EEcjs = require('./chunk-PXXS27EE.cjs');
32
+ var _chunkLGLPNWS6cjs = require('./chunk-LGLPNWS6.cjs');
32
33
 
33
- // src/hooks/ui/use-auto-limit-tags.ts
34
- var _react = require('react'); var React = _interopRequireWildcard(_react);
35
- function useAutoLimitTags({
36
- count,
37
- limitTags = "auto",
38
- placeholder = "",
39
- reserveInputWidth = true
40
- }) {
41
- const middleRef = _react.useRef.call(void 0, null);
42
- const measureRef = _react.useRef.call(void 0, null);
43
- const textMeasureRef = _react.useRef.call(void 0, null);
44
- const badgeRef = _react.useRef.call(void 0, null);
45
- const inputRef = _react.useRef.call(void 0, null);
46
- const [visibleCount, setVisibleCount] = _react.useState.call(void 0, count);
47
- const recalculate = _react.useCallback.call(void 0, () => {
48
- if (limitTags !== "auto") {
49
- setVisibleCount(Math.min(limitTags, count));
50
- return;
51
- }
52
- const middle = middleRef.current;
53
- const measure = measureRef.current;
54
- if (!middle || !measure) {
55
- setVisibleCount(count);
56
- return;
57
- }
58
- if (count === 0) {
59
- setVisibleCount(0);
60
- return;
61
- }
62
- const cs = getComputedStyle(middle);
63
- const padL = parseFloat(cs.paddingLeft) || 0;
64
- const padR = parseFloat(cs.paddingRight) || 0;
65
- const gap = parseFloat(cs.gap) || 0;
66
- const middleW = middle.clientWidth;
67
- let inputReservedW = 0;
68
- let trailingGap = 0;
69
- if (reserveInputWidth) {
70
- const textW = _nullishCoalesce(_optionalChain([textMeasureRef, 'access', _2 => _2.current, 'optionalAccess', _3 => _3.offsetWidth]), () => ( 60));
71
- const inputMinW = inputRef.current ? parseFloat(getComputedStyle(inputRef.current).minWidth) || 60 : 60;
72
- inputReservedW = Math.max(textW + 8, inputMinW);
73
- trailingGap = gap;
74
- }
75
- const available = middleW - padL - padR - inputReservedW - trailingGap;
76
- const tagEls = Array.from(measure.children);
77
- const widths = tagEls.map((el) => el.offsetWidth);
78
- let total = 0;
79
- for (let i = 0; i < widths.length; i++) {
80
- total += widths[i] + (i > 0 ? gap : 0);
81
- }
82
- if (total <= available) {
83
- setVisibleCount(count);
84
- return;
85
- }
86
- const badgeW = _nullishCoalesce(_optionalChain([badgeRef, 'access', _4 => _4.current, 'optionalAccess', _5 => _5.offsetWidth]), () => ( 40));
87
- const spaceWithBadge = available - badgeW - gap;
88
- let used = 0;
89
- let fitCount = 0;
90
- for (let i = 0; i < widths.length; i++) {
91
- const need = widths[i] + (i > 0 ? gap : 0);
92
- if (used + need > spaceWithBadge) break;
93
- used += need;
94
- fitCount++;
95
- }
96
- setVisibleCount(Math.max(0, fitCount));
97
- }, [count, limitTags, placeholder, reserveInputWidth]);
98
- _react.useEffect.call(void 0, () => {
99
- recalculate();
100
- }, [recalculate]);
101
- _react.useEffect.call(void 0, () => {
102
- const el = middleRef.current;
103
- if (!el) return;
104
- const ro = new ResizeObserver(recalculate);
105
- ro.observe(el);
106
- return () => ro.disconnect();
107
- }, [recalculate]);
108
- return { visibleCount, middleRef, measureRef, textMeasureRef, badgeRef, inputRef };
109
- }
110
34
 
111
- // src/hooks/ui/use-debounce.ts
112
35
 
113
- function useDebounce(value, delay = 500) {
114
- const [debouncedValue, setDebouncedValue] = _react.useState.call(void 0, value);
115
- _react.useEffect.call(void 0, () => {
116
- const timer = setTimeout(() => {
117
- setDebouncedValue(value);
118
- }, delay);
119
- return () => {
120
- clearTimeout(timer);
121
- };
122
- }, [value, delay]);
123
- return debouncedValue;
124
- }
36
+ var _chunkFIG2RKZFcjs = require('./chunk-FIG2RKZF.cjs');
37
+
125
38
 
126
- // src/hooks/ui/use-header-height.ts
127
39
 
40
+
41
+
42
+
43
+
44
+
45
+ var _chunkZS2SBWBRcjs = require('./chunk-ZS2SBWBR.cjs');
46
+
47
+ // src/hooks/ui/use-header-height.ts
48
+ var _react = require('react'); var React = _interopRequireWildcard(_react);
128
49
  function useHeaderHeight(defaultHeight = 64) {
129
50
  const [height, setHeight] = _react.useState.call(void 0, defaultHeight);
130
51
  _react.useEffect.call(void 0, () => {
@@ -583,16 +504,16 @@ function useNotificationPermission() {
583
504
  sync();
584
505
  let cancelled = false;
585
506
  let status;
586
- _optionalChain([navigator, 'access', _6 => _6.permissions, 'optionalAccess', _7 => _7.query, 'call', _8 => _8({ name: "notifications" }), 'access', _9 => _9.then, 'call', _10 => _10((s) => {
507
+ _optionalChain([navigator, 'access', _2 => _2.permissions, 'optionalAccess', _3 => _3.query, 'call', _4 => _4({ name: "notifications" }), 'access', _5 => _5.then, 'call', _6 => _6((s) => {
587
508
  if (cancelled) return;
588
509
  status = s;
589
510
  s.addEventListener("change", sync);
590
- }), 'access', _11 => _11.catch, 'call', _12 => _12(() => void 0)]);
511
+ }), 'access', _7 => _7.catch, 'call', _8 => _8(() => void 0)]);
591
512
  document.addEventListener("visibilitychange", sync);
592
513
  window.addEventListener("focus", sync);
593
514
  return () => {
594
515
  cancelled = true;
595
- _optionalChain([status, 'optionalAccess', _13 => _13.removeEventListener, 'call', _14 => _14("change", sync)]);
516
+ _optionalChain([status, 'optionalAccess', _9 => _9.removeEventListener, 'call', _10 => _10("change", sync)]);
596
517
  document.removeEventListener("visibilitychange", sync);
597
518
  window.removeEventListener("focus", sync);
598
519
  };
@@ -757,7 +678,7 @@ function useSearch(config) {
757
678
  const [results, setResults] = _react.useState.call(void 0, []);
758
679
  const [isLoading, setIsLoading] = _react.useState.call(void 0, false);
759
680
  const [error, setError] = _react.useState.call(void 0, null);
760
- const debouncedQuery = useDebounce(query, debounceMs);
681
+ const debouncedQuery = _chunkYETA25JWcjs.useDebounce.call(void 0, query, debounceMs);
761
682
  const clearResults = _react.useCallback.call(void 0, () => {
762
683
  setResults([]);
763
684
  setError(null);
@@ -884,180 +805,6 @@ function useWindowSize() {
884
805
 
885
806
  // src/hooks/platform/use-platform-config.ts
886
807
 
887
-
888
- // src/utils/platform-config.tsx
889
- var _lucidereact = require('lucide-react');
890
- var _jsxruntime = require('react/jsx-runtime');
891
- var platformIcons = {
892
- openframe: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.OpenFrameLogo, { className: "h-5 w-5", lowerPathColor: "#FFC008", upperPathColor: "#ffffff" }),
893
- openmsp: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.OpenmspLogo, { className: "h-5 w-5" }),
894
- flamingo: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className: "h-5 w-5", fill: "#EC4899" }),
895
- "flamingo-teaser": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className: "h-5 w-5", fill: "#EC4899" }),
896
- "marketing-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className: "h-5 w-5", fill: "#F357BB" }),
897
- "product-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className: "h-5 w-5", fill: "#5EA62E" }),
898
- "revenue-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className: "h-5 w-5", fill: "#FFC008" }),
899
- "people-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className: "h-5 w-5", fill: "#5EFAF0" }),
900
- "company-hub": /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className: "h-5 w-5", fill: "#f36666" }),
901
- tmcg: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.MiamiCyberGangLogoFaceOnly, { className: "h-5 w-5" }),
902
- universal: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Globe, { className: "h-5 w-5 text-[#10B981]" })
903
- };
904
- var platformColors = {
905
- openmsp: "bg-[#3B82F6]",
906
- openframe: "bg-[#8B5CF6]",
907
- flamingo: "bg-[#EC4899]",
908
- "flamingo-teaser": "bg-[#F59E0B]",
909
- "marketing-hub": "bg-[#F357BB]",
910
- "product-hub": "bg-[#5EA62E]",
911
- "revenue-hub": "bg-[#FFC008]",
912
- "people-hub": "bg-[#5EFAF0]",
913
- "company-hub": "bg-[#f36666]",
914
- tmcg: "bg-[#FF6B6B]",
915
- universal: "bg-[#10B981]"
916
- };
917
- var platformDisplayNames = {
918
- openmsp: "OpenMSP",
919
- openframe: "OpenFrame",
920
- flamingo: "Flamingo",
921
- "flamingo-teaser": "Flamingo Teaser",
922
- "marketing-hub": "Flamingo Marketing Hub",
923
- "product-hub": "Flamingo Product Hub",
924
- "revenue-hub": "Flamingo Revenue Hub",
925
- "people-hub": "Flamingo People Hub",
926
- "company-hub": "Flamingo Company Hub",
927
- tmcg: "TMCG",
928
- universal: "Universal"
929
- };
930
- var platformDescriptions = {
931
- openmsp: "Comprehensive directory and comparison platform for managed service providers (MSPs) and technology vendors. Reduce vendor costs and discover open-source alternatives.",
932
- openframe: "AI-driven open-source security operations center (SOC) and endpoint detection platform for MSPs.",
933
- flamingo: "AI-driven open-source OS for MSPs. Swap bloated vendor tools for open ones. Automate the boring crap. Take your margin back.",
934
- "flamingo-teaser": "Preview of Flamingo - the AI-driven open-source OS for MSPs.",
935
- tmcg: "The Miami Cyber Gang - A cybersecurity community focused on education and collaboration.",
936
- universal: "Cross-platform universal content."
937
- };
938
- var platformSlogans = {
939
- openmsp: "Find Your Perfect MSP Partner",
940
- openframe: "Open-Source Security Operations",
941
- flamingo: "Open-Source OS for MSPs",
942
- "flamingo-teaser": "Coming Soon: Open-Source OS for MSPs",
943
- tmcg: "Miami Cyber Community",
944
- universal: "Universal Platform"
945
- };
946
- var platformHexColors = {
947
- openmsp: "#FFC008",
948
- openframe: "#FFC008",
949
- flamingo: "#FF6B9D",
950
- universal: "#FFC008",
951
- "flamingo-teaser": "#F59E0B",
952
- "marketing-hub": "#F357BB",
953
- "product-hub": "#5EA62E",
954
- "revenue-hub": "#FFC008",
955
- "people-hub": "#5EFAF0",
956
- "company-hub": "#f36666",
957
- tmcg: "#FF6B6B"
958
- };
959
- var platformIconNames = {
960
- openmsp: "openmsp-logo",
961
- openframe: "openframe-logo",
962
- flamingo: "flamingo-logo",
963
- universal: "globe",
964
- "flamingo-teaser": "flamingo-logo",
965
- "marketing-hub": "flamingo-logo",
966
- "product-hub": "flamingo-logo",
967
- "revenue-hub": "flamingo-logo",
968
- "people-hub": "flamingo-logo",
969
- "company-hub": "flamingo-logo",
970
- tmcg: "tmcg-logo"
971
- };
972
- function getDefaultColorForPlatform(platformName) {
973
- return platformHexColors[platformName] || platformHexColors.universal;
974
- }
975
- function getDefaultIconForPlatform(platformName) {
976
- return platformIconNames[platformName] || platformIconNames.universal;
977
- }
978
- function transformPlatformConfigsToOptions(platformConfigs) {
979
- return platformConfigs.map((platform) => ({
980
- id: platform.id,
981
- // Database UUID for matching
982
- name: platform.name,
983
- // Platform name enum
984
- displayName: platform.display_name,
985
- // Human-readable name
986
- description: platform.description,
987
- icon: platformIcons[platform.name] || platformIcons.universal,
988
- color: platformColors[platform.name] || platformColors.universal
989
- }));
990
- }
991
- function getPlatformIcon(platformName) {
992
- return platformIcons[platformName] || platformIcons.universal;
993
- }
994
- function getPlatformColor(platformName) {
995
- return platformColors[platformName] || platformColors.universal;
996
- }
997
- function getPlatformDisplayName(platformName) {
998
- return platformDisplayNames[platformName] || platformName;
999
- }
1000
- function getPlatformDescription(platformName) {
1001
- return platformDescriptions[platformName] || platformName;
1002
- }
1003
- function getPlatformSlogan(platformName) {
1004
- return platformSlogans[platformName] || platformName;
1005
- }
1006
- function getSmallPlatformIcon(platformName) {
1007
- const className = "h-4 w-4 flex-shrink-0";
1008
- switch (platformName) {
1009
- case "openframe":
1010
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.OpenFrameLogo, { className, lowerPathColor: "#FFC008", upperPathColor: "#ffffff" });
1011
- case "openmsp":
1012
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.OpenmspLogo, { className, frontBubbleColor: "#f1f1f1", innerFrontBubbleColor: "#000000", backBubbleColor: "#FFC008" });
1013
- case "flamingo":
1014
- case "flamingo-teaser":
1015
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className: `${className}`, fill: "#EC4899" });
1016
- case "marketing-hub":
1017
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-pink-base)" });
1018
- case "product-hub":
1019
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className, fill: "var(--ods-attention-green-success)" });
1020
- case "revenue-hub":
1021
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className, fill: "var(--ods-attention-yellow-warning)" });
1022
- case "people-hub":
1023
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-cyan-base)" });
1024
- case "company-hub":
1025
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className, fill: "var(--ods-attention-red-error)" });
1026
- case "tmcg":
1027
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.MiamiCyberGangLogoFaceOnly, { className });
1028
- case "universal":
1029
- default:
1030
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Globe, { className });
1031
- }
1032
- }
1033
- function getPlatformIconComponent(platformName, className = "h-6 w-6") {
1034
- switch (platformName) {
1035
- case "openframe":
1036
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.OpenFrameLogo, { className });
1037
- case "openmsp":
1038
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.OpenmspLogo, { className, color: "#f1f1f1" });
1039
- case "flamingo":
1040
- case "flamingo-teaser":
1041
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className: `${className} text-white` });
1042
- case "marketing-hub":
1043
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-pink-base)" });
1044
- case "product-hub":
1045
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className, fill: "var(--ods-attention-green-success)" });
1046
- case "revenue-hub":
1047
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className, fill: "var(--ods-attention-yellow-warning)" });
1048
- case "people-hub":
1049
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className, fill: "var(--ods-flamingo-cyan-base)" });
1050
- case "company-hub":
1051
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.FlamingoLogo, { className, fill: "var(--ods-attention-red-error)" });
1052
- case "tmcg":
1053
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGLPNWS6cjs.MiamiCyberGangLogoFaceOnly, { size: 24, className });
1054
- case "universal":
1055
- default:
1056
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Globe, { className });
1057
- }
1058
- }
1059
-
1060
- // src/hooks/platform/use-platform-config.ts
1061
808
  var platformCache = null;
1062
809
  var fetchPromise = null;
1063
810
  function usePlatformConfig() {
@@ -1110,7 +857,7 @@ function usePlatformConfig() {
1110
857
  label: platform.label
1111
858
  }))
1112
859
  ];
1113
- const selectableOptions = transformPlatformConfigsToOptions(platforms);
860
+ const selectableOptions = _chunkLFGGF7OTcjs.transformPlatformConfigsToOptions.call(void 0, platforms);
1114
861
  return {
1115
862
  platforms,
1116
863
  platformOptions,
@@ -1135,32 +882,8 @@ var _sonner = require('sonner');
1135
882
 
1136
883
 
1137
884
 
1138
- // src/types/tool.types.ts
1139
- var ToolTypeValues = {
1140
- TACTICAL_RMM: "TACTICAL_RMM",
1141
- FLEET_MDM: "FLEET_MDM",
1142
- MESHCENTRAL: "MESHCENTRAL",
1143
- AUTHENTIK: "AUTHENTIK",
1144
- OPENFRAME: "OPENFRAME",
1145
- OPENFRAME_CHAT: "OPENFRAME_CHAT",
1146
- OPENFRAME_CLIENT: "OPENFRAME_CLIENT",
1147
- OSQUERY: "OSQUERY",
1148
- SYSTEM: "SYSTEM"
1149
- };
1150
- var toolLabels = {
1151
- TACTICAL_RMM: "Tactical",
1152
- FLEET_MDM: "Fleet",
1153
- MESHCENTRAL: "MeshCentral",
1154
- AUTHENTIK: "Authentik",
1155
- OPENFRAME: "OpenFrame",
1156
- OPENFRAME_CHAT: "OpenFrame Chat",
1157
- OPENFRAME_CLIENT: "OpenFrame Client",
1158
- OSQUERY: "Osquery",
1159
- SYSTEM: "System"
1160
- };
1161
-
1162
885
  // src/components/tool-icon.tsx
1163
-
886
+ var _jsxruntime = require('react/jsx-runtime');
1164
887
  var renderOpenFrameLogo = (_size, className) => (
1165
888
  // eslint-disable-next-line deprecation/deprecation
1166
889
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -1173,17 +896,17 @@ var renderOpenFrameLogo = (_size, className) => (
1173
896
  )
1174
897
  );
1175
898
  var toolIconMap = {
1176
- [ToolTypeValues.FLEET_MDM]: (size, className) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.FleetMdmLogoGreyIcon, { size, className }),
1177
- [ToolTypeValues.MESHCENTRAL]: (size, className) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.MeshcentralLogoGreyIcon, { size, className }),
1178
- [ToolTypeValues.TACTICAL_RMM]: (size, className) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.TacticalRmmLogoIcon, { size, className }),
1179
- [ToolTypeValues.OPENFRAME]: renderOpenFrameLogo,
1180
- [ToolTypeValues.OPENFRAME_CHAT]: renderOpenFrameLogo,
1181
- [ToolTypeValues.OPENFRAME_CLIENT]: renderOpenFrameLogo,
1182
- [ToolTypeValues.AUTHENTIK]: (size, className) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.AuthentikLogoGreyIcon, { size, className }),
1183
- [ToolTypeValues.OSQUERY]: (size, className) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.OsqueryLogoGreyIcon, { size, className }),
1184
- [ToolTypeValues.SYSTEM]: () => null
899
+ [_chunkLFGGF7OTcjs.ToolTypeValues.FLEET_MDM]: (size, className) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.FleetMdmLogoGreyIcon, { size, className }),
900
+ [_chunkLFGGF7OTcjs.ToolTypeValues.MESHCENTRAL]: (size, className) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.MeshcentralLogoGreyIcon, { size, className }),
901
+ [_chunkLFGGF7OTcjs.ToolTypeValues.TACTICAL_RMM]: (size, className) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.TacticalRmmLogoIcon, { size, className }),
902
+ [_chunkLFGGF7OTcjs.ToolTypeValues.OPENFRAME]: renderOpenFrameLogo,
903
+ [_chunkLFGGF7OTcjs.ToolTypeValues.OPENFRAME_CHAT]: renderOpenFrameLogo,
904
+ [_chunkLFGGF7OTcjs.ToolTypeValues.OPENFRAME_CLIENT]: renderOpenFrameLogo,
905
+ [_chunkLFGGF7OTcjs.ToolTypeValues.AUTHENTIK]: (size, className) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.AuthentikLogoGreyIcon, { size, className }),
906
+ [_chunkLFGGF7OTcjs.ToolTypeValues.OSQUERY]: (size, className) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.OsqueryLogoGreyIcon, { size, className }),
907
+ [_chunkLFGGF7OTcjs.ToolTypeValues.SYSTEM]: () => null
1185
908
  };
1186
- var ToolIcon = ({ toolType, size = 16, className }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: _nullishCoalesce(_optionalChain([toolIconMap, 'access', _15 => _15[toolType], 'optionalCall', _16 => _16(size, className)]), () => ( null)) });
909
+ var ToolIcon = ({ toolType, size = 16, className }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: _nullishCoalesce(_optionalChain([toolIconMap, 'access', _11 => _11[toolType], 'optionalCall', _12 => _12(size, className)]), () => ( null)) });
1187
910
  ToolIcon.displayName = "ToolIcon";
1188
911
 
1189
912
  // src/components/ui/toaster.tsx
@@ -1302,11 +1025,11 @@ function CommandApprovalToast({
1302
1025
  }) {
1303
1026
  const [expanded, setExpanded] = React.useState(defaultExpanded);
1304
1027
  const handleApprove = () => {
1305
- _optionalChain([onApprove, 'optionalCall', _17 => _17()]);
1028
+ _optionalChain([onApprove, 'optionalCall', _13 => _13()]);
1306
1029
  _sonner.toast.dismiss(id);
1307
1030
  };
1308
1031
  const handleReject = () => {
1309
- _optionalChain([onReject, 'optionalCall', _18 => _18()]);
1032
+ _optionalChain([onReject, 'optionalCall', _14 => _14()]);
1310
1033
  _sonner.toast.dismiss(id);
1311
1034
  };
1312
1035
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -1515,260 +1238,6 @@ var useToast = () => ({
1515
1238
  // src/hooks/use-contact-submission.ts
1516
1239
 
1517
1240
  _chunkG7UE6RKVcjs.init_next_navigation.call(void 0, );
1518
-
1519
- // src/utils/local-storage-adapter.ts
1520
- function getStorage(backend) {
1521
- if (typeof window === "undefined") return null;
1522
- try {
1523
- return backend === "session" ? window.sessionStorage : window.localStorage;
1524
- } catch (e3) {
1525
- return null;
1526
- }
1527
- }
1528
- function createLocalStorageAdapter(options) {
1529
- const tag = _nullishCoalesce(options.logTag, () => ( "[local-storage]"));
1530
- const backend = _nullishCoalesce(options.backend, () => ( "local"));
1531
- const resolveKey = () => {
1532
- const ns = _optionalChain([options, 'access', _19 => _19.namespace, 'optionalCall', _20 => _20()]);
1533
- return ns ? `${ns}.${options.key}` : options.key;
1534
- };
1535
- return {
1536
- resolveKey,
1537
- load() {
1538
- const storage = getStorage(backend);
1539
- if (!storage) return null;
1540
- try {
1541
- const raw = storage.getItem(resolveKey());
1542
- if (!raw) return null;
1543
- const parsed = JSON.parse(raw);
1544
- if (options.validate && !options.validate(parsed)) return null;
1545
- return parsed;
1546
- } catch (err) {
1547
- console.warn(`${tag} parse failed for key ${resolveKey()}:`, err);
1548
- return null;
1549
- }
1550
- },
1551
- save(value) {
1552
- const storage = getStorage(backend);
1553
- if (!storage) return;
1554
- try {
1555
- storage.setItem(resolveKey(), JSON.stringify(value));
1556
- } catch (err) {
1557
- console.warn(`${tag} write failed for key ${resolveKey()}:`, err);
1558
- }
1559
- },
1560
- clear() {
1561
- const storage = getStorage(backend);
1562
- if (!storage) return;
1563
- try {
1564
- storage.removeItem(resolveKey());
1565
- } catch (err) {
1566
- console.warn(`${tag} clear failed for key ${resolveKey()}:`, err);
1567
- }
1568
- }
1569
- };
1570
- }
1571
-
1572
- // src/utils/app-config.ts
1573
- function getAppType() {
1574
- return process.env.NEXT_PUBLIC_APP_TYPE || "openmsp";
1575
- }
1576
-
1577
- // src/utils/embed-proxy-auth-storage.ts
1578
- function isValidPersistedAuth(value) {
1579
- if (!value || typeof value !== "object") return false;
1580
- const v = value;
1581
- if (typeof v.secret !== "string" || v.secret.trim().length === 0 || typeof v.email !== "string" || v.email.trim().length === 0) return false;
1582
- if (v.firstName != null && typeof v.firstName !== "string") return false;
1583
- if (v.lastName != null && typeof v.lastName !== "string") return false;
1584
- if (v.avatarUrl != null && typeof v.avatarUrl !== "string") return false;
1585
- return true;
1586
- }
1587
- var adapter = createLocalStorageAdapter({
1588
- // Storage key unchanged from the legacy chat-prefixed helper. Renaming
1589
- // it would silently log every existing admin out — the key is a
1590
- // storage contract, not a code identifier.
1591
- key: "chat.proxy-auth.v1",
1592
- namespace: () => getAppType(),
1593
- validate: isValidPersistedAuth,
1594
- logTag: "[embed-proxy-auth-storage]",
1595
- // localStorage — survives tab close, new tabs, and browser restarts.
1596
- // Admin re-pasting creds every tab cycle was the dev-experience
1597
- // tradeoff prior `sessionStorage` setup demanded — rejected. See
1598
- // file-level doc comment for the security tradeoff rationale.
1599
- backend: "local"
1600
- });
1601
- function normalizeOptional(value) {
1602
- if (!value) return void 0;
1603
- const trimmed = value.trim();
1604
- return trimmed.length > 0 ? trimmed : void 0;
1605
- }
1606
- function getEmbedProxyAuth() {
1607
- const persisted = adapter.load();
1608
- if (!persisted) return null;
1609
- return {
1610
- secret: persisted.secret,
1611
- email: persisted.email.trim().toLowerCase(),
1612
- firstName: normalizeOptional(persisted.firstName),
1613
- lastName: normalizeOptional(persisted.lastName),
1614
- avatarUrl: normalizeOptional(persisted.avatarUrl)
1615
- };
1616
- }
1617
- function getPersistedProxyEmail() {
1618
- const persisted = adapter.load();
1619
- return _nullishCoalesce(_optionalChain([persisted, 'optionalAccess', _21 => _21.email, 'access', _22 => _22.trim, 'call', _23 => _23(), 'access', _24 => _24.toLowerCase, 'call', _25 => _25()]), () => ( null));
1620
- }
1621
- function setEmbedProxyAuth(value) {
1622
- adapter.save({
1623
- secret: value.secret,
1624
- email: value.email.trim().toLowerCase(),
1625
- firstName: normalizeOptional(value.firstName),
1626
- lastName: normalizeOptional(value.lastName),
1627
- avatarUrl: normalizeOptional(value.avatarUrl)
1628
- });
1629
- }
1630
- function clearEmbedProxyAuth() {
1631
- adapter.clear();
1632
- }
1633
- function applyProxyAuth(url, baseHeaders = { "Content-Type": "application/json" }) {
1634
- const auth = getEmbedProxyAuth();
1635
- const headers = { ...baseHeaders };
1636
- if (_optionalChain([auth, 'optionalAccess', _26 => _26.secret])) {
1637
- headers.Authorization = `Bearer ${auth.secret}`;
1638
- }
1639
- if (_optionalChain([auth, 'optionalAccess', _27 => _27.email])) {
1640
- headers["X-Chat-Act-As"] = auth.email;
1641
- }
1642
- if (_optionalChain([auth, 'optionalAccess', _28 => _28.firstName])) headers["X-Chat-First-Name"] = auth.firstName;
1643
- if (_optionalChain([auth, 'optionalAccess', _29 => _29.lastName])) headers["X-Chat-Last-Name"] = auth.lastName;
1644
- if (_optionalChain([auth, 'optionalAccess', _30 => _30.avatarUrl])) headers["X-Chat-Avatar-Url"] = auth.avatarUrl;
1645
- return { url, headers };
1646
- }
1647
-
1648
- // src/utils/embed-authed-fetch.ts
1649
- var ADAPTER_GLOBAL_KEY = "__embedAuthedFetchAdapter__";
1650
- function getRegisteredAuthAdapter() {
1651
- if (typeof globalThis === "undefined") return null;
1652
- return _nullishCoalesce(globalThis[ADAPTER_GLOBAL_KEY], () => ( null));
1653
- }
1654
- function storeRegisteredAuthAdapter(adapter2) {
1655
- if (typeof globalThis === "undefined") return;
1656
- globalThis[ADAPTER_GLOBAL_KEY] = adapter2;
1657
- }
1658
- function setEmbedAuthAdapter(adapter2) {
1659
- if (adapter2 && getRegisteredAuthAdapter() && process.env.NODE_ENV !== "production") {
1660
- console.warn(
1661
- "[setEmbedAuthAdapter] overwriting a previously-registered auth adapter. Two chat-runtime providers should not coexist \u2014 verify mount order and pass `null` from the unmounting provider."
1662
- );
1663
- }
1664
- storeRegisteredAuthAdapter(adapter2);
1665
- }
1666
- function hasEmbedAuthAdapter() {
1667
- return getRegisteredAuthAdapter() !== null;
1668
- }
1669
- function embedAuthedFetch(url, init = {}) {
1670
- assertSameOrigin(url);
1671
- let baseHeaders;
1672
- if (init.headers === void 0) {
1673
- baseHeaders = { "Content-Type": "application/json" };
1674
- } else {
1675
- baseHeaders = {};
1676
- if (init.headers instanceof Headers) {
1677
- init.headers.forEach((v, k) => {
1678
- baseHeaders[k] = v;
1679
- });
1680
- } else if (Array.isArray(init.headers)) {
1681
- for (const [k, v] of init.headers) baseHeaders[k] = v;
1682
- } else {
1683
- Object.assign(baseHeaders, init.headers);
1684
- }
1685
- }
1686
- return fetchWithRefresh(url, init, baseHeaders, false);
1687
- }
1688
- var IN_FLIGHT_REFRESH_GLOBAL_KEY = "__embedAuthedFetchInFlightRefresh__";
1689
- function getInFlightRefresh() {
1690
- if (typeof globalThis === "undefined") return null;
1691
- return _nullishCoalesce(globalThis[IN_FLIGHT_REFRESH_GLOBAL_KEY], () => ( null));
1692
- }
1693
- function setInFlightRefresh(refresh) {
1694
- if (typeof globalThis === "undefined") return;
1695
- globalThis[IN_FLIGHT_REFRESH_GLOBAL_KEY] = refresh;
1696
- }
1697
- function dedupedRefresh() {
1698
- const adapter2 = getRegisteredAuthAdapter();
1699
- if (!_optionalChain([adapter2, 'optionalAccess', _31 => _31.refresh])) return Promise.resolve(false);
1700
- let inFlightRefresh = getInFlightRefresh();
1701
- if (!inFlightRefresh) {
1702
- inFlightRefresh = Promise.resolve().then(() => adapter2.refresh()).catch(() => false).finally(() => {
1703
- setInFlightRefresh(null);
1704
- });
1705
- setInFlightRefresh(inFlightRefresh);
1706
- }
1707
- return inFlightRefresh;
1708
- }
1709
- async function fetchWithRefresh(url, init, baseHeaders, isRetry) {
1710
- const { url: authedUrl, headers } = applyProxyAuth(url, { ...baseHeaders });
1711
- const adapter2 = getRegisteredAuthAdapter();
1712
- if (_optionalChain([adapter2, 'optionalAccess', _32 => _32.getHeaders])) {
1713
- for (const [k, v] of Object.entries(adapter2.getHeaders())) {
1714
- if (v !== void 0) headers[k] = v;
1715
- }
1716
- }
1717
- const credentials = _nullishCoalesce(_nullishCoalesce(_optionalChain([adapter2, 'optionalAccess', _33 => _33.credentials]), () => ( init.credentials)), () => ( "same-origin"));
1718
- const response = await fetch(authedUrl, {
1719
- ...init,
1720
- headers,
1721
- // Default `same-origin` carries Supabase cookies for the MPH proxy-
1722
- // auth model. Hosts on different origins (openframe-frontend ↔
1723
- // openframe gateway) register `credentials: 'include'` via the
1724
- // adapter to make their own cookies travel cross-origin (CORS +
1725
- // `SameSite=None` must be configured server-side for that to work).
1726
- credentials
1727
- });
1728
- if (response.status === 401 && !isRetry && _optionalChain([adapter2, 'optionalAccess', _34 => _34.refresh])) {
1729
- const refreshed = await dedupedRefresh();
1730
- if (refreshed) {
1731
- return fetchWithRefresh(url, init, baseHeaders, true);
1732
- }
1733
- }
1734
- return response;
1735
- }
1736
- function assertSameOrigin(url) {
1737
- if (typeof window === "undefined") return;
1738
- let target;
1739
- let pageOrigin;
1740
- try {
1741
- target = new URL(url, window.location.href);
1742
- pageOrigin = new URL(window.location.href).origin;
1743
- } catch (e4) {
1744
- throw new Error(`embedAuthedFetch: refusing to fetch malformed URL (${JSON.stringify(url)})`);
1745
- }
1746
- if (target.protocol !== "http:" && target.protocol !== "https:") {
1747
- throw new Error(
1748
- `embedAuthedFetch: refusing non-http(s) URL (${target.protocol}) \u2014 pass a relative /api/* path instead`
1749
- );
1750
- }
1751
- if (target.origin !== pageOrigin) {
1752
- if (process.env.NODE_ENV !== "production") {
1753
- console.warn(
1754
- `[embedAuthedFetch] cross-origin fetch to ${target.origin} allowed in dev (NODE_ENV !== 'production'). Production builds will reject this \u2014 wire a same-origin proxy before shipping.`
1755
- );
1756
- return;
1757
- }
1758
- throw new Error(
1759
- `embedAuthedFetch: refusing cross-origin fetch to ${target.origin} \u2014 pass a relative /api/* path instead`
1760
- );
1761
- }
1762
- }
1763
-
1764
- // src/utils/embed-content-fetch.ts
1765
- var contentFetch = (input, init) => {
1766
- if (!hasEmbedAuthAdapter()) return fetch(input, init);
1767
- const url = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
1768
- return embedAuthedFetch(url, init);
1769
- };
1770
-
1771
- // src/hooks/use-contact-submission.ts
1772
1241
  function useContactSubmission(options = {}) {
1773
1242
  const { userId, successRedirectUrl, successToastMessage, onSuccess } = options;
1774
1243
  const { toast: toast2 } = useToast();
@@ -1780,7 +1249,7 @@ function useContactSubmission(options = {}) {
1780
1249
  if (isSubmitting) return;
1781
1250
  setIsSubmitting(true);
1782
1251
  try {
1783
- const response = await contentFetch(contactUrl, {
1252
+ const response = await _chunkTFSYSWPScjs.contentFetch.call(void 0, contactUrl, {
1784
1253
  method: "POST",
1785
1254
  headers: { "Content-Type": "application/json" },
1786
1255
  body: JSON.stringify({
@@ -1920,7 +1389,7 @@ function useCopyToClipboard({
1920
1389
  setCopied(true);
1921
1390
  toast2({ title: successTitle, description: successDescription, variant: "success" });
1922
1391
  setTimeout(() => setCopied(false), resetDelay);
1923
- } catch (e5) {
1392
+ } catch (e3) {
1924
1393
  toast2({ title: errorTitle, description: errorDescription, variant: "destructive" });
1925
1394
  }
1926
1395
  },
@@ -2414,7 +1883,7 @@ function setNestedValue(obj, path, value) {
2414
1883
  }
2415
1884
  function getNestedValue(obj, path) {
2416
1885
  return path.split(".").reduce((current, key) => {
2417
- return _optionalChain([current, 'optionalAccess', _35 => _35[key]]);
1886
+ return _optionalChain([current, 'optionalAccess', _15 => _15[key]]);
2418
1887
  }, obj);
2419
1888
  }
2420
1889
  function mergeVariables(currentVariables, updates, schema) {
@@ -2583,7 +2052,7 @@ var GraphQLIntrospector = class {
2583
2052
  try {
2584
2053
  localStorage.removeItem(this.cacheKey);
2585
2054
  this.schema = null;
2586
- } catch (e6) {
2055
+ } catch (e4) {
2587
2056
  }
2588
2057
  }
2589
2058
  /**
@@ -3147,125 +2616,8 @@ function useNatsClient(clientOptions, options = {}) {
3147
2616
  };
3148
2617
  }
3149
2618
 
3150
- // src/hooks/use-near-viewport.ts
3151
-
3152
- var observers = /* @__PURE__ */ new Map();
3153
- var subscribers = /* @__PURE__ */ new WeakMap();
3154
- function getObserverFor(rootMargin) {
3155
- const existing = observers.get(rootMargin);
3156
- if (existing) return existing;
3157
- const io = new IntersectionObserver(
3158
- (entries) => {
3159
- entries.forEach((entry) => {
3160
- if (!entry.isIntersecting) return;
3161
- const cb = subscribers.get(entry.target);
3162
- if (cb) {
3163
- cb();
3164
- io.unobserve(entry.target);
3165
- subscribers.delete(entry.target);
3166
- }
3167
- });
3168
- },
3169
- { rootMargin }
3170
- );
3171
- observers.set(rootMargin, io);
3172
- return io;
3173
- }
3174
- function useNearViewport(rootMargin = "500px") {
3175
- const [isNear, setIsNear] = _react.useState.call(void 0, false);
3176
- const elRef = _react.useRef.call(void 0, null);
3177
- const ref = _react.useCallback.call(void 0,
3178
- (node) => {
3179
- const prev = elRef.current;
3180
- if (prev) {
3181
- const stillOurs = subscribers.get(prev);
3182
- if (stillOurs) {
3183
- subscribers.delete(prev);
3184
- _optionalChain([observers, 'access', _36 => _36.get, 'call', _37 => _37(rootMargin), 'optionalAccess', _38 => _38.unobserve, 'call', _39 => _39(prev)]);
3185
- }
3186
- }
3187
- elRef.current = node;
3188
- if (!node) return;
3189
- const cb = () => setIsNear(true);
3190
- subscribers.set(node, cb);
3191
- getObserverFor(rootMargin).observe(node);
3192
- },
3193
- [rootMargin]
3194
- );
3195
- _react.useEffect.call(void 0, () => {
3196
- return () => {
3197
- const el = elRef.current;
3198
- if (!el) return;
3199
- if (subscribers.get(el)) {
3200
- subscribers.delete(el);
3201
- _optionalChain([observers, 'access', _40 => _40.get, 'call', _41 => _41(rootMargin), 'optionalAccess', _42 => _42.unobserve, 'call', _43 => _43(el)]);
3202
- }
3203
- };
3204
- }, [rootMargin]);
3205
- return { ref, isNear };
3206
- }
3207
-
3208
2619
  // src/hooks/use-access-code-integration.ts
3209
2620
 
3210
-
3211
- // src/utils/access-code-client.ts
3212
- async function validateAccessCode(email, code, endpoints) {
3213
- try {
3214
- const response = await fetch(endpoints.validateUrl, {
3215
- method: "POST",
3216
- headers: {
3217
- "Content-Type": "application/json"
3218
- },
3219
- body: JSON.stringify({ email, code })
3220
- });
3221
- if (!response.ok) {
3222
- const error = await response.json().catch(() => ({}));
3223
- throw new Error(error.error || "Validation request failed");
3224
- }
3225
- return await response.json();
3226
- } catch (error) {
3227
- return {
3228
- valid: false,
3229
- message: error instanceof Error ? error.message : "Validation failed"
3230
- };
3231
- }
3232
- }
3233
- async function consumeAccessCode(email, code, endpoints) {
3234
- try {
3235
- const response = await fetch(endpoints.consumeUrl, {
3236
- method: "POST",
3237
- headers: {
3238
- "Content-Type": "application/json"
3239
- },
3240
- body: JSON.stringify({ email, code })
3241
- });
3242
- if (!response.ok) {
3243
- const error = await response.json().catch(() => ({}));
3244
- throw new Error(error.error || "Consumption request failed");
3245
- }
3246
- return await response.json();
3247
- } catch (error) {
3248
- return {
3249
- success: false,
3250
- consumed: false,
3251
- message: error instanceof Error ? error.message : "Consumption failed"
3252
- };
3253
- }
3254
- }
3255
- async function validateAndConsumeAccessCode(email, code, endpoints) {
3256
- const validation = await validateAccessCode(email, code, endpoints);
3257
- if (!validation.valid) {
3258
- return validation;
3259
- }
3260
- const consumption = await consumeAccessCode(email, code, endpoints);
3261
- return {
3262
- ...validation,
3263
- consumed: consumption.consumed,
3264
- message: consumption.consumed ? `Access granted for ${validation.cohort_name}` : consumption.message || validation.message
3265
- };
3266
- }
3267
-
3268
- // src/hooks/use-access-code-integration.ts
3269
2621
  function useAccessCodeIntegration() {
3270
2622
  const runtime = _chunk27APPAJNcjs.useRequiredEndpointsRuntime.call(void 0, );
3271
2623
  const endpoints = runtime.accessCode;
@@ -3274,7 +2626,7 @@ function useAccessCodeIntegration() {
3274
2626
  const validate = async (email, code) => {
3275
2627
  setIsValidating(true);
3276
2628
  try {
3277
- return await validateAccessCode(email, code, endpoints);
2629
+ return await _chunkLFGGF7OTcjs.validateAccessCode.call(void 0, email, code, endpoints);
3278
2630
  } finally {
3279
2631
  setIsValidating(false);
3280
2632
  }
@@ -3282,7 +2634,7 @@ function useAccessCodeIntegration() {
3282
2634
  const consume = async (email, code) => {
3283
2635
  setIsConsuming(true);
3284
2636
  try {
3285
- return await consumeAccessCode(email, code, endpoints);
2637
+ return await _chunkLFGGF7OTcjs.consumeAccessCode.call(void 0, email, code, endpoints);
3286
2638
  } finally {
3287
2639
  setIsConsuming(false);
3288
2640
  }
@@ -3291,7 +2643,7 @@ function useAccessCodeIntegration() {
3291
2643
  setIsValidating(true);
3292
2644
  setIsConsuming(true);
3293
2645
  try {
3294
- return await validateAndConsumeAccessCode(email, code, endpoints);
2646
+ return await _chunkLFGGF7OTcjs.validateAndConsumeAccessCode.call(void 0, email, code, endpoints);
3295
2647
  } finally {
3296
2648
  setIsValidating(false);
3297
2649
  setIsConsuming(false);
@@ -3307,157 +2659,11 @@ function useAccessCodeIntegration() {
3307
2659
  };
3308
2660
  }
3309
2661
 
3310
- // src/hooks/use-og-placeholder.ts
3311
-
3312
- function useOgPlaceholder(buildUrl, title, siteName = "", enabled = true, aspect = "wide") {
3313
- return _react.useMemo.call(void 0, () => {
3314
- if (!enabled || !title) return null;
3315
- const options = {};
3316
- if (siteName) options.site = siteName;
3317
- if (aspect === "square") options.aspect = "square";
3318
- return buildUrl(title, options);
3319
- }, [buildUrl, title, siteName, enabled, aspect]);
3320
- }
3321
-
3322
2662
  // src/hooks/use-scroll-to-hash.ts
3323
2663
 
3324
-
3325
- // src/utils/scroll-into-view.ts
3326
- var activeRaf = 0;
3327
- var teardownActive = null;
3328
- function cancelActiveScroll() {
3329
- if (activeRaf) {
3330
- cancelAnimationFrame(activeRaf);
3331
- activeRaf = 0;
3332
- }
3333
- if (teardownActive) {
3334
- teardownActive();
3335
- teardownActive = null;
3336
- }
3337
- }
3338
- var easeOutCubic = (t) => 1 - Math.pow(1 - t, 3);
3339
- function getScrollableAncestor(el) {
3340
- for (let node = el.parentElement; node; node = node.parentElement) {
3341
- const overflowY = getComputedStyle(node).overflowY;
3342
- if ((overflowY === "auto" || overflowY === "scroll" || overflowY === "overlay") && node.scrollHeight > node.clientHeight) {
3343
- return node;
3344
- }
3345
- }
3346
- return null;
3347
- }
3348
- function scrollElementIntoView(target, options = {}) {
3349
- if (typeof window === "undefined" || !target) return;
3350
- const { headerOffset = 0, behavior = "smooth", adjustTargetY, durationMs = 320 } = options;
3351
- const container = getScrollableAncestor(target);
3352
- const readCurrent = () => container ? container.scrollTop : window.scrollY;
3353
- const writeTo = (y) => {
3354
- if (container) container.scrollTop = y;
3355
- else window.scrollTo(0, y);
3356
- };
3357
- const computeTarget = () => {
3358
- const raw = container ? container.scrollTop + (target.getBoundingClientRect().top - container.getBoundingClientRect().top) - headerOffset : target.getBoundingClientRect().top + window.scrollY - headerOffset;
3359
- const adjusted = adjustTargetY ? adjustTargetY(raw) : raw;
3360
- const maxScroll = container ? Math.max(0, container.scrollHeight - container.clientHeight) : Math.max(0, document.documentElement.scrollHeight - window.innerHeight);
3361
- return Math.min(Math.max(0, adjusted), maxScroll);
3362
- };
3363
- cancelActiveScroll();
3364
- const prefersReduced = typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
3365
- if (behavior === "instant" || behavior === "auto" || prefersReduced) {
3366
- writeTo(computeTarget());
3367
- return;
3368
- }
3369
- let startY = null;
3370
- let startTime = 0;
3371
- const onUserGesture = () => cancelActiveScroll();
3372
- window.addEventListener("wheel", onUserGesture, { passive: true });
3373
- window.addEventListener("touchmove", onUserGesture, { passive: true });
3374
- teardownActive = () => {
3375
- window.removeEventListener("wheel", onUserGesture);
3376
- window.removeEventListener("touchmove", onUserGesture);
3377
- };
3378
- const step = (now) => {
3379
- if (startY === null) {
3380
- startY = readCurrent();
3381
- startTime = now;
3382
- }
3383
- const targetY = computeTarget();
3384
- const t = Math.min(1, (now - startTime) / durationMs);
3385
- const y = startY + (targetY - startY) * easeOutCubic(t);
3386
- writeTo(y);
3387
- if (t < 1) {
3388
- activeRaf = requestAnimationFrame(step);
3389
- } else {
3390
- writeTo(computeTarget());
3391
- activeRaf = 0;
3392
- if (teardownActive) {
3393
- teardownActive();
3394
- teardownActive = null;
3395
- }
3396
- }
3397
- };
3398
- activeRaf = requestAnimationFrame(step);
3399
- }
3400
-
3401
- // src/utils/same-page-hash-nav.ts
3402
- var STICKY_HEADER_OFFSET_PX = 96;
3403
- var HUB_HEADER_OFFSET_PX = 80;
3404
- function normalizeHashFragment(hash) {
3405
- if (!hash) return "";
3406
- const second = hash.indexOf("#", 1);
3407
- return second < 0 ? hash : hash.slice(0, second);
3408
- }
3409
- function navigateSamePageHash(target, options = {}) {
3410
- if (typeof window === "undefined") return false;
3411
- const { headerOffset = 0, history: historyMode = "push" } = options;
3412
- const normalizedTarget = target.startsWith("#") ? window.location.pathname + window.location.search + target : target;
3413
- let url;
3414
- try {
3415
- url = new URL(normalizedTarget, window.location.href);
3416
- } catch (e7) {
3417
- return false;
3418
- }
3419
- if (url.origin !== window.location.origin || url.pathname !== window.location.pathname || url.search !== window.location.search) {
3420
- return false;
3421
- }
3422
- const current = window.location.pathname + window.location.search + window.location.hash;
3423
- const normalizedHash = normalizeHashFragment(url.hash);
3424
- if (process.env.NODE_ENV === "development" && normalizedHash !== url.hash) {
3425
- console.warn(
3426
- `[navigateSamePageHash] malformed fragment "${url.hash}" \u2192 normalizing to "${normalizedHash}". Fix the upstream composer.`
3427
- );
3428
- }
3429
- const next = url.pathname + url.search + normalizedHash;
3430
- const id = normalizedHash && normalizedHash !== "#" ? normalizedHash.slice(1) : "";
3431
- if (!id && next !== current) return false;
3432
- if (next !== current) {
3433
- const oldURL = window.location.href;
3434
- if (historyMode === "replace") {
3435
- window.history.replaceState(null, "", next);
3436
- } else {
3437
- window.history.pushState(null, "", next);
3438
- }
3439
- window.dispatchEvent(new HashChangeEvent("hashchange", {
3440
- oldURL,
3441
- newURL: window.location.href
3442
- }));
3443
- }
3444
- const el = id ? document.getElementById(id) : null;
3445
- if (id && !el && process.env.NODE_ENV === "development") {
3446
- console.warn(
3447
- `[navigateSamePageHash] anchor "#${id}" not found \u2014 scrolling to top.`
3448
- );
3449
- }
3450
- scrollElementIntoView(_nullishCoalesce(el, () => ( document.documentElement)), {
3451
- behavior: "smooth",
3452
- headerOffset
3453
- });
3454
- return true;
3455
- }
3456
-
3457
- // src/hooks/use-scroll-to-hash.ts
3458
2664
  var MAX_POLL_FRAMES = 60;
3459
2665
  function useScrollToHash(readyDep = true, options) {
3460
- const headerOffset = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _44 => _44.headerOffset]), () => ( 0));
2666
+ const headerOffset = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _16 => _16.headerOffset]), () => ( 0));
3461
2667
  _react.useEffect.call(void 0, () => {
3462
2668
  if (typeof window === "undefined") return;
3463
2669
  if (readyDep === null || readyDep === false) return;
@@ -3469,7 +2675,7 @@ function useScrollToHash(readyDep = true, options) {
3469
2675
  }
3470
2676
  };
3471
2677
  const tryScrollToHash = () => {
3472
- const hash = normalizeHashFragment(window.location.hash).slice(1);
2678
+ const hash = _chunkLFGGF7OTcjs.normalizeHashFragment.call(void 0, window.location.hash).slice(1);
3473
2679
  if (!hash) return;
3474
2680
  cancelPoll();
3475
2681
  let frames = 0;
@@ -3477,7 +2683,7 @@ function useScrollToHash(readyDep = true, options) {
3477
2683
  const el = document.getElementById(hash);
3478
2684
  if (el) {
3479
2685
  rafId = null;
3480
- scrollElementIntoView(el, { headerOffset });
2686
+ _chunkLFGGF7OTcjs.scrollElementIntoView.call(void 0, el, { headerOffset });
3481
2687
  return;
3482
2688
  }
3483
2689
  if (frames++ < MAX_POLL_FRAMES) {
@@ -3499,35 +2705,13 @@ function useScrollToHash(readyDep = true, options) {
3499
2705
 
3500
2706
  // src/hooks/use-humanity-signals.ts
3501
2707
 
3502
-
3503
- // src/utils/humanity-signals.ts
3504
- var HONEYPOT_FIELD = "contact_url_confirm";
3505
- var ELAPSED_MS_FIELD = "form_elapsed_ms";
3506
- var DEFAULT_MIN_FILL_MS = 700;
3507
- function extractHumanitySignals(body) {
3508
- const b = _nullishCoalesce(body, () => ( {}));
3509
- const rawHp = b[HONEYPOT_FIELD];
3510
- const honeypot = rawHp == null ? "" : String(rawHp);
3511
- const rawMs = b[ELAPSED_MS_FIELD];
3512
- const elapsedMs = typeof rawMs === "number" && Number.isFinite(rawMs) ? rawMs : null;
3513
- return { honeypot, elapsedMs };
3514
- }
3515
- function evaluateHumanitySignals(body, opts) {
3516
- const { honeypot, elapsedMs } = extractHumanitySignals(body);
3517
- if (honeypot.trim() !== "") return { ok: false, reason: "honeypot" };
3518
- if (elapsedMs !== null && elapsedMs < opts.minFillMs) return { ok: false, reason: "too_fast" };
3519
- return { ok: true };
3520
- }
3521
- var splitCsvEnv = (s) => _nullishCoalesce(_optionalChain([s, 'optionalAccess', _45 => _45.split, 'call', _46 => _46(","), 'access', _47 => _47.map, 'call', _48 => _48((t) => t.trim()), 'access', _49 => _49.filter, 'call', _50 => _50(Boolean)]), () => ( []));
3522
-
3523
- // src/hooks/use-humanity-signals.ts
3524
2708
  function useHumanitySignals() {
3525
2709
  const ref = _react.useRef.call(void 0, null);
3526
2710
  const mountedAt = _react.useRef.call(void 0, typeof performance !== "undefined" ? performance.now() : 0);
3527
2711
  const getSignals = _react.useCallback.call(void 0,
3528
2712
  () => ({
3529
- [HONEYPOT_FIELD]: _nullishCoalesce(_optionalChain([ref, 'access', _51 => _51.current, 'optionalAccess', _52 => _52.value]), () => ( "")),
3530
- [ELAPSED_MS_FIELD]: typeof performance !== "undefined" ? Math.round(performance.now() - mountedAt.current) : 0
2713
+ [_chunkLFGGF7OTcjs.HONEYPOT_FIELD]: _nullishCoalesce(_optionalChain([ref, 'access', _17 => _17.current, 'optionalAccess', _18 => _18.value]), () => ( "")),
2714
+ [_chunkLFGGF7OTcjs.ELAPSED_MS_FIELD]: typeof performance !== "undefined" ? Math.round(performance.now() - mountedAt.current) : 0
3531
2715
  }),
3532
2716
  []
3533
2717
  );
@@ -3535,7 +2719,7 @@ function useHumanitySignals() {
3535
2719
  if (ref.current) ref.current.value = "";
3536
2720
  if (typeof performance !== "undefined") mountedAt.current = performance.now();
3537
2721
  }, []);
3538
- return { honeypotInputProps: { ref, name: HONEYPOT_FIELD }, getSignals, resetSignals };
2722
+ return { honeypotInputProps: { ref, name: _chunkLFGGF7OTcjs.HONEYPOT_FIELD }, getSignals, resetSignals };
3539
2723
  }
3540
2724
 
3541
2725
 
@@ -3603,51 +2787,5 @@ function useHumanitySignals() {
3603
2787
 
3604
2788
 
3605
2789
 
3606
-
3607
-
3608
-
3609
-
3610
-
3611
-
3612
-
3613
-
3614
-
3615
-
3616
-
3617
-
3618
-
3619
-
3620
-
3621
-
3622
-
3623
-
3624
-
3625
-
3626
-
3627
-
3628
-
3629
-
3630
-
3631
-
3632
-
3633
-
3634
-
3635
-
3636
-
3637
-
3638
-
3639
-
3640
-
3641
-
3642
-
3643
-
3644
-
3645
-
3646
-
3647
-
3648
-
3649
-
3650
-
3651
-
3652
- exports.useAutoLimitTags = useAutoLimitTags; exports.useDebounce = useDebounce; exports.useHeaderHeight = useHeaderHeight; exports.useHorizontalScrollbar = useHorizontalScrollbar; exports.useImageEdgeColor = useImageEdgeColor; exports.useLocalStorage = useLocalStorage; exports.useMediaQuery = useMediaQuery; exports.breakpoints = breakpoints; exports.useSmUp = useSmUp; exports.useMdUp = useMdUp; exports.useLgUp = useLgUp; exports.useMemoizedCallback = useMemoizedCallback; exports.useNotificationPermission = useNotificationPermission; exports.useOnboardingState = useOnboardingState; exports.useSearch = useSearch; exports.useTablePagination = useTablePagination; exports.useThrottle = useThrottle; exports.useWindowSize = useWindowSize; exports.platformIcons = platformIcons; exports.platformColors = platformColors; exports.platformDisplayNames = platformDisplayNames; exports.platformDescriptions = platformDescriptions; exports.platformSlogans = platformSlogans; exports.platformHexColors = platformHexColors; exports.platformIconNames = platformIconNames; exports.getDefaultColorForPlatform = getDefaultColorForPlatform; exports.getDefaultIconForPlatform = getDefaultIconForPlatform; exports.transformPlatformConfigsToOptions = transformPlatformConfigsToOptions; exports.getPlatformIcon = getPlatformIcon; exports.getPlatformColor = getPlatformColor; exports.getPlatformDisplayName = getPlatformDisplayName; exports.getPlatformDescription = getPlatformDescription; exports.getPlatformSlogan = getPlatformSlogan; exports.getSmallPlatformIcon = getSmallPlatformIcon; exports.getPlatformIconComponent = getPlatformIconComponent; exports.usePlatformConfig = usePlatformConfig; exports.usePlatformByValue = usePlatformByValue; exports.useValidatePlatform = useValidatePlatform; exports.ToolTypeValues = ToolTypeValues; exports.toolLabels = toolLabels; exports.ToolIcon = ToolIcon; exports.dotColorByVariant = dotColorByVariant; exports.progressColorByVariant = progressColorByVariant; exports.ToastCard = ToastCard; exports.CommandApprovalToast = CommandApprovalToast; exports.Toaster = Toaster; exports.showToast = showToast; exports.showCommandApprovalToast = showCommandApprovalToast; exports.toast = toast; exports.useToast = useToast; exports.getAppType = getAppType; exports.getEmbedProxyAuth = getEmbedProxyAuth; exports.getPersistedProxyEmail = getPersistedProxyEmail; exports.setEmbedProxyAuth = setEmbedProxyAuth; exports.clearEmbedProxyAuth = clearEmbedProxyAuth; exports.applyProxyAuth = applyProxyAuth; exports.setEmbedAuthAdapter = setEmbedAuthAdapter; exports.embedAuthedFetch = embedAuthedFetch; exports.contentFetch = contentFetch; exports.useContactSubmission = useContactSubmission; exports.useQuickActionHint = useQuickActionHint; exports.useCopyToClipboard = useCopyToClipboard; exports.configureBatchImageFetch = configureBatchImageFetch; exports.batchFetchAuthenticatedImages = batchFetchAuthenticatedImages; exports.useBatchImages = useBatchImages; exports.configureAuthenticatedImage = configureAuthenticatedImage; exports.useAuthenticatedImage = useAuthenticatedImage; exports.extractVariablesFromQuery = extractVariablesFromQuery; exports.isScalarType = isScalarType; exports.isInputObjectType = isInputObjectType; exports.flattenQueryVariables = flattenQueryVariables; exports.mergeDefaults = mergeDefaults; exports.validateSchema = validateSchema; exports.getArrayParams = getArrayParams; exports.getRequiredParams = getRequiredParams; exports.shouldIncludeInUrl = shouldIncludeInUrl; exports.urlParamsToVariables = urlParamsToVariables; exports.variablesToUrlParams = variablesToUrlParams; exports.coerceValue = coerceValue; exports.setNestedValue = setNestedValue; exports.getNestedValue = getNestedValue; exports.mergeVariables = mergeVariables; exports.clearParams = clearParams; exports.validateVariables = validateVariables; exports.GraphQLIntrospector = GraphQLIntrospector; exports.introspector = introspector; exports.useQueryParams = useQueryParams; exports.useApiParams = useApiParams; exports.createSearchParams = createSearchParams; exports.useCursorPaginationState = useCursorPaginationState; exports.useNatsClient = useNatsClient; exports.useNearViewport = useNearViewport; exports.validateAccessCode = validateAccessCode; exports.consumeAccessCode = consumeAccessCode; exports.validateAndConsumeAccessCode = validateAndConsumeAccessCode; exports.useAccessCodeIntegration = useAccessCodeIntegration; exports.useOgPlaceholder = useOgPlaceholder; exports.scrollElementIntoView = scrollElementIntoView; exports.STICKY_HEADER_OFFSET_PX = STICKY_HEADER_OFFSET_PX; exports.HUB_HEADER_OFFSET_PX = HUB_HEADER_OFFSET_PX; exports.normalizeHashFragment = normalizeHashFragment; exports.navigateSamePageHash = navigateSamePageHash; exports.useScrollToHash = useScrollToHash; exports.HONEYPOT_FIELD = HONEYPOT_FIELD; exports.ELAPSED_MS_FIELD = ELAPSED_MS_FIELD; exports.DEFAULT_MIN_FILL_MS = DEFAULT_MIN_FILL_MS; exports.extractHumanitySignals = extractHumanitySignals; exports.evaluateHumanitySignals = evaluateHumanitySignals; exports.splitCsvEnv = splitCsvEnv; exports.useHumanitySignals = useHumanitySignals;
3653
- //# sourceMappingURL=chunk-WMSTJAZT.cjs.map
2790
+ exports.useHeaderHeight = useHeaderHeight; exports.useHorizontalScrollbar = useHorizontalScrollbar; exports.useImageEdgeColor = useImageEdgeColor; exports.useLocalStorage = useLocalStorage; exports.useMediaQuery = useMediaQuery; exports.breakpoints = breakpoints; exports.useSmUp = useSmUp; exports.useMdUp = useMdUp; exports.useLgUp = useLgUp; exports.useMemoizedCallback = useMemoizedCallback; exports.useNotificationPermission = useNotificationPermission; exports.useOnboardingState = useOnboardingState; exports.useSearch = useSearch; exports.useTablePagination = useTablePagination; exports.useThrottle = useThrottle; exports.useWindowSize = useWindowSize; exports.usePlatformConfig = usePlatformConfig; exports.usePlatformByValue = usePlatformByValue; exports.useValidatePlatform = useValidatePlatform; exports.ToolIcon = ToolIcon; exports.dotColorByVariant = dotColorByVariant; exports.progressColorByVariant = progressColorByVariant; exports.ToastCard = ToastCard; exports.CommandApprovalToast = CommandApprovalToast; exports.Toaster = Toaster; exports.showToast = showToast; exports.showCommandApprovalToast = showCommandApprovalToast; exports.toast = toast; exports.useToast = useToast; exports.useContactSubmission = useContactSubmission; exports.useQuickActionHint = useQuickActionHint; exports.useCopyToClipboard = useCopyToClipboard; exports.configureBatchImageFetch = configureBatchImageFetch; exports.batchFetchAuthenticatedImages = batchFetchAuthenticatedImages; exports.useBatchImages = useBatchImages; exports.configureAuthenticatedImage = configureAuthenticatedImage; exports.useAuthenticatedImage = useAuthenticatedImage; exports.extractVariablesFromQuery = extractVariablesFromQuery; exports.isScalarType = isScalarType; exports.isInputObjectType = isInputObjectType; exports.flattenQueryVariables = flattenQueryVariables; exports.mergeDefaults = mergeDefaults; exports.validateSchema = validateSchema; exports.getArrayParams = getArrayParams; exports.getRequiredParams = getRequiredParams; exports.shouldIncludeInUrl = shouldIncludeInUrl; exports.urlParamsToVariables = urlParamsToVariables; exports.variablesToUrlParams = variablesToUrlParams; exports.coerceValue = coerceValue; exports.setNestedValue = setNestedValue; exports.getNestedValue = getNestedValue; exports.mergeVariables = mergeVariables; exports.clearParams = clearParams; exports.validateVariables = validateVariables; exports.GraphQLIntrospector = GraphQLIntrospector; exports.introspector = introspector; exports.useQueryParams = useQueryParams; exports.useApiParams = useApiParams; exports.createSearchParams = createSearchParams; exports.useCursorPaginationState = useCursorPaginationState; exports.useNatsClient = useNatsClient; exports.useAccessCodeIntegration = useAccessCodeIntegration; exports.useScrollToHash = useScrollToHash; exports.useHumanitySignals = useHumanitySignals;
2791
+ //# sourceMappingURL=chunk-5E2HOSSH.cjs.map