@flamingo-stack/openframe-frontend-core 0.0.710 → 0.0.712

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 (534) hide show
  1. package/dist/chunk-2NASBO7O.js +1137 -0
  2. package/dist/{chunk-RQRX4YC3.cjs → chunk-2RKFMUNW.cjs} +46 -46
  3. package/dist/chunk-2Y7QZAB2.cjs +158 -0
  4. package/dist/chunk-34I6XI3N.js +136 -0
  5. package/dist/chunk-3K5ZLZE7.js +292 -0
  6. package/dist/chunk-3LU4UFPS.cjs +14 -0
  7. package/dist/{chunk-YBUT4AMG.cjs → chunk-3RKBJT6K.cjs} +8 -6
  8. package/dist/{chunk-LNW45N2C.js → chunk-3SEEGNRE.js} +35 -27
  9. package/dist/{chunk-L6Y6OOKG.cjs → chunk-3UAJLO5U.cjs} +41 -39
  10. package/dist/chunk-4HJRHEXD.cjs +1612 -0
  11. package/dist/{chunk-JPG7OHEG.js → chunk-4QFWGLZO.js} +1 -1
  12. package/dist/chunk-4R2L3DSA.js +14 -0
  13. package/dist/{chunk-36BCTE7D.js → chunk-4UYKNOZG.js} +12 -10
  14. package/dist/{chunk-DA5UDTLG.js → chunk-5SDELRH3.js} +5 -5
  15. package/dist/{chunk-CZSZSDD4.js → chunk-5Y72YQEK.js} +22 -113
  16. package/dist/{chunk-KUC673HM.js → chunk-6T3BTD6Q.js} +204 -982
  17. package/dist/{chunk-F57ECE2I.js → chunk-6YPTUHM7.js} +4 -4
  18. package/dist/{chunk-TDYIREDJ.js → chunk-7HNYYNKE.js} +28 -22
  19. package/dist/{chunk-2G7UYK35.cjs → chunk-7NSU5EQD.cjs} +57 -148
  20. package/dist/chunk-AAYNCJMW.cjs +48 -0
  21. package/dist/{chunk-FXJ3WWUB.js → chunk-ADBE7QF3.js} +5 -252
  22. package/dist/chunk-AECTRMGQ.cjs +334 -0
  23. package/dist/chunk-AGVXKD4K.js +334 -0
  24. package/dist/chunk-AL2GUHAJ.cjs +18 -0
  25. package/dist/{chunk-WMX26HB5.js → chunk-APJZBDQN.js} +12 -12
  26. package/dist/chunk-AUMKE74M.cjs +16 -0
  27. package/dist/chunk-B4NCVYEQ.cjs +292 -0
  28. package/dist/{chunk-2RNB5DTN.cjs → chunk-BXSRTBLU.cjs} +82 -54
  29. package/dist/chunk-CMGFZHCN.js +233 -0
  30. package/dist/chunk-CMZ3QTFQ.js +1207 -0
  31. package/dist/chunk-CPA2CKRZ.cjs +125 -0
  32. package/dist/{chunk-B73373AG.cjs → chunk-CSCJU6YC.cjs} +35 -33
  33. package/dist/chunk-CYUUHFXL.js +41 -0
  34. package/dist/chunk-DC4RTYWK.cjs +1122 -0
  35. package/dist/{chunk-6YKAT7NV.js → chunk-DDWFCWOE.js} +5 -7
  36. package/dist/{chunk-F5FF4DME.js → chunk-EFNKS5W4.js} +322 -428
  37. package/dist/{chunk-2KXTOP6G.cjs → chunk-EOKSKJSS.cjs} +25 -83
  38. package/dist/{chunk-6NTPY5QA.cjs → chunk-ETYLOZOB.cjs} +978 -2413
  39. package/dist/chunk-F5BPGWGT.cjs +931 -0
  40. package/dist/{chunk-4L6XCMOU.js → chunk-FCAVAEHF.js} +8277 -9990
  41. package/dist/chunk-FFT56TYB.cjs +401 -0
  42. package/dist/chunk-FYEJTF5Y.js +125 -0
  43. package/dist/chunk-G3GRYDMS.js +16 -0
  44. package/dist/{chunk-MR3A4MZV.js → chunk-G3OMVCID.js} +13 -7
  45. package/dist/chunk-G6OHIX5C.cjs +100 -0
  46. package/dist/{chunk-UDFRUKLC.cjs → chunk-GEDY7HQI.cjs} +2 -2
  47. package/dist/chunk-GQ7JJUIT.cjs +1207 -0
  48. package/dist/chunk-H3PKYE4N.js +18 -0
  49. package/dist/{chunk-CNWOMQQJ.js → chunk-H5R7U2D2.js} +206 -5
  50. package/dist/{chunk-SEXWHIMS.cjs → chunk-HETQETPV.cjs} +9648 -9680
  51. package/dist/{chunk-Y2GSOUCS.cjs → chunk-HWVUR735.cjs} +2 -2
  52. package/dist/chunk-II4QMH26.cjs +35 -0
  53. package/dist/chunk-ILNN6QRW.js +1612 -0
  54. package/dist/chunk-IYVFSLWJ.js +931 -0
  55. package/dist/{chunk-3AHTOSXJ.cjs → chunk-JGCFRTND.cjs} +23 -17
  56. package/dist/chunk-JHQ334WS.js +655 -0
  57. package/dist/{chunk-WCVZCGK5.cjs → chunk-JO5TLJPM.cjs} +129 -907
  58. package/dist/{chunk-JRU2CXLB.cjs → chunk-JVCAK4W3.cjs} +210 -9
  59. package/dist/chunk-KBJJQFYU.js +1122 -0
  60. package/dist/chunk-KEKCQENI.js +48 -0
  61. package/dist/chunk-KHXZFLIN.cjs +41 -0
  62. package/dist/chunk-KT3U3ZRP.cjs +1137 -0
  63. package/dist/chunk-L2VUINHN.js +35 -0
  64. package/dist/{chunk-P42V6N34.cjs → chunk-L6ZQGWCX.cjs} +4521 -6234
  65. package/dist/{chunk-PLYEKV3N.cjs → chunk-MA4Q5RBP.cjs} +6 -6
  66. package/dist/{chunk-SS5MBHDP.js → chunk-N67XG5GY.js} +10 -8
  67. package/dist/chunk-NPAQSMRY.js +2087 -0
  68. package/dist/{chunk-I3ST4PLM.js → chunk-NQWJAOHO.js} +6 -4
  69. package/dist/{chunk-QAOFMK2A.cjs → chunk-OBZJICEA.cjs} +8 -8
  70. package/dist/{chunk-6IW7TWPV.js → chunk-OPYODNV2.js} +3 -3
  71. package/dist/chunk-P3JMAMHP.js +401 -0
  72. package/dist/chunk-PPXR22YC.cjs +2087 -0
  73. package/dist/chunk-PSVSEN4J.cjs +655 -0
  74. package/dist/{chunk-4UM2ETLM.js → chunk-RBYVFPER.js} +74 -46
  75. package/dist/{chunk-PO33GZVY.js → chunk-ROBQ5TR7.js} +10549 -10581
  76. package/dist/{chunk-ZCLBYT2V.cjs → chunk-T3CLXR43.cjs} +114 -220
  77. package/dist/{chunk-FI6GMDO7.js → chunk-TTVOLEUS.js} +3605 -5040
  78. package/dist/{chunk-LM7TXMLU.cjs → chunk-ULWVKHSI.cjs} +8 -255
  79. package/dist/{chunk-6I4ZAFO2.cjs → chunk-UT3ODMBU.cjs} +15 -15
  80. package/dist/chunk-WANCBTUE.js +71 -0
  81. package/dist/{chunk-BIZNSF3U.cjs → chunk-WBNAEYTQ.cjs} +2 -51
  82. package/dist/chunk-WFPCCBOM.cjs +71 -0
  83. package/dist/chunk-WI6FHKD7.js +158 -0
  84. package/dist/chunk-WMNCVLES.js +100 -0
  85. package/dist/{chunk-UT4YHQZW.js → chunk-WSDT7LYL.js} +0 -49
  86. package/dist/chunk-WVOTC7HW.cjs +136 -0
  87. package/dist/{chunk-AOWDNSTM.cjs → chunk-WWJG4GVG.cjs} +93 -87
  88. package/dist/chunk-XXBLN4BP.cjs +233 -0
  89. package/dist/{chunk-4IBPRIQH.js → chunk-YBQQNDC7.js} +1 -1
  90. package/dist/{chunk-LFFB6EMB.js → chunk-YBS5QGON.js} +70 -128
  91. package/dist/{chunk-NSGXARGJ.cjs → chunk-Z5SWJW5Q.cjs} +125 -117
  92. package/dist/{chunk-OJLR5MEO.cjs → chunk-ZX7SCPLO.cjs} +6 -8
  93. package/dist/cloud-tenants-KZUZGD4A.cjs +117 -0
  94. package/dist/cloud-tenants-OGLVVQ7X.js +117 -0
  95. package/dist/components/case-studies/index.cjs +45 -29
  96. package/dist/components/case-studies/index.js +32 -16
  97. package/dist/components/chat/ask-prompts.d.ts +64 -0
  98. package/dist/components/chat/ask-prompts.d.ts.map +1 -0
  99. package/dist/components/chat/entity-cards/case-study-card.d.ts +6 -3
  100. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
  101. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts +4 -1
  102. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts.map +1 -1
  103. package/dist/components/chat/hooks/use-unified-chat.d.ts.map +1 -1
  104. package/dist/components/chat/index.cjs +27 -8
  105. package/dist/components/chat/index.d.ts +1 -0
  106. package/dist/components/chat/index.d.ts.map +1 -1
  107. package/dist/components/chat/index.js +57 -38
  108. package/dist/components/chat/quick-action-chip.d.ts +7 -3
  109. package/dist/components/chat/quick-action-chip.d.ts.map +1 -1
  110. package/dist/components/chat/types/component.types.d.ts +4 -0
  111. package/dist/components/chat/types/component.types.d.ts.map +1 -1
  112. package/dist/components/chat/types/unified-chat-state.types.d.ts +12 -0
  113. package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
  114. package/dist/components/contact/index.cjs +29 -13
  115. package/dist/components/contact/index.js +28 -12
  116. package/dist/components/docs/index.cjs +33 -16
  117. package/dist/components/docs/index.js +33 -16
  118. package/dist/components/docs/use-scroll-spy.d.ts +23 -1
  119. package/dist/components/docs/use-scroll-spy.d.ts.map +1 -1
  120. package/dist/components/embeds/index.cjs +29 -13
  121. package/dist/components/embeds/index.js +28 -12
  122. package/dist/components/faq/faq-section.d.ts +8 -1
  123. package/dist/components/faq/faq-section.d.ts.map +1 -1
  124. package/dist/components/faq/index.cjs +30 -14
  125. package/dist/components/faq/index.js +29 -13
  126. package/dist/components/features/array-entry-manager.d.ts +5 -1
  127. package/dist/components/features/array-entry-manager.d.ts.map +1 -1
  128. package/dist/components/features/board/board.d.ts +2 -0
  129. package/dist/components/features/board/board.d.ts.map +1 -1
  130. package/dist/components/features/board/ticket-card.d.ts.map +1 -1
  131. package/dist/components/features/board/touch-board.d.ts +1 -1
  132. package/dist/components/features/board/touch-board.d.ts.map +1 -1
  133. package/dist/components/features/board/types.d.ts +3 -0
  134. package/dist/components/features/board/types.d.ts.map +1 -1
  135. package/dist/components/features/board/use-board-collapse.d.ts +6 -1
  136. package/dist/components/features/board/use-board-collapse.d.ts.map +1 -1
  137. package/dist/components/features/capability-explorer.d.ts +94 -0
  138. package/dist/components/features/capability-explorer.d.ts.map +1 -0
  139. package/dist/components/features/cloud-tenants/index.d.ts +14 -0
  140. package/dist/components/features/cloud-tenants/index.d.ts.map +1 -0
  141. package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts +9 -0
  142. package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts.map +1 -0
  143. package/dist/components/features/cloud-tenants/tenant-cell.d.ts +8 -0
  144. package/dist/components/features/cloud-tenants/tenant-cell.d.ts.map +1 -0
  145. package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts +9 -0
  146. package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts.map +1 -0
  147. package/dist/components/features/cloud-tenants/tenant-presentation.d.ts +42 -0
  148. package/dist/components/features/cloud-tenants/tenant-presentation.d.ts.map +1 -0
  149. package/dist/components/features/cloud-tenants/tenant-row.d.ts +22 -0
  150. package/dist/components/features/cloud-tenants/tenant-row.d.ts.map +1 -0
  151. package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts +42 -0
  152. package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts.map +1 -0
  153. package/dist/components/features/cloud-tenants/tenants-table-view.d.ts +26 -0
  154. package/dist/components/features/cloud-tenants/tenants-table-view.d.ts.map +1 -0
  155. package/dist/components/features/devices/device-last-online.d.ts +3 -0
  156. package/dist/components/features/devices/device-last-online.d.ts.map +1 -0
  157. package/dist/components/features/devices/device-name.d.ts +42 -0
  158. package/dist/components/features/devices/device-name.d.ts.map +1 -0
  159. package/dist/components/features/devices/device-selector/device-selection-mode-radio.d.ts +26 -0
  160. package/dist/components/features/devices/device-selector/device-selection-mode-radio.d.ts.map +1 -0
  161. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts +25 -0
  162. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts.map +1 -0
  163. package/dist/components/features/devices/device-selector/device-selector.d.ts +38 -0
  164. package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -0
  165. package/dist/components/features/devices/device-selector/device-selector.types.d.ts +133 -0
  166. package/dist/components/features/devices/device-selector/device-selector.types.d.ts.map +1 -0
  167. package/dist/components/features/devices/device-selector/narrowing.d.ts +13 -0
  168. package/dist/components/features/devices/device-selector/narrowing.d.ts.map +1 -0
  169. package/dist/components/features/devices/device-selector/use-device-selector.d.ts +17 -0
  170. package/dist/components/features/devices/device-selector/use-device-selector.d.ts.map +1 -0
  171. package/dist/components/features/devices/device-status.d.ts +23 -0
  172. package/dist/components/features/devices/device-status.d.ts.map +1 -0
  173. package/dist/components/features/devices/device-statuses.d.ts +40 -0
  174. package/dist/components/features/devices/device-statuses.d.ts.map +1 -0
  175. package/dist/components/features/devices/device-tags-filter-button.d.ts +22 -0
  176. package/dist/components/features/devices/device-tags-filter-button.d.ts.map +1 -0
  177. package/dist/components/features/devices/device-type-icon.d.ts +11 -0
  178. package/dist/components/features/devices/device-type-icon.d.ts.map +1 -0
  179. package/dist/components/features/devices/device-type-tile.d.ts +9 -0
  180. package/dist/components/features/devices/device-type-tile.d.ts.map +1 -0
  181. package/dist/components/features/devices/devices-filter-toolbar.d.ts +46 -0
  182. package/dist/components/features/devices/devices-filter-toolbar.d.ts.map +1 -0
  183. package/dist/components/features/devices/devices-grid-filters.d.ts +25 -0
  184. package/dist/components/features/devices/devices-grid-filters.d.ts.map +1 -0
  185. package/dist/components/features/devices/devices-grid.d.ts +12 -0
  186. package/dist/components/features/devices/devices-grid.d.ts.map +1 -0
  187. package/dist/components/features/devices/devices-list.d.ts +131 -0
  188. package/dist/components/features/devices/devices-list.d.ts.map +1 -0
  189. package/dist/components/features/devices/devices-panel-header.d.ts +46 -0
  190. package/dist/components/features/devices/devices-panel-header.d.ts.map +1 -0
  191. package/dist/components/features/devices/devices-panel-view.d.ts +79 -0
  192. package/dist/components/features/devices/devices-panel-view.d.ts.map +1 -0
  193. package/dist/components/features/devices/devices-table-columns.d.ts +76 -0
  194. package/dist/components/features/devices/devices-table-columns.d.ts.map +1 -0
  195. package/dist/components/features/devices/devices-view-config.d.ts +25 -0
  196. package/dist/components/features/devices/devices-view-config.d.ts.map +1 -0
  197. package/dist/components/features/devices/index.d.ts +24 -0
  198. package/dist/components/features/devices/index.d.ts.map +1 -0
  199. package/dist/components/features/devices/types.d.ts +68 -0
  200. package/dist/components/features/devices/types.d.ts.map +1 -0
  201. package/dist/components/features/devices/use-tag-filter-modal.d.ts +50 -0
  202. package/dist/components/features/devices/use-tag-filter-modal.d.ts.map +1 -0
  203. package/dist/components/features/index.cjs +227 -12
  204. package/dist/components/features/index.d.ts +7 -0
  205. package/dist/components/features/index.d.ts.map +1 -1
  206. package/dist/components/features/index.js +266 -51
  207. package/dist/components/features/knowledge-base/index.d.ts +7 -0
  208. package/dist/components/features/knowledge-base/index.d.ts.map +1 -0
  209. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts +44 -0
  210. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts.map +1 -0
  211. package/dist/components/features/knowledge-base/knowledge-base-item-icon.d.ts +13 -0
  212. package/dist/components/features/knowledge-base/knowledge-base-item-icon.d.ts.map +1 -0
  213. package/dist/components/features/knowledge-base/knowledge-base-status.d.ts +8 -0
  214. package/dist/components/features/knowledge-base/knowledge-base-status.d.ts.map +1 -0
  215. package/dist/components/features/knowledge-base/knowledge-base-table.d.ts +52 -0
  216. package/dist/components/features/knowledge-base/knowledge-base-table.d.ts.map +1 -0
  217. package/dist/components/features/logs/index.d.ts +12 -0
  218. package/dist/components/features/logs/index.d.ts.map +1 -0
  219. package/dist/components/features/logs/log-drawer.d.ts +29 -0
  220. package/dist/components/features/logs/log-drawer.d.ts.map +1 -0
  221. package/dist/components/features/logs/log-source-labels.d.ts +11 -0
  222. package/dist/components/features/logs/log-source-labels.d.ts.map +1 -0
  223. package/dist/components/features/logs/logs-page-view.d.ts +32 -0
  224. package/dist/components/features/logs/logs-page-view.d.ts.map +1 -0
  225. package/dist/components/features/logs/logs-table-columns.d.ts +15 -0
  226. package/dist/components/features/logs/logs-table-columns.d.ts.map +1 -0
  227. package/dist/components/features/logs/logs-table-view.d.ts +64 -0
  228. package/dist/components/features/logs/logs-table-view.d.ts.map +1 -0
  229. package/dist/components/features/logs/types.d.ts +52 -0
  230. package/dist/components/features/logs/types.d.ts.map +1 -0
  231. package/dist/components/features/policies/compute-policy-summary.d.ts +37 -0
  232. package/dist/components/features/policies/compute-policy-summary.d.ts.map +1 -0
  233. package/dist/components/features/policies/index.d.ts +8 -0
  234. package/dist/components/features/policies/index.d.ts.map +1 -0
  235. package/dist/components/features/policies/policies-table.d.ts +34 -0
  236. package/dist/components/features/policies/policies-table.d.ts.map +1 -0
  237. package/dist/components/features/policies/policy-summary-cards.d.ts +17 -0
  238. package/dist/components/features/policies/policy-summary-cards.d.ts.map +1 -0
  239. package/dist/components/features/policies/policy-table-row.d.ts +37 -0
  240. package/dist/components/features/policies/policy-table-row.d.ts.map +1 -0
  241. package/dist/components/features/remote-session/index.d.ts +8 -0
  242. package/dist/components/features/remote-session/index.d.ts.map +1 -1
  243. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +21 -0
  244. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -0
  245. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts +31 -0
  246. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -0
  247. package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.d.ts +21 -0
  248. package/dist/components/features/remote-session/remote-desktop-fullscreen-toolbar.d.ts.map +1 -0
  249. package/dist/components/features/remote-session/remote-desktop-view.d.ts +50 -0
  250. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -0
  251. package/dist/components/features/software/index.d.ts +8 -0
  252. package/dist/components/features/software/index.d.ts.map +1 -0
  253. package/dist/components/features/software/package-managers.d.ts +30 -0
  254. package/dist/components/features/software/package-managers.d.ts.map +1 -0
  255. package/dist/components/features/software/package-search-field-placeholder.d.ts +7 -0
  256. package/dist/components/features/software/package-search-field-placeholder.d.ts.map +1 -0
  257. package/dist/components/features/software/schedule-fields.d.ts +34 -0
  258. package/dist/components/features/software/schedule-fields.d.ts.map +1 -0
  259. package/dist/components/features/software/software-action-copy.d.ts +25 -0
  260. package/dist/components/features/software/software-action-copy.d.ts.map +1 -0
  261. package/dist/components/features/software/software-action-form.d.ts +71 -0
  262. package/dist/components/features/software/software-action-form.d.ts.map +1 -0
  263. package/dist/components/features/software/software-row-fields.d.ts +23 -0
  264. package/dist/components/features/software/software-row-fields.d.ts.map +1 -0
  265. package/dist/components/features/software/software-row.d.ts +18 -0
  266. package/dist/components/features/software/software-row.d.ts.map +1 -0
  267. package/dist/components/features/sortable-list/index.d.ts +1 -0
  268. package/dist/components/features/sortable-list/index.d.ts.map +1 -1
  269. package/dist/components/features/sortable-list/sortable-drag-handle.d.ts +21 -0
  270. package/dist/components/features/sortable-list/sortable-drag-handle.d.ts.map +1 -0
  271. package/dist/components/help-center-pages/index.cjs +133 -114
  272. package/dist/components/help-center-pages/index.js +58 -39
  273. package/dist/components/index.cjs +320 -82
  274. package/dist/components/index.js +451 -213
  275. package/dist/components/layout/page-heading.d.ts +12 -3
  276. package/dist/components/layout/page-heading.d.ts.map +1 -1
  277. package/dist/components/meeting-scheduler/index.cjs +120 -98
  278. package/dist/components/meeting-scheduler/index.js +50 -28
  279. package/dist/components/navigation/index.cjs +36 -17
  280. package/dist/components/navigation/index.d.ts +3 -0
  281. package/dist/components/navigation/index.d.ts.map +1 -1
  282. package/dist/components/navigation/index.js +36 -17
  283. package/dist/components/navigation/mingo-ai-button.d.ts +23 -10
  284. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  285. package/dist/components/navigation/sticky-section-nav.d.ts +14 -1
  286. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  287. package/dist/components/onboarding-guides/index.cjs +32 -16
  288. package/dist/components/onboarding-guides/index.js +31 -15
  289. package/dist/components/product-demo/cast.d.ts +58 -0
  290. package/dist/components/product-demo/cast.d.ts.map +1 -0
  291. package/dist/components/product-demo/fixtures/cloud-tenants.d.ts +10 -0
  292. package/dist/components/product-demo/fixtures/cloud-tenants.d.ts.map +1 -0
  293. package/dist/components/product-demo/fixtures/devices.d.ts +14 -0
  294. package/dist/components/product-demo/fixtures/devices.d.ts.map +1 -0
  295. package/dist/components/product-demo/fixtures/knowledge.d.ts +14 -0
  296. package/dist/components/product-demo/fixtures/knowledge.d.ts.map +1 -0
  297. package/dist/components/product-demo/fixtures/logs.d.ts +15 -0
  298. package/dist/components/product-demo/fixtures/logs.d.ts.map +1 -0
  299. package/dist/components/product-demo/fixtures/policies.d.ts +13 -0
  300. package/dist/components/product-demo/fixtures/policies.d.ts.map +1 -0
  301. package/dist/components/product-demo/fixtures/remote-session.d.ts +20 -0
  302. package/dist/components/product-demo/fixtures/remote-session.d.ts.map +1 -0
  303. package/dist/components/product-demo/fixtures/shared.d.ts +156 -0
  304. package/dist/components/product-demo/fixtures/shared.d.ts.map +1 -0
  305. package/dist/components/product-demo/fixtures/software-update.d.ts +19 -0
  306. package/dist/components/product-demo/fixtures/software-update.d.ts.map +1 -0
  307. package/dist/components/product-demo/fixtures/tickets-board.d.ts +8 -0
  308. package/dist/components/product-demo/fixtures/tickets-board.d.ts.map +1 -0
  309. package/dist/components/product-demo/index.cjs +112 -0
  310. package/dist/components/product-demo/index.d.ts +6 -0
  311. package/dist/components/product-demo/index.d.ts.map +1 -0
  312. package/dist/components/product-demo/index.js +112 -0
  313. package/dist/components/product-demo/product-screen.d.ts +22 -0
  314. package/dist/components/product-demo/product-screen.d.ts.map +1 -0
  315. package/dist/components/product-demo/registry.d.ts +13 -0
  316. package/dist/components/product-demo/registry.d.ts.map +1 -0
  317. package/dist/components/product-demo/screen-keys.cjs +25 -0
  318. package/dist/components/product-demo/screen-keys.d.ts +27 -0
  319. package/dist/components/product-demo/screen-keys.d.ts.map +1 -0
  320. package/dist/components/product-demo/screen-keys.js +20 -0
  321. package/dist/components/product-demo/screens/cloud-tenants.d.ts +8 -0
  322. package/dist/components/product-demo/screens/cloud-tenants.d.ts.map +1 -0
  323. package/dist/components/product-demo/screens/devices.d.ts +10 -0
  324. package/dist/components/product-demo/screens/devices.d.ts.map +1 -0
  325. package/dist/components/product-demo/screens/knowledge.d.ts +9 -0
  326. package/dist/components/product-demo/screens/knowledge.d.ts.map +1 -0
  327. package/dist/components/product-demo/screens/logs.d.ts +4 -0
  328. package/dist/components/product-demo/screens/logs.d.ts.map +1 -0
  329. package/dist/components/product-demo/screens/policies.d.ts +8 -0
  330. package/dist/components/product-demo/screens/policies.d.ts.map +1 -0
  331. package/dist/components/product-demo/screens/remote-desktop-picture.d.ts +11 -0
  332. package/dist/components/product-demo/screens/remote-desktop-picture.d.ts.map +1 -0
  333. package/dist/components/product-demo/screens/remote-session.d.ts +8 -0
  334. package/dist/components/product-demo/screens/remote-session.d.ts.map +1 -0
  335. package/dist/components/product-demo/screens/software-update.d.ts +12 -0
  336. package/dist/components/product-demo/screens/software-update.d.ts.map +1 -0
  337. package/dist/components/product-demo/screens/tickets-board.d.ts +4 -0
  338. package/dist/components/product-demo/screens/tickets-board.d.ts.map +1 -0
  339. package/dist/components/product-demo/types.d.ts +9 -0
  340. package/dist/components/product-demo/types.d.ts.map +1 -0
  341. package/dist/components/related-content/index.cjs +14 -8
  342. package/dist/components/related-content/index.js +13 -7
  343. package/dist/components/tickets/index.cjs +36 -20
  344. package/dist/components/tickets/index.js +35 -19
  345. package/dist/components/ui/file-manager/index.cjs +38 -34
  346. package/dist/components/ui/file-manager/index.js +8 -4
  347. package/dist/components/ui/index.cjs +57 -17
  348. package/dist/components/ui/index.d.ts +1 -0
  349. package/dist/components/ui/index.d.ts.map +1 -1
  350. package/dist/components/ui/index.js +141 -101
  351. package/dist/components/ui/product-screen-frame.d.ts +45 -0
  352. package/dist/components/ui/product-screen-frame.d.ts.map +1 -0
  353. package/dist/components/ui/radio-group.d.ts +5 -0
  354. package/dist/components/ui/radio-group.d.ts.map +1 -1
  355. package/dist/components/ui/snap-carousel.d.ts +11 -1
  356. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  357. package/dist/components/ui/tag.d.ts +1 -1
  358. package/dist/components/ui/tag.d.ts.map +1 -1
  359. package/dist/devices-LBMG42K6.js +81 -0
  360. package/dist/devices-YGYJIXQY.cjs +81 -0
  361. package/dist/hooks/index.cjs +17 -8
  362. package/dist/hooks/index.js +32 -23
  363. package/dist/hooks/ui/index.d.ts +1 -0
  364. package/dist/hooks/ui/index.d.ts.map +1 -1
  365. package/dist/hooks/ui/use-header-height.d.ts +12 -0
  366. package/dist/hooks/ui/use-header-height.d.ts.map +1 -1
  367. package/dist/hooks/ui/use-sticky-toolbar.d.ts +29 -0
  368. package/dist/hooks/ui/use-sticky-toolbar.d.ts.map +1 -0
  369. package/dist/hooks/use-location-hash.d.ts +2 -2
  370. package/dist/hooks/use-location-hash.d.ts.map +1 -1
  371. package/dist/hooks/use-scroll-to-hash.d.ts +7 -0
  372. package/dist/hooks/use-scroll-to-hash.d.ts.map +1 -1
  373. package/dist/index.cjs +276 -25
  374. package/dist/index.js +729 -478
  375. package/dist/knowledge-H5BIWJVI.js +108 -0
  376. package/dist/knowledge-KTCVJIWN.cjs +108 -0
  377. package/dist/logs-DB5Z7M5Q.js +216 -0
  378. package/dist/logs-RVCC2UQW.cjs +216 -0
  379. package/dist/policies-EWUULFBR.js +121 -0
  380. package/dist/policies-HV4IQCBV.cjs +121 -0
  381. package/dist/remote-session-GSGZOFDX.js +196 -0
  382. package/dist/remote-session-R6VAFESR.cjs +196 -0
  383. package/dist/software-update-6PXKRKBT.js +179 -0
  384. package/dist/software-update-D4OVSWSG.cjs +179 -0
  385. package/dist/tickets-board-BHLPAVNJ.cjs +137 -0
  386. package/dist/tickets-board-PYDNELSK.js +137 -0
  387. package/dist/types/case-study.d.ts +15 -1
  388. package/dist/types/case-study.d.ts.map +1 -1
  389. package/dist/utils/date-utils.d.ts +5 -0
  390. package/dist/utils/date-utils.d.ts.map +1 -1
  391. package/dist/utils/index.cjs +45 -2
  392. package/dist/utils/index.d.ts +2 -1
  393. package/dist/utils/index.d.ts.map +1 -1
  394. package/dist/utils/index.js +41 -3
  395. package/dist/utils/open-in-new-tab.d.ts +7 -0
  396. package/dist/utils/open-in-new-tab.d.ts.map +1 -0
  397. package/dist/utils/same-page-hash-nav.d.ts +31 -0
  398. package/dist/utils/same-page-hash-nav.d.ts.map +1 -1
  399. package/dist/utils/scroll-into-view.d.ts +14 -1
  400. package/dist/utils/scroll-into-view.d.ts.map +1 -1
  401. package/package.json +13 -1
  402. package/src/components/chat/ask-prompts.tsx +226 -0
  403. package/src/components/chat/embeddable-chat.tsx +38 -2
  404. package/src/components/chat/entity-cards/case-study-card.tsx +122 -46
  405. package/src/components/chat/hooks/use-chat-dialog-manager.ts +22 -4
  406. package/src/components/chat/hooks/use-unified-chat.ts +1 -0
  407. package/src/components/chat/index.ts +1 -0
  408. package/src/components/chat/quick-action-chip.tsx +33 -9
  409. package/src/components/chat/types/component.types.ts +4 -0
  410. package/src/components/chat/types/unified-chat-state.types.ts +13 -0
  411. package/src/components/docs/use-scroll-spy.ts +93 -18
  412. package/src/components/faq/faq-section.tsx +82 -43
  413. package/src/components/features/array-entry-manager.tsx +10 -1
  414. package/src/components/features/board/board.tsx +4 -1
  415. package/src/components/features/board/ticket-card.tsx +11 -1
  416. package/src/components/features/board/touch-board.tsx +2 -1
  417. package/src/components/features/board/types.ts +3 -0
  418. package/src/components/features/board/use-board-collapse.ts +7 -2
  419. package/src/components/features/capability-explorer.tsx +412 -0
  420. package/src/components/features/cloud-tenants/index.ts +28 -0
  421. package/src/components/features/cloud-tenants/tenant-access-cell.tsx +24 -0
  422. package/src/components/features/cloud-tenants/tenant-cell.tsx +26 -0
  423. package/src/components/features/cloud-tenants/tenant-customer-cell.tsx +27 -0
  424. package/src/components/features/cloud-tenants/tenant-presentation.ts +111 -0
  425. package/src/components/features/cloud-tenants/tenant-row.ts +21 -0
  426. package/src/components/features/cloud-tenants/tenants-table-columns.ts +30 -0
  427. package/src/components/features/cloud-tenants/tenants-table-view.tsx +142 -0
  428. package/src/components/features/devices/device-last-online.ts +6 -0
  429. package/src/components/features/devices/device-name.ts +51 -0
  430. package/src/components/features/devices/device-selector/device-selection-mode-radio.tsx +107 -0
  431. package/src/components/features/devices/device-selector/device-selector-skeleton.tsx +32 -0
  432. package/src/components/features/devices/device-selector/device-selector.tsx +799 -0
  433. package/src/components/features/devices/device-selector/device-selector.types.ts +138 -0
  434. package/src/components/features/devices/device-selector/narrowing.ts +33 -0
  435. package/src/components/features/devices/device-selector/use-device-selector.ts +51 -0
  436. package/src/components/features/devices/device-status.ts +102 -0
  437. package/src/components/features/devices/device-statuses.ts +88 -0
  438. package/src/components/features/devices/device-tags-filter-button.tsx +49 -0
  439. package/src/components/features/devices/device-type-icon.tsx +29 -0
  440. package/src/components/features/devices/device-type-tile.tsx +17 -0
  441. package/src/components/features/devices/devices-filter-toolbar.tsx +114 -0
  442. package/src/components/features/devices/devices-grid-filters.tsx +99 -0
  443. package/src/components/features/devices/devices-grid.tsx +86 -0
  444. package/src/components/features/devices/devices-list.tsx +357 -0
  445. package/src/components/features/devices/devices-panel-header.tsx +97 -0
  446. package/src/components/features/devices/devices-panel-view.tsx +261 -0
  447. package/src/components/features/devices/devices-table-columns.tsx +356 -0
  448. package/src/components/features/devices/devices-view-config.tsx +38 -0
  449. package/src/components/features/devices/index.ts +89 -0
  450. package/src/components/features/devices/types.ts +74 -0
  451. package/src/components/features/devices/use-tag-filter-modal.ts +109 -0
  452. package/src/components/features/index.ts +9 -0
  453. package/src/components/features/knowledge-base/index.ts +19 -0
  454. package/src/components/features/knowledge-base/knowledge-base-article-view.tsx +134 -0
  455. package/src/components/features/knowledge-base/knowledge-base-item-icon.ts +14 -0
  456. package/src/components/features/knowledge-base/knowledge-base-status.ts +12 -0
  457. package/src/components/features/knowledge-base/knowledge-base-table.tsx +180 -0
  458. package/src/components/features/logs/index.ts +20 -0
  459. package/src/components/features/logs/log-drawer.tsx +138 -0
  460. package/src/components/features/logs/log-source-labels.ts +25 -0
  461. package/src/components/features/logs/logs-page-view.tsx +100 -0
  462. package/src/components/features/logs/logs-table-columns.ts +16 -0
  463. package/src/components/features/logs/logs-table-view.tsx +509 -0
  464. package/src/components/features/logs/types.ts +71 -0
  465. package/src/components/features/policies/compute-policy-summary.ts +115 -0
  466. package/src/components/features/policies/index.ts +14 -0
  467. package/src/components/features/policies/policies-table.tsx +235 -0
  468. package/src/components/features/policies/policy-summary-cards.tsx +69 -0
  469. package/src/components/features/policies/policy-table-row.ts +37 -0
  470. package/src/components/features/remote-session/index.ts +8 -0
  471. package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +56 -0
  472. package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +102 -0
  473. package/src/components/features/remote-session/remote-desktop-fullscreen-toolbar.tsx +119 -0
  474. package/src/components/features/remote-session/remote-desktop-view.tsx +209 -0
  475. package/src/components/features/software/index.ts +39 -0
  476. package/src/components/features/software/package-managers.ts +54 -0
  477. package/src/components/features/software/package-search-field-placeholder.tsx +23 -0
  478. package/src/components/features/software/schedule-fields.tsx +105 -0
  479. package/src/components/features/software/software-action-copy.ts +70 -0
  480. package/src/components/features/software/software-action-form.tsx +199 -0
  481. package/src/components/features/software/software-row-fields.tsx +105 -0
  482. package/src/components/features/software/software-row.ts +22 -0
  483. package/src/components/features/sortable-list/index.ts +1 -0
  484. package/src/components/features/sortable-list/sortable-drag-handle.tsx +41 -0
  485. package/src/components/layout/page-heading.tsx +23 -6
  486. package/src/components/navigation/index.ts +5 -0
  487. package/src/components/navigation/mingo-ai-button.tsx +37 -13
  488. package/src/components/navigation/sticky-section-nav.tsx +99 -1
  489. package/src/components/product-demo/cast.tsx +78 -0
  490. package/src/components/product-demo/fixtures/cloud-tenants.ts +63 -0
  491. package/src/components/product-demo/fixtures/devices.ts +87 -0
  492. package/src/components/product-demo/fixtures/knowledge.ts +48 -0
  493. package/src/components/product-demo/fixtures/logs.ts +103 -0
  494. package/src/components/product-demo/fixtures/policies.ts +77 -0
  495. package/src/components/product-demo/fixtures/remote-session.ts +65 -0
  496. package/src/components/product-demo/fixtures/shared.ts +53 -0
  497. package/src/components/product-demo/fixtures/software-update.ts +63 -0
  498. package/src/components/product-demo/fixtures/tickets-board.ts +100 -0
  499. package/src/components/product-demo/index.ts +7 -0
  500. package/src/components/product-demo/product-screen.tsx +94 -0
  501. package/src/components/product-demo/registry.ts +20 -0
  502. package/src/components/product-demo/screen-keys.ts +31 -0
  503. package/src/components/product-demo/screens/cloud-tenants.tsx +23 -0
  504. package/src/components/product-demo/screens/devices.tsx +41 -0
  505. package/src/components/product-demo/screens/knowledge.tsx +27 -0
  506. package/src/components/product-demo/screens/logs.tsx +113 -0
  507. package/src/components/product-demo/screens/policies.tsx +29 -0
  508. package/src/components/product-demo/screens/remote-desktop-picture.tsx +118 -0
  509. package/src/components/product-demo/screens/remote-session.tsx +46 -0
  510. package/src/components/product-demo/screens/software-update.tsx +97 -0
  511. package/src/components/product-demo/screens/tickets-board.tsx +28 -0
  512. package/src/components/product-demo/types.ts +10 -0
  513. package/src/components/ui/index.ts +1 -0
  514. package/src/components/ui/product-screen-frame.tsx +136 -0
  515. package/src/components/ui/radio-group.tsx +16 -4
  516. package/src/components/ui/snap-carousel.tsx +26 -1
  517. package/src/components/ui/tag.tsx +5 -0
  518. package/src/hooks/ui/index.ts +1 -0
  519. package/src/hooks/ui/use-header-height.ts +51 -2
  520. package/src/hooks/ui/use-sticky-toolbar.ts +60 -0
  521. package/src/hooks/use-location-hash.ts +9 -5
  522. package/src/hooks/use-scroll-to-hash.ts +9 -1
  523. package/src/types/case-study.ts +21 -1
  524. package/src/utils/date-utils.ts +8 -1
  525. package/src/utils/index.ts +5 -0
  526. package/src/utils/open-in-new-tab.ts +12 -0
  527. package/src/utils/same-page-hash-nav.ts +57 -0
  528. package/src/utils/scroll-into-view.ts +21 -5
  529. package/dist/chunk-BM5MVGH3.cjs +0 -499
  530. package/dist/chunk-CUME3VTQ.js +0 -144
  531. package/dist/chunk-CZ7Y7UG4.js +0 -732
  532. package/dist/chunk-FLKJYMVB.js +0 -499
  533. package/dist/chunk-OF6GEI5A.cjs +0 -144
  534. package/dist/chunk-UVTD52MD.cjs +0 -732
@@ -1,15 +1,18 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 _chunkB4NCVYEQcjs = require('./chunk-B4NCVYEQ.cjs');
5
+
6
+
4
7
 
5
8
  var _chunkMZ4KBSH7cjs = require('./chunk-MZ4KBSH7.cjs');
6
9
 
7
10
 
11
+ var _chunkAUMKE74Mcjs = require('./chunk-AUMKE74M.cjs');
8
12
 
9
13
 
10
14
 
11
15
 
12
- var _chunkOF6GEI5Acjs = require('./chunk-OF6GEI5A.cjs');
13
16
 
14
17
 
15
18
 
@@ -18,35 +21,48 @@ var _chunkOF6GEI5Acjs = require('./chunk-OF6GEI5A.cjs');
18
21
 
19
22
 
20
23
 
21
- var _chunkUVTD52MDcjs = require('./chunk-UVTD52MD.cjs');
22
24
 
23
25
 
24
26
 
25
- var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
26
27
 
27
28
 
28
29
 
29
30
 
30
31
 
31
- var _chunkLM7TXMLUcjs = require('./chunk-LM7TXMLU.cjs');
32
32
 
33
33
 
34
34
 
35
35
 
36
36
 
37
37
 
38
- var _chunkLLSUVPQCcjs = require('./chunk-LLSUVPQC.cjs');
39
38
 
40
39
 
40
+ var _chunkGQ7JJUITcjs = require('./chunk-GQ7JJUIT.cjs');
41
41
 
42
- var _chunkVX4E6YSBcjs = require('./chunk-VX4E6YSB.cjs');
43
42
 
44
43
 
45
- var _chunk3ATAYP36cjs = require('./chunk-3ATAYP36.cjs');
44
+ var _chunkWVOTC7HWcjs = require('./chunk-WVOTC7HW.cjs');
45
+
46
+
47
+
48
+ var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
49
+
50
+
51
+
52
+
53
+
54
+ var _chunkAECTRMGQcjs = require('./chunk-AECTRMGQ.cjs');
55
+
56
+
57
+
58
+ var _chunkVX4E6YSBcjs = require('./chunk-VX4E6YSB.cjs');
46
59
 
47
60
 
48
61
  var _chunkG7SBHMRRcjs = require('./chunk-G7SBHMRR.cjs');
49
62
 
63
+
64
+ var _chunk3ATAYP36cjs = require('./chunk-3ATAYP36.cjs');
65
+
50
66
  // src/hooks/ui/use-auto-limit-tags.ts
51
67
  var _react = require('react'); var _react2 = _interopRequireDefault(_react);
52
68
  function useAutoLimitTags({
@@ -142,12 +158,6 @@ function useDeferredError(error, value, delay = 1500) {
142
158
  };
143
159
  }
144
160
 
145
- // src/hooks/ui/use-drag-and-drop-enabled.ts
146
- var DRAG_AND_DROP_MEDIA_QUERY = `(pointer: fine) and (hover: hover) and ${_chunkLM7TXMLUcjs.breakpoints.md}`;
147
- function useDragAndDropEnabled() {
148
- return _nullishCoalesce(_chunkLM7TXMLUcjs.useMediaQuery.call(void 0, DRAG_AND_DROP_MEDIA_QUERY), () => ( false));
149
- }
150
-
151
161
  // src/hooks/ui/use-focus-trap.ts
152
162
 
153
163
  var FOCUSABLE_SELECTOR = [
@@ -207,204 +217,29 @@ function useFocusTrap(containerRef, active, { onEscape, contain = true } = {}) {
207
217
  }, [containerRef, active, contain]);
208
218
  }
209
219
 
210
- // src/hooks/ui/use-horizontal-scrollbar.ts
211
-
212
- function useHorizontalScrollbar() {
213
- const scrollElRef = _react.useRef.call(void 0, null);
214
- const trackRef = _react.useRef.call(void 0, null);
215
- const thumbRef = _react.useRef.call(void 0, null);
216
- const roRef = _react.useRef.call(void 0, null);
217
- const moRef = _react.useRef.call(void 0, null);
218
- const [thumbRatio, setThumbRatio] = _react.useState.call(void 0, 0);
219
- const [canScrollLeft, setCanScrollLeft] = _react.useState.call(void 0, false);
220
- const [canScrollRight, setCanScrollRight] = _react.useState.call(void 0, false);
221
- const prevCanScrollLeftRef = _react.useRef.call(void 0, false);
222
- const prevCanScrollRightRef = _react.useRef.call(void 0, false);
223
- const isDraggingRef = _react.useRef.call(void 0, false);
224
- const dragStartRef = _react.useRef.call(void 0, { mouseX: 0, scrollLeft: 0 });
225
- const rafIdRef = _react.useRef.call(void 0, 0);
226
- const syncThumbToDOM = _react.useCallback.call(void 0, () => {
227
- const el = scrollElRef.current;
228
- const thumb = thumbRef.current;
229
- if (!el || !thumb) return;
230
- const maxScroll = el.scrollWidth - el.clientWidth;
231
- if (maxScroll <= 0) {
232
- thumb.style.left = "0%";
233
- return;
234
- }
235
- const ratio = el.clientWidth / el.scrollWidth;
236
- const fraction = Math.min(Math.max(el.scrollLeft, 0), maxScroll) / maxScroll;
237
- thumb.style.left = `${fraction * (1 - ratio) * 100}%`;
238
- }, []);
239
- const syncEdgeFades = _react.useCallback.call(void 0, () => {
240
- const el = scrollElRef.current;
241
- if (!el) return;
242
- const maxScroll = el.scrollWidth - el.clientWidth;
243
- const ratio = el.clientWidth / el.scrollWidth;
244
- if (ratio >= 1 || maxScroll <= 0) {
245
- if (prevCanScrollLeftRef.current) {
246
- prevCanScrollLeftRef.current = false;
247
- setCanScrollLeft(false);
248
- }
249
- if (prevCanScrollRightRef.current) {
250
- prevCanScrollRightRef.current = false;
251
- setCanScrollRight(false);
252
- }
253
- return;
254
- }
255
- const fraction = Math.min(Math.max(el.scrollLeft, 0), maxScroll) / maxScroll;
256
- const left = fraction > 1e-3;
257
- const right = fraction < 0.999;
258
- if (left !== prevCanScrollLeftRef.current) {
259
- prevCanScrollLeftRef.current = left;
260
- setCanScrollLeft(left);
261
- }
262
- if (right !== prevCanScrollRightRef.current) {
263
- prevCanScrollRightRef.current = right;
264
- setCanScrollRight(right);
265
- }
266
- }, []);
267
- const measure2 = _react.useCallback.call(void 0, () => {
268
- const el = scrollElRef.current;
269
- if (!el) return;
270
- const ratio = el.clientWidth / el.scrollWidth;
271
- setThumbRatio(ratio >= 1 ? 0 : ratio);
272
- syncThumbToDOM();
273
- syncEdgeFades();
274
- }, [syncThumbToDOM, syncEdgeFades]);
275
- const scrollRef = _react.useCallback.call(void 0,
276
- (node) => {
277
- if (roRef.current) {
278
- roRef.current.disconnect();
279
- roRef.current = null;
280
- }
281
- if (moRef.current) {
282
- moRef.current.disconnect();
283
- moRef.current = null;
284
- }
285
- if (rafIdRef.current) {
286
- cancelAnimationFrame(rafIdRef.current);
287
- rafIdRef.current = 0;
288
- }
289
- scrollElRef.current = node;
290
- if (node) {
291
- const ratio = node.clientWidth / node.scrollWidth;
292
- setThumbRatio(ratio >= 1 ? 0 : ratio);
293
- const ro = new ResizeObserver(measure2);
294
- roRef.current = ro;
295
- const observeAll = () => {
296
- ro.disconnect();
297
- ro.observe(node);
298
- for (const child of Array.from(node.children)) ro.observe(child);
299
- };
300
- observeAll();
301
- moRef.current = new MutationObserver(() => {
302
- observeAll();
303
- measure2();
304
- });
305
- moRef.current.observe(node, { childList: true });
306
- requestAnimationFrame(() => {
307
- syncThumbToDOM();
308
- syncEdgeFades();
309
- });
310
- } else {
311
- setThumbRatio(0);
312
- prevCanScrollLeftRef.current = false;
313
- prevCanScrollRightRef.current = false;
314
- setCanScrollLeft(false);
315
- setCanScrollRight(false);
316
- }
317
- },
318
- [measure2, syncThumbToDOM, syncEdgeFades]
319
- );
320
- const onScroll = _react.useCallback.call(void 0, () => {
321
- if (isDraggingRef.current) return;
322
- if (rafIdRef.current) cancelAnimationFrame(rafIdRef.current);
323
- rafIdRef.current = requestAnimationFrame(() => {
324
- syncThumbToDOM();
325
- syncEdgeFades();
326
- });
327
- }, [syncThumbToDOM, syncEdgeFades]);
328
- const onTrackClick = _react.useCallback.call(void 0, (e) => {
329
- if (e.target.closest("[data-scrollbar-thumb]")) return;
330
- const track = trackRef.current;
331
- const el = scrollElRef.current;
332
- if (!track || !el) return;
333
- const ratio = el.clientWidth / el.scrollWidth;
334
- if (ratio >= 1) return;
335
- const rect = track.getBoundingClientRect();
336
- const thumbWidth = rect.width * ratio;
337
- const maxThumbOffset = rect.width - thumbWidth;
338
- if (maxThumbOffset <= 0) return;
339
- const targetFraction = Math.max(0, Math.min(1, (e.clientX - rect.left - thumbWidth / 2) / maxThumbOffset));
340
- const targetScrollLeft = targetFraction * (el.scrollWidth - el.clientWidth);
341
- el.scrollTo({ left: targetScrollLeft, behavior: "smooth" });
342
- }, []);
343
- const onTrackWheel = _react.useCallback.call(void 0, (e) => {
344
- const el = scrollElRef.current;
345
- if (!el) return;
346
- e.preventDefault();
347
- el.scrollLeft += e.deltaX || e.deltaY;
348
- }, []);
349
- const onThumbPointerDown = _react.useCallback.call(void 0, (e) => {
350
- e.preventDefault();
351
- e.stopPropagation();
352
- const el = scrollElRef.current;
353
- if (!el) return;
354
- isDraggingRef.current = true;
355
- dragStartRef.current = { mouseX: e.clientX, scrollLeft: el.scrollLeft };
356
- const target = e.currentTarget;
357
- target.setPointerCapture(e.pointerId);
358
- target.style.cursor = "grabbing";
359
- }, []);
360
- const onThumbPointerMove = _react.useCallback.call(void 0,
361
- (e) => {
362
- if (!isDraggingRef.current) return;
363
- const el = scrollElRef.current;
364
- const track = trackRef.current;
365
- if (!el || !track) return;
366
- const currentThumbRatio = el.clientWidth / el.scrollWidth;
367
- if (currentThumbRatio >= 1) return;
368
- const trackWidth = track.clientWidth;
369
- const thumbWidth = trackWidth * currentThumbRatio;
370
- const maxThumbTravel = trackWidth - thumbWidth;
371
- if (maxThumbTravel <= 0) return;
372
- const mouseDelta = e.clientX - dragStartRef.current.mouseX;
373
- const scrollRange = el.scrollWidth - el.clientWidth;
374
- el.scrollLeft = Math.min(
375
- Math.max(dragStartRef.current.scrollLeft + mouseDelta / maxThumbTravel * scrollRange, 0),
376
- scrollRange
377
- );
378
- syncThumbToDOM();
379
- syncEdgeFades();
380
- },
381
- [syncThumbToDOM, syncEdgeFades]
382
- );
383
- const onThumbPointerUp = _react.useCallback.call(void 0, (e) => {
384
- isDraggingRef.current = false;
385
- const target = e.currentTarget;
386
- target.releasePointerCapture(e.pointerId);
387
- target.style.cursor = "grab";
388
- }, []);
389
- const onThumbPointerCancel = _react.useCallback.call(void 0, (e) => {
390
- isDraggingRef.current = false;
391
- const target = e.currentTarget;
392
- target.style.cursor = "grab";
393
- }, []);
220
+ // src/hooks/ui/use-sticky-toolbar.ts
221
+
222
+ function useStickyToolbar() {
223
+ const [node, setNode] = _react.useState.call(void 0, null);
224
+ const [height, setHeight] = _react.useState.call(void 0, 0);
225
+ const toolbarRef = _react.useCallback.call(void 0, (el) => setNode(el), []);
226
+ const [lastNode, setLastNode] = _react.useState.call(void 0, node);
227
+ if (node !== lastNode) {
228
+ setLastNode(node);
229
+ if (!node) setHeight(0);
230
+ }
231
+ _react.useEffect.call(void 0, () => {
232
+ if (!node) return void 0;
233
+ const update = () => setHeight(node.offsetHeight);
234
+ update();
235
+ const observer = new ResizeObserver(update);
236
+ observer.observe(node);
237
+ return () => observer.disconnect();
238
+ }, [node]);
394
239
  return {
395
- scrollRef,
396
- trackRef,
397
- thumbRef,
398
- thumbRatio,
399
- canScrollLeft,
400
- canScrollRight,
401
- onScroll,
402
- onTrackClick,
403
- onTrackWheel,
404
- onThumbPointerDown,
405
- onThumbPointerMove,
406
- onThumbPointerUp,
407
- onThumbPointerCancel
240
+ toolbarRef,
241
+ containerStyle: { "--sticky-toolbar-h": `${height}px` },
242
+ stickyHeaderOffset: "top-[var(--sticky-toolbar-h)]"
408
243
  };
409
244
  }
410
245
 
@@ -459,77 +294,6 @@ function useKeyboardCollisionPadding() {
459
294
  );
460
295
  }
461
296
 
462
- // src/hooks/ui/use-local-storage.ts
463
-
464
-
465
- // src/utils/storage-event.ts
466
- function readLocalStorageUpdateDetail(event) {
467
- if (!("detail" in event)) return null;
468
- const detail = event.detail;
469
- if (typeof detail !== "object" || detail === null) return null;
470
- if (!("key" in detail) || typeof detail.key !== "string") return null;
471
- const newValue = "newValue" in detail ? detail.newValue : null;
472
- if (newValue !== null && newValue !== void 0 && typeof newValue !== "string") return null;
473
- return { key: detail.key, newValue: _nullishCoalesce(newValue, () => ( null)) };
474
- }
475
-
476
- // src/hooks/ui/use-local-storage.ts
477
- function useLocalStorage(key, initialValue, options) {
478
- const initialValueRef = _react.useRef.call(void 0, initialValue);
479
- _react.useEffect.call(void 0, () => {
480
- initialValueRef.current = initialValue;
481
- });
482
- const validate = _optionalChain([options, 'optionalAccess', _17 => _17.validate]);
483
- const storage = _react.useMemo.call(void 0,
484
- () => _chunkLM7TXMLUcjs.createLocalStorageAdapter.call(void 0, { key, validate, logTag: `[useLocalStorage:${key}]` }),
485
- [key, validate]
486
- );
487
- const [storedValue, setStoredValue] = _react.useState.call(void 0, () => _nullishCoalesce(storage.load(), () => ( initialValue)));
488
- const isInitialized = _react.useRef.call(void 0, true);
489
- const isFromStorageEvent = _react.useRef.call(void 0, false);
490
- _react.useEffect.call(void 0, () => {
491
- if (!isInitialized.current) return void 0;
492
- const syncFromStorage = (source) => {
493
- const next = storage.load();
494
- isFromStorageEvent.current = true;
495
- setStoredValue(_nullishCoalesce(next, () => ( initialValueRef.current)));
496
- console.log(`\u{1F504} ${next === null ? "Cleared" : "Updated"} localStorage key "${key}" from ${source}`);
497
- };
498
- const handleStorageChange = (e) => {
499
- if (e.key !== key) return;
500
- syncFromStorage("storage event");
501
- };
502
- const handleCustomStorageUpdate = (event) => {
503
- const detail = readLocalStorageUpdateDetail(event);
504
- if (_optionalChain([detail, 'optionalAccess', _18 => _18.key]) !== key) return;
505
- syncFromStorage("custom storage event");
506
- };
507
- window.addEventListener("storage", handleStorageChange);
508
- window.addEventListener("localStorageUpdate", handleCustomStorageUpdate);
509
- return () => {
510
- window.removeEventListener("storage", handleStorageChange);
511
- window.removeEventListener("localStorageUpdate", handleCustomStorageUpdate);
512
- };
513
- }, [key, storage]);
514
- _react.useEffect.call(void 0, () => {
515
- if (!isInitialized.current) return;
516
- if (isFromStorageEvent.current) {
517
- isFromStorageEvent.current = false;
518
- return;
519
- }
520
- storage.save(storedValue);
521
- }, [storage, storedValue]);
522
- const setValue = (value) => {
523
- try {
524
- const valueToStore = value instanceof Function ? value(storedValue) : value;
525
- setStoredValue(valueToStore);
526
- } catch (error) {
527
- console.error(`Error setting value for localStorage key "${key}":`, error);
528
- }
529
- };
530
- return [storedValue, setValue];
531
- }
532
-
533
297
  // src/hooks/ui/use-memoized-callback.ts
534
298
 
535
299
  function useMemoizedCallback(callback, _dependencies) {
@@ -555,16 +319,16 @@ function useNotificationPermission() {
555
319
  sync2();
556
320
  let cancelled = false;
557
321
  let status;
558
- _optionalChain([navigator, 'access', _19 => _19.permissions, 'optionalAccess', _20 => _20.query, 'call', _21 => _21({ name: "notifications" }), 'access', _22 => _22.then, 'call', _23 => _23((s) => {
322
+ _optionalChain([navigator, 'access', _17 => _17.permissions, 'optionalAccess', _18 => _18.query, 'call', _19 => _19({ name: "notifications" }), 'access', _20 => _20.then, 'call', _21 => _21((s) => {
559
323
  if (cancelled) return;
560
324
  status = s;
561
325
  s.addEventListener("change", sync2);
562
- }), 'access', _24 => _24.catch, 'call', _25 => _25(() => void 0)]);
326
+ }), 'access', _22 => _22.catch, 'call', _23 => _23(() => void 0)]);
563
327
  document.addEventListener("visibilitychange", sync2);
564
328
  window.addEventListener("focus", sync2);
565
329
  return () => {
566
330
  cancelled = true;
567
- _optionalChain([status, 'optionalAccess', _26 => _26.removeEventListener, 'call', _27 => _27("change", sync2)]);
331
+ _optionalChain([status, 'optionalAccess', _24 => _24.removeEventListener, 'call', _25 => _25("change", sync2)]);
568
332
  document.removeEventListener("visibilitychange", sync2);
569
333
  window.removeEventListener("focus", sync2);
570
334
  };
@@ -575,7 +339,7 @@ function useNotificationPermission() {
575
339
  }
576
340
  const result = await new Promise((resolve) => {
577
341
  const maybePromise = Notification.requestPermission(resolve);
578
- if (typeof _optionalChain([maybePromise, 'optionalAccess', _28 => _28.then]) === "function") {
342
+ if (typeof _optionalChain([maybePromise, 'optionalAccess', _26 => _26.then]) === "function") {
579
343
  void maybePromise.then(resolve, () => resolve(Notification.permission));
580
344
  }
581
345
  });
@@ -674,8 +438,8 @@ function useOnboardingState(storageKey = "openframe-onboarding-state") {
674
438
  const [, forceUpdate] = _react.useState.call(void 0, 0);
675
439
  _react.useEffect.call(void 0, () => {
676
440
  const handleStorageUpdate = (event) => {
677
- const detail = readLocalStorageUpdateDetail(event);
678
- if (_optionalChain([detail, 'optionalAccess', _29 => _29.key]) !== storageKey) return;
441
+ const detail = _chunkB4NCVYEQcjs.readLocalStorageUpdateDetail.call(void 0, event);
442
+ if (_optionalChain([detail, 'optionalAccess', _27 => _27.key]) !== storageKey) return;
679
443
  const newState = loadOnboardingState(storageKey);
680
444
  setState(newState);
681
445
  forceUpdate((prev) => prev + 1);
@@ -765,7 +529,7 @@ function useSearch(config) {
765
529
  searchFnRef.current = searchFn;
766
530
  mapResultRef.current = mapResult;
767
531
  });
768
- const debouncedQuery = _chunkUVTD52MDcjs.useDebounce.call(void 0, query, debounceMs);
532
+ const debouncedQuery = _chunkGQ7JJUITcjs.useDebounce.call(void 0, query, debounceMs);
769
533
  const clearResults = _react.useCallback.call(void 0, () => {
770
534
  setResults(NO_RESULTS);
771
535
  setError(null);
@@ -911,14 +675,14 @@ function resolveActiveSection(menus, pathname) {
911
675
  if (!current) return null;
912
676
  let best = null;
913
677
  for (const menu of menus) {
914
- const prefixes = _optionalChain([menu, 'access', _30 => _30.match, 'optionalAccess', _31 => _31.length]) ? menu.match : [menu.href];
678
+ const prefixes = _optionalChain([menu, 'access', _28 => _28.match, 'optionalAccess', _29 => _29.length]) ? menu.match : [menu.href];
915
679
  for (const raw of prefixes) {
916
680
  const prefix = pathOf(raw);
917
681
  if (!prefix || !prefixHolds(prefix, current)) continue;
918
682
  if (!best || prefix.length > best.length) best = { id: menu.id, length: prefix.length };
919
683
  }
920
684
  }
921
- return _nullishCoalesce(_optionalChain([best, 'optionalAccess', _32 => _32.id]), () => ( null));
685
+ return _nullishCoalesce(_optionalChain([best, 'optionalAccess', _30 => _30.id]), () => ( null));
922
686
  }
923
687
  function useActiveSection(menus, pathname) {
924
688
  return _react.useMemo.call(void 0, () => resolveActiveSection(menus, pathname), [menus, pathname]);
@@ -977,7 +741,7 @@ function useNavMenus({
977
741
  if (event.key !== "Escape") return;
978
742
  const trigger = triggers.current.get(openId);
979
743
  close();
980
- _optionalChain([trigger, 'optionalAccess', _33 => _33.focus, 'call', _34 => _34({ preventScroll: true })]);
744
+ _optionalChain([trigger, 'optionalAccess', _31 => _31.focus, 'call', _32 => _32({ preventScroll: true })]);
981
745
  };
982
746
  const handlePointerDown = (event) => {
983
747
  const target = event.target;
@@ -1046,145 +810,8 @@ function useNavMenus({
1046
810
  return { openId, close, getTriggerProps, getPanelProps };
1047
811
  }
1048
812
 
1049
- // src/hooks/ui/use-visitor-os.ts
1050
-
1051
-
1052
- // src/utils/visitor-os.ts
1053
- var DESKTOP_OSES = ["mac", "windows", "linux"];
1054
- var HINT_PLATFORMS = {
1055
- macos: "mac",
1056
- windows: "windows",
1057
- linux: "linux",
1058
- "chrome os": "linux",
1059
- "chromium os": "linux",
1060
- android: "android",
1061
- ios: "ios"
1062
- };
1063
- function detectVisitorOs(userAgent, hints = {}) {
1064
- const touchMac = (os) => os === "mac" && (_nullishCoalesce(hints.maxTouchPoints, () => ( 0))) > 1 ? "ios" : os;
1065
- const hinted = HINT_PLATFORMS[(_nullishCoalesce(hints.platform, () => ( ""))).replace(/"/g, "").trim().toLowerCase()];
1066
- if (hinted) return touchMac(hinted);
1067
- const ua = _nullishCoalesce(userAgent, () => ( ""));
1068
- if (!ua) return null;
1069
- if (/iPhone|iPad|iPod/i.test(ua)) return "ios";
1070
- if (/Android/i.test(ua)) return "android";
1071
- if (/Windows NT|Win64|Win32/i.test(ua)) return "windows";
1072
- if (/Macintosh|Mac OS X/i.test(ua)) return touchMac("mac");
1073
- if (/Linux|X11|CrOS/i.test(ua)) return "linux";
1074
- return null;
1075
- }
1076
- function desktopOsOf(os) {
1077
- return os !== null && DESKTOP_OSES.includes(os) ? os : null;
1078
- }
1079
- function detectDesktopOs(userAgent, hints) {
1080
- return desktopOsOf(detectVisitorOs(userAgent, hints));
1081
- }
1082
- function usesCommandKey(os) {
1083
- return os === "mac" || os === "ios";
1084
- }
1085
- function shortcutLabel(os, key) {
1086
- return usesCommandKey(os) ? `\u2318${key}` : `Ctrl ${key}`;
1087
- }
1088
-
1089
- // src/hooks/ui/use-visitor-os.ts
1090
- var UNKNOWN = { known: false, os: null };
1091
- var KNOWN = /* @__PURE__ */ new Map();
1092
- var subscribe2 = () => () => {
1093
- };
1094
- var getServerSnapshot = () => UNKNOWN;
1095
- function getSnapshot() {
1096
- const stated = _optionalChain([navigator, 'access', _35 => _35.userAgentData, 'optionalAccess', _36 => _36.platform]);
1097
- const os = detectVisitorOs(navigator.userAgent, { platform: stated, maxTouchPoints: navigator.maxTouchPoints });
1098
- let state = KNOWN.get(os);
1099
- if (!state) {
1100
- state = { known: true, os };
1101
- KNOWN.set(os, state);
1102
- }
1103
- return state;
1104
- }
1105
- function useVisitorOs() {
1106
- return _react.useSyncExternalStore.call(void 0, subscribe2, getSnapshot, getServerSnapshot);
1107
- }
1108
-
1109
813
  // src/hooks/platform/use-platform-config.ts
1110
814
 
1111
-
1112
- // src/utils/platform-config.tsx
1113
- var _lucidereact = require('lucide-react');
1114
- var _jsxruntime = require('react/jsx-runtime');
1115
- function renderPlatformIcon(platformName, className) {
1116
- const tinted = _chunk3ATAYP36cjs.cn.call(void 0, className, _chunkLM7TXMLUcjs.getPlatformBrandClasses.call(void 0, platformName).accentText);
1117
- switch (platformName) {
1118
- case "openframe":
1119
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1120
- _chunkLLSUVPQCcjs.OpenFrameLogo,
1121
- {
1122
- className: tinted,
1123
- lowerPathColor: "currentColor",
1124
- upperPathColor: "var(--ods-system-greys-white)"
1125
- }
1126
- );
1127
- case "openmsp":
1128
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1129
- _chunkLLSUVPQCcjs.OpenmspLogo,
1130
- {
1131
- className: tinted,
1132
- backBubbleColor: "currentColor",
1133
- frontBubbleColor: "var(--ods-system-greys-white)",
1134
- innerFrontBubbleColor: "var(--ods-system-greys-black)"
1135
- }
1136
- );
1137
- case "tmcg":
1138
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.MiamiCyberGangLogoFaceOnly, { className });
1139
- case "mlg":
1140
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.MlgLogo, { className: tinted, size: 20 });
1141
- case "universal":
1142
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Globe, { className: tinted });
1143
- default:
1144
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.FlamingoLogo, { className: tinted, fill: "currentColor" });
1145
- }
1146
- }
1147
- var platformIcons = {
1148
- openframe: renderPlatformIcon("openframe", "h-5 w-5"),
1149
- openmsp: renderPlatformIcon("openmsp", "h-5 w-5"),
1150
- flamingo: renderPlatformIcon("flamingo", "h-5 w-5"),
1151
- "flamingo-teaser": renderPlatformIcon("flamingo-teaser", "h-5 w-5"),
1152
- "marketing-hub": renderPlatformIcon("marketing-hub", "h-5 w-5"),
1153
- "product-hub": renderPlatformIcon("product-hub", "h-5 w-5"),
1154
- "revenue-hub": renderPlatformIcon("revenue-hub", "h-5 w-5"),
1155
- "people-hub": renderPlatformIcon("people-hub", "h-5 w-5"),
1156
- "company-hub": renderPlatformIcon("company-hub", "h-5 w-5"),
1157
- tmcg: renderPlatformIcon("tmcg", "h-5 w-5"),
1158
- mlg: renderPlatformIcon("mlg", "h-5 w-5"),
1159
- universal: renderPlatformIcon("universal", "h-5 w-5")
1160
- };
1161
- function transformPlatformConfigsToOptions(platformConfigs) {
1162
- return platformConfigs.map((platform) => ({
1163
- id: platform.id,
1164
- // Database UUID for matching
1165
- name: platform.name,
1166
- // Platform name enum
1167
- displayName: platform.display_name,
1168
- // Human-readable name
1169
- description: platform.description,
1170
- icon: getPlatformIcon(platform.name),
1171
- color: getPlatformColorClass(platform.name)
1172
- }));
1173
- }
1174
- function getPlatformIcon(platformName) {
1175
- return _nullishCoalesce(platformIcons[platformName], () => ( platformIcons.universal));
1176
- }
1177
- function getSmallPlatformIcon(platformName) {
1178
- return renderPlatformIcon(platformName, "h-4 w-4 flex-shrink-0");
1179
- }
1180
- function getPlatformIconComponent(platformName, className = "h-6 w-6") {
1181
- return renderPlatformIcon(platformName, className);
1182
- }
1183
- function getPlatformColorClass(platformName) {
1184
- return _chunkLM7TXMLUcjs.getPlatformBrandClasses.call(void 0, platformName).accentBg;
1185
- }
1186
-
1187
- // src/hooks/platform/use-platform-config.ts
1188
815
  var platformCache = null;
1189
816
  var fetchPromise = null;
1190
817
  function isRecord(value) {
@@ -1269,7 +896,7 @@ function usePlatformConfig() {
1269
896
  label: platform.label
1270
897
  }))
1271
898
  ];
1272
- const selectableOptions = transformPlatformConfigsToOptions(platforms);
899
+ const selectableOptions = _chunkGQ7JJUITcjs.transformPlatformConfigsToOptions.call(void 0, platforms);
1273
900
  return {
1274
901
  platforms,
1275
902
  platformOptions,
@@ -1293,7 +920,7 @@ var _sonner = require('sonner');
1293
920
  // src/components/ui/toaster.tsx
1294
921
 
1295
922
 
1296
-
923
+ var _jsxruntime = require('react/jsx-runtime');
1297
924
  var dotColorByVariant = {
1298
925
  default: "bg-ods-text-secondary",
1299
926
  success: "bg-ods-success",
@@ -1409,11 +1036,11 @@ function CommandApprovalToast({
1409
1036
  }) {
1410
1037
  const [expanded, setExpanded] = _react.useState.call(void 0, defaultExpanded);
1411
1038
  const handleApprove = () => {
1412
- _optionalChain([onApprove, 'optionalCall', _37 => _37()]);
1039
+ _optionalChain([onApprove, 'optionalCall', _33 => _33()]);
1413
1040
  _sonner.toast.dismiss(id);
1414
1041
  };
1415
1042
  const handleReject = () => {
1416
- _optionalChain([onReject, 'optionalCall', _38 => _38()]);
1043
+ _optionalChain([onReject, 'optionalCall', _34 => _34()]);
1417
1044
  _sonner.toast.dismiss(id);
1418
1045
  };
1419
1046
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -1447,7 +1074,7 @@ function CommandApprovalToast({
1447
1074
  children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "overflow-hidden", children: [
1448
1075
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-11 w-full items-center gap-2 border-b border-ods-border bg-ods-card px-3 py-2", children: [
1449
1076
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "min-w-0 flex-1 truncate text-ods-text-primary text-h6", title: command, children: command }),
1450
- toolType ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUVTD52MDcjs.ToolIcon, { toolType, size: 16 }) : null
1077
+ toolType ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWVOTC7HWcjs.ToolIcon, { toolType, size: 16 }) : null
1451
1078
  ] }),
1452
1079
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2 bg-ods-bg p-3", children: [
1453
1080
  approvalDescription ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: approvalDescription }) : null,
@@ -1620,7 +1247,7 @@ function useContactSubmission(options = {}) {
1620
1247
  if (isSubmitting) return;
1621
1248
  setIsSubmitting(true);
1622
1249
  try {
1623
- const response = await _chunkOF6GEI5Acjs.contentFetch.call(void 0, contactUrl, {
1250
+ const response = await _chunkAUMKE74Mcjs.contentFetch.call(void 0, contactUrl, {
1624
1251
  method: "POST",
1625
1252
  headers: { "Content-Type": "application/json" },
1626
1253
  body: JSON.stringify({
@@ -1630,7 +1257,7 @@ function useContactSubmission(options = {}) {
1630
1257
  });
1631
1258
  if (!response.ok) {
1632
1259
  const failure = await response.json().catch(() => null);
1633
- throw new Error(_chunkUVTD52MDcjs.apiErrorMessage.call(void 0, failure, "Failed to submit contact form"));
1260
+ throw new Error(_chunkWVOTC7HWcjs.apiErrorMessage.call(void 0, failure, "Failed to submit contact form"));
1634
1261
  }
1635
1262
  setIsSuccess(true);
1636
1263
  const message = successToastMessage ? `Thank you! Your message has been sent. ${successToastMessage}` : "Thank you! Your message has been sent successfully.";
@@ -1949,12 +1576,12 @@ function useAuthenticatedImage(imageUrl, refreshKey, config) {
1949
1576
  };
1950
1577
  }, []);
1951
1578
  const active = settled && settled.key === cacheKey ? settled : null;
1952
- const cachedBlobUrl = cacheKey === null ? void 0 : _optionalChain([imageCache, 'access', _39 => _39.get, 'call', _40 => _40(cacheKey), 'optionalAccess', _41 => _41.blobUrl]);
1953
- const resolvedBlobUrl = _nullishCoalesce(_nullishCoalesce(_optionalChain([active, 'optionalAccess', _42 => _42.blobUrl]), () => ( cachedBlobUrl)), () => ( _optionalChain([settled, 'optionalAccess', _43 => _43.blobUrl])));
1579
+ const cachedBlobUrl = cacheKey === null ? void 0 : _optionalChain([imageCache, 'access', _35 => _35.get, 'call', _36 => _36(cacheKey), 'optionalAccess', _37 => _37.blobUrl]);
1580
+ const resolvedBlobUrl = _nullishCoalesce(_nullishCoalesce(_optionalChain([active, 'optionalAccess', _38 => _38.blobUrl]), () => ( cachedBlobUrl)), () => ( _optionalChain([settled, 'optionalAccess', _39 => _39.blobUrl])));
1954
1581
  return {
1955
1582
  imageUrl: cacheKey === null ? void 0 : resolvedBlobUrl,
1956
1583
  isLoading: cacheKey !== null && active === null && cachedBlobUrl === void 0,
1957
- error: _nullishCoalesce((cacheKey === null ? void 0 : _optionalChain([active, 'optionalAccess', _44 => _44.error])), () => ( null))
1584
+ error: _nullishCoalesce((cacheKey === null ? void 0 : _optionalChain([active, 'optionalAccess', _40 => _40.error])), () => ( null))
1958
1585
  };
1959
1586
  }
1960
1587
 
@@ -2315,7 +1942,7 @@ function variablesToUrlParams(variables, schema) {
2315
1942
  const params = new URLSearchParams();
2316
1943
  for (const [paramName, paramConfig] of Object.entries(schema)) {
2317
1944
  const value = getNestedValue(variables, paramConfig.graphqlPath);
2318
- if (!_chunkOF6GEI5Acjs.shouldIncludeInUrl.call(void 0, value, paramConfig)) {
1945
+ if (!_chunkAECTRMGQcjs.shouldIncludeInUrl.call(void 0, value, paramConfig)) {
2319
1946
  continue;
2320
1947
  }
2321
1948
  if (Array.isArray(value)) {
@@ -2344,7 +1971,7 @@ function coerceScalar(value, type) {
2344
1971
  return isNaN(num) ? null : num;
2345
1972
  }
2346
1973
  case "int":
2347
- return _chunkOF6GEI5Acjs.positiveInt.call(void 0, value, null);
1974
+ return _chunkAECTRMGQcjs.positiveInt.call(void 0, value, null);
2348
1975
  case "boolean":
2349
1976
  return value === "true" || value === "1";
2350
1977
  case "string":
@@ -2650,7 +2277,7 @@ function useApiParams(schema, options = {}) {
2650
2277
  return flattened;
2651
2278
  }, [stableSchema]);
2652
2279
  const rawParams = _react.useMemo.call(void 0, () => {
2653
- const result = _chunkOF6GEI5Acjs.parseSchemaParams.call(void 0, stableSchema, new URLSearchParams(searchString), {
2280
+ const result = _chunkAECTRMGQcjs.parseSchemaParams.call(void 0, stableSchema, new URLSearchParams(searchString), {
2654
2281
  absent: options.absent === "null" ? "null" : "undefined"
2655
2282
  });
2656
2283
  if (debug) {
@@ -2666,14 +2293,14 @@ function useApiParams(schema, options = {}) {
2666
2293
  }
2667
2294
  const params = stableParams;
2668
2295
  const addParamToSearchParams = _react.useCallback.call(void 0, (searchParams, key, value) => {
2669
- for (const [k, v] of _chunkOF6GEI5Acjs.createSearchParams.call(void 0, { [key]: value })) searchParams.append(k, v);
2296
+ for (const [k, v] of _chunkAECTRMGQcjs.createSearchParams.call(void 0, { [key]: value })) searchParams.append(k, v);
2670
2297
  }, []);
2671
2298
  const urlSearchParams = _react.useMemo.call(void 0, () => {
2672
2299
  const newParams = new URLSearchParams();
2673
2300
  for (const key of Object.keys(stableSchema)) {
2674
2301
  const value = params[key];
2675
2302
  const paramConfig = flattenedSchema[key];
2676
- if (!_chunkOF6GEI5Acjs.shouldIncludeInUrl.call(void 0, value, paramConfig)) {
2303
+ if (!_chunkAECTRMGQcjs.shouldIncludeInUrl.call(void 0, value, paramConfig)) {
2677
2304
  continue;
2678
2305
  }
2679
2306
  addParamToSearchParams(newParams, key, value);
@@ -2730,7 +2357,7 @@ function useApiParams(schema, options = {}) {
2730
2357
  return;
2731
2358
  }
2732
2359
  const newParams = new URLSearchParams();
2733
- if (_chunkOF6GEI5Acjs.shouldIncludeInUrl.call(void 0, value, config)) {
2360
+ if (_chunkAECTRMGQcjs.shouldIncludeInUrl.call(void 0, value, config)) {
2734
2361
  addParamToSearchParams(newParams, key, value);
2735
2362
  updateUrl(newParams);
2736
2363
  } else {
@@ -2749,7 +2376,7 @@ function useApiParams(schema, options = {}) {
2749
2376
  console.warn(`[useApiParams] Unknown parameter: ${key}`);
2750
2377
  continue;
2751
2378
  }
2752
- if (_chunkOF6GEI5Acjs.shouldIncludeInUrl.call(void 0, value, flattenedSchema[key])) {
2379
+ if (_chunkAECTRMGQcjs.shouldIncludeInUrl.call(void 0, value, flattenedSchema[key])) {
2753
2380
  addParamToSearchParams(newParams, key, value);
2754
2381
  } else {
2755
2382
  keysToRemove.push(key);
@@ -2774,7 +2401,7 @@ function useApiParams(schema, options = {}) {
2774
2401
  }, [router, debug]);
2775
2402
  const pendingParams = _react.useMemo.call(void 0, () => {
2776
2403
  if (pendingTail === void 0 || pendingTail === searchString) return params;
2777
- return _chunkOF6GEI5Acjs.parseSchemaParams.call(void 0, stableSchema, new URLSearchParams(pendingTail), {
2404
+ return _chunkAECTRMGQcjs.parseSchemaParams.call(void 0, stableSchema, new URLSearchParams(pendingTail), {
2778
2405
  absent: options.absent === "null" ? "null" : "undefined"
2779
2406
  });
2780
2407
  }, [pendingTail, searchString, params, stableSchema, options.absent]);
@@ -2945,7 +2572,7 @@ function useScenarioPlayer({
2945
2572
  initialScenario = 0,
2946
2573
  startAtEnd = false
2947
2574
  }) {
2948
- const auto = _chunkUVTD52MDcjs.useAutoplay.call(void 0, enabled);
2575
+ const auto = _chunkGQ7JJUITcjs.useAutoplay.call(void 0, enabled);
2949
2576
  const { reducedMotion, paused, setPaused } = auto;
2950
2577
  const [scenario, setScenario] = _react.useState.call(void 0, initialScenario);
2951
2578
  const [rawStep, setRawStep] = _react.useState.call(void 0, startAtEnd ? Number.MAX_SAFE_INTEGER : 0);
@@ -2994,65 +2621,6 @@ function useScenarioPlayer({
2994
2621
 
2995
2622
  // src/hooks/use-access-code-integration.ts
2996
2623
 
2997
-
2998
- // src/utils/access-code-client.ts
2999
- async function validateAccessCode(email, code, endpoints) {
3000
- try {
3001
- const response = await fetch(endpoints.validateUrl, {
3002
- method: "POST",
3003
- headers: {
3004
- "Content-Type": "application/json"
3005
- },
3006
- body: JSON.stringify({ email, code })
3007
- });
3008
- if (!response.ok) {
3009
- const failure = await response.json().catch(() => null);
3010
- throw new Error(_chunkUVTD52MDcjs.apiErrorMessage.call(void 0, failure, "Validation request failed"));
3011
- }
3012
- return await response.json();
3013
- } catch (error) {
3014
- return {
3015
- valid: false,
3016
- message: error instanceof Error ? error.message : "Validation failed"
3017
- };
3018
- }
3019
- }
3020
- async function consumeAccessCode(email, code, endpoints) {
3021
- try {
3022
- const response = await fetch(endpoints.consumeUrl, {
3023
- method: "POST",
3024
- headers: {
3025
- "Content-Type": "application/json"
3026
- },
3027
- body: JSON.stringify({ email, code })
3028
- });
3029
- if (!response.ok) {
3030
- const failure = await response.json().catch(() => null);
3031
- throw new Error(_chunkUVTD52MDcjs.apiErrorMessage.call(void 0, failure, "Consumption request failed"));
3032
- }
3033
- return await response.json();
3034
- } catch (error) {
3035
- return {
3036
- success: false,
3037
- consumed: false,
3038
- message: error instanceof Error ? error.message : "Consumption failed"
3039
- };
3040
- }
3041
- }
3042
- async function validateAndConsumeAccessCode(email, code, endpoints) {
3043
- const validation = await validateAccessCode(email, code, endpoints);
3044
- if (!validation.valid) {
3045
- return validation;
3046
- }
3047
- const consumption = await consumeAccessCode(email, code, endpoints);
3048
- return {
3049
- ...validation,
3050
- consumed: consumption.consumed,
3051
- message: consumption.consumed ? `Access granted for ${validation.cohort_name}` : consumption.message || validation.message
3052
- };
3053
- }
3054
-
3055
- // src/hooks/use-access-code-integration.ts
3056
2624
  function useAccessCodeIntegration() {
3057
2625
  const runtime = _chunkMZ4KBSH7cjs.useRequiredEndpointsRuntime.call(void 0, );
3058
2626
  const endpoints = runtime.accessCode;
@@ -3061,7 +2629,7 @@ function useAccessCodeIntegration() {
3061
2629
  const validate = async (email, code) => {
3062
2630
  setIsValidating(true);
3063
2631
  try {
3064
- return await validateAccessCode(email, code, endpoints);
2632
+ return await _chunkGQ7JJUITcjs.validateAccessCode.call(void 0, email, code, endpoints);
3065
2633
  } finally {
3066
2634
  setIsValidating(false);
3067
2635
  }
@@ -3069,7 +2637,7 @@ function useAccessCodeIntegration() {
3069
2637
  const consume = async (email, code) => {
3070
2638
  setIsConsuming(true);
3071
2639
  try {
3072
- return await consumeAccessCode(email, code, endpoints);
2640
+ return await _chunkGQ7JJUITcjs.consumeAccessCode.call(void 0, email, code, endpoints);
3073
2641
  } finally {
3074
2642
  setIsConsuming(false);
3075
2643
  }
@@ -3078,7 +2646,7 @@ function useAccessCodeIntegration() {
3078
2646
  setIsValidating(true);
3079
2647
  setIsConsuming(true);
3080
2648
  try {
3081
- return await validateAndConsumeAccessCode(email, code, endpoints);
2649
+ return await _chunkGQ7JJUITcjs.validateAndConsumeAccessCode.call(void 0, email, code, endpoints);
3082
2650
  } finally {
3083
2651
  setIsValidating(false);
3084
2652
  setIsConsuming(false);
@@ -3096,95 +2664,19 @@ function useAccessCodeIntegration() {
3096
2664
 
3097
2665
  // src/hooks/use-claude-mirror-src.ts
3098
2666
 
3099
-
3100
- // src/utils/embed-url-converters.ts
3101
- function toGoogleSheetsEmbedUrl(url) {
3102
- if (url.includes("/htmlembed")) return url;
3103
- const match = url.match(/\/spreadsheets\/d\/([a-zA-Z0-9-_]+)/);
3104
- if (!match) return url;
3105
- const gidMatch = url.match(/[#?&]gid=(\d+)/);
3106
- const gid = gidMatch ? gidMatch[1] : "0";
3107
- return `https://docs.google.com/spreadsheets/d/${match[1]}/htmlembed?widget=true&chrome=false&headers=false&gid=${gid}`;
3108
- }
3109
- function toGoogleSheetsOriginalUrl(url) {
3110
- const match = url.match(/\/spreadsheets\/d\/([a-zA-Z0-9-_]+)/);
3111
- if (!match) return url;
3112
- const gidMatch = url.match(/[#?&]gid=(\d+)/);
3113
- const gid = gidMatch ? gidMatch[1] : "0";
3114
- return `https://docs.google.com/spreadsheets/d/${match[1]}/edit#gid=${gid}`;
3115
- }
3116
- function toFigmaEmbedUrl(url, opts) {
3117
- if (url.includes("embed.figma.com")) return url;
3118
- if (url.includes("figma.com/embed")) return url;
3119
- const match = url.match(/figma\.com\/(design|file|proto|board|slides|deck)\/([a-zA-Z0-9]+)(?:\/([^?]*))?(\?.*)?$/);
3120
- if (match) {
3121
- const [, urlType, fileKey, titleSlug, queryString] = match;
3122
- const isSlides = urlType === "slides" || urlType === "deck";
3123
- const embedType = urlType === "proto" ? "proto" : isSlides ? _optionalChain([opts, 'optionalAccess', _45 => _45.slidesView]) === "browse" ? "slides" : "deck" : "design";
3124
- const pathSuffix = titleSlug ? `/${titleSlug}` : "";
3125
- const params = new URLSearchParams(_optionalChain([queryString, 'optionalAccess', _46 => _46.replace, 'call', _47 => _47(/^\?/, "")]) || "");
3126
- if (!params.has("embed-host")) {
3127
- params.set("embed-host", "flamingo");
3128
- }
3129
- const clientId = process.env.NEXT_PUBLIC_FIGMA_CLIENT_ID;
3130
- if (clientId && !params.has("client-id")) {
3131
- params.set("client-id", clientId);
3132
- }
3133
- return `https://embed.figma.com/${embedType}/${fileKey}${pathSuffix}?${params.toString()}`;
3134
- }
3135
- return `https://www.figma.com/embed?embed-host=flamingo&url=${encodeURIComponent(url)}`;
3136
- }
3137
- function isFigmaSlidesUrl(url) {
3138
- if (!url) return false;
3139
- return /(?:www\.|embed\.)?figma\.com\/(?:slides|deck)\/[a-zA-Z0-9]+/.test(url);
3140
- }
3141
- function toFigmaOriginalUrl(url) {
3142
- if (url.includes("embed.figma.com")) {
3143
- return url.replace("embed.figma.com", "www.figma.com").replace(/\?.*$/, "");
3144
- }
3145
- return url.replace(/\?.*$/, "");
3146
- }
3147
- function toClaudeMirrorPath(url, storageViewBaseUrl) {
3148
- if (!url || !storageViewBaseUrl) return null;
3149
- try {
3150
- const u = new URL(url);
3151
- const host = u.hostname.toLowerCase();
3152
- const id = host === "claude.ai" && _optionalChain([/^\/(?:code\/artifact|public\/artifacts)\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[/?#]|$)/i, 'access', _48 => _48.exec, 'call', _49 => _49(
3153
- u.pathname
3154
- ), 'optionalAccess', _50 => _50[1]]) || host === "claude.site" && _optionalChain([/^\/artifacts\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[/?#]|$)/i, 'access', _51 => _51.exec, 'call', _52 => _52(
3155
- u.pathname
3156
- ), 'optionalAccess', _53 => _53[1]]) || null;
3157
- return id ? `${storageViewBaseUrl.replace(/\/$/, "")}/design-briefs/${id.toLowerCase()}.html` : null;
3158
- } catch (e6) {
3159
- return null;
3160
- }
3161
- }
3162
- function toClaudeEmbedUrl(url) {
3163
- if (!url) return null;
3164
- try {
3165
- const u = new URL(url);
3166
- const host = u.hostname.toLowerCase();
3167
- const publicId = host === "claude.ai" && _optionalChain([/^\/public\/artifacts\/([\w-]+)(?:\/embed)?\/?$/, 'access', _54 => _54.exec, 'call', _55 => _55(u.pathname), 'optionalAccess', _56 => _56[1]]) || host === "claude.site" && _optionalChain([/^\/artifacts\/([\w-]+)(?:\/embed)?\/?$/, 'access', _57 => _57.exec, 'call', _58 => _58(u.pathname), 'optionalAccess', _59 => _59[1]]) || null;
3168
- return publicId ? `https://claude.ai/public/artifacts/${publicId}/embed` : null;
3169
- } catch (e7) {
3170
- return null;
3171
- }
3172
- }
3173
-
3174
- // src/hooks/use-claude-mirror-src.ts
3175
2667
  async function revalidateMirror(mirrorPath) {
3176
2668
  try {
3177
2669
  const res = await fetch(`${mirrorPath}?revalidate=1`);
3178
2670
  if (!res.ok) return null;
3179
2671
  const body = await res.json();
3180
- return _optionalChain([body, 'optionalAccess', _60 => _60.updated]) ? String(_nullishCoalesce(body.version, () => ( Date.now()))) : null;
3181
- } catch (e8) {
2672
+ return _optionalChain([body, 'optionalAccess', _41 => _41.updated]) ? String(_nullishCoalesce(body.version, () => ( Date.now()))) : null;
2673
+ } catch (e6) {
3182
2674
  return null;
3183
2675
  }
3184
2676
  }
3185
2677
  function useClaudeMirrorSrc(url) {
3186
2678
  const endpoints = _chunkMZ4KBSH7cjs.useEndpointsRuntime.call(void 0, );
3187
- const mirrorPath = toClaudeMirrorPath(url, _optionalChain([endpoints, 'optionalAccess', _61 => _61.storageViewBaseUrl]));
2679
+ const mirrorPath = _chunkGQ7JJUITcjs.toClaudeMirrorPath.call(void 0, url, _optionalChain([endpoints, 'optionalAccess', _42 => _42.storageViewBaseUrl]));
3188
2680
  const [resolved, setResolved] = _react.useState.call(void 0, null);
3189
2681
  const state = resolved && resolved.key === mirrorPath ? resolved.value : { src: null, status: mirrorPath ? "probing" : "absent" };
3190
2682
  _react.useEffect.call(void 0, () => {
@@ -3215,30 +2707,30 @@ function useClaudeMirrorSrc(url) {
3215
2707
 
3216
2708
  // src/hooks/use-location-hash.ts
3217
2709
 
3218
- var HASH_EVENTS = ["hashchange", "popstate"];
3219
- function subscribe3(onChange) {
2710
+ var HASH_EVENTS = ["hashchange", "popstate", _chunkGQ7JJUITcjs.LOCATION_HASH_SYNC_EVENT];
2711
+ function subscribe2(onChange) {
3220
2712
  for (const event of HASH_EVENTS) window.addEventListener(event, onChange);
3221
2713
  return () => {
3222
2714
  for (const event of HASH_EVENTS) window.removeEventListener(event, onChange);
3223
2715
  };
3224
2716
  }
3225
2717
  function readHash() {
3226
- const raw = _chunkUVTD52MDcjs.normalizeHashFragment.call(void 0, window.location.hash).replace(/^#/, "");
2718
+ const raw = _chunkGQ7JJUITcjs.normalizeHashFragment.call(void 0, window.location.hash).replace(/^#/, "");
3227
2719
  try {
3228
2720
  return decodeURIComponent(raw);
3229
- } catch (e9) {
2721
+ } catch (e7) {
3230
2722
  return raw;
3231
2723
  }
3232
2724
  }
3233
2725
  function useLocationHash() {
3234
- return _react.useSyncExternalStore.call(void 0, subscribe3, readHash, () => "");
2726
+ return _react.useSyncExternalStore.call(void 0, subscribe2, readHash, () => "");
3235
2727
  }
3236
2728
 
3237
2729
  // src/hooks/use-scroll-to-hash.ts
3238
2730
 
3239
2731
  var MAX_POLL_FRAMES = 60;
3240
2732
  function useScrollToHash(readyDep = true, options) {
3241
- const headerOffset = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _62 => _62.headerOffset]), () => ( 0));
2733
+ const headerOffset = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _43 => _43.headerOffset]), () => ( 0));
3242
2734
  _react.useEffect.call(void 0, () => {
3243
2735
  if (typeof window === "undefined") return void 0;
3244
2736
  if (readyDep === null || readyDep === false) return void 0;
@@ -3250,15 +2742,16 @@ function useScrollToHash(readyDep = true, options) {
3250
2742
  }
3251
2743
  };
3252
2744
  const tryScrollToHash = () => {
3253
- const hash = _chunkUVTD52MDcjs.normalizeHashFragment.call(void 0, window.location.hash).slice(1);
2745
+ if (_chunkGQ7JJUITcjs.isScrollSyncedHash.call(void 0, )) return;
2746
+ const hash = _chunkGQ7JJUITcjs.normalizeHashFragment.call(void 0, window.location.hash).slice(1);
3254
2747
  if (!hash) return;
3255
2748
  cancelPoll();
3256
2749
  let frames = 0;
3257
2750
  const tick = () => {
3258
- const el = _chunkUVTD52MDcjs.getHashTargetElement.call(void 0, hash);
2751
+ const el = _chunkGQ7JJUITcjs.getHashTargetElement.call(void 0, hash);
3259
2752
  if (el) {
3260
2753
  rafId = null;
3261
- _chunkUVTD52MDcjs.scrollElementIntoView.call(void 0, el, { headerOffset });
2754
+ _chunkGQ7JJUITcjs.scrollElementIntoView.call(void 0, el, { headerOffset });
3262
2755
  return;
3263
2756
  }
3264
2757
  if (frames++ < MAX_POLL_FRAMES) {
@@ -3280,74 +2773,14 @@ function useScrollToHash(readyDep = true, options) {
3280
2773
 
3281
2774
  // src/hooks/use-humanity-signals.ts
3282
2775
 
3283
-
3284
- // src/utils/humanity-signals.ts
3285
- var HONEYPOT_FIELD = "form_extra_note";
3286
- var ELAPSED_MS_FIELD = "form_elapsed_ms";
3287
- var DEFAULT_MIN_FILL_MS = 700;
3288
- var HUMANITY_SIGNAL_KEYS = [HONEYPOT_FIELD, ELAPSED_MS_FIELD];
3289
- var isHumanitySignalKey = (key) => HUMANITY_SIGNAL_KEYS.includes(key);
3290
- function extractHumanitySignals(body) {
3291
- const b = _nullishCoalesce(body, () => ( {}));
3292
- const rawHp = b[HONEYPOT_FIELD];
3293
- const honeypot = rawHp == null ? "" : typeof rawHp === "string" ? rawHp : _nullishCoalesce(JSON.stringify(rawHp), () => ( String(rawHp)));
3294
- const rawMs = b[ELAPSED_MS_FIELD];
3295
- const elapsedMs = typeof rawMs === "number" && Number.isFinite(rawMs) ? rawMs : null;
3296
- return { honeypot, elapsedMs };
3297
- }
3298
- var normalizeForCopyMatch = (s) => s.normalize("NFKC").trim().toLowerCase();
3299
- var digitsOf = (s) => s.replace(/\D/g, "");
3300
- var MIN_COPY_MATCH_LENGTH = 2;
3301
- var MIN_PHONE_DIGITS = 7;
3302
- var phoneDigitsMatch = (a, b) => a.length >= MIN_PHONE_DIGITS && b.length >= MIN_PHONE_DIGITS && (a.endsWith(b) || b.endsWith(a));
3303
- function findHoneypotCopySource(body, honeypot) {
3304
- const hpNorm = normalizeForCopyMatch(honeypot);
3305
- const hpDigits = digitsOf(honeypot);
3306
- const phoneCandidate = hpDigits.length >= MIN_PHONE_DIGITS;
3307
- if (hpNorm.length < MIN_COPY_MATCH_LENGTH && !phoneCandidate) return null;
3308
- const matches = (value) => {
3309
- if (typeof value !== "string" || value.trim() === "") return false;
3310
- if (normalizeForCopyMatch(value) === hpNorm) return true;
3311
- return phoneCandidate && phoneDigitsMatch(digitsOf(value), hpDigits);
3312
- };
3313
- const matchInArray = (value) => Array.isArray(value) && value.some(matches);
3314
- const b = _nullishCoalesce(body, () => ( {}));
3315
- for (const [key, value] of Object.entries(b)) {
3316
- if (isHumanitySignalKey(key)) continue;
3317
- if (matches(value)) return key;
3318
- if (matchInArray(value)) return `${key}[]`;
3319
- if (value && typeof value === "object" && !Array.isArray(value)) {
3320
- for (const [nestedKey, nested] of Object.entries(value)) {
3321
- if (matches(nested)) return `${key}.${nestedKey}`;
3322
- if (matchInArray(nested)) return `${key}.${nestedKey}[]`;
3323
- }
3324
- }
3325
- }
3326
- return null;
3327
- }
3328
- function evaluateHumanitySignals(body, opts) {
3329
- const { honeypot, elapsedMs } = extractHumanitySignals(body);
3330
- const diagnostics = {
3331
- honeypotLength: honeypot.length,
3332
- timingAffirmed: elapsedMs !== null && elapsedMs >= opts.minFillMs
3333
- };
3334
- const filled = honeypot.trim() !== "";
3335
- const sourceField = filled ? findHoneypotCopySource(body, honeypot) : null;
3336
- if (filled && sourceField === null) return { ...diagnostics, ok: false, reason: "honeypot" };
3337
- if (elapsedMs !== null && elapsedMs < opts.minFillMs) return { ...diagnostics, ok: false, reason: "too_fast" };
3338
- return sourceField !== null ? { ...diagnostics, ok: true, note: "honeypot_autofill", sourceField } : { ...diagnostics, ok: true };
3339
- }
3340
- var splitCsvEnv = (s) => _nullishCoalesce(_optionalChain([s, 'optionalAccess', _63 => _63.split, 'call', _64 => _64(","), 'access', _65 => _65.map, 'call', _66 => _66((t) => t.trim()), 'access', _67 => _67.filter, 'call', _68 => _68(Boolean)]), () => ( []));
3341
-
3342
- // src/hooks/use-humanity-signals.ts
3343
2776
  function useHumanitySignals() {
3344
2777
  const ref = _react.useRef.call(void 0, null);
3345
2778
  const [mountedAt] = _react.useState.call(void 0, () => typeof performance !== "undefined" ? performance.now() : 0);
3346
2779
  const startedAtRef = _react.useRef.call(void 0, mountedAt);
3347
2780
  const getSignals = _react.useCallback.call(void 0,
3348
2781
  () => ({
3349
- [HONEYPOT_FIELD]: _nullishCoalesce(_optionalChain([ref, 'access', _69 => _69.current, 'optionalAccess', _70 => _70.value]), () => ( "")),
3350
- [ELAPSED_MS_FIELD]: typeof performance !== "undefined" ? Math.round(performance.now() - startedAtRef.current) : 0
2782
+ [_chunkGQ7JJUITcjs.HONEYPOT_FIELD]: _nullishCoalesce(_optionalChain([ref, 'access', _44 => _44.current, 'optionalAccess', _45 => _45.value]), () => ( "")),
2783
+ [_chunkGQ7JJUITcjs.ELAPSED_MS_FIELD]: typeof performance !== "undefined" ? Math.round(performance.now() - startedAtRef.current) : 0
3351
2784
  }),
3352
2785
  []
3353
2786
  );
@@ -3355,166 +2788,14 @@ function useHumanitySignals() {
3355
2788
  if (ref.current) ref.current.value = "";
3356
2789
  if (typeof performance !== "undefined") startedAtRef.current = performance.now();
3357
2790
  }, []);
3358
- return { honeypotInputProps: { ref, name: HONEYPOT_FIELD }, getSignals, resetSignals };
2791
+ return { honeypotInputProps: { ref, name: _chunkGQ7JJUITcjs.HONEYPOT_FIELD }, getSignals, resetSignals };
3359
2792
  }
3360
2793
 
3361
2794
  // src/hooks/use-form-rescue.ts
3362
2795
 
3363
-
3364
- // src/utils/form-rescue.ts
3365
- var FORM_ID_PATTERN = /^[a-z][a-z0-9_]{1,47}$/;
3366
- var definitions = /* @__PURE__ */ new Map();
3367
- function defineRescueForm(definition) {
3368
- if (!FORM_ID_PATTERN.test(definition.id)) throw new Error(`[form-rescue] invalid form id "${definition.id}"`);
3369
- const existing = definitions.get(definition.id);
3370
- if (existing) {
3371
- if (existing.label !== definition.label) {
3372
- throw new Error(`[form-rescue] form id "${definition.id}" is already defined as "${existing.label}"`);
3373
- }
3374
- return existing;
3375
- }
3376
- const frozen = Object.freeze({ id: definition.id, label: definition.label });
3377
- definitions.set(frozen.id, frozen);
3378
- return frozen;
3379
- }
3380
- function getRescueForm(id) {
3381
- return typeof id === "string" ? _nullishCoalesce(definitions.get(id), () => ( null)) : null;
3382
- }
3383
- function listRescueForms() {
3384
- return [...definitions.values()];
3385
- }
3386
- var RESCUE_FORMS = {
3387
- contact: defineRescueForm({ id: "contact", label: "Contact form" }),
3388
- caseStudyPitch: defineRescueForm({ id: "case_study_pitch", label: "Case study pitch" }),
3389
- dataRoomRequest: defineRescueForm({ id: "data_room_request", label: "Data room request" }),
3390
- trustCenterRequest: defineRescueForm({ id: "trust_center_request", label: "Trust Center document request" }),
3391
- meetingBooking: defineRescueForm({ id: "meeting_booking", label: "Meeting booking" }),
3392
- waitlist: defineRescueForm({ id: "waitlist", label: "Waitlist" })
3393
- };
3394
- var FORM_RESCUE_VALUE_FIELDS = [
3395
- "email",
3396
- "name",
3397
- "firstName",
3398
- "lastName",
3399
- "company",
3400
- "jobtitle",
3401
- "companySize",
3402
- "linkedin_url"
3403
- ];
3404
- var EXCLUDED_FIELD_PATTERN = /pass(word|code)?|card|cvv|cvc|ssn|social.?security|iban|bank|routing|token|secret|otp|pin$/i;
3405
- function isExcludedRescueField(name) {
3406
- return EXCLUDED_FIELD_PATTERN.test(name);
3407
- }
3408
- var FORM_RESCUE_MAX_VALUE_CHARS = 200;
3409
- var FORM_RESCUE_DEBOUNCE_MS = 1500;
3410
- var FORM_RESCUE_MAX_FIELDS = 40;
3411
- var FORM_RESCUE_ATTEMPT_FIELD = "form_attempt_id";
3412
- var FORM_RESCUE_RESUME_FIELD = "form_resume_token";
3413
- var FORM_RESCUE_SUBMIT_KEYS = [FORM_RESCUE_ATTEMPT_FIELD, FORM_RESCUE_RESUME_FIELD];
3414
- var FORM_RESCUE_RESUME_PARAM = "resume";
3415
- var RESUME_TOKEN_PATTERN = /^[A-Za-z0-9_-]{16,128}$/;
3416
- function isResumeToken(value) {
3417
- return typeof value === "string" && RESUME_TOKEN_PATTERN.test(value);
3418
- }
3419
- var FORM_DRAFT_STATUSES = ["started", "rescuable", "rescued", "submitted"];
3420
- var FORM_RESCUE_SKIP_REASONS = {
3421
- finishedElsewhere: "finished_elsewhere",
3422
- alreadyRescued: "already_rescued",
3423
- internal: "internal_email"
3424
- };
3425
- var EMAIL_PATTERN = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
3426
- function isRescueEmail(value) {
3427
- return typeof value === "string" && value.length <= FORM_RESCUE_MAX_VALUE_CHARS && EMAIL_PATTERN.test(value.trim());
3428
- }
3429
- var UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
3430
- function isFormAttemptId(value) {
3431
- return typeof value === "string" && UUID_PATTERN.test(value);
3432
- }
3433
- function isFilled(value) {
3434
- if (value == null) return false;
3435
- if (typeof value === "string") return value.trim().length > 0;
3436
- if (typeof value === "boolean") return value;
3437
- if (Array.isArray(value)) return value.length > 0;
3438
- if (typeof value === "object") return Object.values(value).some(isFilled);
3439
- return true;
3440
- }
3441
- function sanitizeRescueValues(values) {
3442
- const out = {};
3443
- if (!values || typeof values !== "object") return out;
3444
- for (const key of FORM_RESCUE_VALUE_FIELDS) {
3445
- if (isExcludedRescueField(key)) continue;
3446
- const raw = values[key];
3447
- if (typeof raw !== "string") continue;
3448
- const trimmed = raw.trim().slice(0, FORM_RESCUE_MAX_VALUE_CHARS);
3449
- if (trimmed) out[key] = trimmed;
3450
- }
3451
- return out;
3452
- }
3453
- function filledRescueFields(values, fieldNames) {
3454
- return fieldNames.filter((name) => !isExcludedRescueField(name) && isFilled(values[name])).slice(0, FORM_RESCUE_MAX_FIELDS);
3455
- }
3456
- function rescueCompletionPct(filledCount, totalCount) {
3457
- if (totalCount <= 0) return 0;
3458
- return Math.max(0, Math.min(100, Math.round(filledCount / totalCount * 100)));
3459
- }
3460
- function sanitizeRescueFieldName(value) {
3461
- if (typeof value !== "string") return null;
3462
- const trimmed = value.trim();
3463
- return /^[A-Za-z0-9_.-]{1,64}$/.test(trimmed) && !isExcludedRescueField(trimmed) ? trimmed : null;
3464
- }
3465
- var UTM_KEYS = ["source", "medium", "campaign", "content", "term"];
3466
- var MAX_SOURCE_PATH_CHARS = 500;
3467
- function parseFormDraftSaveRequest(body) {
3468
- const form = getRescueForm(body.form_id);
3469
- if (!isFormAttemptId(body.attempt_id) || !form) return null;
3470
- const rawValues = body.values && typeof body.values === "object" ? body.values : {};
3471
- const values = sanitizeRescueValues(rawValues);
3472
- const fieldsFilled = (Array.isArray(body.fields_filled) ? body.fields_filled : []).map(sanitizeRescueFieldName).filter((name) => name !== null).slice(0, FORM_RESCUE_MAX_FIELDS);
3473
- const path = typeof body.source_path === "string" ? body.source_path : "";
3474
- const utmIn = body.utm && typeof body.utm === "object" ? body.utm : {};
3475
- const utm = {};
3476
- for (const key of UTM_KEYS) {
3477
- const value = utmIn[key];
3478
- if (typeof value === "string" && value.trim()) utm[key] = value.trim().slice(0, FORM_RESCUE_MAX_VALUE_CHARS);
3479
- }
3480
- return {
3481
- request: {
3482
- attempt_id: body.attempt_id,
3483
- form_id: form.id,
3484
- values,
3485
- fields_filled: fieldsFilled,
3486
- last_field: sanitizeRescueFieldName(body.last_field),
3487
- completion_pct: typeof body.completion_pct === "number" ? rescueCompletionPct(body.completion_pct, 100) : 0,
3488
- // Same-site only: a path, never a scheme-relative or absolute URL.
3489
- source_path: path.startsWith("/") && !path.startsWith("//") ? path.slice(0, MAX_SOURCE_PATH_CHARS) : "",
3490
- ...Object.keys(utm).length ? { utm } : {},
3491
- ...isResumeToken(body.resume_token) ? { resume_token: body.resume_token } : {}
3492
- },
3493
- dropped: Object.keys(rawValues).filter((key) => !(key in values))
3494
- };
3495
- }
3496
- var FORM_RESCUE_EVENTS = {
3497
- started: "form_started",
3498
- progress: "form_progress",
3499
- leadCaptured: "form_lead_captured",
3500
- abandoned: "form_abandoned",
3501
- submitted: "form_submitted",
3502
- rescued: "form_rescued",
3503
- resumed: "form_resumed"
3504
- };
3505
- function captureFormRescueEvent(event, properties) {
3506
- try {
3507
- if (typeof window === "undefined") return;
3508
- const ph = window.posthog;
3509
- if (typeof _optionalChain([ph, 'optionalAccess', _71 => _71.capture]) === "function") ph.capture(event, properties);
3510
- } catch (e10) {
3511
- }
3512
- }
3513
-
3514
- // src/hooks/use-form-rescue.ts
3515
2796
  var LOCAL_DRAFT_TTL_MS = 7 * 24 * 60 * 60 * 1e3;
3516
2797
  var STORAGE_PREFIX = "form-rescue:v1:";
3517
- var UTM_KEYS2 = ["source", "medium", "campaign", "content", "term"];
2798
+ var UTM_KEYS = ["source", "medium", "campaign", "content", "term"];
3518
2799
  function newAttemptId() {
3519
2800
  if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") return crypto.randomUUID();
3520
2801
  const bytes = new Uint8Array(16);
@@ -3529,31 +2810,31 @@ function readLocalDraft(formId) {
3529
2810
  const raw = window.localStorage.getItem(STORAGE_PREFIX + formId);
3530
2811
  if (!raw) return null;
3531
2812
  const parsed = JSON.parse(raw);
3532
- if (!isFormAttemptId(parsed.attemptId) || typeof parsed.savedAt !== "number") return null;
2813
+ if (!_chunkGQ7JJUITcjs.isFormAttemptId.call(void 0, parsed.attemptId) || typeof parsed.savedAt !== "number") return null;
3533
2814
  if (Date.now() - parsed.savedAt > LOCAL_DRAFT_TTL_MS) return null;
3534
- return { attemptId: parsed.attemptId, values: sanitizeRescueValues(parsed.values), savedAt: parsed.savedAt };
3535
- } catch (e11) {
2815
+ return { attemptId: parsed.attemptId, values: _chunkGQ7JJUITcjs.sanitizeRescueValues.call(void 0, parsed.values), savedAt: parsed.savedAt };
2816
+ } catch (e8) {
3536
2817
  return null;
3537
2818
  }
3538
2819
  }
3539
2820
  function writeLocalDraft(formId, draft) {
3540
2821
  try {
3541
2822
  window.localStorage.setItem(STORAGE_PREFIX + formId, JSON.stringify(draft));
3542
- } catch (e12) {
2823
+ } catch (e9) {
3543
2824
  }
3544
2825
  }
3545
2826
  function clearLocalDraft(formId) {
3546
2827
  try {
3547
2828
  window.localStorage.removeItem(STORAGE_PREFIX + formId);
3548
- } catch (e13) {
2829
+ } catch (e10) {
3549
2830
  }
3550
2831
  }
3551
2832
  function completeFormRescue(form, attemptId) {
3552
2833
  if (!form || typeof window === "undefined") return;
3553
2834
  const local = readLocalDraft(form.id);
3554
- captureFormRescueEvent(FORM_RESCUE_EVENTS.submitted, {
2835
+ _chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.submitted, {
3555
2836
  form_id: form.id,
3556
- attempt_id: isFormAttemptId(attemptId) ? attemptId : _nullishCoalesce(_optionalChain([local, 'optionalAccess', _72 => _72.attemptId]), () => ( null))
2837
+ attempt_id: _chunkGQ7JJUITcjs.isFormAttemptId.call(void 0, attemptId) ? attemptId : _nullishCoalesce(_optionalChain([local, 'optionalAccess', _46 => _46.attemptId]), () => ( null))
3557
2838
  });
3558
2839
  clearLocalDraft(form.id);
3559
2840
  }
@@ -3561,18 +2842,18 @@ function readUtm() {
3561
2842
  try {
3562
2843
  const params = new URLSearchParams(window.location.search);
3563
2844
  const utm = {};
3564
- for (const key of UTM_KEYS2) {
2845
+ for (const key of UTM_KEYS) {
3565
2846
  const value = params.get(`utm_${key}`);
3566
2847
  if (value) utm[key] = value.slice(0, 200);
3567
2848
  }
3568
2849
  return Object.keys(utm).length ? utm : void 0;
3569
- } catch (e14) {
2850
+ } catch (e11) {
3570
2851
  return void 0;
3571
2852
  }
3572
2853
  }
3573
2854
  function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
3574
- const draftsUrl = _optionalChain([_chunkMZ4KBSH7cjs.useEndpointsRuntime.call(void 0, ), 'optionalAccess', _73 => _73.formDraftsUrl]);
3575
- const formId = _nullishCoalesce(_optionalChain([form, 'optionalAccess', _74 => _74.id]), () => ( null));
2855
+ const draftsUrl = _optionalChain([_chunkMZ4KBSH7cjs.useEndpointsRuntime.call(void 0, ), 'optionalAccess', _47 => _47.formDraftsUrl]);
2856
+ const formId = _nullishCoalesce(_optionalChain([form, 'optionalAccess', _48 => _48.id]), () => ( null));
3576
2857
  const attemptIdRef = _react.useRef.call(void 0, null);
3577
2858
  const resumeTokenRef = _react.useRef.call(void 0, null);
3578
2859
  const latestRef = _react.useRef.call(void 0, null);
@@ -3606,15 +2887,15 @@ function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
3606
2887
  ...resumeTokenRef.current ? { resume_token: resumeTokenRef.current } : {}
3607
2888
  };
3608
2889
  try {
3609
- void _chunkOF6GEI5Acjs.contentFetch.call(void 0, draftsUrl, {
2890
+ void _chunkAUMKE74Mcjs.contentFetch.call(void 0, draftsUrl, {
3610
2891
  method: "POST",
3611
2892
  headers: { "Content-Type": "application/json" },
3612
- body: JSON.stringify({ ...body, ..._nullishCoalesce(_optionalChain([getSignalsRef, 'access', _75 => _75.current, 'optionalCall', _76 => _76()]), () => ( {})) }),
2893
+ body: JSON.stringify({ ...body, ..._nullishCoalesce(_optionalChain([getSignalsRef, 'access', _49 => _49.current, 'optionalCall', _50 => _50()]), () => ( {})) }),
3613
2894
  keepalive
3614
2895
  }).catch(() => void 0);
3615
- } catch (e15) {
2896
+ } catch (e12) {
3616
2897
  }
3617
- captureFormRescueEvent(FORM_RESCUE_EVENTS.progress, {
2898
+ _chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.progress, {
3618
2899
  form_id: formId,
3619
2900
  attempt_id: attemptId(),
3620
2901
  fields_filled: body.fields_filled,
@@ -3627,23 +2908,23 @@ function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
3627
2908
  _react.useEffect.call(void 0, () => {
3628
2909
  if (!formId || typeof window === "undefined") return void 0;
3629
2910
  let cancelled = false;
3630
- const token = new URLSearchParams(window.location.search).get(FORM_RESCUE_RESUME_PARAM);
2911
+ const token = new URLSearchParams(window.location.search).get(_chunkGQ7JJUITcjs.FORM_RESCUE_RESUME_PARAM);
3631
2912
  const restoreLocal = () => {
3632
2913
  const local = readLocalDraft(formId);
3633
2914
  if (!local) return;
3634
2915
  attemptIdRef.current = local.attemptId;
3635
- if (Object.keys(local.values).length) _optionalChain([onRestoreRef, 'access', _77 => _77.current, 'optionalCall', _78 => _78(local.values)]);
2916
+ if (Object.keys(local.values).length) _optionalChain([onRestoreRef, 'access', _51 => _51.current, 'optionalCall', _52 => _52(local.values)]);
3636
2917
  };
3637
- if (isResumeToken(token) && draftsUrl) {
3638
- _chunkOF6GEI5Acjs.contentFetch.call(void 0, `${draftsUrl}/resume/${encodeURIComponent(token)}`).then(async (res) => res.ok ? await res.json() : null).then((data) => {
2918
+ if (_chunkGQ7JJUITcjs.isResumeToken.call(void 0, token) && draftsUrl) {
2919
+ _chunkAUMKE74Mcjs.contentFetch.call(void 0, `${draftsUrl}/resume/${encodeURIComponent(token)}`).then(async (res) => res.ok ? await res.json() : null).then((data) => {
3639
2920
  if (cancelled) return;
3640
2921
  if (!data || data.form_id !== formId) {
3641
2922
  restoreLocal();
3642
2923
  return;
3643
2924
  }
3644
2925
  resumeTokenRef.current = token;
3645
- _optionalChain([onRestoreRef, 'access', _79 => _79.current, 'optionalCall', _80 => _80(sanitizeRescueValues(data.values))]);
3646
- captureFormRescueEvent(FORM_RESCUE_EVENTS.resumed, { form_id: formId, attempt_id: attemptId() });
2926
+ _optionalChain([onRestoreRef, 'access', _53 => _53.current, 'optionalCall', _54 => _54(_chunkGQ7JJUITcjs.sanitizeRescueValues.call(void 0, data.values))]);
2927
+ _chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.resumed, { form_id: formId, attempt_id: attemptId() });
3647
2928
  }).catch(() => {
3648
2929
  if (!cancelled) restoreLocal();
3649
2930
  });
@@ -3663,11 +2944,11 @@ function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
3663
2944
  timerRef.current = null;
3664
2945
  }
3665
2946
  send(true);
3666
- captureFormRescueEvent(FORM_RESCUE_EVENTS.abandoned, {
2947
+ _chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.abandoned, {
3667
2948
  form_id: formId,
3668
2949
  attempt_id: attemptId(),
3669
- last_field: _nullishCoalesce(_optionalChain([latestRef, 'access', _81 => _81.current, 'optionalAccess', _82 => _82.last_field]), () => ( null)),
3670
- completion_pct: _nullishCoalesce(_optionalChain([latestRef, 'access', _83 => _83.current, 'optionalAccess', _84 => _84.completion_pct]), () => ( 0))
2950
+ last_field: _nullishCoalesce(_optionalChain([latestRef, 'access', _55 => _55.current, 'optionalAccess', _56 => _56.last_field]), () => ( null)),
2951
+ completion_pct: _nullishCoalesce(_optionalChain([latestRef, 'access', _57 => _57.current, 'optionalAccess', _58 => _58.completion_pct]), () => ( 0))
3671
2952
  });
3672
2953
  };
3673
2954
  const onVisibility = () => {
@@ -3687,22 +2968,22 @@ function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
3687
2968
  const names = fieldNamesRef.current;
3688
2969
  const visible = {};
3689
2970
  for (const name of names) visible[name] = values[name];
3690
- const filled = filledRescueFields(visible, names);
2971
+ const filled = _chunkGQ7JJUITcjs.filledRescueFields.call(void 0, visible, names);
3691
2972
  if (!filled.length) return;
3692
2973
  if (!startedRef.current) {
3693
2974
  startedRef.current = true;
3694
- captureFormRescueEvent(FORM_RESCUE_EVENTS.started, { form_id: formId, attempt_id: attemptId() });
2975
+ _chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.started, { form_id: formId, attempt_id: attemptId() });
3695
2976
  }
3696
- const clean = sanitizeRescueValues(visible);
3697
- if (!leadCapturedRef.current && isRescueEmail(clean.email)) {
2977
+ const clean = _chunkGQ7JJUITcjs.sanitizeRescueValues.call(void 0, visible);
2978
+ if (!leadCapturedRef.current && _chunkGQ7JJUITcjs.isRescueEmail.call(void 0, clean.email)) {
3698
2979
  leadCapturedRef.current = true;
3699
- captureFormRescueEvent(FORM_RESCUE_EVENTS.leadCaptured, { form_id: formId, attempt_id: attemptId() });
2980
+ _chunkGQ7JJUITcjs.captureFormRescueEvent.call(void 0, _chunkGQ7JJUITcjs.FORM_RESCUE_EVENTS.leadCaptured, { form_id: formId, attempt_id: attemptId() });
3700
2981
  }
3701
2982
  latestRef.current = {
3702
2983
  values: clean,
3703
2984
  fields_filled: filled,
3704
- last_field: sanitizeRescueFieldName(lastField),
3705
- completion_pct: rescueCompletionPct(filled.length, names.length)
2985
+ last_field: _chunkGQ7JJUITcjs.sanitizeRescueFieldName.call(void 0, lastField),
2986
+ completion_pct: _chunkGQ7JJUITcjs.rescueCompletionPct.call(void 0, filled.length, names.length)
3706
2987
  };
3707
2988
  dirtyRef.current = true;
3708
2989
  writeLocalDraft(formId, { attemptId: attemptId(), values: clean, savedAt: Date.now() });
@@ -3710,15 +2991,15 @@ function useFormRescue({ form, fieldNames, onRestore, getSignals }) {
3710
2991
  timerRef.current = setTimeout(() => {
3711
2992
  timerRef.current = null;
3712
2993
  send(false);
3713
- }, FORM_RESCUE_DEBOUNCE_MS);
2994
+ }, _chunkGQ7JJUITcjs.FORM_RESCUE_DEBOUNCE_MS);
3714
2995
  },
3715
2996
  [attemptId, formId, send]
3716
2997
  );
3717
2998
  const submitFields = _react.useCallback.call(void 0, () => {
3718
2999
  if (!formId) return {};
3719
3000
  return {
3720
- [FORM_RESCUE_ATTEMPT_FIELD]: attemptId(),
3721
- ...resumeTokenRef.current ? { [FORM_RESCUE_RESUME_FIELD]: resumeTokenRef.current } : {}
3001
+ [_chunkGQ7JJUITcjs.FORM_RESCUE_ATTEMPT_FIELD]: attemptId(),
3002
+ ...resumeTokenRef.current ? { [_chunkGQ7JJUITcjs.FORM_RESCUE_RESUME_FIELD]: resumeTokenRef.current } : {}
3722
3003
  };
3723
3004
  }, [attemptId, formId]);
3724
3005
  const complete = _react.useCallback.call(void 0, () => {
@@ -3839,63 +3120,4 @@ function useRescuedForm(form, { rescue, fields, getSignals, fieldPath }) {
3839
3120
 
3840
3121
 
3841
3122
 
3842
-
3843
-
3844
-
3845
-
3846
-
3847
-
3848
-
3849
-
3850
-
3851
-
3852
-
3853
-
3854
-
3855
-
3856
-
3857
-
3858
-
3859
-
3860
-
3861
-
3862
-
3863
-
3864
-
3865
-
3866
-
3867
-
3868
-
3869
-
3870
-
3871
-
3872
-
3873
-
3874
-
3875
-
3876
-
3877
-
3878
-
3879
-
3880
-
3881
-
3882
-
3883
-
3884
-
3885
-
3886
-
3887
-
3888
-
3889
-
3890
-
3891
-
3892
-
3893
-
3894
-
3895
-
3896
-
3897
-
3898
-
3899
-
3900
-
3901
- exports.useAutoLimitTags = useAutoLimitTags; exports.useKeyboardCollisionPadding = useKeyboardCollisionPadding; exports.useDeferredError = useDeferredError; exports.DRAG_AND_DROP_MEDIA_QUERY = DRAG_AND_DROP_MEDIA_QUERY; exports.useDragAndDropEnabled = useDragAndDropEnabled; exports.useFocusTrap = useFocusTrap; exports.useHorizontalScrollbar = useHorizontalScrollbar; exports.useLocalStorage = useLocalStorage; exports.useMemoizedCallback = useMemoizedCallback; exports.useNotificationPermission = useNotificationPermission; exports.useOnboardingState = useOnboardingState; exports.useSearch = useSearch; exports.useTablePagination = useTablePagination; exports.useThrottle = useThrottle; exports.useWindowSize = useWindowSize; exports.resolveActiveSection = resolveActiveSection; exports.useActiveSection = useActiveSection; exports.useNavMenus = useNavMenus; exports.DESKTOP_OSES = DESKTOP_OSES; exports.detectVisitorOs = detectVisitorOs; exports.desktopOsOf = desktopOsOf; exports.detectDesktopOs = detectDesktopOs; exports.usesCommandKey = usesCommandKey; exports.shortcutLabel = shortcutLabel; exports.useVisitorOs = useVisitorOs; exports.usePreventScroll = _overlays.usePreventScroll; exports.platformIcons = platformIcons; exports.transformPlatformConfigsToOptions = transformPlatformConfigsToOptions; exports.getPlatformIcon = getPlatformIcon; exports.getSmallPlatformIcon = getSmallPlatformIcon; exports.getPlatformIconComponent = getPlatformIconComponent; exports.usePlatformConfig = usePlatformConfig; exports.usePlatformByValue = usePlatformByValue; exports.useValidatePlatform = useValidatePlatform; 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.useCopyToClipboard = useCopyToClipboard; exports.configureBatchImageFetch = configureBatchImageFetch; exports.batchFetchAuthenticatedImages = batchFetchAuthenticatedImages; exports.useBatchImages = useBatchImages; exports.configureAuthenticatedImage = configureAuthenticatedImage; exports.useAuthenticatedImage = useAuthenticatedImage; exports.flattenQueryVariables = flattenQueryVariables; exports.mergeDefaults = mergeDefaults; exports.validateSchema = validateSchema; exports.getArrayParams = getArrayParams; exports.getRequiredParams = getRequiredParams; exports.extractVariablesFromQuery = extractVariablesFromQuery; exports.isScalarType = isScalarType; exports.isInputObjectType = isInputObjectType; exports.GraphQLIntrospector = GraphQLIntrospector; exports.introspector = introspector; 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.useQueryParams = useQueryParams; exports.useApiParams = useApiParams; exports.useCursorPaginationState = useCursorPaginationState; exports.useNatsClient = useNatsClient; exports.useScenarioPlayer = useScenarioPlayer; exports.validateAccessCode = validateAccessCode; exports.consumeAccessCode = consumeAccessCode; exports.validateAndConsumeAccessCode = validateAndConsumeAccessCode; exports.useAccessCodeIntegration = useAccessCodeIntegration; exports.toGoogleSheetsEmbedUrl = toGoogleSheetsEmbedUrl; exports.toGoogleSheetsOriginalUrl = toGoogleSheetsOriginalUrl; exports.toFigmaEmbedUrl = toFigmaEmbedUrl; exports.isFigmaSlidesUrl = isFigmaSlidesUrl; exports.toFigmaOriginalUrl = toFigmaOriginalUrl; exports.toClaudeMirrorPath = toClaudeMirrorPath; exports.toClaudeEmbedUrl = toClaudeEmbedUrl; exports.useClaudeMirrorSrc = useClaudeMirrorSrc; exports.useLocationHash = useLocationHash; 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.HUMANITY_SIGNAL_KEYS = HUMANITY_SIGNAL_KEYS; exports.isHumanitySignalKey = isHumanitySignalKey; exports.extractHumanitySignals = extractHumanitySignals; exports.findHoneypotCopySource = findHoneypotCopySource; exports.evaluateHumanitySignals = evaluateHumanitySignals; exports.splitCsvEnv = splitCsvEnv; exports.useHumanitySignals = useHumanitySignals; exports.defineRescueForm = defineRescueForm; exports.getRescueForm = getRescueForm; exports.listRescueForms = listRescueForms; exports.RESCUE_FORMS = RESCUE_FORMS; exports.FORM_RESCUE_VALUE_FIELDS = FORM_RESCUE_VALUE_FIELDS; exports.isExcludedRescueField = isExcludedRescueField; exports.FORM_RESCUE_MAX_VALUE_CHARS = FORM_RESCUE_MAX_VALUE_CHARS; exports.FORM_RESCUE_DEBOUNCE_MS = FORM_RESCUE_DEBOUNCE_MS; exports.FORM_RESCUE_MAX_FIELDS = FORM_RESCUE_MAX_FIELDS; exports.FORM_RESCUE_ATTEMPT_FIELD = FORM_RESCUE_ATTEMPT_FIELD; exports.FORM_RESCUE_RESUME_FIELD = FORM_RESCUE_RESUME_FIELD; exports.FORM_RESCUE_SUBMIT_KEYS = FORM_RESCUE_SUBMIT_KEYS; exports.FORM_RESCUE_RESUME_PARAM = FORM_RESCUE_RESUME_PARAM; exports.isResumeToken = isResumeToken; exports.FORM_DRAFT_STATUSES = FORM_DRAFT_STATUSES; exports.FORM_RESCUE_SKIP_REASONS = FORM_RESCUE_SKIP_REASONS; exports.isRescueEmail = isRescueEmail; exports.isFormAttemptId = isFormAttemptId; exports.sanitizeRescueValues = sanitizeRescueValues; exports.filledRescueFields = filledRescueFields; exports.rescueCompletionPct = rescueCompletionPct; exports.sanitizeRescueFieldName = sanitizeRescueFieldName; exports.parseFormDraftSaveRequest = parseFormDraftSaveRequest; exports.FORM_RESCUE_EVENTS = FORM_RESCUE_EVENTS; exports.captureFormRescueEvent = captureFormRescueEvent; exports.completeFormRescue = completeFormRescue; exports.useFormRescue = useFormRescue; exports.useRescuedForm = useRescuedForm;
3123
+ exports.useAutoLimitTags = useAutoLimitTags; exports.useKeyboardCollisionPadding = useKeyboardCollisionPadding; exports.useDeferredError = useDeferredError; exports.useFocusTrap = useFocusTrap; exports.useStickyToolbar = useStickyToolbar; exports.useMemoizedCallback = useMemoizedCallback; exports.useNotificationPermission = useNotificationPermission; exports.useOnboardingState = useOnboardingState; exports.useSearch = useSearch; exports.useTablePagination = useTablePagination; exports.useThrottle = useThrottle; exports.useWindowSize = useWindowSize; exports.resolveActiveSection = resolveActiveSection; exports.useActiveSection = useActiveSection; exports.useNavMenus = useNavMenus; exports.usePreventScroll = _overlays.usePreventScroll; exports.usePlatformConfig = usePlatformConfig; exports.usePlatformByValue = usePlatformByValue; exports.useValidatePlatform = useValidatePlatform; 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.useCopyToClipboard = useCopyToClipboard; exports.configureBatchImageFetch = configureBatchImageFetch; exports.batchFetchAuthenticatedImages = batchFetchAuthenticatedImages; exports.useBatchImages = useBatchImages; exports.configureAuthenticatedImage = configureAuthenticatedImage; exports.useAuthenticatedImage = useAuthenticatedImage; exports.flattenQueryVariables = flattenQueryVariables; exports.mergeDefaults = mergeDefaults; exports.validateSchema = validateSchema; exports.getArrayParams = getArrayParams; exports.getRequiredParams = getRequiredParams; exports.extractVariablesFromQuery = extractVariablesFromQuery; exports.isScalarType = isScalarType; exports.isInputObjectType = isInputObjectType; exports.GraphQLIntrospector = GraphQLIntrospector; exports.introspector = introspector; 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.useQueryParams = useQueryParams; exports.useApiParams = useApiParams; exports.useCursorPaginationState = useCursorPaginationState; exports.useNatsClient = useNatsClient; exports.useScenarioPlayer = useScenarioPlayer; exports.useAccessCodeIntegration = useAccessCodeIntegration; exports.useClaudeMirrorSrc = useClaudeMirrorSrc; exports.useLocationHash = useLocationHash; exports.useScrollToHash = useScrollToHash; exports.useHumanitySignals = useHumanitySignals; exports.completeFormRescue = completeFormRescue; exports.useFormRescue = useFormRescue; exports.useRescuedForm = useRescuedForm;